SpyBara
Go Premium

Documentation 2026-10-13 23:57 UTC to 2026-10-14 22:58 UTC

74 files changed +1,299 −651. View all changes and history on the product overview
2026
Fri 30 23:01 Thu 29 23:57 Wed 28 23:57 Tue 27 22:59 Mon 26 22:57 Sun 25 23:58 Sat 24 22:59 Fri 23 22:59 Thu 22 22:58 Wed 21 23:02 Tue 20 23:00 Mon 19 23:58 Sat 17 23:57 Fri 16 22:59 Thu 15 23:58 Wed 14 22:58 Tue 13 23:57 Sun 11 23:57 Sat 10 23:01 Fri 9 23:02 Thu 8 22:58 Wed 7 23:59 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59
Details

20* Pour les sessions démarrées à partir d'un shell : définissez la variable d'environnement `CLAUDE_AX_SCREEN_READER` sur `1`. Dans Bash ou Zsh, exécutez `export CLAUDE_AX_SCREEN_READER=1`. Dans PowerShell, exécutez `$env:CLAUDE_AX_SCREEN_READER = "1"`. Ajoutez cette ligne à votre profil shell pour la conserver pour les shells futurs.20* Pour les sessions démarrées à partir d'un shell : définissez la variable d'environnement `CLAUDE_AX_SCREEN_READER` sur `1`. Dans Bash ou Zsh, exécutez `export CLAUDE_AX_SCREEN_READER=1`. Dans PowerShell, exécutez `$env:CLAUDE_AX_SCREEN_READER = "1"`. Ajoutez cette ligne à votre profil shell pour la conserver pour les shells futurs.

21* Pour chaque session sur la machine : ajoutez `"axScreenReader": true` à votre [fichier de paramètres](/docs/fr/settings) utilisateur. Le paramètre s'applique dans n'importe quel terminal, y compris le terminal intégré VS Code.21* Pour chaque session sur la machine : ajoutez `"axScreenReader": true` à votre [fichier de paramètres](/docs/fr/settings) utilisateur. Le paramètre s'applique dans n'importe quel terminal, y compris le terminal intégré VS Code.

22 22 

23Si vous combinez les méthodes, Claude Code applique l'indicateur [`--ax-screen-reader`](/docs/fr/cli-reference#cli-flags) sur la variable d'environnement [`CLAUDE_AX_SCREEN_READER`](/docs/fr/env-vars#variables), et la variable sur le paramètre [`axScreenReader`](/docs/fr/settings-reference#axscreenreader).23Si vous combinez les méthodes, Claude Code applique le flag [`--ax-screen-reader`](/docs/fr/cli-reference#cli-flags) sur la variable d'environnement [`CLAUDE_AX_SCREEN_READER`](/docs/fr/env-vars#variables), et la variable sur le paramètre [`axScreenReader`](/docs/fr/settings-reference#axscreenreader).

24 24 

25Si vous utilisez Claude Code via SSH, définissez la variable d'environnement ou le paramètre sur la machine distante où Claude Code s'exécute.25Si vous utilisez Claude Code via SSH, définissez la variable d'environnement ou le paramètre sur la machine distante où Claude Code s'exécute.

26 26 

Details

855 855 

856L'état d'un serveur distant peut également changer après qu'il rapporte `"connected"`. Lorsque la connexion à celui-ci s'interrompt en cours de session, Claude Code ramène le serveur à `"pending"` pendant la [reconnexion](/docs/fr/mcp#automatic-reconnection). Un appel ultérieur à `mcpServerStatus()` en TypeScript, ou [`ClaudeSDKClient.get_mcp_status()`](/docs/fr/agent-sdk/python#methods) en Python, peut alors rapporter `"pending"` pour un serveur que vous aviez vu connecté plus tôt, sans aucun changement de configuration de votre côté.856L'état d'un serveur distant peut également changer après qu'il rapporte `"connected"`. Lorsque la connexion à celui-ci s'interrompt en cours de session, Claude Code ramène le serveur à `"pending"` pendant la [reconnexion](/docs/fr/mcp#automatic-reconnection). Un appel ultérieur à `mcpServerStatus()` en TypeScript, ou [`ClaudeSDKClient.get_mcp_status()`](/docs/fr/agent-sdk/python#methods) en Python, peut alors rapporter `"pending"` pour un serveur que vous aviez vu connecté plus tôt, sans aucun changement de configuration de votre côté.

857 857 

858Après cinq tentatives de reconnexion échouées, le serveur rapporte `"failed"`, ou `"needs-auth"` lorsqu'il a besoin d'être autorisé à nouveau. Pour réessayer manuellement, appelez [`reconnectMcpServer()`](/docs/fr/agent-sdk/typescript#methods) en TypeScript ou [`ClaudeSDKClient.reconnect_mcp_server()`](/docs/fr/agent-sdk/python#methods) en Python.858Après cinq tentatives de reconnexion échouées, le serveur rapporte `"failed"`, ou `"needs-auth"` lorsqu'il a besoin d'être autorisé à nouveau. Un serveur HTTP ou SSE à l'état `"failed"` peut encore revenir à `"connected"` sans appel de votre part, car Claude Code continue de [réessayer en arrière-plan](/docs/fr/mcp#mid-session-drops-of-a-remote-server) après une erreur transitoire. Pour réessayer manuellement, appelez [`reconnectMcpServer()`](/docs/fr/agent-sdk/typescript#methods) en TypeScript ou [`ClaudeSDKClient.reconnect_mcp_server()`](/docs/fr/agent-sdk/python#methods) en Python.

859 859 

860<h2 id="troubleshooting">860<h2 id="troubleshooting">

861 Dépannage861 Dépannage

Details

424 Contexte que Claude Code ajoute en dehors de l'invite système424 Contexte que Claude Code ajoute en dehors de l'invite système

425</h2>425</h2>

426 426 

427Les rappels système sont des messages que Claude Code ajoute à la conversation pendant une session pour donner du contexte à Claude, comme le contenu de vos fichiers CLAUDE.md ou une note indiquant qu'un fichier a changé sur le disque. Claude Code les envoie dans la conversation, pas dans l'invite système, donc ils atteignent Claude que vous utilisiez le préréglage `claude_code` ou que vous transmettiez votre propre chaîne en tant que `systemPrompt`.427Les rappels système sont des messages que Claude Code ajoute à la conversation pendant une session pour donner du contexte à Claude, comme le contenu de vos fichiers CLAUDE.md ou une note indiquant qu'un fichier a changé sur le disque. Claude Code les envoie dans la conversation, pas dans le prompt système, donc la plupart atteignent Claude, que vous utilisiez le préréglage `claude_code` ou que vous transmettiez votre propre chaîne en tant que `systemPrompt`.

428 428 

429Cette section couvre les [rappels les plus susceptibles de modifier le comportement de votre agent](#reminders-claude-code-adds-to-the-conversation), comment [désactiver ceux que votre agent remplace](#turn-off-the-context-your-agent-replaces), et comment [voir ce que Claude a reçu](#see-what-claude-received) dans une demande spécifique.429Cette section couvre les [rappels les plus susceptibles de modifier le comportement de votre agent](#reminders-claude-code-adds-to-the-conversation), comment [désactiver ceux que votre agent remplace](#turn-off-the-context-your-agent-replaces), et comment [voir ce que Claude a reçu](#see-what-claude-received) dans une demande spécifique.

430 430 


467| Chaque fichier CLAUDE.md | Définissez `CLAUDE_CODE_DISABLE_CLAUDE_MDS=1` |467| Chaque fichier CLAUDE.md | Définissez `CLAUDE_CODE_DISABLE_CLAUDE_MDS=1` |

468| Nudges de liste de tâches, notes de fichier modifié et liste de compétences | Définissez `CLAUDE_CODE_DISABLE_ATTACHMENTS=1` |468| Nudges de liste de tâches, notes de fichier modifié et liste de compétences | Définissez `CLAUDE_CODE_DISABLE_ATTACHMENTS=1` |

469 469 

470Les instructions intégrées de commit et de demande de tirage de Claude Code ne sont pas un rappel. Elles font partie de la description de l'outil Bash, donc elles atteignent également Claude quand vous transmettez un `systemPrompt` personnalisé.470Définissez `includeGitInstructions` sur `false` pour exclure les instructions intégrées de commit et de pull request, qui font partie de la description de l'outil Bash et atteignent Claude même avec un `systemPrompt` personnalisé. En revanche, avec la valeur par défaut minimale, un `systemPrompt` personnalisé ou un agent de thread principal personnalisé qui possède son propre prompt, la session démarre sans l'instantané du statut git.

471 471 

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

473 473 

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

475 475 

Details

164| `mcpServers` | `(string \| object)[]` | Non | Serveurs MCP disponibles pour cet agent, par nom ou configuration en ligne |164| `mcpServers` | `(string \| object)[]` | Non | Serveurs MCP disponibles pour cet agent, par nom ou configuration en ligne |

165| `initialPrompt` | `string` | Non | Auto-soumis comme le premier tour utilisateur lorsque cet agent s'exécute en tant qu'agent du thread principal. Ignoré lorsque l'agent est invoqué en tant que sous-agent |165| `initialPrompt` | `string` | Non | Auto-soumis comme le premier tour utilisateur lorsque cet agent s'exécute en tant qu'agent du thread principal. Ignoré lorsque l'agent est invoqué en tant que sous-agent |

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

167| `autoCompactWindow` | `number` | Non | Abaisser la [fenêtre de compaction automatique](/docs/fr/sub-agents#subagent-auto-compact-window) pour cet agent lorsqu'il s'exécute en tant que sous-agent, à un nombre de tokens compris entre `100000` et `1000000`. Nécessite TypeScript Agent SDK v0.3.296 ou ultérieur. Le SDK Python [`AgentDefinition`](/docs/fr/agent-sdk/python#agentdefinition) n'a pas ce champ |

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

168| `omitClaudeMd` | `boolean` | Non | Exécuter cet agent sans les fichiers CLAUDE.md utilisateur, projet et local lorsqu'il s'exécute en tant que sous-agent ; les fichiers de politique gérés se chargent toujours. Ignoré lorsque l'agent s'exécute en tant qu'agent du thread principal. Nécessite TypeScript Agent SDK v0.3.271 ou ultérieur. Le SDK Python [`AgentDefinition`](/docs/fr/agent-sdk/python#agentdefinition) n'a pas ce champ |169| `omitClaudeMd` | `boolean` | Non | Exclure les fichiers CLAUDE.md utilisateur, projet et local du contexte initial de cet agent ; les fichiers de politique gérés se chargent toujours. Ignoré lorsque l'agent s'exécute en tant qu'agent du thread principal. Nécessite TypeScript Agent SDK v0.3.271 ou ultérieur. Le SDK Python [`AgentDefinition`](/docs/fr/agent-sdk/python#agentdefinition) n'a pas ce champ |

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

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

171 172 


200| Le sous-agent reçoit | Le sous-agent ne reçoit pas |201| Le sous-agent reçoit | Le sous-agent ne reçoit pas |

201| :- | :- |202| :- | :- |

202| Son propre prompt système (`AgentDefinition.prompt`) et le prompt de l'outil Agent | L'historique de conversation du parent ou les résultats des outils |203| Son propre prompt système (`AgentDefinition.prompt`) et le prompt de l'outil Agent | L'historique de conversation du parent ou les résultats des outils |

203| Project CLAUDE.md (chargé via [`settingSources`](/docs/fr/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources)), sauf si l'agent définit [`omitClaudeMd`](#agentdefinition-configuration) | Contenu de compétences préchargées, sauf s'il est listé dans `AgentDefinition.skills` |204| Project CLAUDE.md (chargé via [`settingSources`](/docs/fr/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources)). Un agent qui définit [`omitClaudeMd`](#agentdefinition-configuration) démarre sans lui | Contenu de skills préchargés, sauf s'il est listé dans `AgentDefinition.skills` |

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

205 206 

206<Note>207<Note>

Details

908 | "malformed"908 | "malformed"

909 | "not_honoured"909 | "not_honoured"

910 >;910 >;

911 claude_code_version?: string;

911};912};

912```913```

913 914 


922 923 

923Le champ `sdkMcpServerManifests` de la requête et le champ `sdk_mcp_manifests_parked` de la réponse concernent les [serveurs MCP SDK](/docs/fr/agent-sdk/custom-tools) in-process que vous avez créés avec [`createSdkMcpServer()`](#createsdkmcpserver). Votre application ne définit ni ne lit aucun de ces champs.924Le champ `sdkMcpServerManifests` de la requête et le champ `sdk_mcp_manifests_parked` de la réponse concernent les [serveurs MCP SDK](/docs/fr/agent-sdk/custom-tools) in-process que vous avez créés avec [`createSdkMcpServer()`](#createsdkmcpserver). Votre application ne définit ni ne lit aucun de ces champs.

924 925 

926`claude_code_version` est la version de Claude Code du processus qui exécute les tours de la session. Il s'agit de la même valeur que celle du message init [`SDKSystemMessage`](#sdksystemmessage), ce qui vous permet de lire la version de la CLI avant le premier tour.

927 

928* Ce champ nécessite Agent SDK v0.3.296 ou ultérieur, qui inclut Claude Code v2.1.296.

929* Si le champ vaut `undefined` et que vous définissez `pathToClaudeCodeExecutable`, faites-le pointer vers Claude Code v2.1.296 ou ultérieur.

930 

925La réponse indique toujours `fast_mode_state`, et lorsqu'un élément bloque le [mode rapide](/docs/fr/fast-mode), `fast_mode_disabled_reason` fournit le code de raison en complément, afin que vous puissiez expliquer l'état bloqué au lieu de redéduire la disponibilité. Ces deux comportements nécessitent Claude Code v2.1.219 ou ultérieure. Avant v2.1.219, la réponse omettait `fast_mode_state` lorsque le mode rapide n'était pas disponible et ne fournissait jamais de raison. Pour les codes de raison et leur signification, consultez [`fast_mode_disabled_reason`](#sdkresultmessage) dans le message de résultat.931La réponse indique toujours `fast_mode_state`, et lorsqu'un élément bloque le [mode rapide](/docs/fr/fast-mode), `fast_mode_disabled_reason` fournit le code de raison en complément, afin que vous puissiez expliquer l'état bloqué au lieu de redéduire la disponibilité. Ces deux comportements nécessitent Claude Code v2.1.219 ou ultérieure. Avant v2.1.219, la réponse omettait `fast_mode_state` lorsque le mode rapide n'était pas disponible et ne fournissait jamais de raison. Pour les codes de raison et leur signification, consultez [`fast_mode_disabled_reason`](#sdkresultmessage) dans le message de résultat.

926 932 

927Le wrapper de réponse de contrôle d'un `initialize` réussi contient également un tableau `pending_permission_requests`. Le champ se trouve sur le wrapper de réponse lui-même, et non dans le payload `SDKControlInitializeResponse` ci-dessus. Chaque entrée est un message `control_request` complet, avec la même forme `{ type: "control_request", request_id, request }` que celle des demandes de permission que la session diffuse en flux pendant son exécution.933Le wrapper de réponse de contrôle d'un `initialize` réussi contient également un tableau `pending_permission_requests`. Le champ se trouve sur le wrapper de réponse lui-même, et non dans le payload `SDKControlInitializeResponse` ci-dessus. Chaque entrée est un message `control_request` complet, avec la même forme `{ type: "control_request", request_id, request }` que celle des demandes de permission que la session diffuse en flux pendant son exécution.


1218 skills?: string[];1224 skills?: string[];

1219 initialPrompt?: string;1225 initialPrompt?: string;

1220 maxTurns?: number;1226 maxTurns?: number;

1227 autoCompactWindow?: number;

1221 background?: boolean;1228 background?: boolean;

1222 omitClaudeMd?: boolean;1229 omitClaudeMd?: boolean;

1223 memory?: "user" | "project" | "local";1230 memory?: "user" | "project" | "local";


1238| `skills` | Non | Tableau des noms de skills à précharger dans le contexte de l'agent |1245| `skills` | Non | Tableau des noms de skills à précharger dans le contexte de l'agent |

1239| `initialPrompt` | Non | Soumis automatiquement comme premier tour utilisateur lorsque cet agent s'exécute en tant qu'agent du thread principal |1246| `initialPrompt` | Non | Soumis automatiquement comme premier tour utilisateur lorsque cet agent s'exécute en tant qu'agent du thread principal |

1240| `maxTurns` | Non | Nombre maximal de tours agentiques (allers-retours API) avant l'arrêt |1247| `maxTurns` | Non | Nombre maximal de tours agentiques (allers-retours API) avant l'arrêt |

1248| `autoCompactWindow` | Non | Réduit la [fenêtre de compaction automatique](/docs/fr/sub-agents#subagent-auto-compact-window) de cet agent lorsqu'il s'exécute en tant que sous-agent, à un nombre de tokens compris entre `100000` et `1000000`. Nécessite TypeScript Agent SDK v0.3.296 ou ultérieur |

1241| `background` | Non | Exécuter cet agent comme tâche en arrière-plan non bloquante lorsqu'il est invoqué |1249| `background` | Non | Exécuter cet agent comme tâche en arrière-plan non bloquante lorsqu'il est invoqué |

1242| `omitClaudeMd` | Non | Exécuter cet agent sans les fichiers CLAUDE.md utilisateur, projet et locaux lorsqu'il s'exécute en tant que sous-agent ; les fichiers de stratégie gérée sont toujours chargés. Utilisez-le pour les agents qui tirent tout ce dont ils ont besoin du prompt de l'outil Agent. Ignoré lorsque cet agent s'exécute en tant qu'agent du thread principal. Nécessite TypeScript Agent SDK v0.3.271 ou ultérieure |1250| `omitClaudeMd` | Non | Exclut les fichiers CLAUDE.md utilisateur, projet et locaux du contexte initial de cet agent ; les fichiers de politique gérée sont toujours chargés. Utilisez-le pour les agents qui tirent tout ce dont ils ont besoin du prompt de l'outil Agent. Ignoré lorsque cet agent s'exécute en tant qu'agent du thread principal. Nécessite TypeScript Agent SDK v0.3.271 ou ultérieur |

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

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

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


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

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

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

2437* `body` : le corps du message décodé sans l'enveloppe pair, identique octet pour octet à ce que le modèle voit. Toujours présent pour un message de coéquipier ; pour un pair entre sessions, présent uniquement quand le tour est exactement une enveloppe pair formée par Claude Code. Affichez `name` et `body` au lieu de réanalyser le texte du message. Nécessite Claude Code v2.1.205 ou ultérieur.2445* `body` : le corps du message décodé, sans l'enveloppe de pair, identique octet pour octet à ce que voit le modèle. Présent pour un message de coéquipier unique, absent lorsque plusieurs sont fusionnés ; pour un pair inter-sessions, présent uniquement lorsque le tour correspond exactement à une enveloppe de pair formée par Claude Code. Affichez `name` et `body` au lieu d'analyser à nouveau le texte du message. Avant la v2.1.299, les messages fusionnés conservaient le `body` du premier message. Nécessite Claude Code v2.1.205 ou ultérieur.

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

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

2440 2448 


3446 offset?: number;3454 offset?: number;

3447 limit?: number;3455 limit?: number;

3448 pages?: string;3456 pages?: string;

3457 allow_large?: boolean;

3449};3458};

3450```3459```

3451 3460 

3452Lit les fichiers du système de fichiers local, y compris le texte, les images, les PDF et les carnets Jupyter. Utilisez `pages` pour les plages de pages PDF (par exemple, `"1-5"`).3461Lit les fichiers du système de fichiers local, y compris le texte, les images, les PDF et les carnets Jupyter.

3462 

3463* Utilisez `pages` pour les plages de pages PDF (par exemple, `"1-5"`).

3464* `allow_large` permet à Claude de lire un fichier texte au-delà des [limites de taille habituelles](/docs/fr/tools-reference#large-files) lorsque la fenêtre de contexte de la session a de la place. Il nécessite Agent SDK v0.3.296 ou version ultérieure, qui intègre Claude Code v2.1.296.

3453 3465 

3454Pour un PDF, Claude reçoit le contenu du fichier dans le `tool_result` de l'appel Read. Une lecture qui retourne la [sortie](#tool-output-types) `pdf` porte un bloc `text` de résumé suivi d'un bloc `document`. Une qui retourne la sortie `parts` porte le bloc `text` de résumé suivi d'un bloc par page extraite : un bloc `image`, ou un bloc `text` nommant la page lorsque Claude Code n'a pas pu la rendre en tant qu'image. Avant Agent SDK v0.3.242, Claude Code livrait le contenu du fichier en tant que message `user` séparé après le résultat de l'outil.3466Pour un PDF, Claude reçoit le contenu du fichier dans le `tool_result` de l'appel Read. Une lecture qui retourne la [sortie](#tool-output-types) `pdf` porte un bloc `text` de résumé suivi d'un bloc `document`. Une qui retourne la sortie `parts` porte le bloc `text` de résumé suivi d'un bloc par page extraite : un bloc `image`, ou un bloc `text` nommant la page lorsque Claude Code n'a pas pu la rendre en tant qu'image. Avant Agent SDK v0.3.242, Claude Code livrait le contenu du fichier en tant que message `user` séparé après le résultat de l'outil.

3455 3467 

agent-teams.md +3 −2

Details

270| **Liste de tâches** | Liste partagée d'éléments de travail que les coéquipiers revendiquent et complètent |270| **Liste de tâches** | Liste partagée d'éléments de travail que les coéquipiers revendiquent et complètent |

271| **Boîte aux lettres** | Système de messagerie pour la communication entre agents |271| **Boîte aux lettres** | Système de messagerie pour la communication entre agents |

272 272 

273La boîte aux lettres de chaque agent est un fichier JSON à `~/.claude/teams/{team-name}/inboxes/{agent-name}.json`. Claude Code valide chaque entrée lorsqu'il lit un fichier de boîte aux lettres. Les entrées qui ne correspondent pas au format de message sont signalées comme des erreurs et supprimées du fichier ; les messages valides sont toujours livrés. Avant la v2.1.207, une seule entrée de boîte aux lettres malformée causait une erreur répétée chaque seconde et bloquait la livraison pour cette boîte aux lettres jusqu'à ce que vous supprimiez le fichier manuellement.273La boîte aux lettres de chaque agent est un fichier JSON à `~/.claude/teams/{team-name}/inboxes/{agent-name}.json`. Claude Code valide chaque entrée lorsqu'il lit un fichier de boîte aux lettres. Les entrées qui ne correspondent pas au format de message sont signalées comme des erreurs et supprimées du fichier ; les messages valides sont toujours livrés.

274 274 

275Claude Code signale un message comme envoyé uniquement lorsque l'écriture dans le fichier de boîte aux lettres du destinataire réussit, que le message soit du texte brut ou un message de protocole structuré tel qu'une approbation de plan ou une demande d'arrêt. Lorsque l'écriture échoue, par exemple parce que le disque est plein ou que le répertoire de boîte aux lettres n'est pas accessible en écriture, l'agent émetteur reçoit une erreur et rien n'est envoyé. Consultez [Impossible d'écrire dans la boîte de réception d'un coéquipier](/docs/fr/errors#failed-to-write-to-a-teammate-inbox) pour les messages d'erreur et les étapes de récupération.275Claude Code signale un message comme envoyé uniquement lorsque l'écriture dans le fichier de boîte aux lettres du destinataire réussit, que le message soit du texte brut ou un message de protocole structuré tel qu'une approbation de plan ou une demande d'arrêt. Lorsque l'écriture échoue, par exemple parce que le disque est plein ou que le répertoire de boîte aux lettres n'est pas accessible en écriture, l'agent émetteur reçoit une erreur et rien n'est envoyé. Consultez [Impossible d'écrire dans la boîte de réception d'un coéquipier](/docs/fr/errors#failed-to-write-to-a-teammate-inbox) pour les messages d'erreur et les étapes de récupération.

276 276 


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

301 301 

302```text wrap theme={null}302```text wrap theme={null}

303Lancez un coéquipier utilisant le type d'agent security-reviewer pour auditer le module d'authentification.303Spawn a teammate using the security-reviewer agent type to audit the auth module.

304```304```

305 305 

306Claude Code lit la définition de subagent que vous avez nommée et applique ces parties à ce coéquipier. Lorsqu'une partie dépend du [mode d'affichage](#choose-a-display-mode) du coéquipier, l'entrée le précise :306Claude Code lit la définition de subagent que vous avez nommée et applique ces parties à ce coéquipier. Lorsqu'une partie dépend du [mode d'affichage](#choose-a-display-mode) du coéquipier, l'entrée le précise :


309* **`model`** : Claude Code utilise le `model` de la définition dans l'un ou l'autre mode d'affichage lorsque votre prompt de lancement n'en nomme pas un. Consultez [comment Claude Code choisit le modèle d'un coéquipier](#specify-teammates-and-models).309* **`model`** : Claude Code utilise le `model` de la définition dans l'un ou l'autre mode d'affichage lorsque votre prompt de lancement n'en nomme pas un. Consultez [comment Claude Code choisit le modèle d'un coéquipier](#specify-teammates-and-models).

310* **`disallowedTools`** : pour un coéquipier en processus, Claude Code retire de l'ensemble d'outils du coéquipier les outils listés dans le `disallowedTools` de la définition. `SendMessage` et les outils Task qu'il ajoute restent disponibles même lorsque la liste les nomme.310* **`disallowedTools`** : pour un coéquipier en processus, Claude Code retire de l'ensemble d'outils du coéquipier les outils listés dans le `disallowedTools` de la définition. `SendMessage` et les outils Task qu'il ajoute restent disponibles même lorsque la liste les nomme.

311* **`effort`** : pour un coéquipier en processus, Claude Code applique l'[`effort`](/docs/fr/sub-agents#supported-frontmatter-fields) de la définition selon les [règles d'effort du frontmatter](/docs/fr/model-config#set-the-effort-level).311* **`effort`** : pour un coéquipier en processus, Claude Code applique l'[`effort`](/docs/fr/sub-agents#supported-frontmatter-fields) de la définition selon les [règles d'effort du frontmatter](/docs/fr/model-config#set-the-effort-level).

312* **`autoCompactWindow`** : pour un coéquipier en processus, Claude Code applique l'[`autoCompactWindow`](/docs/fr/sub-agents#supported-frontmatter-fields) de la définition selon les [règles de ce champ](/docs/fr/sub-agents#subagent-auto-compact-window). Un coéquipier en volet divisé ignore le champ. Nécessite Claude Code v2.1.296 ou ultérieure.

312* **Body** : pour un coéquipier en processus, Claude Code ajoute le body de la définition à son prompt système par défaut en tant qu'instructions supplémentaires. Pour un coéquipier en volet divisé, Claude Code utilise le body à la place de son prompt système par défaut.313* **Body** : pour un coéquipier en processus, Claude Code ajoute le body de la définition à son prompt système par défaut en tant qu'instructions supplémentaires. Pour un coéquipier en volet divisé, Claude Code utilise le body à la place de son prompt système par défaut.

313* **`skills`** : Claude Code n'applique pas les `skills` de la définition à un coéquipier dans l'un ou l'autre mode d'affichage. Le coéquipier charge les skills à partir de vos paramètres de projet et d'utilisateur.314* **`skills`** : Claude Code n'applique pas les `skills` de la définition à un coéquipier dans l'un ou l'autre mode d'affichage. Le coéquipier charge les skills à partir de vos paramètres de projet et d'utilisateur.

314* **`mcpServers`** : pour un coéquipier en volet divisé, Claude Code applique les `mcpServers` de la définition selon les [règles pour ce champ](/docs/fr/sub-agents#scope-mcp-servers-to-a-subagent), qui couvrent également une session démarrée avec `--agent`. Un coéquipier en processus ignore le champ et charge les serveurs MCP à partir de vos paramètres de projet et d'utilisateur.315* **`mcpServers`** : pour un coéquipier en volet divisé, Claude Code applique les `mcpServers` de la définition selon les [règles pour ce champ](/docs/fr/sub-agents#scope-mcp-servers-to-a-subagent), qui couvrent également une session démarrée avec `--agent`. Un coéquipier en processus ignore le champ et charge les serveurs MCP à partir de vos paramètres de projet et d'utilisateur.

agent-view.md +6 −6

Details

26 Démarrage rapide26 Démarrage rapide

27</h2>27</h2>

28 28 

29Cette procédure pas à pas couvre la boucle principale de la vue agent : dispatcher une tâche, regarder sa ligne se mettre à jour au fur et à mesure que Claude travaille, jeter un coup d'œil pour vérifier et répondre, et s'attacher pour la conversation complète. La session que vous dispatcher continue de s'exécuter après que vous fermiez la vue agent, vous pouvez donc partir et y revenir.29Cette procédure pas à pas couvre la boucle principale de la vue agent : dispatcher une tâche, regarder sa ligne se mettre à jour au fur et à mesure que Claude travaille, jeter un coup d'œil pour vérifier et répondre, et s'attacher pour la conversation complète. La session que vous dispatchez continue de s'exécuter après que vous fermiez la vue agent, vous pouvez donc partir et y revenir.

30 30 

31<Steps>31<Steps>

32 <Step title="Ouvrir la vue agent">32 <Step title="Ouvrir la vue agent">


42 </Step>42 </Step>

43 43 

44 <Step title="Dispatcher une session">44 <Step title="Dispatcher une session">

45 Tapez une invite décrivant une tâche et appuyez sur `Entrée`. Une nouvelle session en arrière-plan démarre sur cette tâche et apparaît sous forme de ligne indiquant si elle fonctionne, attend votre intervention, ou est terminée. La nouvelle session utilise le modèle affiché dans l'en-tête de la vue agent. [Le mode de permission dans lequel elle démarre](#permission-mode-model-and-effort) dépend de la façon dont vous avez ouvert la vue agent.45 Tapez un prompt décrivant une tâche et appuyez sur `Entrée`. Une nouvelle session en arrière-plan démarre sur cette tâche et apparaît sous forme de ligne indiquant si elle fonctionne, attend votre intervention, ou est terminée. La nouvelle session utilise le modèle affiché dans l'en-tête de la vue agent. [Le mode de permission dans lequel elle démarre](#permission-mode-model-and-effort) dépend de la façon dont vous avez ouvert la vue agent.

46 46 

47 Chaque invite que vous entrez ici démarre sa propre nouvelle session. Taper une autre invite et appuyer sur `Entrée` lance une deuxième session aux côtés de la première plutôt que d'envoyer un suivi à celle-ci. Vous pouvez en exécuter plusieurs en parallèle de cette façon.47 Chaque prompt que vous entrez ici démarre sa propre nouvelle session. Taper un autre prompt et appuyer sur `Entrée` lance une deuxième session aux côtés de la première plutôt que d'envoyer un suivi à celle-ci. Vous pouvez en exécuter plusieurs en parallèle de cette façon.

48 48 

49 Chaque session utilise votre quota d'abonnement indépendamment, consultez donc [Limitations](#limitations) avant de dispatcher plusieurs à la fois.49 Chaque session utilise votre quota d'abonnement indépendamment, consultez donc [Limitations](#limitations) avant de dispatcher plusieurs à la fois.

50 </Step>50 </Step>


64 </Step>64 </Step>

65</Steps>65</Steps>

66 66 

67À l'intérieur d'une session `claude` régulière, l'indice `←` du pied de page de l'invite compte les agents en arrière-plan qui attendent votre intervention, comme `← 2 agents`, et revient à `← for agents` quand aucun n'a besoin d'entrée. Les comptages supérieurs à 99 s'affichent comme `99+`. Le comptage se rafraîchit environ toutes les dix secondes lorsque le terminal est actif et immédiatement quand le focus revient. Il change brièvement de couleur quand il se déplace et quand un agent se termine, et quand une session en arrière-plan se termine alors qu'aucune n'a besoin de votre intervention, elle affiche brièvement le nombre complété, comme `← 2 done`. Les deux flashs sont désactivés quand le paramètre [`prefersReducedMotion`](/docs/fr/settings-reference#prefersreducedmotion) est activé, et l'indice est masqué en [mode lecteur d'écran](/docs/fr/accessibility).67À l'intérieur d'une session `claude` régulière, l'indice `←` du pied de page de l'invite compte les agents en arrière-plan qui attendent votre intervention, comme `← 2 agents`, et revient à `← for agents` quand aucun n'a besoin d'entrée. Les comptages supérieurs à 99 s'affichent comme `99+`. Le comptage se rafraîchit environ toutes les dix secondes lorsque le terminal est actif et immédiatement quand le focus revient. Il change brièvement de couleur quand il se déplace et quand un agent se termine, et quand une session en arrière-plan se termine alors qu'aucune n'a besoin de votre intervention, il affiche brièvement le nombre de sessions terminées, comme `← 2 done`. Les deux flashs sont désactivés quand le paramètre [`prefersReducedMotion`](/docs/fr/settings-reference#prefersreducedmotion) est activé, et l'indice est masqué en [mode lecteur d'écran](/docs/fr/accessibility).

68 68 

69<h3 id="open-agent-view-by-default">69<h3 id="open-agent-view-by-default">

70 Ouvrir la vue agent par défaut70 Ouvrir la vue agent par défaut


92 </Step>92 </Step>

93</Steps>93</Steps>

94 94 

95Pour démarrer une session régulière tandis que le paramètre est activé, passez une invite : `claude "fix the login test"`. Pour désactiver le paramètre, exécutez `/config defaultToAgentsView=false` dans une session régulière ou dans une session à laquelle vous vous attachez à partir de la vue agent.95Pour démarrer une session régulière tandis que le paramètre est activé, passez un prompt : `claude "fix the login test"`. Pour désactiver le paramètre, exécutez `/config defaultToAgentsView=false` dans une session régulière ou dans une session à laquelle vous vous attachez à partir de la vue agent.

96 96 

97<h2 id="monitor-sessions-with-agent-view">97<h2 id="monitor-sessions-with-agent-view">

98 Surveiller les sessions avec la vue agent98 Surveiller les sessions avec la vue agent


290 290 

291La ligne depuis laquelle vous avez appuyé sur `←` conserve également un nom en gras et non estompé après que vous avez déplacé la sélection avec les touches fléchées ou la souris, afin que vous puissiez savoir de quelle session vous venez.291La ligne depuis laquelle vous avez appuyé sur `←` conserve également un nom en gras et non estompé après que vous avez déplacé la sélection avec les touches fléchées ou la souris, afin que vous puissiez savoir de quelle session vous venez.

292 292 

293Si un outil s'exécute lorsque vous appuyez sur `←`, Claude Code attend qu'il se termine avant de mettre en arrière-plan, et Claude continue la réponse dans la session en arrière-plan. Appuyez à nouveau sur `←` pour mettre en arrière-plan immédiatement au lieu d'attendre. Lorsque le travail en cours ne peut pas être transféré à la session en arrière-plan, Claude Code affiche d'abord le dialogue `Background this session?`, comme avec [`/background`](#from-inside-a-session).293Si un outil s'exécute lorsque vous appuyez sur `←`, Claude Code attend qu'il se termine avant de mettre en arrière-plan, et Claude continue la réponse dans la session en arrière-plan. Appuyez à nouveau sur `←` pour mettre en arrière-plan immédiatement au lieu d'attendre. Lorsque le travail en arrière-plan en cours ne peut pas être transféré à la session en arrière-plan, Claude Code affiche d'abord le dialogue `Background this session?`, comme avec [`/background`](#from-inside-a-session).

294 294 

295Après environ dix secondes, Claude Code met la session en arrière-plan sans attendre davantage, sauf dans des cas comme ceux-ci :295Après environ dix secondes, Claude Code met la session en arrière-plan sans attendre davantage, sauf dans des cas comme ceux-ci :

296 296 

Details

219 Mise en cache des identifiants et délai d'expiration de la résolution219 Mise en cache des identifiants et délai d'expiration de la résolution

220</h4>220</h4>

221 221 

222Claude Code résout la chaîne du fournisseur d'identifiants par défaut AWS une fois et conserve les identifiants résolus en mémoire. Il les réutilise jusqu'à cinq minutes avant leur expiration, ou pendant une heure quand ils n'ont pas d'expiration, donc un profil soutenu par SSO demande des identifiants au Centre d'identité IAM environ une fois par durée de vie des identifiants. Une erreur d'identifiant de l'API efface le cache, et la nouvelle tentative résout les identifiants frais. Nécessite Claude Code v2.1.207 ou ultérieur.222Claude Code résout la chaîne du fournisseur d'identifiants par défaut AWS une fois et conserve les identifiants résolus en mémoire. Il les réutilise jusqu'à cinq minutes avant leur expiration, ou pendant une heure quand ils n'ont pas d'expiration, donc un profil soutenu par SSO demande des identifiants au Centre d'identité IAM environ une fois par durée de vie des identifiants. Une erreur d'identifiant de l'API efface le cache, et la nouvelle tentative résout les identifiants frais.

223 223 

224Le cache couvre chaque méthode d'identification listée au début de cette étape, sauf une clé API Amazon Bedrock, qui n'utilise pas la chaîne du fournisseur. Pour résoudre la chaîne à chaque requête à la place, définissez [`CLAUDE_CODE_SKIP_AWS_CRED_CACHE=1`](/docs/fr/env-vars).224Le cache couvre chaque méthode d'identification listée au début de cette étape, sauf une clé API Amazon Bedrock, qui n'utilise pas la chaîne du fournisseur. Pour résoudre la chaîne à chaque requête à la place, définissez [`CLAUDE_CODE_SKIP_AWS_CRED_CACHE=1`](/docs/fr/env-vars).

225 225 


276 276 

277`Expiration` est optionnel. Quand la commande retourne un `Expiration` ISO 8601 valide, Claude Code met en cache les identifiants jusqu'à cinq minutes avant cette heure. Sans cela, les identifiants sont mis en cache pendant une heure.277`Expiration` est optionnel. Quand la commande retourne un `Expiration` ISO 8601 valide, Claude Code met en cache les identifiants jusqu'à cinq minutes avant cette heure. Sans cela, les identifiants sont mis en cache pendant une heure.

278 278 

279Quand vous configurez `awsCredentialExport` sans `awsAuthRefresh`, Claude Code utilise les identifiants exportés directement et ne ré-résout pas la chaîne du fournisseur d'identifiants par défaut AWS au démarrage. Nécessite Claude Code v2.1.206 ou ultérieur.279Quand vous configurez `awsCredentialExport` sans `awsAuthRefresh`, Claude Code utilise les identifiants exportés directement et ne ré-résout pas la chaîne du fournisseur d'identifiants par défaut AWS au démarrage.

280 280 

281<h3 id="3-configure-claude-code">281<h3 id="3-configure-claude-code">

282 3. Configurer Claude Code282 3. Configurer Claude Code


358* Pour utiliser Haiku pour les tâches de fond, définissez `ANTHROPIC_DEFAULT_HAIKU_MODEL` sur un ID de modèle qui est disponible dans votre compte.358* Pour utiliser Haiku pour les tâches de fond, définissez `ANTHROPIC_DEFAULT_HAIKU_MODEL` sur un ID de modèle qui est disponible dans votre compte.

359 359 

360<Warning>360<Warning>

361 Les modèles Opus ont un prix par jeton plus élevé que les modèles Sonnet, donc un déploiement qui n'épingle pas un modèle principal est facturé au tarif Opus une fois qu'il se met à jour vers v2.1.207 ou ultérieur. Pour conserver Sonnet 4.5 comme modèle principal, définissez `ANTHROPIC_MODEL` sur son ID de modèle complet. Un déploiement qui dirige la valeur par défaut avec `ANTHROPIC_DEFAULT_SONNET_MODEL` et ne définit pas `ANTHROPIC_DEFAULT_OPUS_MODEL` conserve son modèle Sonnet dirigé comme valeur par défaut.361 Les modèles Opus ont un prix par token plus élevé que les modèles Sonnet, donc si vous n'épinglez pas de modèle principal, vous êtes facturé au tarif Opus. Pour utiliser Sonnet 4.5 comme modèle principal, définissez `ANTHROPIC_MODEL` sur son ID de modèle complet. Un déploiement qui dirige la valeur par défaut avec `ANTHROPIC_DEFAULT_SONNET_MODEL` et ne définit pas `ANTHROPIC_DEFAULT_OPUS_MODEL` conserve son modèle Sonnet dirigé comme valeur par défaut.

362</Warning>362</Warning>

363 363 

364Avant v2.1.280, le modèle principal sur Amazon Bedrock était par défaut Opus 5 et l'alias `opus` se résolvait à Opus 5 à partir de v2.1.219. Sur v2.1.207 à v2.1.218, le modèle principal sur Amazon Bedrock était par défaut Opus 4.8 et l'alias `opus` se résolvait à Opus 4.8. Avant v2.1.207, le modèle principal était par défaut Sonnet 4.5, l'alias `opus` se résolvait à Opus 4.6, et les tâches de fond utilisaient toujours le modèle principal.364Avant v2.1.280, le modèle principal sur Amazon Bedrock était par défaut Opus 5 et l'alias `opus` se résolvait à Opus 5 à partir de v2.1.219. Sur v2.1.207 à v2.1.218, le modèle principal sur Amazon Bedrock était par défaut Opus 4.8 et l'alias `opus` se résolvait à Opus 4.8.

365 365 

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

367 367 

artifacts.md +1 −1

Details

188 188 

189Votre [mode de permission](/docs/fr/permission-modes) détermine ce que fait Claude lorsqu'un commentaire envoyé arrive :189Votre [mode de permission](/docs/fr/permission-modes) détermine ce que fait Claude lorsqu'un commentaire envoyé arrive :

190 190 

191* **Claude répond de lui-même** : lorsque votre mode de permission permet à Claude de publier la réponse sans vous le demander, Claude lit le fil de discussion et répond, et modifie l'artefact lorsque le commentaire demande un changement. Vous voyez `Auto-replied to comment thread on Artifact: <name>` ou `Auto-edited Artifact: <name> in response to a comment thread`.191* **Claude répond de lui-même** : si vous êtes dans un mode de permission qui permet à Claude de publier la réponse sans vous le demander, Claude lit le fil de discussion et répond. Vous voyez `Auto-replied to comment thread on Artifact: <name>`.

192* **Claude vous attend** : en dehors du mode plan, lorsque la publication de la réponse nécessiterait votre approbation, vous voyez `Comments are waiting on Artifact: <name>`. Claude vous demande alors d'approuver la lecture du fil de discussion, puis à nouveau la publication de la réponse.192* **Claude vous attend** : en dehors du mode plan, lorsque la publication de la réponse nécessiterait votre approbation, vous voyez `Comments are waiting on Artifact: <name>`. Claude vous demande alors d'approuver la lecture du fil de discussion, puis à nouveau la publication de la réponse.

193* **Claude se met en pause en mode plan** : vous voyez `Comments are waiting on Artifact: <name>`, et Claude ne répond pas tant que vous n'avez pas quitté le mode plan et ne lui avez pas demandé de lire et de répondre.193* **Claude se met en pause en mode plan** : vous voyez `Comments are waiting on Artifact: <name>`, et Claude ne répond pas tant que vous n'avez pas quitté le mode plan et ne lui avez pas demandé de lire et de répondre.

194 194 

chrome.md +8 −8

Details

59 59 

60<Steps>60<Steps>

61 <Step title="Lancer Claude Code avec Chrome">61 <Step title="Lancer Claude Code avec Chrome">

62 Démarrez Claude Code avec le drapeau `--chrome` :62 Démarrez Claude Code avec le flag `--chrome` :

63 63 

64 ```bash theme={null}64 ```bash theme={null}

65 claude --chrome65 claude --chrome

66 ```66 ```

67 67 

68 La première fois que vous lancez avec Chrome, Claude Code affiche une boîte de dialogue unique qui présente l'intégration et explique comment fonctionnent les autorisations de site. Appuyez sur Entrée pour continuer.68 La première fois que vous lancez avec Chrome, Claude Code affiche une boîte de dialogue unique qui présente l'intégration et explique comment fonctionnent les permissions de site. Appuyez sur Entrée pour continuer.

69 69 

70 Pour activer Chrome pour les sessions futures sans le drapeau, consultez [Activer Chrome par défaut](#enable-chrome-by-default).70 Pour activer Chrome pour les sessions futures sans le flag, consultez [Activer Chrome par défaut](#enable-chrome-by-default).

71 </Step>71 </Step>

72 72 

73 <Step title="Demander à Claude d'utiliser le navigateur">73 <Step title="Demander à Claude d'utiliser le navigateur">


82 </Step>82 </Step>

83</Steps>83</Steps>

84 84 

85Exécutez `/chrome` à tout moment pour vérifier l'état de la connexion, gérer les autorisations, reconnecter l'extension ou choisir quel navigateur connecté utiliser. L'intégration fonctionne lorsque le panneau d'état affiche « Status: Enabled » et « Extension: Installed ».85Exécutez `/chrome` à tout moment pour vérifier l'état de la connexion, gérer les permissions, reconnecter l'extension ou choisir quel navigateur connecté utiliser. L'intégration fonctionne lorsque le panneau d'état affiche « Status: Enabled » et « Extension: Installed ».

86 86 

87Si plusieurs navigateurs sont connectés, vous choisissez lequel Claude utilise. Lorsqu'une action de navigateur commence avant que vous ayez choisi, Claude vous invite à en sélectionner un. Pour basculer entre les navigateurs ultérieurement, exécutez `/chrome` et sélectionnez **Select browser…**. Claude continue à utiliser votre choix même lorsqu'un autre navigateur se connecte.87Si plusieurs navigateurs sont connectés, vous choisissez lequel Claude utilise. Lorsqu'une action de navigateur commence avant que vous ayez choisi, Claude vous demande d'en sélectionner un. Pour basculer entre les navigateurs ultérieurement, exécutez `/chrome` et sélectionnez **Select browser…**. Claude continue à utiliser votre choix même lorsqu'un autre navigateur se connecte.

88 88 

89Pour VS Code, consultez [l'automatisation du navigateur dans VS Code](/docs/fr/vs-code#automate-browser-tasks-with-chrome).89Pour VS Code, consultez [l'automatisation du navigateur dans VS Code](/docs/fr/vs-code#automate-browser-tasks-with-chrome).

90 90 


120</Note>120</Note>

121 121 

122<h3 id="manage-site-permissions">122<h3 id="manage-site-permissions">

123 Gérer les autorisations du site123 Gérer les permissions du site

124</h3>124</h3>

125 125 

126Les autorisations au niveau du site sont héritées de l'extension Chrome. Gérez les autorisations dans les paramètres de l'extension Chrome pour contrôler les sites que Claude peut parcourir, cliquer et taper. En [mode automatique](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), lorsque le classificateur du mode automatique lui-même approuve un appel de navigateur à un site, l'extension ignore sa propre vérification par site pour cet appel, sauf si vos règles de permission refusent tout site à Claude in Chrome.126Les permissions au niveau du site sont héritées de l'extension Chrome. Gérez les permissions dans les paramètres de l'extension Chrome pour contrôler les sites que Claude peut parcourir, cliquer et taper. En [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), lorsque le classifieur du mode auto lui-même approuve un appel de navigateur à un site, l'extension ignore sa propre vérification par site pour cet appel, sauf si vos règles de permission refusent tout site à Claude in Chrome.

127 127 

128<h3 id="permission-prompts-in-vs-code-sessions">128<h3 id="permission-prompts-in-vs-code-sessions">

129 Demandes de permission dans les sessions VS Code129 Demandes de permission dans les sessions VS Code


139 139 

140En [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode), une demande de permission apparaît avant que Claude n'enregistre un GIF, n'ouvre un nouvel onglet ou n'exécute un raccourci. Dans une session CLI interactive, si le [mode de contournement des permissions est disponible](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) et que la [récupération des feature flags](/docs/fr/env-vars#features-that-need-feature-flag-fetching) est désactivée, ces appels s'exécutent sans demande.140En [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode), une demande de permission apparaît avant que Claude n'enregistre un GIF, n'ouvre un nouvel onglet ou n'exécute un raccourci. Dans une session CLI interactive, si le [mode de contournement des permissions est disponible](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) et que la [récupération des feature flags](/docs/fr/env-vars#features-that-need-feature-flag-fetching) est désactivée, ces appels s'exécutent sans demande.

141 141 

142Un appel `tabs_context_mcp` demande également une invite lorsqu'il définit `createIfEmpty`, et il en va de même pour un appel `browser_batch` qui inclut l'une de ces actions.142Un appel `tabs_context_mcp` déclenche également une demande lorsqu'il définit `createIfEmpty`, et il en va de même pour un appel `browser_batch` qui inclut l'une de ces actions.

143 143 

144<h2 id="example-workflows">144<h2 id="example-workflows">

145 Exemples de flux de travail145 Exemples de flux de travail

Details

1074 1074 

1075La configuration de [télémétrie](#telemetry) de la passerelle pousse `OTEL_EXPORTER_OTLP_ENDPOINT`, donc définir `telemetry.forward_to` déclenche la boîte de dialogue sur chaque client interactif. La boîte de dialogue protège la machine du développeur contre une passerelle compromise ou hostile, et non l'organisation contre le développeur.1075La configuration de [télémétrie](#telemetry) de la passerelle pousse `OTEL_EXPORTER_OTLP_ENDPOINT`, donc définir `telemetry.forward_to` déclenche la boîte de dialogue sur chaque client interactif. La boîte de dialogue protège la machine du développeur contre une passerelle compromise ou hostile, et non l'organisation contre le développeur.

1076 1076 

1077Une [exécution non interactive](/docs/fr/server-managed-settings#security-approval-dialogs), telle que `claude -p`, une session Agent SDK ou une session dans l'onglet Code de Claude Desktop, ne peut pas afficher la boîte de dialogue. Elle applique les paramètres envoyés pour cette exécution uniquement et ne les enregistre pas comme approuvés, de sorte que la prochaine session interactive du développeur affiche toujours la boîte de dialogue. Avant la v2.1.207, une exécution non interactive enregistrait les paramètres comme approuvés et aucune session interactive ultérieure n'affichait la boîte de dialogue pour ceux-ci.1077Une [exécution non interactive](/docs/fr/server-managed-settings#security-approval-dialogs), telle que `claude -p`, une session Agent SDK ou une session dans l'onglet Code de Claude Desktop, ne peut pas afficher la boîte de dialogue. Elle applique les paramètres transmis pour cette exécution uniquement et ne les enregistre pas comme approuvés, de sorte que la prochaine session interactive du développeur affiche toujours la boîte de dialogue.

1078 1078 

1079Si un développeur refuse, Claude Code quitte cette session plutôt que d'appliquer la politique. Lorsque vous poussez un nouveau hook, ou toute variable env qui déclenche la boîte de dialogue, vers une politique large, chaque développeur correspondant voit donc la boîte de dialogue dans ses sessions interactives. Une session interactive en cours l'affiche lors du prochain sondage horaire, et sinon elle apparaît au prochain démarrage interactif du développeur.1079Si un développeur refuse, Claude Code quitte cette session plutôt que d'appliquer la politique. Lorsque vous poussez un nouveau hook, ou toute variable env qui déclenche la boîte de dialogue, vers une politique large, chaque développeur correspondant voit donc la boîte de dialogue dans ses sessions interactives. Une session interactive en cours l'affiche lors du prochain sondage horaire, et sinon elle apparaît au prochain démarrage interactif du développeur.

1080 1080 

Details

298 298 

299Les sessions cloud prennent en charge les [commandes intégrées](/docs/fr/commands) qui produisent une sortie textuelle. Les commandes qui s'exécutent uniquement dans l'interface du terminal, telles que `/plugin` ou `/resume`, ne sont pas disponibles. Les commandes qui ouvrent un sélecteur ou un panneau dans le terminal se comportent différemment dans les sessions cloud :299Les sessions cloud prennent en charge les [commandes intégrées](/docs/fr/commands) qui produisent une sortie textuelle. Les commandes qui s'exécutent uniquement dans l'interface du terminal, telles que `/plugin` ou `/resume`, ne sont pas disponibles. Les commandes qui ouvrent un sélecteur ou un panneau dans le terminal se comportent différemment dans les sessions cloud :

300 300 

301* **`/model`, `/effort`, `/color` et `/rename`** : transmettez la valeur en tant qu'argument, par exemple `/model sonnet`, au lieu d'ouvrir le sélecteur du terminal ou le curseur. Les formes d'argument nécessitent Claude Code v2.1.205 ou une version ultérieure dans l'environnement de la session et suivent les [notes de disponibilité](/docs/fr/commands#all-commands) de chaque commande.301* **`/model`, `/effort`, `/color` et `/rename`** : transmettez la valeur en tant qu'argument, par exemple `/model sonnet`, au lieu d'ouvrir le sélecteur du terminal ou le curseur. Les formes d'argument suivent les [notes de disponibilité](/docs/fr/commands#all-commands) de chaque commande.

302* **`/fast`** : bascule le [mode rapide](/docs/fr/fast-mode#use-fast-mode-in-cloud-sessions) pour la session lorsque le mode rapide est [disponible sur votre compte](/docs/fr/fast-mode#requirements). Nécessite Claude Code v2.1.271 ou une version ultérieure dans l'environnement de la session.302* **`/fast`** : bascule le [mode rapide](/docs/fr/fast-mode#use-fast-mode-in-cloud-sessions) pour la session lorsque le mode rapide est [disponible sur votre compte](/docs/fr/fast-mode#requirements). Nécessite Claude Code v2.1.271 ou une version ultérieure dans l'environnement de la session.

303* **`/config`** : dans votre navigateur sur claude.ai/code, ouvre la section Claude Code de vos paramètres au lieu de définir une valeur, et le texte après la commande, y compris `key=value`, est ignoré. Pour modifier un paramètre pour une session cloud, définissez une [variable d'environnement](/docs/fr/cloud-environments#set-environment-variables) sur l'environnement, ou dans une session avec un référentiel, validez la clé dans le fichier `.claude/settings.json` de ce référentiel. [Les paramètres dans les sessions cloud](/docs/fr/settings#settings-in-cloud-sessions) énumère ce que chaque session lit.303* **`/config`** : dans votre navigateur sur claude.ai/code, ouvre la section Claude Code de vos paramètres au lieu de définir une valeur, et le texte après la commande, y compris `key=value`, est ignoré. Pour modifier un paramètre pour une session cloud, définissez une [variable d'environnement](/docs/fr/cloud-environments#set-environment-variables) sur l'environnement, ou dans une session avec un référentiel, validez la clé dans le fichier `.claude/settings.json` de ce référentiel. [Les paramètres dans les sessions cloud](/docs/fr/settings#settings-in-cloud-sessions) énumère ce que chaque session lit.

304 304 


420* **Machines virtuelles isolées** : chaque session s'exécute dans une VM isolée gérée par Anthropic. Les sessions que votre organisation achemine vers un [environnement auto-hébergé](/docs/fr/self-hosted-environments) s'exécutent sur votre propre infrastructure à la place, où l'isolation est la responsabilité de votre déploiement420* **Machines virtuelles isolées** : chaque session s'exécute dans une VM isolée gérée par Anthropic. Les sessions que votre organisation achemine vers un [environnement auto-hébergé](/docs/fr/self-hosted-environments) s'exécutent sur votre propre infrastructure à la place, où l'isolation est la responsabilité de votre déploiement

421* <span id="default-allowed-domains" />**Contrôles d'accès réseau** : dans les environnements hébergés par Anthropic, l'accès réseau est limité par défaut et peut être désactivé. Consultez [Accès réseau](/docs/fr/cloud-environments#network-access) pour les niveaux d'accès, les [domaines autorisés par défaut](/docs/fr/cloud-environments#default-allowed-domains), et le trafic qui ne passe pas par la liste d'autorisation. Dans un environnement auto-hébergé, vous restreignez la sortie de session à votre propre limite réseau. Lors de l'exécution avec l'accès réseau désactivé, Claude Code peut toujours communiquer avec l'API Anthropic, ce qui peut permettre aux données de quitter la VM.421* <span id="default-allowed-domains" />**Contrôles d'accès réseau** : dans les environnements hébergés par Anthropic, l'accès réseau est limité par défaut et peut être désactivé. Consultez [Accès réseau](/docs/fr/cloud-environments#network-access) pour les niveaux d'accès, les [domaines autorisés par défaut](/docs/fr/cloud-environments#default-allowed-domains), et le trafic qui ne passe pas par la liste d'autorisation. Dans un environnement auto-hébergé, vous restreignez la sortie de session à votre propre limite réseau. Lors de l'exécution avec l'accès réseau désactivé, Claude Code peut toujours communiquer avec l'API Anthropic, ce qui peut permettre aux données de quitter la VM.

422* **Protection des identifiants** : dans les environnements hébergés par Anthropic, les identifiants git et les clés de signature restent en dehors du sandbox, et un proxy authentifie au nom de la session avec des identifiants limités. Dans un environnement auto-hébergé, votre déploiement fournit les identifiants git ; consultez [Configurer git](/docs/fr/self-hosted-environments-deploy#configure-git)422* **Protection des identifiants** : dans les environnements hébergés par Anthropic, les identifiants git et les clés de signature restent en dehors du sandbox, et un proxy authentifie au nom de la session avec des identifiants limités. Dans un environnement auto-hébergé, votre déploiement fournit les identifiants git ; consultez [Configurer git](/docs/fr/self-hosted-environments-deploy#configure-git)

423* **Secrets réseau** : dans les environnements hébergés par Anthropic sur les plans Pro et Max, les clés que vous [ajoutez à un environnement cloud](/docs/fr/cloud-environments#add-network-secrets) restent en dehors du sandbox de la même manière, attachées aux requêtes correspondantes après qu'elles quittent la session. Un environnement auto-hébergé n'a pas de secrets réseau, et les plans Team et Enterprise ne les ont pas encore423* **Secrets réseau** : dans les environnements hébergés par Anthropic, les clés que vous [ajoutez à un environnement cloud](/docs/fr/cloud-environments#add-network-secrets) restent en dehors du sandbox de la même manière, attachées aux requêtes correspondantes après qu'elles quittent la session. Un environnement auto-hébergé n'a pas de secrets réseau

424* **Analyse sécurisée** : le code est analysé et modifié dans l'environnement isolé de la session avant la création de PR424* **Analyse sécurisée** : le code est analysé et modifié dans l'environnement isolé de la session avant la création de PR

425 425 

426<h2 id="troubleshooting">426<h2 id="troubleshooting">


472| Message | Signification |472| Message | Signification |

473| - | - |473| - | - |

474| `Cloud sessions aren't available with <provider>. They run on Anthropic's infrastructure and require an Anthropic account.` | Claude Code est configuré pour un fournisseur tiers. Le message nomme le fournisseur avec le libellé utilisé par votre configuration, comme `Amazon Bedrock` ou `Google Vertex AI`. Supprimez la configuration de ce fournisseur, par exemple en supprimant `CLAUDE_CODE_USE_BEDROCK`, et connectez-vous avec un compte Anthropic (`claude auth login`). |474| `Cloud sessions aren't available with <provider>. They run on Anthropic's infrastructure and require an Anthropic account.` | Claude Code est configuré pour un fournisseur tiers. Le message nomme le fournisseur avec le libellé utilisé par votre configuration, comme `Amazon Bedrock` ou `Google Vertex AI`. Supprimez la configuration de ce fournisseur, par exemple en supprimant `CLAUDE_CODE_USE_BEDROCK`, et connectez-vous avec un compte Anthropic (`claude auth login`). |

475| `Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.` | La politique d'organisation `allow_remote_sessions` est désactivée. |475| `Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.` | La politique `allow_remote_sessions` de votre organisation est désactivée ; consultez [Cloud sessions are disabled by your organization's policy](/docs/fr/errors#cloud-sessions-are-disabled-by-your-organizations-policy). Si le message nomme plutôt un identifiant de connexion utilisé par cette session, consultez [Les sessions cloud utilisent votre connexion claude.ai](/docs/fr/errors#cloud-sessions-use-your-claude-ai-login). |

476| `Couldn't verify your organization's policy for cloud sessions. Check your network connection and try again.` | Claude Code n'a pas pu récupérer la politique de votre organisation ; il refuse donc l'envoi plutôt que de supposer que les sessions cloud sont autorisées. Vérifiez votre connexion réseau et réessayez. |476| `Couldn't verify your organization's policy for cloud sessions. Check your network connection and try again.` | Claude Code n'a pas fini de charger la politique de votre organisation ; il refuse donc l'envoi plutôt que de supposer que les sessions cloud sont autorisées. Vérifiez votre connexion réseau et réessayez. |

477| `Cloud sessions aren't available:` suivi d'une cause | Le chargement de la politique de votre organisation a échoué, et la suite du message indique comment. Agissez selon la cause indiquée ; consultez [Couldn't verify your organization's policy for cloud sessions](/docs/fr/errors#couldnt-verify-your-organizations-policy-for-cloud-sessions). |

477| `Attaching to an existing cloud session is not enabled for your account.` | Vous avez exécuté `--cloud <session-id>` sans `-p`. Envoyez le message avec `claude -p "your message" --cloud <session-id>`. |478| `Attaching to an existing cloud session is not enabled for your account.` | Vous avez exécuté `--cloud <session-id>` sans `-p`. Envoyez le message avec `claude -p "your message" --cloud <session-id>`. |

478| `Session not found: <id>` | L'ID ou l'URL ne correspond à aucune session à laquelle vous avez accès. Vérifiez-le par rapport à l'URL claude.ai/code de la session. |479| `Session not found: <id>` | L'ID ou l'URL ne correspond à aucune session à laquelle vous avez accès. Vérifiez-le par rapport à l'URL claude.ai/code de la session. |

479| `cloud session <id> is archived and cannot accept new messages` | La session a été archivée. Démarrez plutôt une nouvelle session. |480| `cloud session <id> is archived and cannot accept new messages` | La session a été archivée. Démarrez plutôt une nouvelle session. |

Details

1525| - | - | - |1525| - | - | - |

1526| `skills/<name>/SKILL.md` | `name`, `description`, `when_to_use`, `argument-hint`, `arguments`, `disable-model-invocation`, `user-invocable`, `allowed-tools`, `disallowed-tools`, `model`, `effort`, `context`, `agent`, `background`, `hooks`, `paths`, `shell`, `metadata`, `license`, `compatibility` | [Frontmatter de compétence](/docs/fr/skills#frontmatter-reference) |1526| `skills/<name>/SKILL.md` | `name`, `description`, `when_to_use`, `argument-hint`, `arguments`, `disable-model-invocation`, `user-invocable`, `allowed-tools`, `disallowed-tools`, `model`, `effort`, `context`, `agent`, `background`, `hooks`, `paths`, `shell`, `metadata`, `license`, `compatibility` | [Frontmatter de compétence](/docs/fr/skills#frontmatter-reference) |

1527| `commands/*.md` | Les champs de compétence sauf `name` et `paths` | [Frontmatter de compétence](/docs/fr/skills#frontmatter-reference) |1527| `commands/*.md` | Les champs de compétence sauf `name` et `paths` | [Frontmatter de compétence](/docs/fr/skills#frontmatter-reference) |

1528| `agents/*.md` | `name`, `description`, `tools`, `disallowedTools`, `model`, `permissionMode`, `maxTurns`, `skills`, `mcpServers`, `hooks`, `memory`, `background`, `effort`, `isolation`, `color`, `initialPrompt`, `omitClaudeMd`, `experimental` | [Frontmatter de sous-agent](/docs/fr/sub-agents#supported-frontmatter-fields) |1528| `agents/*.md` | `name`, `description`, `tools`, `disallowedTools`, `model`, `permissionMode`, `maxTurns`, `autoCompactWindow`, `skills`, `mcpServers`, `hooks`, `memory`, `background`, `effort`, `isolation`, `color`, `initialPrompt`, `omitClaudeMd`, `experimental` | [Frontmatter de sous-agent](/docs/fr/sub-agents#supported-frontmatter-fields) |

1529| `output-styles/*.md` | `name`, `description`, `keep-coding-instructions`, `force-for-plugin` | [Frontmatter de style de sortie](/docs/fr/output-styles#frontmatter) |1529| `output-styles/*.md` | `name`, `description`, `keep-coding-instructions`, `force-for-plugin` | [Frontmatter de style de sortie](/docs/fr/output-styles#frontmatter) |

1530| `rules/*.md` | `paths` | [Frontmatter de règle](/docs/fr/memory#rules-frontmatter-reference) |1530| `rules/*.md` | `paths` | [Frontmatter de règle](/docs/fr/memory#rules-frontmatter-reference) |

1531 1531 

Details

291 291 

292Claude Platform on AWS utilise les mêmes ID de modèle que l'API Claude directe.292Claude Platform on AWS utilise les mêmes ID de modèle que l'API Claude directe.

293 293 

294Les alias par défaut `fable`, `opus`, `sonnet` et `haiku` se résolvent aux valeurs par défaut intégrées de Claude Code pour Claude Platform on AWS, qui peuvent être en retard par rapport à la version la plus récente. Sans `ANTHROPIC_DEFAULT_OPUS_MODEL`, l'alias `opus` se résout à Opus 5.5. Avant la v2.1.280, il se résolvait à Opus 5 à partir de la v2.1.219, à Opus 4.8 à partir de la v2.1.207, et à Opus 4.7 avant cela.294Les alias par défaut `fable`, `opus`, `sonnet` et `haiku` se résolvent aux valeurs par défaut intégrées de Claude Code pour Claude Platform on AWS, qui peuvent être en retard par rapport à la version la plus récente. Sans `ANTHROPIC_DEFAULT_OPUS_MODEL`, l'alias `opus` se résout à Opus 5.5. Avant la v2.1.280, il se résolvait à Opus 5 à partir de la v2.1.219, et à Opus 4.8 à partir de la v2.1.207.

295 295 

296Si vous déployez Claude Code pour une équipe, épinglez explicitement les ID de modèle pour qu'une nouvelle version ne déplace pas tout le monde à la fois :296Si vous déployez Claude Code pour une équipe, épinglez explicitement les ID de modèle pour qu'une nouvelle version ne déplace pas tout le monde à la fois :

297 297 

Details

414 414 

415* Skills, sous-agents et commandes : commitez-les dans un dépôt que vous avez ajouté au projet, par exemple un skill à `.claude/skills/<skill-name>/SKILL.md`. Chaque thread cloud clone chaque dépôt du projet et charge `.claude/skills/`, `.claude/agents/` et `.claude/commands/` à partir de chacun d'eux, donc un skill commité dans un dépôt est disponible dans chaque thread cloud. Les threads cloud chargent également les [skills que vous activez pour votre compte claude.ai](/docs/fr/skills#skills-in-cowork-and-cloud-sessions).415* Skills, sous-agents et commandes : commitez-les dans un dépôt que vous avez ajouté au projet, par exemple un skill à `.claude/skills/<skill-name>/SKILL.md`. Chaque thread cloud clone chaque dépôt du projet et charge `.claude/skills/`, `.claude/agents/` et `.claude/commands/` à partir de chacun d'eux, donc un skill commité dans un dépôt est disponible dans chaque thread cloud. Les threads cloud chargent également les [skills que vous activez pour votre compte claude.ai](/docs/fr/skills#skills-in-cowork-and-cloud-sessions).

416* Plugins : ajoutez-les dans **Project settings > Plugins** ; ils se chargent dans chaque nouveau thread cloud. Les plugins qu'un dépôt déclare dans son `.claude/settings.json` [ne se chargent pas dans les threads cloud](/docs/fr/cloud-environments#what-carries-over-from-your-setup).416* Plugins : ajoutez-les dans **Project settings > Plugins** ; ils se chargent dans chaque nouveau thread cloud. Les plugins qu'un dépôt déclare dans son `.claude/settings.json` [ne se chargent pas dans les threads cloud](/docs/fr/cloud-environments#what-carries-over-from-your-setup).

417* Serveurs MCP : les threads cloud obtiennent leurs outils MCP à partir des connecteurs sur votre compte claude.ai, qui sont des serveurs MCP que vous connectez une fois à [claude.ai/customize/connectors](https://claude.ai/customize/connectors) ou via le lien **Manage connectors** dans **Project settings > Environment**. Chaque thread cloud peut tous les utiliser sans configuration par projet. La conversation du projet elle-même n'a pas de connecteurs, donc envoyez le travail qui en a besoin en tant que tâche pour un thread cloud. Dans un projet avec un dépôt, les threads cloud chargent également les serveurs MCP à partir du [`.mcp.json`](/docs/fr/cloud-environments#what-carries-over-from-your-setup) de ce dépôt. [Comment les connecteurs atteignent Claude Code](/docs/fr/mcp#how-connectors-reach-claude-code) énumère les règles pour les sessions cloud et les paramètres qui désactivent les connecteurs.417* Serveurs MCP : les threads cloud obtiennent leurs outils MCP à partir des connecteurs sur votre compte claude.ai, qui sont des serveurs MCP que vous connectez une fois à [claude.ai/customize/connectors](https://claude.ai/customize/connectors). Chaque thread cloud peut tous les utiliser sans configuration par projet. La conversation du projet elle-même n'a pas de connecteurs, donc envoyez le travail qui en a besoin en tant que tâche pour un thread cloud. Dans un projet avec un dépôt, les threads cloud chargent également les serveurs MCP à partir du [`.mcp.json`](/docs/fr/cloud-environments#what-carries-over-from-your-setup) de ce dépôt. [Comment les connecteurs atteignent Claude Code](/docs/fr/mcp#how-connectors-reach-claude-code) énumère les règles pour les sessions cloud et les paramètres qui désactivent les connecteurs.

418* Outils en ligne de commande et packages : installez-les dans le [script de configuration](/docs/fr/cloud-environments#setup-scripts) de l'environnement.418* Outils en ligne de commande et packages : installez-les dans le [script de configuration](/docs/fr/cloud-environments#setup-scripts) de l'environnement.

419 419 

420Pour voir quels connecteurs un thread cloud en cours d'exécution a à claude.ai/code, ouvrez le thread et sélectionnez **Connectors** dans le menu **+** à côté de sa boîte de message. Désactiver un connecteur là le supprime de ce thread et enregistre cela comme votre paramètre par défaut du compte, donc les nouveaux threads et les chats claude.ai commencent sans lui jusqu'à ce que vous le réactiviez. Un thread cloud reprend un connecteur que vous ajoutez ou reconnectez après le prochain message que vous lui envoyez.420Pour voir quels connecteurs un thread cloud en cours d'exécution a à claude.ai/code, ouvrez le thread et sélectionnez **Connectors** dans le menu **+** à côté de sa boîte de message. Désactiver un connecteur là le supprime de ce thread et enregistre cela comme votre paramètre par défaut du compte, donc les nouveaux threads et les chats claude.ai commencent sans lui jusqu'à ce que vous le réactiviez. Un thread cloud reprend un connecteur que vous ajoutez ou reconnectez après le prochain message que vous lui envoyez.


435| Instructions du projet | Memory | [Règles permanentes](#give-a-project-standing-context) que chaque nouveau thread reçoit |435| Instructions du projet | Memory | [Règles permanentes](#give-a-project-standing-context) que chaque nouveau thread reçoit |

436| Référentiels du projet | Environment | Les référentiels que les nouveaux threads clonent |436| Référentiels du projet | Environment | Les référentiels que les nouveaux threads clonent |

437| Environnement cloud | Environment | L'[environnement cloud](#choose-an-environment-for-threads) dans lequel les nouveaux threads s'exécutent |437| Environnement cloud | Environment | L'[environnement cloud](#choose-an-environment-for-threads) dans lequel les nouveaux threads s'exécutent |

438| Connecteurs | Environment | Un lien pour gérer les connecteurs claude.ai que les threads obtiennent |

439| Plugins | Plugins | Les plugins qui se chargent dans chaque nouveau thread |438| Plugins | Plugins | Les plugins qui se chargent dans chaque nouveau thread |

440| Usage | Usage | [Utilisation des tokens](#usage-and-cost) par thread et par modèle |439| Usage | Usage | [Utilisation des tokens](#usage-and-cost) par thread et par modèle |

441| Memory | Memory | Les [fichiers de mémoire](#give-a-project-standing-context) du projet |440| Memory | Memory | Les [fichiers de mémoire](#give-a-project-standing-context) du projet |

Details

10 Les environnements cloud s'appliquent aux [sessions cloud](/docs/fr/claude-code-on-the-web), qui sont disponibles sur les plans Pro, Max et Team, et pour les utilisateurs Enterprise disposant de [sièges premium ou de sièges Chat + Claude Code](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan).10 Les environnements cloud s'appliquent aux [sessions cloud](/docs/fr/claude-code-on-the-web), qui sont disponibles sur les plans Pro, Max et Team, et pour les utilisateurs Enterprise disposant de [sièges premium ou de sièges Chat + Claude Code](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan).

11</Note>11</Note>

12 12 

13Chaque [session cloud](/docs/fr/claude-code-on-the-web) s'exécute dans un environnement cloud. Vous pouvez configurer un environnement pour autoriser ou refuser l'[accès réseau](#access-levels), [définir des variables d'environnement](#set-environment-variables) pour la session, sur les plans Pro et Max stocker des [secrets réseau](#add-network-secrets) que les sessions utilisent sans les voir, et exécuter un [script de configuration](#setup-scripts) avant que Claude ne commence à travailler.13Chaque [session cloud](/docs/fr/claude-code-on-the-web) s'exécute dans un environnement cloud. Vous pouvez configurer un environnement pour autoriser ou refuser l'[accès réseau](#access-levels), [définir des variables d'environnement](#set-environment-variables) pour la session, stocker des [secrets réseau](#add-network-secrets) que les sessions utilisent sans les voir, et exécuter un [script de configuration](#setup-scripts) avant que Claude ne commence à travailler.

14 14 

15Les mêmes environnements s'appliquent partout où vous démarrez une session cloud : l'[application de bureau](/docs/fr/desktop), l'[application mobile Claude](/docs/fr/mobile), votre navigateur sur [claude.ai/code](https://claude.ai/code), le terminal avec [`claude --cloud`](/docs/fr/claude-code-on-the-web#from-terminal-to-cloud), les [routines](/docs/fr/routines) et [Claude Tag](https://claude.com/docs/claude-tag/overview). Chacune de ces surfaces peut également router vers un [environnement auto-hébergé](/docs/fr/self-hosted-environments). La section [Disponibilité et limitations](/docs/fr/self-hosted-environments#availability-and-limitations) couvre ce que Claude ne peut pas encore utiliser quand une session Claude Tag s'exécute dans un.15Les mêmes environnements s'appliquent partout où vous démarrez une session cloud : l'[application de bureau](/docs/fr/desktop), l'[application mobile Claude](/docs/fr/mobile), votre navigateur sur [claude.ai/code](https://claude.ai/code), le terminal avec [`claude --cloud`](/docs/fr/claude-code-on-the-web#from-terminal-to-cloud), les [routines](/docs/fr/routines) et [Claude Tag](https://claude.com/docs/claude-tag/overview). Chacune de ces surfaces peut également router vers un [environnement auto-hébergé](/docs/fr/self-hosted-environments). La section [Disponibilité et limitations](/docs/fr/self-hosted-environments#availability-and-limitations) couvre ce que Claude ne peut pas encore utiliser quand une session Claude Tag s'exécute dans un.

16 16 


44 Configurer votre environnement44 Configurer votre environnement

45</h2>45</h2>

46 46 

47Créez, modifiez et archivez des environnements à partir du sélecteur d'environnement, accessible sur [claude.ai/code](https://claude.ai/code) après [l'intégration web](/docs/fr/web-quickstart), ou à partir de la zone de message dans l'[application de bureau](/docs/fr/desktop#cloud-sessions). Les environnements que vous créez sont personnels à votre compte ; les [environnements partagés](#organization-shared-environments) créés par un propriétaire apparaissent dans le même sélecteur. Consultez [Outils installés](#installed-tools) pour voir ce qui est disponible sans aucune configuration.47Créez, modifiez et archivez des environnements à partir du sélecteur d'environnement situé sous la zone de message, sur l'écran où vous démarrez une nouvelle session sur [claude.ai/code](https://claude.ai/code). Pour accéder à cet écran, terminez [l'intégration web](/docs/fr/web-quickstart). Pour l'application de bureau, consultez [Sessions cloud](/docs/fr/desktop#cloud-sessions). Les environnements que vous créez sont personnels à votre compte ; les [environnements partagés](#organization-shared-environments) créés par un propriétaire apparaissent à leurs côtés dans le sélecteur. Consultez [Outils installés](#installed-tools) pour voir ce qui est disponible sans aucune configuration.

48 

49Le sélecteur n'apparaît que jusqu'à ce que vous envoyiez le premier message d'une nouvelle session. Pour modifier l'environnement de l'une de vos sessions cloud en cours d'exécution, sélectionnez le caret après le titre de la session en haut, puis sélectionnez **Edit cloud environment**.

48 50 

49<Steps>51<Steps>

50 <Step title="Ouvrir le sélecteur d'environnement">52 <Step title="Ouvrir le sélecteur d'environnement">

51 Sur [claude.ai/code](https://claude.ai/code), sélectionnez l'icône cloud affichant le nom de l'environnement actuel, dans la ligne au-dessus de la zone de message. Il n'y a pas de page de paramètres ou d'URL directe pour le sélecteur.53 Sur l'écran de nouvelle session, sélectionnez le premier contrôle de la ligne située sous la zone de message.

52 

53 <Frame>

54 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-selector.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=cc2813a5664519eaf5a89d793ce5af26" alt="Le sélecteur d'environnement ouvert au-dessus de la zone de message sur claude.ai/code. Le bouton cloud affichant le nom de l'environnement Default se trouve dans la ligne au-dessus de la zone de message. Le menu ouvert liste une ligne Local avec les étiquettes Download et Desktop only, une section Cloud où l'environnement Default est sélectionné avec une coche et affiche une icône d'engrenage de paramètres au survol, une option Add cloud environment, et une section Remote Control avec les instructions de configuration." width="1672" height="682" data-path="images/cloud-environment-selector.png" />

55 </Frame>

56 </Step>54 </Step>

57 55 

58 <Step title="Ajouter ou modifier un environnement">56 <Step title="Ajouter ou modifier un environnement">

59 Sélectionnez **Cloud** pour lister vos environnements. Ensuite, sélectionnez **Add cloud environment**, ou survolez un environnement existant et sélectionnez l'icône de paramètres qui apparaît à droite.57 * **Ajouter un environnement** : sélectionnez **New environment** en bas du menu pour ouvrir la boîte de dialogue **New environment**. Remplissez le formulaire et sélectionnez **Add environment**. Votre nouvelle session utilise alors l'environnement que vous avez ajouté.

58 * **Modifier un environnement** : trouvez sa ligne sous **Cloud**. Si **Cloud** est une seule ligne, sélectionnez-la pour ouvrir la liste. Si votre environnement n'est pas listé sous **Cloud**, sélectionnez la ligne **More** sous cet en-tête. Survolez la ligne de l'environnement et sélectionnez l'icône de paramètres qui apparaît à sa droite pour ouvrir sa boîte de dialogue.

60 59 

61 La boîte de dialogue inclut le nom, le niveau d'accès réseau, les variables d'environnement et le script de configuration. Lorsque vous modifiez un environnement cloud existant sur un plan Pro ou Max, la boîte de dialogue inclut également les [secrets réseau](#add-network-secrets).60 La boîte de dialogue inclut le nom, le niveau d'accès réseau, les variables d'environnement et le script de configuration. Pour stocker une clé que les sessions utilisent sans la voir, consultez [Ajouter des secrets réseau](#add-network-secrets).

62 

63 <Frame>

64 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-dialog.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=30d4478b31d1f879f7ee287ddab32505" alt="La boîte de dialogue New cloud environment. Un champ Name avec le texte d'espace réservé Default, un sélecteur Network access défini sur Trusted avec des liens vers la politique réseau et les niveaux d'accès, une zone Environment variables affichant un texte d'espace réservé au format .env avec une note indiquant que les valeurs sont visibles pour quiconque utilise l'environnement, une zone Setup script décrite comme un script Bash qui s'exécute au démarrage d'une nouvelle session avant le lancement de Claude Code, et les boutons Cancel et Create environment." width="874" height="1372" data-path="images/cloud-environment-dialog.png" />

65 </Frame>

66 </Step>61 </Step>

67</Steps>62</Steps>

68 63 


91 86 

92Une session cloud définit également certaines variables elle-même au démarrage. Pour [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/fr/claude-code-on-the-web#manage-context), la valeur que la session définit remplace celle que vous ajoutez ici, donc ajouter cette clé ici n'a aucun effet.87Une session cloud définit également certaines variables elle-même au démarrage. Pour [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/fr/claude-code-on-the-web#manage-context), la valeur que la session définit remplace celle que vous ajoutez ici, donc ajouter cette clé ici n'a aucun effet.

93 88 

94Quiconque utilise l'environnement peut lire les valeurs. Sur les plans Pro et Max, utilisez plutôt un [secret réseau](#add-network-secrets) pour une clé que le proxy d'agent peut joindre à une requête. Les [requêtes qui ne reçoivent jamais de secret](#requests-that-never-get-the-credential) y sont listées.89Quiconque utilise l'environnement peut lire les valeurs. Dans un environnement hébergé par Anthropic, utilisez plutôt un [secret réseau](#add-network-secrets) pour une clé que le proxy d'agent peut joindre à une requête. Les [requêtes qui ne reçoivent jamais de secret](#requests-that-never-get-the-credential) y sont listées.

95 90 

96<span id="add-api-credentials" />91<span id="add-api-credentials" />

97 92 


101 96 

102Un secret réseau est une clé API ou un jeton que vous stockez sur un environnement cloud afin que Claude puisse appeler cette API à partir de n'importe quelle session dans l'environnement sans voir la clé. Le proxy d'agent d'Anthropic ajoute la clé aux requêtes pour les hôtes que vous listez, après que chaque requête quitte la VM de la session, de sorte que la clé elle-même reste en dehors de la VM.97Un secret réseau est une clé API ou un jeton que vous stockez sur un environnement cloud afin que Claude puisse appeler cette API à partir de n'importe quelle session dans l'environnement sans voir la clé. Le proxy d'agent d'Anthropic ajoute la clé aux requêtes pour les hôtes que vous listez, après que chaque requête quitte la VM de la session, de sorte que la clé elle-même reste en dehors de la VM.

103 98 

104Les secrets réseau sont disponibles sur les plans Pro et Max. Ils ne sont pas encore disponibles sur les plans Team ou Enterprise, donc la section **Network secrets** n'apparaît pas dans la boîte de dialogue d'environnement sur ces plans.99Les secrets réseau sont disponibles sur les plans Pro, Max, Team et Enterprise. Pour vérifier si vous pouvez en ajouter un vous-même, consultez [Exigences](#requirements).

105 100 

106<h4 id="requirements">101<h4 id="requirements">

107 Exigences102 Exigences


109 104 

110Ces exigences déterminent si vous pouvez ajouter un secret et si le proxy d'agent peut l'utiliser une fois ajouté :105Ces exigences déterminent si vous pouvez ajouter un secret et si le proxy d'agent peut l'utiliser une fois ajouté :

111 106 

112* **Rôle** : un rôle d'administrateur d'organisation dans votre organisation claude.ai107* **Rôle** : sur les plans Pro, Max et Team, vous pouvez ajouter et supprimer des secrets sur vos propres environnements, quel que soit votre rôle. Sur Team et Enterprise, les propriétaires détiennent un rôle d'administrateur d'organisation dans votre organisation claude.ai et les administrateurs non, ce qui modifie ce que vous voyez dans ces cas :

113 * Sur Team et Enterprise, les propriétaires le détiennent et les administrateurs ne le détiennent pas108 * **Votre propre environnement sur Enterprise** : avec un rôle d'administrateur d'organisation, vous ajoutez et supprimez des secrets. Sans ce rôle, la section **Network secrets** liste les secrets sous la note « Only an organization admin can add or delete network secrets », sans bouton **Add secret** ni bouton de suppression. Demandez à un propriétaire d'ajouter le secret à un [environnement partagé](#organization-shared-environments), puis exécutez vos sessions dans celui-ci

114 * Sur Pro et Max, vous le détenez dans votre propre organisation109 * **Un environnement partagé** : les propriétaires [ajoutent et suppriment ses secrets](#add-a-credential) à partir des paramètres d'administration. Sans rôle d'administrateur d'organisation, demandez à un propriétaire d'ajouter le secret, car la boîte de dialogue de l'environnement n'a pas de section **Network secrets**

110 * **Votre propre environnement sur Team** : sans rôle d'administrateur d'organisation, **Add secret** ouvre un [formulaire plus court](#add-a-secret-without-the-role) qui accepte un seul hôte

115* **Type d'environnement** : un environnement cloud hébergé par Anthropic qui existe déjà. Un [environnement auto-hébergé](/docs/fr/self-hosted-environments) n'a pas de secrets réseau111* **Type d'environnement** : un environnement cloud hébergé par Anthropic qui existe déjà. Un [environnement auto-hébergé](/docs/fr/self-hosted-environments) n'a pas de secrets réseau

116* **Accessibilité de l'API** : l'API accepte les connexions depuis Internet, car les demandes partent du réseau d'Anthropic112* **Accessibilité de l'API** : l'API accepte les connexions depuis Internet, car les demandes partent du réseau d'Anthropic

117* **Clés de chiffrement** : si votre organisation utilise des clés de chiffrement gérées par le client, vous ne pouvez pas enregistrer de secrets réseau113* **Clés de chiffrement** : si votre organisation utilise des clés de chiffrement gérées par le client, vous ne pouvez pas enregistrer de secrets réseau


122 118 

123Vous ajoutez les secrets un à la fois, et vous ne pouvez pas modifier un secret après l'avoir ajouté. Pour modifier les hôtes ou la valeur d'un secret, supprimez-le et ajoutez-le à nouveau.119Vous ajoutez les secrets un à la fois, et vous ne pouvez pas modifier un secret après l'avoir ajouté. Pour modifier les hôtes ou la valeur d'un secret, supprimez-le et ajoutez-le à nouveau.

124 120 

121Pour ajouter un secret à un [environnement partagé](#organization-shared-environments), ouvrez-le pour modification à partir de la page **Cloud environments** dans les [paramètres d'administration](https://claude.ai/admin-settings), puis poursuivez l'étape 1 à partir de la section **Network secrets**. Si vous êtes sur un plan Team et ne détenez pas de [rôle d'administrateur d'organisation](#requirements), suivez l'étape 1 sur votre propre environnement, puis [remplissez le formulaire plus court](#add-a-secret-without-the-role).

122 

125<Steps>123<Steps>

126 <Step title="Ouvrir les secrets réseau de l'environnement">124 <Step title="Ouvrir les secrets réseau de l'environnement">

127 [Ouvrez l'environnement pour modification](#configure-your-environment) sur [claude.ai/code](https://claude.ai/code). Dans la boîte de dialogue **Edit environment**, trouvez la section **Network secrets**. Vous voyez les secrets déjà présents sur l'environnement, chacun avec les hôtes auxquels il s'applique.125 [Ouvrez l'environnement pour modification](#configure-your-environment) sur [claude.ai/code](https://claude.ai/code). Dans la boîte de dialogue **Edit cloud environment**, trouvez la section **Network secrets**. Vous voyez les secrets déjà présents sur l'environnement, chacun avec les hôtes auxquels il s'applique.

128 </Step>126 </Step>

129 127 

130 <Step title="Ajouter le secret">128 <Step title="Ajouter le secret">

131 Sélectionnez **Add secret** et remplissez le formulaire. Conservez le **Credential type** par défaut, **Bearer**, pour une clé API qui voyage dans un en-tête de requête, et remplissez ces champs :129 Sélectionnez **Add secret** et remplissez le formulaire. Conservez le **Secret type** par défaut, **Bearer**, pour une clé API qui voyage dans un en-tête de requête, et remplissez ces champs :

132 130 

133 * **Name** : une étiquette pour le secret, comme `Internal billing API`131 * **Name** : une étiquette pour le secret, comme `Internal billing API`

134 * **Allowed websites** : les hôtes de l'API, comme `api.example.com`. Un `*.` initial correspond à chaque sous-domaine132 * **Allowed websites** : les hôtes de l'API, comme `api.example.com`. Un `*.` initial correspond à chaque sous-domaine

135 * **Custom headers** : une ligne pour l'en-tête qui porte la clé. La ligne commence par `Authorization` comme **Name** de l'en-tête et `Bearer` comme son **Prefix** ; collez la clé elle-même comme **Value**. Pour un en-tête comme `X-Api-Key` qui prend la valeur brute, changez le nom et effacez le préfixe133 * **Custom headers** : une ligne pour l'en-tête qui porte la clé. La ligne commence par `Authorization` comme **Name** de l'en-tête et `Bearer` comme son **Prefix** ; collez la clé elle-même comme **Value**. Pour un en-tête comme `X-Api-Key` qui prend la valeur brute, changez le nom et effacez le préfixe

136 134 

137 Pour une API qui s'authentifie d'une autre manière, choisissez un **Credential type** différent. La liste est la même que celle que [Claude Tag](https://claude.com/docs/claude-tag/overview), l'intégration Slack pour les plans Team et Enterprise, propose pour les [connexions](https://claude.com/docs/claude-tag/admins/add-connections).135 Pour une API qui s'authentifie d'une autre manière, choisissez un **Secret type** différent. La liste est la même que celle que [Claude Tag](https://claude.com/docs/claude-tag/overview), l'intégration Slack pour les plans Team et Enterprise, propose pour les [connexions](https://claude.com/docs/claude-tag/admins/add-connections).

138 </Step>136 </Step>

139 137 

140 <Step title="Enregistrer le secret">138 <Step title="Enregistrer le secret">

141 Sélectionnez **Connect**. Le secret apparaît dans la liste avec ses hôtes, enregistré sans le bouton **Save changes** de la boîte de dialogue. Vous ne pouvez pas afficher la valeur à nouveau après l'enregistrement.139 Sélectionnez **Add**. Le secret apparaît dans la liste avec ses hôtes, enregistré sans le bouton **Save changes** de la boîte de dialogue. Vous ne pouvez pas afficher la valeur à nouveau après l'enregistrement.

142 </Step>140 </Step>

143</Steps>141</Steps>

144 142 

145Pour confirmer que le secret fonctionne, démarrez une session dans l'environnement et demandez à Claude d'appeler l'API, par exemple avec `curl`. L'API répond comme si la clé était dans la requête, et la clé n'apparaît pas dans les variables d'environnement de la session ni dans aucun fichier. Si la liste marque plutôt un secret **Not sent**, la note en dessous explique pourquoi et quoi faire. Deux secrets dont les hôtes se chevauchent sans correspondre exactement ne reçoivent aucun marqueur, et le proxy d'agent n'en envoie qu'un.143Pour confirmer que le secret fonctionne, démarrez une session dans l'environnement et demandez à Claude d'appeler l'API, par exemple avec `curl`. L'API répond comme si la clé était dans la requête, et la clé n'apparaît pas dans les variables d'environnement de la session ni dans aucun fichier. Si la liste marque plutôt un secret **Not sent**, la note en dessous explique pourquoi et quoi faire. Deux secrets dont les hôtes se chevauchent sans correspondre exactement ne reçoivent aucun marqueur, et le proxy d'agent n'en envoie qu'un.

146 144 

145<h4 id="add-a-secret-without-the-role">

146 Ajouter un secret sur un plan Team sans rôle d'administrateur d'organisation

147</h4>

148 

149Si vous êtes sur un plan Team et ne détenez pas de [rôle d'administrateur d'organisation](#requirements), le formulaire **Add secret** accepte un seul secret pour un seul hôte. Sélectionnez **Add secret** dans la [section **Network secrets**](#add-a-credential) de votre environnement, remplissez ces champs, puis sélectionnez le bouton **Add secret** du formulaire :

150 

151* **Host** : l'unique hôte qui reçoit le secret, comme `api.example.com`. Le formulaire n'accepte pas de caractère générique `*.`

152* **Name** : une étiquette facultative pour le secret

153* **Secret type** : **Token** pour une clé qui voyage dans un en-tête de requête, ou **Username and password**. Pour un jeton, collez la clé comme **Value**

154 

147<h4 id="which-requests-get-the-credential">155<h4 id="which-requests-get-the-credential">

148 Quelles requêtes reçoivent le secret156 Quelles requêtes reçoivent le secret

149</h4>157</h4>


175 Archiver un environnement183 Archiver un environnement

176</h3>184</h3>

177 185 

178Pour archiver l'un de vos propres environnements, ouvrez-le pour modification et sélectionnez **Archive**. Un propriétaire archive un [environnement partagé](#organization-shared-environments) à partir de la page **Cloud environments** dans les paramètres d'administration. Vous ne pouvez pas supprimer un environnement, seulement l'archiver.186Pour archiver l'un de vos propres environnements, ouvrez-le pour modification, sélectionnez **Archive environment** et confirmez. Si l'environnement est [partagé avec votre organisation](#organization-shared-environments), c'est un propriétaire qui l'archive à partir de la page **Cloud environments** dans les [paramètres d'administration](https://claude.ai/admin-settings) ; adressez-vous donc à un propriétaire si vous n'en êtes pas un. Vous ne pouvez pas supprimer un environnement, seulement l'archiver.

179 187 

180L'archivage affecte les nouvelles sessions, pas les sessions en cours d'exécution :188L'archivage affecte les nouvelles sessions, pas les sessions en cours d'exécution :

181 189 


199 207 

200Les propriétaires choisissent l'[environnement par défaut](#the-default-environment) de l'organisation séparément, sur [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).208Les propriétaires choisissent l'[environnement par défaut](#the-default-environment) de l'organisation séparément, sur [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

201 209 

202Les sessions de chaque membre dans un environnement partagé lisent ses variables, donc n'y incluez pas de secrets. Les [secrets réseau](#add-network-secrets), qui donnent aux sessions une clé qu'elles ne peuvent pas lire, ne sont pas encore disponibles sur les plans Team ou Enterprise.210Pour donner aux sessions d'un environnement partagé une clé qu'elles ne peuvent pas lire, ajoutez un [secret réseau](#add-network-secrets) lorsque vous modifiez l'environnement sur la page **Cloud environments**. N'incluez pas de secrets dans ses variables, car les sessions de chaque membre les lisent.

203 211 

204<h3 id="set-the-environment-a-claude-tag-channel-uses">212<h3 id="set-the-environment-a-claude-tag-channel-uses">

205 Définir l'environnement qu'un canal Claude Tag utilise213 Définir l'environnement qu'un canal Claude Tag utilise


216 224 

217Chaque environnement définit un niveau d'accès réseau, qui contrôle les connexions sortantes que ses sessions peuvent établir. Le niveau par défaut, **Trusted**, autorise les registres de paquets et autres [domaines autorisés](#default-allowed-domains) ; **Custom** utilise votre propre liste de domaines.225Chaque environnement définit un niveau d'accès réseau, qui contrôle les connexions sortantes que ses sessions peuvent établir. Le niveau par défaut, **Trusted**, autorise les registres de paquets et autres [domaines autorisés](#default-allowed-domains) ; **Custom** utilise votre propre liste de domaines.

218 226 

219Pour modifier l'accès réseau d'un environnement, [ouvrez-le pour l'édition](#configure-your-environment) et utilisez le sélecteur **Network access** dans la boîte de dialogue. Un [environnement partagé](#organization-shared-environments) s'ouvre en lecture seule là, donc un propriétaire modifie son accès réseau à partir de la page **Cloud environments** dans les [paramètres d'administration](https://claude.ai/admin-settings) à la place. L'icône cloud qui ouvre le sélecteur apparaît sur les surfaces de l'application listées sous [The Default environment](#the-default-environment) et dans l'[éditeur de routines](/docs/fr/routines#environments-and-network-access) ; les environnements personnels n'ont pas de page séparée dans les paramètres de votre compte claude.ai.227Pour modifier l'accès réseau d'un environnement, [ouvrez-le pour l'édition](#configure-your-environment) et utilisez le sélecteur **Network access** dans la boîte de dialogue. Un [environnement partagé](#organization-shared-environments) s'ouvre en lecture seule là, donc un propriétaire modifie son accès réseau à partir de la page **Cloud environments** dans les [paramètres d'administration](https://claude.ai/admin-settings) à la place. Le contrôle qui ouvre le sélecteur apparaît sur les surfaces de l'application listées sous [The Default environment](#the-default-environment) et dans l'[éditeur de routines](/docs/fr/routines#environments-and-network-access) ; les environnements personnels n'ont pas de page séparée dans les paramètres de votre compte claude.ai.

220 228 

221Lorsque vous modifiez l'accès réseau d'un environnement hébergé par Anthropic, ses sessions existantes suivent le nouveau paramètre dans environ une minute, pour les requêtes qui passent par la [liste d'autorisation réseau](#access-levels) de la session. Vous n'avez pas besoin de démarrer une nouvelle session.229Lorsque vous modifiez l'accès réseau d'un environnement hébergé par Anthropic, ses sessions existantes suivent le nouveau paramètre dans environ une minute, pour les requêtes qui passent par la [liste d'autorisation réseau](#access-levels) de la session. Vous n'avez pas besoin de démarrer une nouvelle session.

222 230 


274* **Identifiants Git** : le client git à l'intérieur de la VM utilise un identifiant limité en portée, que le proxy vérifie et échange contre votre véritable token GitHub.282* **Identifiants Git** : le client git à l'intérieur de la VM utilise un identifiant limité en portée, que le proxy vérifie et échange contre votre véritable token GitHub.

275* **Requêtes API** : les requêtes des outils GitHub intégrés, et de `gh` sous l'[espace réservé `proxy-injected`](#work-with-github-issues-and-pull-requests), sortent avec vos véritables identifiants substitués.283* **Requêtes API** : les requêtes des outils GitHub intégrés, et de `gh` sous l'[espace réservé `proxy-injected`](#work-with-github-issues-and-pull-requests), sortent avec vos véritables identifiants substitués.

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

277* **Portée du dépôt** : le proxy sert les requêtes API GitHub pour les dépôts attachés à la session. Une requête API pour un autre dépôt reçoit un 403 dont le message commence par `GitHub access to` et contient `is not enabled for this session`.285* **Portée du dépôt** : le proxy sert les requêtes API GitHub pour les dépôts attachés à la session. Une requête API pour un autre dépôt reçoit un 403 dont le message commence par `GitHub access to` et contient `is not enabled for this session`. Une archive source que vous récupérez via une URL `github.com/{owner}/{repo}/archive/` ou `codeload.github.com` reçoit ce même 403 lorsque le dépôt n'est pas attaché, même s'il est public.

278* **Restrictions GraphQL** : le proxy rejette les requêtes vers l'endpoint GraphQL de GitHub avec un 403 dont le message commence par `GitHub GraphQL is not available from Claude Code sessions` et nomme la solution de repli REST, `gh api repos/{owner}/{repo}/...`. Les sous-commandes `gh` qui utilisent GraphQL, comme `gh pr` et `gh issue`, reçoivent le même 403. La restriction s'applique à chaque requête via le proxy quels que soient les identifiants que vous fournissez, donc un `GH_TOKEN` que vous définissez reçoit le même 403. Claude ne peut pas atteindre les API GitHub qui n'existent que dans GraphQL, comme Projects v2, via le proxy.286* **Restrictions GraphQL** : le proxy rejette les requêtes vers l'endpoint GraphQL de GitHub avec un 403 dont le message commence par `GitHub GraphQL is not available from Claude Code sessions` et nomme la solution de repli REST, `gh api repos/{owner}/{repo}/...`. Les sous-commandes `gh` qui utilisent GraphQL, comme `gh pr` et `gh issue`, reçoivent le même 403. La restriction s'applique à chaque requête via le proxy quels que soient les identifiants que vous fournissez, donc un `GH_TOKEN` que vous définissez reçoit le même 403. Claude ne peut pas atteindre les API GitHub qui n'existent que dans GraphQL, comme Projects v2, via le proxy.

279 287 

280Les fichiers validés des référentiels publics arrivent via `raw.githubusercontent.com`, que le [proxy de sécurité](#security-proxy) gère à la place. Ce domaine figure dans la liste [Trusted](#default-allowed-domains) par défaut, donc ces fichiers restent accessibles sauf si le [niveau d'accès](#access-levels) de l'environnement l'exclut.288Les fichiers validés des référentiels publics arrivent via `raw.githubusercontent.com`, que le [proxy de sécurité](#security-proxy) gère à la place. Ce domaine figure dans la liste [Trusted](#default-allowed-domains) par défaut, donc ces fichiers restent accessibles sauf si le [niveau d'accès](#access-levels) de l'environnement l'exclut.


318| Plugins activés seulement dans vos paramètres utilisateur | Non | L'`enabledPlugins` de portée utilisateur vit dans `~/.claude/settings.json` sur votre machine |326| Plugins activés seulement dans vos paramètres utilisateur | Non | L'`enabledPlugins` de portée utilisateur vit dans `~/.claude/settings.json` sur votre machine |

319| Serveurs MCP que vous avez ajoutés avec `claude mcp add` à la portée locale par défaut ou à la portée utilisateur | Non | Ceux-ci écrivent dans `~/.claude.json` sur votre machine, pas le dépôt. Ajoutez le serveur avec `claude mcp add --scope project`, qui écrit le [`.mcp.json`](/docs/fr/mcp#project-scope) du dépôt, et commitez ce fichier. Une session avec un seul dépôt le charge |327| Serveurs MCP que vous avez ajoutés avec `claude mcp add` à la portée locale par défaut ou à la portée utilisateur | Non | Ceux-ci écrivent dans `~/.claude.json` sur votre machine, pas le dépôt. Ajoutez le serveur avec `claude mcp add --scope project`, qui écrit le [`.mcp.json`](/docs/fr/mcp#project-scope) du dépôt, et commitez ce fichier. Une session avec un seul dépôt le charge |

320| Variables de transport dans le bloc `env` de `.claude/settings.json` de votre dépôt, comme `NODE_EXTRA_CA_CERTS` et les [variables de certificat client mTLS](/docs/fr/network-config#mtls-authentication) | Non | L'environnement d'hébergement gère la connexion API de la session, donc Claude Code ignore ces clés et note chaque clé ignorée dans le journal de débogage de la session |328| Variables de transport dans le bloc `env` de `.claude/settings.json` de votre dépôt, comme `NODE_EXTRA_CA_CERTS` et les [variables de certificat client mTLS](/docs/fr/network-config#mtls-authentication) | Non | L'environnement d'hébergement gère la connexion API de la session, donc Claude Code ignore ces clés et note chaque clé ignorée dans le journal de débogage de la session |

321| Clés API et jetons pour les services que Claude appelle | Sur les plans Pro et Max, en tant que [secrets réseau](#add-network-secrets) | Vous ajoutez la clé une fois sur l'environnement et le proxy d'agent la joint aux requêtes pour les hôtes que vous listez. Une clé que le proxy d'agent [ne peut pas joindre](#requests-that-never-get-the-credential), ou n'importe quelle clé sur un plan Team ou Enterprise, reste dans une variable d'environnement |329| Clés API et jetons pour les services que Claude appelle | Dans un environnement hébergé par Anthropic, en tant que [secrets réseau](#add-network-secrets) | Vous ajoutez la clé une fois sur l'environnement et le proxy d'agent la joint aux requêtes pour les hôtes que vous listez. Une clé que le proxy d'agent [ne peut pas joindre](#requests-that-never-get-the-credential) reste dans une variable d'environnement |

322| Authentification interactive comme AWS SSO | Non | Non supporté. SSO nécessite une connexion basée sur un navigateur qui ne peut pas s'exécuter dans une session cloud |330| Authentification interactive comme AWS SSO | Non | Non supporté. SSO nécessite une connexion basée sur un navigateur qui ne peut pas s'exécuter dans une session cloud |

323 331 

324Pour rendre votre propre configuration disponible dans les sessions cloud, commitez-la dans le dépôt.332Pour rendre votre propre configuration disponible dans les sessions cloud, commitez-la dans le dépôt.

325 333 

326Quiconque utilise l'environnement peut lire ses variables d'environnement et son script de configuration. La note de la boîte de dialogue sous **Environment variables** le dit et avertit contre l'ajout de secrets dedans. Sur les plans Pro et Max, stockez une clé que le proxy d'agent peut joindre en tant que [secret réseau](#add-network-secrets) à la place.334Quiconque utilise l'environnement peut lire ses variables d'environnement et son script de configuration. La note de la boîte de dialogue sous **Environment variables** le dit et avertit contre l'ajout de secrets dedans. Dans un environnement hébergé par Anthropic, stockez plutôt une clé que le proxy d'agent peut joindre en tant que [secret réseau](#add-network-secrets).

327 335 

328<h4 id="add-personal-preferences-without-committing-to-the-repo">336<h4 id="add-personal-preferences-without-committing-to-the-repo">

329 Ajouter des préférences personnelles sans les commiter dans le dépôt337 Ajouter des préférences personnelles sans les commiter dans le dépôt

code-review.md +0 −2

Details

155* Vous devez avoir un accès en écriture, maintenance ou administrateur au référentiel155* Vous devez avoir un accès en écriture, maintenance ou administrateur au référentiel

156* La PR doit être ouverte156* La PR doit être ouverte

157 157 

158Si le référentiel appartient à une organisation et votre adhésion à cette organisation est privée, ce qui est la valeur par défaut de GitHub, GitHub ne vous identifie pas à Claude en tant que membre. Claude peut toujours réagir à votre commentaire avec 👀, mais il ne démarre pas une révision à moins que vous ayez été ajouté au référentiel directement en tant que collaborateur, même quand une équipe ou les permissions de base de l'organisation vous donnent un accès en écriture. Pour corriger cela, [rendez votre adhésion à l'organisation publique](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/publicizing-or-hiding-organization-membership) ou demandez à un administrateur du référentiel de vous ajouter au référentiel en tant que collaborateur.

159 

160Contrairement aux déclencheurs automatiques, les déclencheurs manuels s'exécutent sur les PR brouillon, car une demande explicite signale que vous souhaitez la révision maintenant quel que soit le statut de brouillon.158Contrairement aux déclencheurs automatiques, les déclencheurs manuels s'exécutent sur les PR brouillon, car une demande explicite signale que vous souhaitez la révision maintenant quel que soit le statut de brouillon.

161 159 

162Si une révision s'exécute déjà sur cette PR, la demande est mise en file d'attente jusqu'à ce que la révision en cours se termine. Vous pouvez surveiller la progression via l'exécution de vérification sur la PR.160Si une révision s'exécute déjà sur cette PR, la demande est mise en file d'attente jusqu'à ce que la révision en cours se termine. Vous pouvez surveiller la progression via l'exécution de vérification sur la PR.

commands.md +6 −6

Details

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

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

69| `/bug [report]` | Signaler un bogue ou partager votre conversation. Vous choisissez la quantité d'historique de session à inclure et confirmez sur un écran de consentement avant que quoi que ce soit ne soit envoyé. Lorsque vous êtes connecté à Anthropic sur une connexion propriétaire, le rapport est envoyé à Anthropic ; sur un fournisseur tiers, ou sans identifiants Anthropic, Claude Code écrit le rapport dans une [archive locale sous `~/.claude/feedback-bundles/`](/docs/fr/data-usage#telemetry-services) que vous transmettez vous-même. Dans l'[extension VS Code](/docs/fr/vs-code#use-the-prompt-box), `/bug` ouvre plutôt la boîte de dialogue de retour de l'extension ; nécessite Claude Code v2.1.229 ou ultérieur. Lorsque vous l'exécutez pendant que Claude répond, Claude Code ouvre la boîte de dialogue immédiatement. Avant la v2.1.232, Claude Code mettait la commande en file d'attente jusqu'à la fin du tour. Alias : `/share`. Avant la v2.1.212, `/bug` et `/share` étaient des alias de `/feedback` |69| `/bug [report]` | Signaler un bogue ou partager votre conversation. Vous choisissez la quantité d'historique de session à inclure et confirmez sur un écran de consentement avant que quoi que ce soit ne soit envoyé. Lorsque vous êtes connecté à Anthropic sur une connexion propriétaire, le rapport est envoyé à Anthropic ; sur un fournisseur tiers, ou sans identifiants Anthropic, Claude Code écrit le rapport dans une [archive locale sous `~/.claude/feedback-bundles/`](/docs/fr/data-usage#telemetry-services) que vous transmettez vous-même. Dans l'[extension VS Code](/docs/fr/vs-code#use-the-prompt-box), `/bug` ouvre plutôt la boîte de dialogue de retour de l'extension ; nécessite Claude Code v2.1.229 ou ultérieur. Lorsque vous l'exécutez pendant que Claude répond, Claude Code ouvre la boîte de dialogue immédiatement. Avant la v2.1.232, Claude Code mettait la commande en file d'attente jusqu'à la fin du tour. Alias : `/share`. Avant la v2.1.212, `/bug` et `/share` étaient des alias de `/feedback` |

70| `/cd <path>` | Déplacer cette session vers un nouveau répertoire de travail, en conservant la conversation. Tapez un chemin partiel pour voir les suggestions de répertoires correspondants ; appuyez sur `Tab` pour en accepter un. Les suggestions nécessitent Claude Code v2.1.206 ou ultérieur. Pour ce que Claude Code applique à partir du nouveau répertoire dès que vous vous déplacez, et comment `/cd` diffère de `/add-dir`, consultez [Déplacer la session vers un autre répertoire](/docs/fr/permissions#move-the-session-to-another-directory) |70| `/cd <path>` | Déplacer cette session vers un nouveau répertoire de travail, en conservant la conversation. Tapez un chemin partiel pour voir les suggestions de répertoires correspondants ; appuyez sur `Tab` pour en accepter un. Pour ce que Claude Code applique à partir du nouveau répertoire dès que vous vous déplacez, et comment `/cd` diffère de `/add-dir`, consultez [Déplacer la session vers un autre répertoire](/docs/fr/permissions#move-the-session-to-another-directory) |

71| `/chrome` | Configurer les paramètres de [Claude dans Chrome](/docs/fr/chrome) |71| `/chrome` | Configurer les paramètres de [Claude dans Chrome](/docs/fr/chrome) |

72| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb\|preserved-thinking-migration]` | **[Skill](/docs/fr/skills#bundled-skills).** Charger la documentation de référence de [Claude API](https://platform.claude.com/docs/en/api/overview) et [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) pour le langage de votre projet. S'active également automatiquement lorsque votre code importe `anthropic` ou `@anthropic-ai/sdk`. Pour ce que chaque sous-commande fait et la version qu'elle nécessite, consultez [Travailler sur les projets Claude API](/docs/fr/skills#work-on-claude-api-projects) |72| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb\|preserved-thinking-migration]` | **[Skill](/docs/fr/skills#bundled-skills).** Charger la documentation de référence de [Claude API](https://platform.claude.com/docs/en/api/overview) et [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) pour le langage de votre projet. S'active également automatiquement lorsque votre code importe `anthropic` ou `@anthropic-ai/sdk`. Pour ce que chaque sous-commande fait et la version qu'elle nécessite, consultez [Travailler sur les projets Claude API](/docs/fr/skills#work-on-claude-api-projects) |

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

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

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

76| `/color [color\|default]` | Définir la couleur de la barre du prompt pour la session actuelle. Couleurs disponibles : `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`. Utilisez `default` pour réinitialiser, ou exécutez sans argument pour choisir une couleur aléatoire. Lorsque [Remote Control](/docs/fr/remote-control) est connecté, la couleur se synchronise avec claude.ai/code. Également disponible en mode non interactif (`-p`) ; nécessite Claude Code v2.1.205 ou ultérieur |76| `/color [color\|default]` | Définir la couleur de la barre du prompt pour la session actuelle. Couleurs disponibles : `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`. Utilisez `default` pour réinitialiser, ou exécutez sans argument pour choisir une couleur aléatoire. Lorsque [Remote Control](/docs/fr/remote-control) est connecté, la couleur se synchronise avec claude.ai/code. Également disponible en mode non interactif (`-p`) |

77| `/compact [instructions]` | Libérer du contexte en résumant la conversation jusqu'à présent. Passez éventuellement des instructions de focus pour le résumé. Consultez [comment la compaction gère les règles, les skills et les fichiers de mémoire](/docs/fr/context-window#what-survives-compaction) |77| `/compact [instructions]` | Libérer du contexte en résumant la conversation jusqu'à présent. Passez éventuellement des instructions de focus pour le résumé. Consultez [comment la compaction gère les règles, les skills et les fichiers de mémoire](/docs/fr/context-window#what-survives-compaction) |

78| `/config [key=value ...]` | Ouvrir l'interface [Paramètres](/docs/fr/settings) pour ajuster le thème, le modèle, [le style de sortie](/docs/fr/output-styles), et d'autres préférences. Passez une ou plusieurs paires `key=value` pour définir un paramètre directement sans ouvrir l'interface, par exemple `/config thinking=false`, `/config theme=dark`, ou `/config model=sonnet`. Le formulaire `key=value` fonctionne également en mode non interactif (`-p`) et à partir de l'application mobile Claude via [Remote Control](/docs/fr/remote-control). Le formulaire `key=value` ne peut pas activer un paramètre qui nécessite votre confirmation dans le panneau, tel que [`autoContinueAtUsageLimit`](/docs/fr/interactive-mode#turn-automatic-continue-off), bien qu'il puisse en désactiver un. Exécutez `/config --help` pour répertorier les clés qu'il accepte. Alias : `/settings` |78| `/config [key=value ...]` | Ouvrir l'interface [Paramètres](/docs/fr/settings) pour ajuster le thème, le modèle, [le style de sortie](/docs/fr/output-styles), et d'autres préférences. Passez une ou plusieurs paires `key=value` pour définir un paramètre directement sans ouvrir l'interface, par exemple `/config thinking=false`, `/config theme=dark`, ou `/config model=sonnet`. Le formulaire `key=value` fonctionne également en mode non interactif (`-p`) et à partir de l'application mobile Claude via [Remote Control](/docs/fr/remote-control). Le formulaire `key=value` ne peut pas activer un paramètre qui nécessite votre confirmation dans le panneau, tel que [`autoContinueAtUsageLimit`](/docs/fr/interactive-mode#turn-automatic-continue-off), bien qu'il puisse en désactiver un. Exécutez `/config --help` pour répertorier les clés qu'il accepte. Alias : `/settings` |

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


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

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

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

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

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

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

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


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

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

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

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

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

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

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


130| `/release-notes` | Afficher le journal des modifications dans un sélecteur de version interactif. Sélectionnez une version spécifique pour voir ses notes de version, ou choisissez d'afficher toutes les versions. Les notes apparaissent dans votre transcription sans entrer dans la conversation que Claude voit |130| `/release-notes` | Afficher le journal des modifications dans un sélecteur de version interactif. Sélectionnez une version spécifique pour voir ses notes de version, ou choisissez d'afficher toutes les versions. Les notes apparaissent dans votre transcription sans entrer dans la conversation que Claude voit |

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

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

133| `/remote-control` | Rendre cette session disponible pour [Remote Control](/docs/fr/remote-control) à partir de claude.ai. L'exécuter sans connexion affiche que Remote Control nécessite un abonnement claude.ai et vous indique comment vous connecter ; avant la v2.1.206, il signalait `Unknown command: /remote-control`. Alias : `/rc` |133| `/remote-control` | Rendre cette session disponible pour [Remote Control](/docs/fr/remote-control) à partir de claude.ai. L'exécuter sans connexion affiche que Remote Control nécessite un abonnement claude.ai et vous indique comment vous connecter. Alias : `/rc` |

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

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

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

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

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

Details

419 * Vous pouvez référencer plusieurs fichiers dans un seul message (par exemple, « @file1.js et @file2.js »)419 * Vous pouvez référencer plusieurs fichiers dans un seul message (par exemple, « @file1.js et @file2.js »)

420</Tip>420</Tip>

421 421 

422Pour empêcher les références `@` d'inclure le contenu des fichiers et les listes de répertoires dans votre message, définissez [`CLAUDE_CODE_DISABLE_FILE_MENTIONS=1`](/docs/fr/env-vars#variables) dans votre shell ou vos paramètres utilisateur. Claude reçoit alors les chemins que vous avez référencés, accompagnés d'une note lui indiquant de les lire à l'aide de ses outils de fichiers. La variable nécessite Claude Code v2.1.299 ou une version ultérieure, et Claude Code l'ignore dans les paramètres de projet et locaux.

423 

422***424***

423 425 

424<h3 id="run-claude-on-a-schedule">426<h3 id="run-claude-on-a-schedule">

Details

1602| Prompt système et style de sortie | Les deux s'appliquent toujours |1602| Prompt système et style de sortie | Les deux s'appliquent toujours |

1603| CLAUDE.md à la racine du projet et règles sans portée | Réinjectés depuis le disque |1603| CLAUDE.md à la racine du projet et règles sans portée | Réinjectés depuis le disque |

1604| Mémoire automatique | Réinjectée depuis le disque |1604| Mémoire automatique | Réinjectée depuis le disque |

1605| [Snapshot du statut Git](/docs/fr/settings-reference#includegitinstructions) | Claude Code en lit un nouveau depuis votre dépôt |1605| [Snapshot du statut Git](/docs/fr/settings-reference#includegitinstructions) | Si la session a démarré avec un snapshot, Claude Code en lit un nouveau depuis votre dépôt |

1606| Le plan que Claude a écrit en [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) | Réinjecté depuis le disque |1606| Le plan que Claude a écrit en [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) | Réinjecté depuis le disque |

1607| Règles avec frontmatter `paths:` | Claude Code les recharge [à la demande](/docs/fr/memory#path-specific-rules) |1607| Règles avec frontmatter `paths:` | Claude Code les recharge [à la demande](/docs/fr/memory#path-specific-rules) |

1608| CLAUDE.md imbriqué dans les sous-répertoires | Claude Code les recharge [à la demande](/docs/fr/memory#how-claude-md-files-load) |1608| CLAUDE.md imbriqué dans les sous-répertoires | Claude Code les recharge [à la demande](/docs/fr/memory#how-claude-md-files-load) |


1622 Quand votre contexte se remplit1622 Quand votre contexte se remplit

1623</h2>1623</h2>

1624 1624 

1625Claude Code se compacte automatiquement à mesure que vous approchez de la limite, de sorte qu'une fenêtre de contexte complète ne termine pas votre session. La passe automatique fonctionne de la même manière que l'étape `/compact` dans la chronologie. Consultez [Quand le contexte se remplit](/docs/fr/how-claude-code-works#when-context-fills-up) pour voir ce qu'elle préserve.1625Claude Code se compacte automatiquement à mesure que vous approchez de la limite, de sorte qu'une fenêtre de contexte complète ne termine pas votre session. La passe automatique fonctionne de la même manière que l'étape `/compact` dans la chronologie. Consultez [Quand le contexte se remplit](/docs/fr/how-claude-code-works#when-context-fills-up) pour voir ce qu'elle préserve. Pour savoir quand Claude Code compacte également une conversation que vous laissez inactive, consultez [compaction en cas d'inactivité](/docs/fr/settings-reference#idlecompaction).

1626 1626 

1627Vous pouvez également agir avant que la passe automatique ne s'exécute :1627Vous pouvez également agir avant que la passe automatique ne s'exécute :

1628 1628 

Details

128* **Tolérez d'être invoqué de l'intérieur de vous-même.** Claude Code applique le lanceur à chaque auto-génération imbriquée, donc un lanceur qui acquiert une ressource exclusive doit détecter qu'il la détient déjà.128* **Tolérez d'être invoqué de l'intérieur de vous-même.** Claude Code applique le lanceur à chaque auto-génération imbriquée, donc un lanceur qui acquiert une ressource exclusive doit détecter qu'il la détient déjà.

129* **N'écrivez pas sur le terminal avant que Claude Code ne démarre.** Tout ce qui est imprimé avant le `exec` est signalé comme la cause du plantage si la session meurt avant l'initialisation.129* **N'écrivez pas sur le terminal avant que Claude Code ne démarre.** Tout ce qui est imprimé avant le `exec` est signalé comme la cause du plantage si la session meurt avant l'initialisation.

130* **Ne dépendez pas de la façon dont les arguments sont écrits.** La valeur d'un flag peut arriver comme son propre argument, `--flag value`, ou jointe au flag, `--flag=value`. La forme qu'utilise un flag peut changer d'une version à l'autre.130* **Ne dépendez pas de la façon dont les arguments sont écrits.** La valeur d'un flag peut arriver comme son propre argument, `--flag value`, ou jointe au flag, `--flag=value`. La forme qu'utilise un flag peut changer d'une version à l'autre.

131* **Exécutez `exec` depuis le répertoire dans lequel le lanceur a démarré.** Claude Code travaille dans le répertoire dans lequel il démarre, donc un lanceur qui change de répertoire peut démarrer une session dans le mauvais projet. Si le lanceur doit entrer dans un espace de noms ou un sandbox qui réinitialise le répertoire de travail, revenez au répertoire de départ à l'intérieur de celui-ci, avant le `exec`.

131 132 

132<h3 id="format-of-the-launcher-value">133<h3 id="format-of-the-launcher-value">

133 Format de la valeur du lanceur134 Format de la valeur du lanceur

Details

170| Le skill n'apparaît pas dans `/skills` | Le fichier skill est à `.claude/skills/name.md` au lieu d'être dans un dossier | Utilisez un dossier avec `SKILL.md` à l'intérieur : `.claude/skills/name/SKILL.md`. |170| Le skill n'apparaît pas dans `/skills` | Le fichier skill est à `.claude/skills/name.md` au lieu d'être dans un dossier | Utilisez un dossier avec `SKILL.md` à l'intérieur : `.claude/skills/name/SKILL.md`. |

171| Le skill apparaît dans `/skills` mais Claude ne l'invoque jamais | Le skill a `disable-model-invocation: true` dans son frontmatter, ou sa description ne correspond pas à la façon dont vous formulez la demande | Vérifiez le badge dans `/skills` : un label « user-only » signifie que Claude ne le déclenchera pas de lui-même. Consultez [skill invocation](/docs/fr/skills). |171| Le skill apparaît dans `/skills` mais Claude ne l'invoque jamais | Le skill a `disable-model-invocation: true` dans son frontmatter, ou sa description ne correspond pas à la façon dont vous formulez la demande | Vérifiez le badge dans `/skills` : un label « user-only » signifie que Claude ne le déclenchera pas de lui-même. Consultez [skill invocation](/docs/fr/skills). |

172| Les instructions du sous-répertoire `CLAUDE.md` semblent ignorées | Les fichiers du sous-répertoire se chargent à la demande, pas au démarrage de la session | Pour charger le `CLAUDE.md` d'un sous-répertoire, demandez à Claude de lire un autre fichier de ce sous-répertoire. Consultez [quand les fichiers de sous-répertoire se chargent](/docs/fr/memory#how-claude-md-files-load). |172| Les instructions du sous-répertoire `CLAUDE.md` semblent ignorées | Les fichiers du sous-répertoire se chargent à la demande, pas au démarrage de la session | Pour charger le `CLAUDE.md` d'un sous-répertoire, demandez à Claude de lire un autre fichier de ce sous-répertoire. Consultez [quand les fichiers de sous-répertoire se chargent](/docs/fr/memory#how-claude-md-files-load). |

173| Le sous-agent ignore les instructions `CLAUDE.md` | Les agents Explore et Plan intégrés ignorent `CLAUDE.md`. Un sous-agent personnalisé le charge de la même manière que la conversation principale, sauf si sa définition définit [`omitClaudeMd`](/docs/fr/sub-agents#supported-frontmatter-fields) | Pour Explore ou Plan, reformulez l'instruction dans votre invite de délégation. Pour un sous-agent qui définit `omitClaudeMd`, supprimez le champ. Pour tout autre sous-agent personnalisé, mettez les instructions critiques dans le corps du fichier agent, qui devient l'invite système du sous-agent. Consultez [what loads at startup](/docs/fr/sub-agents#what-loads-at-startup). |173| Le sous-agent ignore les instructions `CLAUDE.md` | Les agents Explore et Plan intégrés ignorent `CLAUDE.md` au démarrage. Un sous-agent personnalisé le charge de la même manière que la conversation principale, sauf si sa définition définit [`omitClaudeMd`](/docs/fr/sub-agents#supported-frontmatter-fields) | Pour Explore ou Plan, reformulez l'instruction dans votre prompt de délégation. Pour un sous-agent qui définit `omitClaudeMd`, supprimez le champ. Pour tout autre sous-agent personnalisé, mettez les instructions critiques dans le corps du fichier agent, qui devient le prompt système de l'agent. Consultez [what loads at startup](/docs/fr/sub-agents#what-loads-at-startup). |

174| La logique de nettoyage ne s'exécute jamais à la fin de la session | Aucun hook `SessionEnd` configuré | Ajoutez un hook `SessionEnd` dans `settings.json`. Consultez la [hook events list](/docs/fr/hooks#hook-events). |174| La logique de nettoyage ne s'exécute jamais à la fin de la session | Aucun hook `SessionEnd` configuré | Ajoutez un hook `SessionEnd` dans `settings.json`. Consultez la [hook events list](/docs/fr/hooks#hook-events). |

175| Les serveurs MCP dans `.mcp.json` ne se chargent jamais | Le fichier est sous `.claude/`, ou ses serveurs se trouvent sous une clé `servers` de haut niveau, comme dans le `mcp.json` de VS Code, au lieu de `mcpServers` | La configuration MCP du projet va à la racine du référentiel sous `.mcp.json`, pas à l'intérieur de `.claude/`, avec les serveurs sous la clé `mcpServers`. Consultez [MCP configuration](/docs/fr/mcp). |175| Les serveurs MCP dans `.mcp.json` ne se chargent jamais | Le fichier est sous `.claude/`, ou ses serveurs se trouvent sous une clé `servers` de haut niveau, comme dans le `mcp.json` de VS Code, au lieu de `mcpServers` | La configuration MCP du projet va à la racine du référentiel sous `.mcp.json`, pas à l'intérieur de `.claude/`, avec les serveurs sous la clé `mcpServers`. Consultez [MCP configuration](/docs/fr/mcp). |

176| Les serveurs MCP ajoutés sous `mcpServers` dans `settings.json` n'apparaissent jamais | `settings.json` ne lit pas une clé `mcpServers` | Définissez les serveurs du projet dans `.mcp.json` à la racine du référentiel, ou exécutez `claude mcp add --scope user` pour les serveurs à portée utilisateur. Consultez [MCP configuration](/docs/fr/mcp). |176| Les serveurs MCP ajoutés sous `mcpServers` dans `settings.json` n'apparaissent jamais | `settings.json` ne lit pas une clé `mcpServers` | Définissez les serveurs du projet dans `.mcp.json` à la racine du référentiel, ou exécutez `claude mcp add --scope user` pour les serveurs à portée utilisateur. Consultez [MCP configuration](/docs/fr/mcp). |

desktop.md +135 −11

Details

46 46 

47Avant d'envoyer votre premier message, configurez quatre choses dans la zone de prompt :47Avant d'envoyer votre premier message, configurez quatre choses dans la zone de prompt :

48 48 

49* **Environnement** : choisissez où Claude s'exécute. Sélectionnez **Local** pour votre machine, **Cloud** pour une [session cloud](#cloud-sessions) qui continue après la fermeture de l'application, une [**connexion SSH**](#ssh-sessions) pour une machine distante que vous gérez, ou sur Windows une [**distribution WSL**](/docs/fr/desktop-wsl). Une tâche dans une session SSH peut [continuer pendant que Desktop est déconnecté](#keep-a-task-running-while-desktop-is-disconnected), mais avec un compte Claude, elle peut s'arrêter lorsque sa connexion expire. Voir [configuration de l'environnement](#environment-configuration).49* **Environnement** : choisissez où Claude s'exécute. Sélectionnez **Local** pour votre machine, **Cloud** pour une [session cloud](#cloud-sessions) qui continue après la fermeture de l'application, une [**connexion SSH**](#ssh-sessions) pour une machine distante que vous gérez, ou sur Windows une [**distribution WSL**](/docs/fr/desktop-wsl). Une tâche dans une session SSH peut [continuer pendant que Desktop est déconnecté](#keep-a-task-running-while-desktop-is-disconnected), mais avec un compte Claude, elle peut s'arrêter lorsque son authentification expire. Voir [configuration de l'environnement](#environment-configuration).

50* **Dossier du projet** : sélectionnez le dossier ou le référentiel dans lequel Claude travaille. Pour les sessions cloud, vous pouvez ajouter [plusieurs référentiels](#run-long-running-tasks-in-the-cloud).50* **Dossier du projet** : sélectionnez le dossier ou le référentiel dans lequel Claude travaille. Pour les sessions cloud, vous pouvez ajouter [plusieurs référentiels](#run-long-running-tasks-in-the-cloud).

51* **Modèle** : choisissez un [modèle](/docs/fr/model-config#available-models) dans la liste déroulante à côté du bouton d'envoi. Vous pouvez modifier ceci pendant la session.51* **Modèle** : choisissez un [modèle](/docs/fr/model-config#available-models) dans la liste déroulante à côté du bouton d'envoi. Vous pouvez modifier ceci pendant la session.

52* **Mode de permission** : choisissez le niveau d'autonomie de Claude à partir du [sélecteur de mode](#choose-a-permission-mode). Vous pouvez modifier ceci pendant la session.52* **Mode de permission** : choisissez le niveau d'autonomie de Claude à partir du [sélecteur de mode](#choose-a-permission-mode). Vous pouvez modifier ceci pendant la session.


101| **Accepter les modifications** | `acceptEdits` | Claude accepte automatiquement les modifications de fichiers et les commandes courantes du système de fichiers comme `mkdir`, `touch` et `mv`, mais demande toujours avant d'exécuter les autres commandes du terminal. Utilisez ceci quand vous faites confiance aux modifications de fichiers et voulez une itération plus rapide. |101| **Accepter les modifications** | `acceptEdits` | Claude accepte automatiquement les modifications de fichiers et les commandes courantes du système de fichiers comme `mkdir`, `touch` et `mv`, mais demande toujours avant d'exécuter les autres commandes du terminal. Utilisez ceci quand vous faites confiance aux modifications de fichiers et voulez une itération plus rapide. |

102| **Plan** | `plan` | Claude lit les fichiers et exécute les commandes pour explorer, puis propose un plan sans modifier votre code source. Bon pour les tâches complexes où vous voulez examiner l'approche en premier. |102| **Plan** | `plan` | Claude lit les fichiers et exécute les commandes pour explorer, puis propose un plan sans modifier votre code source. Bon pour les tâches complexes où vous voulez examiner l'approche en premier. |

103| **Auto** | `auto` | Claude s'exécute sans demandes de permission courantes ; avant que des actions telles que les commandes shell et les requêtes réseau s'exécutent, un classificateur en arrière-plan vérifie qu'elles s'alignent avec votre demande. Apparaît quand [le mode auto est disponible](#auto-mode-availability) ; il n'y a pas de bascule Paramètres séparée pour cela. |103| **Auto** | `auto` | Claude s'exécute sans demandes de permission courantes ; avant que des actions telles que les commandes shell et les requêtes réseau s'exécutent, un classificateur en arrière-plan vérifie qu'elles s'alignent avec votre demande. Apparaît quand [le mode auto est disponible](#auto-mode-availability) ; il n'y a pas de bascule Paramètres séparée pour cela. |

104| **Contourner les permissions** | `bypassPermissions` | Claude s'exécute sans demandes de permission, sauf pour les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves), les classificateurs de sécurité quand Claude [agit sur des sites externes](#browse-external-sites), ou les actions de bureau où Claude demande toujours en premier, comme [archiver une session](#work-across-sessions). Équivalent à `--dangerously-skip-permissions` dans la CLI. Sur les plans Pro et Max, activez-le dans vos Paramètres → Claude Code sous « Autoriser le mode de contournement des permissions » ; sur les plans Team et Enterprise, il n'y a pas de bascule Paramètres, et la politique organisationnelle le contrôle à la place. Utilisez uniquement dans les conteneurs sandboxés ou les machines virtuelles. |104| **Contourner les permissions** | `bypassPermissions` | Claude s'exécute sans demandes de permission, sauf pour les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves), les classificateurs de sécurité quand Claude [agit sur des sites externes](#browse-external-sites), ou les actions de bureau telles que la suppression d'une session, mais pas [son archivage](#work-across-sessions). Équivalent à `--dangerously-skip-permissions` dans la CLI. Sur les plans Pro et Max, activez-le dans vos Paramètres → Claude Code sous « Autoriser le mode de contournement des permissions » ; sur les plans Team et Enterprise, il n'y a pas de bascule Paramètres, et la politique organisationnelle le contrôle à la place. Utilisez uniquement dans les conteneurs sandboxés ou les machines virtuelles. |

105 105 

106Les versions antérieures de l'onglet Code étiquetaient ces modes Demander les permissions, Accepter automatiquement les modifications et Plan mode.106Les versions antérieures de l'onglet Code étiquetaient ces modes Demander les permissions, Accepter automatiquement les modifications et Plan mode.

107 107 


131 131 

132Le volet Navigateur peut également ouvrir des fichiers HTML statiques, des PDF, des images et des vidéos de votre projet. Cliquez sur un chemin HTML, PDF, image ou vidéo dans le chat pour l'ouvrir là.132Le volet Navigateur peut également ouvrir des fichiers HTML statiques, des PDF, des images et des vidéos de votre projet. Cliquez sur un chemin HTML, PDF, image ou vidéo dans le chat pour l'ouvrir là.

133 133 

134<Note>

135 Dans une [session SSH](#ssh-sessions), Claude ne peut pas ouvrir votre application dans le volet Navigateur, car il n'y dispose pas des outils du volet. Pour consulter l'application vous-même, [transférez son port vers votre ordinateur](#reach-a-port-on-the-remote-machine).

136</Note>

137 

134À partir du volet Navigateur, vous pouvez :138À partir du volet Navigateur, vous pouvez :

135 139 

136* Interagir avec votre application en cours d'exécution directement dans le volet Navigateur140* Interagir avec votre application en cours d'exécution directement dans le volet Navigateur


218 222 

219<Note>223<Note>

220 La surveillance des PR nécessite que la [CLI GitHub (`gh`)](https://cli.github.com/) soit installée et authentifiée sur votre machine. Si `gh` n'est pas installée, Desktop vous invite à l'installer la première fois que vous essayez de créer une PR.224 La surveillance des PR nécessite que la [CLI GitHub (`gh`)](https://cli.github.com/) soit installée et authentifiée sur votre machine. Si `gh` n'est pas installée, Desktop vous invite à l'installer la première fois que vous essayez de créer une PR.

225 

226 Dans une [session SSH](#ssh-sessions), configurez `git` et `gh` sur la machine distante avant de cliquer sur **Créer une PR**, car c'est là que Claude pousse la branche et exécute `gh pr create`. Installez vous-même `gh` sur cette machine, car Desktop ne vous invite pas à le faire dans une session SSH. Vérifiez ensuite sur cette machine que `git push` fonctionne et que `gh auth status` indique que vous êtes connecté.

221</Note>227</Note>

222 228 

223<h2 id="arrange-your-workspace">229<h2 id="arrange-your-workspace">


453 459 

454Claude Code applique quatre comportements de sécurité entre les sessions :460Claude Code applique quatre comportements de sécurité entre les sessions :

455 461 

456* Avant d'archiver une session, Claude vous demande d'abord. Vous voyez la carte d'approbation dans chaque mode de permission, y compris les permissions Auto et Bypass.462* Vous voyez une carte d'approbation avant que Claude n'archive une session, sauf en mode auto et en mode Bypass permissions, où Claude peut archiver une session sans carte. Pour que Claude vous le demande, passez en mode Manual.

457* À travers cette surface, Claude ne peut pas envoyer de messages entre sessions à partir d'une session que personne ne regarde, comme une exécution de tâche planifiée, et ne peut pas livrer de messages dans une.463* À travers cette surface, Claude ne peut pas envoyer de messages entre sessions à partir d'une session que personne ne regarde, comme une exécution de tâche planifiée, et ne peut pas livrer de messages dans une.

458* Claude Code vérifie chaque message de cette surface par rapport aux [contrôles entrants](/docs/fr/cross-session-messaging#control-inbound-messages) de la session réceptrice, même quand la session réceptrice n'a pas [la messagerie entre sessions](/docs/fr/cross-session-messaging#availability) elle-même. Si vous définissez [`crossSessionInbound`](/docs/fr/settings-reference#crosssessioninbound) à `refuse` dans la session réceptrice, Claude Code supprime les messages de cette surface. Claude Code signale le refus à l'application de bureau Claude. Avant v2.1.234, Claude Code supprimait chaque message de cette surface vers une session réceptrice sans messagerie entre sessions.464* Claude Code vérifie chaque message de cette surface par rapport aux [contrôles entrants](/docs/fr/cross-session-messaging#control-inbound-messages) de la session réceptrice, même quand la session réceptrice n'a pas [la messagerie entre sessions](/docs/fr/cross-session-messaging#availability) elle-même. Si vous définissez [`crossSessionInbound`](/docs/fr/settings-reference#crosssessioninbound) à `refuse` dans la session réceptrice, Claude Code supprime les messages de cette surface. Claude Code signale le refus à l'application de bureau Claude. Avant v2.1.234, Claude Code supprimait chaque message de cette surface vers une session réceptrice sans messagerie entre sessions.

459* Claude Code cite chaque message entrant et l'attribue à la session qui l'a envoyé, et Claude suit toujours les paramètres de permission propres de la session réceptrice quand il agit sur un.465* Claude Code cite chaque message entrant et l'attribue à la session qui l'a envoyé, et Claude suit toujours les paramètres de permission propres de la session réceptrice quand il agit sur un.


471Voir [Utiliser Claude Code dans le cloud](/docs/fr/claude-code-on-the-web) pour plus d'informations sur le fonctionnement des sessions cloud. Quand un corps de travail nécessite de nombreuses sessions cloud, sélectionnez **Projets** dans la barre latérale pour créer un [projet](/docs/fr/claude-projects), où Claude démarre et suit les sessions pour vous à partir d'une conversation.477Voir [Utiliser Claude Code dans le cloud](/docs/fr/claude-code-on-the-web) pour plus d'informations sur le fonctionnement des sessions cloud. Quand un corps de travail nécessite de nombreuses sessions cloud, sélectionnez **Projets** dans la barre latérale pour créer un [projet](/docs/fr/claude-projects), où Claude démarre et suit les sessions pour vous à partir d'une conversation.

472 478 

473<Note>479<Note>

474 Une tâche dans une [session SSH](#ssh-sessions) peut également [continuer pendant que Desktop est déconnecté](#keep-a-task-running-while-desktop-is-disconnected), mais avec un compte Claude, elle peut s'arrêter lorsque sa connexion expire.480 Une tâche dans une [session SSH](#ssh-sessions) peut également [continuer pendant que Desktop est déconnecté](#keep-a-task-running-while-desktop-is-disconnected), mais avec un compte Claude, elle peut s'arrêter lorsque son authentification expire.

475</Note>481</Note>

476 482 

477<h3 id="continue-in-another-surface">483<h3 id="continue-in-another-surface">


546 552 

547[Les skills](/docs/fr/skills) étendent ce que Claude peut faire. Claude les charge automatiquement quand ils sont pertinents, ou vous pouvez en invoquer un directement : tapez `/` dans la zone de prompt ou cliquez sur le bouton **+** et sélectionnez **Slash commands** pour parcourir ce qui est disponible. Ceci inclut [les commandes intégrées](/docs/fr/commands), vos [skills personnalisés](/docs/fr/skills#create-your-first-skill), les skills du projet à partir de votre base de code et les skills de tout [plugin installé](/docs/fr/plugins/install). Sélectionnez-en un et il apparaît en surbrillance dans le champ d'entrée. Tapez votre tâche après et envoyez comme d'habitude.553[Les skills](/docs/fr/skills) étendent ce que Claude peut faire. Claude les charge automatiquement quand ils sont pertinents, ou vous pouvez en invoquer un directement : tapez `/` dans la zone de prompt ou cliquez sur le bouton **+** et sélectionnez **Slash commands** pour parcourir ce qui est disponible. Ceci inclut [les commandes intégrées](/docs/fr/commands), vos [skills personnalisés](/docs/fr/skills#create-your-first-skill), les skills du projet à partir de votre base de code et les skills de tout [plugin installé](/docs/fr/plugins/install). Sélectionnez-en un et il apparaît en surbrillance dans le champ d'entrée. Tapez votre tâche après et envoyez comme d'habitude.

548 554 

549Vous pouvez envoyer une commande pendant que Claude travaille, de la même manière que tout autre message, et la session revient à l'inactivité une fois que le tour est terminé. Avant la v2.1.206, une commande envoyée en cours de tour pouvait laisser la session affichée comme en cours d'exécution et les messages que vous avez envoyés après n'étaient pas livrés.555Vous pouvez envoyer une commande pendant que Claude travaille, de la même manière que tout autre message, et la session revient à l'inactivité une fois que le tour est terminé.

550 556 

551Les sessions locales chargent vos skills personnels à partir de `~/.claude/skills/`. Une session [SSH](#ssh-sessions) lit `~/.claude/skills/` à partir du répertoire personnel de l'hôte distant, et non à partir de votre machine.557Les sessions locales chargent vos skills personnels à partir de `~/.claude/skills/`. Une session [SSH](#ssh-sessions) lit `~/.claude/skills/` à partir du répertoire personnel de l'hôte distant, et non à partir de votre machine.

552 558 


693 699 

694* **`true`** : Claude trouve et utilise un port libre automatiquement. Approprié pour la plupart des serveurs de développement.700* **`true`** : Claude trouve et utilise un port libre automatiquement. Approprié pour la plupart des serveurs de développement.

695* **`false`** : Claude échoue avec une erreur. Utilisez ceci quand votre serveur doit utiliser un port spécifique, comme pour les rappels OAuth ou les listes blanches CORS.701* **`false`** : Claude échoue avec une erreur. Utilisez ceci quand votre serveur doit utiliser un port spécifique, comme pour les rappels OAuth ou les listes blanches CORS.

696* **Non défini (par défaut)** : Claude demande si le serveur a besoin de ce port exact, puis enregistre votre réponse.702* **Non défini (par défaut)** : votre serveur obtient le prochain port libre, comme avec `true`, sauf dans le cas ci-dessous. Avant Claude Desktop v2.37337.0, Claude demande plutôt si le serveur a besoin de ce port exact, puis enregistre votre réponse dans `launch.json`.

697 703 

698Quand Claude choisit un port différent, il passe le port assigné à votre serveur via la variable d'environnement `PORT`.704Si votre port préféré est utilisé et que `autoPort` n'est pas défini, votre serveur reste arrêté lorsque toutes ces conditions sont réunies :

705 

706* Vous démarrez le serveur via un script `npm`, `yarn`, `pnpm` ou `bun`.

707* Votre port préféré est codé en dur dans ce script, ou Claude ne peut pas inspecter le script.

708* Vous ne passez pas le port dans `runtimeArgs`.

709 

710Dans ce cas, libérez le port, supprimez la valeur codée en dur ou modifiez `port` pour qu'il corresponde au script. Définir `"autoPort": true` à la place ne fonctionne que pour un script qui lit `PORT`.

711 

712Faites en sorte que votre serveur lise son port à partir de la variable d'environnement `PORT`, qui contient le port assigné. Quand Claude déplace votre serveur vers un port différent, il réécrit également une valeur `--port` ou `-p` dans `runtimeArgs` pour qu'elle corresponde.

699 713 

700<h4 id="examples">714<h4 id="examples">

701 Exemples715 Exemples


840 854 

841Une machine distante Linux ou macOS nécessite un processeur pris en charge, un serveur SSH avec SFTP, un dossier d'installation qui n'est pas monté en `noexec`, un shell fonctionnel et un accès réseau. Vérifiez chaque exigence avant de vous connecter, ou lorsqu'une connexion échoue après votre authentification :855Une machine distante Linux ou macOS nécessite un processeur pris en charge, un serveur SSH avec SFTP, un dossier d'installation qui n'est pas monté en `noexec`, un shell fonctionnel et un accès réseau. Vérifiez chaque exigence avant de vous connecter, ou lorsqu'une connexion échoue après votre authentification :

842 856 

843* **Système** : un processeur x86\_64 ou arm64. La machine doit également satisfaire la [configuration système requise](/docs/fr/setup#system-requirements) de Claude Code.857* **Système** : un processeur x86\_64 ou arm64. La machine doit également satisfaire la [configuration système requise](/docs/fr/setup#system-requirements) de Claude Code. Sur Linux, Claude Code nécessite glibc 2.17 ou une version ultérieure, ou musl. Pour savoir laquelle la machine possède, exécutez `ldd --version` sur celle-ci. Sur une distribution basée sur musl comme Alpine Linux, installez également les [paquets dont Claude Code a besoin](/docs/fr/setup#alpine-linux-and-musl-based-distributions).

844* **SFTP** : le serveur SSH doit proposer le sous-système SFTP, qu'une ligne `Subsystem sftp` dans son `sshd_config` active. Pour vérifier, connectez-vous au même hôte et au même port avec `sftp` dans un terminal sur votre ordinateur. Un serveur fonctionnel affiche l'invite `sftp>`.858* **SFTP** : le serveur SSH doit proposer le sous-système SFTP, qu'une ligne `Subsystem sftp` dans son `sshd_config` active. Pour vérifier, connectez-vous au même hôte et au même port avec `sftp` dans un terminal sur votre ordinateur. Un serveur fonctionnel affiche l'invite `sftp>`.

845* **Sessions par connexion** : Desktop sur macOS et Linux ouvre plusieurs sessions sur une même connexion SSH. Si le `sshd_config` du serveur définit `MaxSessions 1`, augmentez cette valeur, par exemple à la valeur par défaut d'OpenSSH, 10.859* **Sessions par connexion** : Desktop sur macOS et Linux ouvre plusieurs sessions sur une même connexion SSH. Si le `sshd_config` du serveur définit `MaxSessions 1`, augmentez cette valeur, par exemple à la valeur par défaut d'OpenSSH, 10.

846* **Dossier d'installation** : Desktop installe un programme auxiliaire et Claude Code sous `~/.claude/remote/` dans votre répertoire personnel. Il les exécute depuis cet emplacement, donc ce dossier ne peut pas se trouver sur un système de fichiers monté en `noexec`. Prévoyez environ 1 Go d'espace disque dans le répertoire personnel de chaque utilisateur qui se connecte.860* **Dossier d'installation** : Desktop installe un programme auxiliaire et Claude Code sous `~/.claude/remote/` dans votre répertoire personnel. Il les exécute depuis cet emplacement, donc ce dossier ne peut pas se trouver sur un système de fichiers monté en `noexec`. Prévoyez environ 1 Go d'espace disque dans le répertoire personnel de chaque utilisateur qui se connecte. Pour savoir ce que contient ce dossier, voir [Fichiers et processus sur la machine distante](#files-and-processes-on-the-remote-machine).

847* **Shell** : le shell défini pour votre compte sur la machine distante doit exécuter les commandes envoyées via SSH, comme le font Bash, Zsh et `sh`861* **Shell** : le shell défini pour votre compte sur la machine distante doit exécuter les commandes envoyées via SSH, comme le font Bash, Zsh et `sh`

848* **Réseau** : Claude Code s'exécute sur la machine distante et effectue ses requêtes réseau depuis celle-ci ; la machine a donc besoin de l'[accès réseau requis par Claude Code](/docs/fr/network-config#network-access-requirements). Si la machine ne peut pas télécharger Claude Code, Desktop le télécharge sur votre ordinateur et le transfère. Les autres requêtes de Claude Code partent toujours de la machine distante.862* **Réseau** : Claude Code s'exécute sur la machine distante et effectue ses requêtes réseau depuis celle-ci ; la machine a donc besoin de l'[accès réseau requis par Claude Code](/docs/fr/network-config#network-access-requirements). Si la machine ne peut pas télécharger Claude Code, Desktop le télécharge sur votre ordinateur et le transfère. Les autres requêtes de Claude Code partent toujours de la machine distante.

849 863 


878 892 

879Saisissez `devbox` dans le champ **Hôte SSH**.893Saisissez `devbox` dans le champ **Hôte SSH**.

880 894 

895<h5 id="use-variables-from-your-shell-in-a-proxycommand">

896 Utiliser des variables de votre shell dans un `ProxyCommand`

897</h5>

898 

899Pour utiliser une variable d'environnement qui vous est propre dans une commande `ProxyCommand` ou `Match exec`, exportez-la dans un fichier de démarrage du shell, comme `~/.zshrc`, puis quittez et rouvrez Desktop. Au démarrage, Desktop lit ce que votre shell de connexion exporte, et conserve ces valeurs jusqu'à ce que vous le quittiez.

900 

901Cela nécessite Claude Desktop v2.37337.0 ou une version ultérieure et une commande `env` qui accepte `-0`, ce que vous pouvez vérifier en exécutant `env -0` dans un terminal sur votre ordinateur.

902 

881<h5 id="raise-the-ssh-connection-timeout">903<h5 id="raise-the-ssh-connection-timeout">

882 Augmenter le délai d'expiration de la connexion SSH904 Augmenter le délai d'expiration de la connexion SSH

883</h5>905</h5>


894 916 

895`ssh` utilise la première valeur qu'il trouve pour un hôte ; placez donc l'entrée au-dessus de toute entrée `Host *` qui définit `ConnectTimeout`. Pour confirmer, exécutez `ssh -G devbox` dans un terminal sur votre ordinateur. Sa sortie inclut `connecttimeout 120`. Après avoir modifié la valeur, quittez et rouvrez Desktop.917`ssh` utilise la première valeur qu'il trouve pour un hôte ; placez donc l'entrée au-dessus de toute entrée `Host *` qui définit `ConnectTimeout`. Pour confirmer, exécutez `ssh -G devbox` dans un terminal sur votre ordinateur. Sa sortie inclut `connecttimeout 120`. Après avoir modifié la valeur, quittez et rouvrez Desktop.

896 918 

919<h5 id="forwarding-settings-that-desktop-leaves-off">

920 Paramètres de redirection que Desktop laisse désactivés

921</h5>

922 

923Sur sa connexion à la machine distante, Desktop laisse `ForwardAgent`, `ForwardX11`, `LocalForward`, `RemoteForward`, `DynamicForward` et `Tunnel` désactivés, même lorsque votre configuration SSH les active. Dans le [terminal](#run-commands-in-the-terminal) ou une commande `!`, attendez-vous à ce que vos paramètres de redirection ne s'appliquent [que parfois](#limits-while-desktop-is-disconnected), car Desktop peut y démarrer un `ssh` distinct qui les suit.

924 

925* **Pour atteindre un port sur la machine distante** : [redirigez-le vous-même](#reach-a-port-on-the-remote-machine)

926* **Pour utiliser vos propres clés depuis la machine distante** : configurez des identifiants sur la machine distante elle-même, par exemple pour `git push`

927 

928Pour empêcher Desktop de rediriger votre agent SSH ou un port, exécutez `ssh -G devbox` dans un terminal sur votre ordinateur. Exécutez-la ensuite à nouveau comme Desktop peut l'exécuter, avec les valeurs `hostname` et `user` qu'elle affiche, comme dans `ssh -G -o HostName=devbox.internal.example.com -l alice devbox`. La seconde sortie peut afficher des paramètres d'un bloc `Match` que la première ignore.

929 

930Recherchez dans les deux sorties une ligne `forwardagent` qui indique autre chose que `no`, ainsi que des lignes commençant par `localforward`, `remoteforward` ou `dynamicforward`. Si vous en trouvez une, supprimez ce paramètre de votre configuration SSH. Faites de même pour un hôte que votre `ProxyCommand` atteint avec `ssh`.

931 

932<h4 id="reach-a-port-on-the-remote-machine">

933 Atteindre un port sur la machine distante

934</h4>

935 

936Pour ouvrir un serveur qui s'exécute sur la machine distante, comme un serveur de développement sur le port 3000, redirigez le port vous-même. Dans un terminal sur votre ordinateur, exécutez `ssh` avec `-L` et l'hôte auquel vous vous connectez, comme `devbox` :

937 

938```bash theme={null}

939ssh -N -L 3000:localhost:3000 devbox

940```

941 

942Si vous avez renseigné **Port SSH** ou **Clé SSH (facultatif)** sur la connexion, ajoutez `-p` ou `-i` avec la même valeur. Laissez cette commande s'exécuter, et ouvrez `http://localhost:3000` dans un navigateur sur votre ordinateur pour atteindre le port 3000 de la machine distante. Si `ssh` affiche `open failed: administratively prohibited`, demandez à l'administrateur de la machine d'autoriser la redirection TCP, contrôlée par `AllowTcpForwarding` dans le `sshd_config` du serveur SSH.

943 

897<h4 id="windows-remote-machines">944<h4 id="windows-remote-machines">

898 Machines distantes Windows945 Machines distantes Windows

899</h4>946</h4>


925Claude Code s'exécute en tant que processus sur la machine distante, sous un programme auxiliaire d'arrière-plan que Desktop y installe ; il n'a donc pas besoin de votre connexion SSH pour continuer à s'exécuter. Le comportement décrit dans cette section nécessite Claude Desktop v2.31226.0 ou une version ultérieure.972Claude Code s'exécute en tant que processus sur la machine distante, sous un programme auxiliaire d'arrière-plan que Desktop y installe ; il n'a donc pas besoin de votre connexion SSH pour continuer à s'exécuter. Le comportement décrit dans cette section nécessite Claude Desktop v2.31226.0 ou une version ultérieure.

926 973 

927<Warning>974<Warning>

928 Si vous vous connectez à Desktop avec un compte Claude, ne comptez pas sur une tâche pour s'exécuter toute la nuit. Desktop renouvelle cette authentification pour la tâche uniquement tant que Desktop est en cours d'exécution et connecté ; l'authentification de la tâche peut donc expirer après votre déconnexion, et la tâche s'arrête alors. Le temps restant au moment de votre déconnexion varie.975 Si vous vous connectez à Desktop avec un compte Claude, ne comptez pas sur une tâche pour s'exécuter toute la nuit. Desktop renouvelle cette authentification pour la tâche uniquement tant que Desktop est en cours d'exécution et connecté ; l'authentification de la tâche peut donc expirer après votre déconnexion, et la tâche s'arrête alors. Le temps restant au moment de votre déconnexion varie, et il peut n'être que de quelques minutes.

929 976 

930 Le travail effectué jusque-là reste sur la machine distante, et vous pouvez reprendre avec un message à votre retour.977 Le travail effectué jusque-là reste sur la machine distante, et vous pouvez reprendre avec un message à votre retour.

931 978 


1076 1123 

1077Le champ nécessite Claude Desktop v1.44121.0 ou une version ultérieure. Si votre organisation restreint les dossiers que les sessions peuvent utiliser, Desktop masque le champ et conserve les worktrees à l'intérieur du projet.1124Le champ nécessite Claude Desktop v1.44121.0 ou une version ultérieure. Si votre organisation restreint les dossiers que les sessions peuvent utiliser, Desktop masque le champ et conserve les worktrees à l'intérieur du projet.

1078 1125 

1126<h4 id="files-and-processes-on-the-remote-machine">

1127 Fichiers et processus sur la machine distante

1128</h4>

1129 

1130Desktop installe un programme auxiliaire et Claude Code sous `~/.claude/remote/` dans le répertoire personnel de chaque utilisateur qui se connecte à une machine distante Linux ou macOS. Le programme auxiliaire n'écoute sur aucun port réseau, mais Claude Code et les programmes qu'il démarre, comme les serveurs MCP et les serveurs de développement, peuvent le faire.

1131 

1132| Dossier | Contenu |

1133| - | - |

1134| `~/.claude/remote/srv/` | Le programme auxiliaire, dans un dossier par version |

1135| `~/.claude/remote/ccd-cli/` | Claude Code, dans un fichier par version |

1136| `~/.claude/remote/run/` | Les fichiers d'exécution du programme auxiliaire, comme son socket et son log, dans un dossier par ordinateur qui se connecte |

1137| `~/.claude/remote/plugins/` | Les plugins que Desktop copie depuis l'ordinateur de l'utilisateur |

1138| [`~/.claude/uploads/`](/docs/fr/claude-directory#clear-local-data) | Les fichiers que l'utilisateur joint aux messages, dans un dossier par session |

1139 

1140Pour lister les processus d'un utilisateur, exécutez `pgrep -fl "$HOME/.claude/remote/"` sur la machine distante en tant que cet utilisateur, ou avec le répertoire personnel de l'utilisateur à la place de `$HOME` :

1141 

1142* **Programme auxiliaire** : un ou plusieurs processus `server` pour chaque ordinateur qui se connecte

1143* **Claude Code** : les processus que le programme auxiliaire démarre pour les sessions de l'utilisateur, chacun à partir d'un fichier nommé d'après sa version, comme `2.1.295-…`

1144 

1145Desktop atteint le programme auxiliaire via la connexion SSH de l'utilisateur, par le socket Unix `rpc.sock` situé dans le dossier du programme auxiliaire sous `~/.claude/remote/run/`. Hormis root, les autres utilisateurs de la machine ne peuvent pas se connecter à ce socket, car il a le mode 600 et son dossier a le mode 700.

1146 

1147Pour savoir quand le programme auxiliaire s'arrête de lui-même, voir [Limites pendant que Desktop est déconnecté](#limits-while-desktop-is-disconnected).

1148 

1149Pour supprimer le programme auxiliaire et Claude Code pour un utilisateur :

1150 

1151<Steps>

1152 <Step title="Quitter Desktop">

1153 Quittez Desktop sur chaque ordinateur depuis lequel l'utilisateur se connecte. Desktop réinstalle les deux programmes lors de sa prochaine connexion, et il peut se reconnecter de lui-même.

1154 </Step>

1155 

1156 <Step title="Mettre fin aux processus">

1157 Connecté en tant que cet utilisateur sur la machine distante, exécutez `kill` avec chaque ID de processus que [`pgrep`](#files-and-processes-on-the-remote-machine) liste.

1158 </Step>

1159 

1160 <Step title="Supprimer le dossier">

1161 Supprimez `~/.claude/remote/`. Pour supprimer les fichiers propres à Claude Code dans `~/.claude/` et `~/.claude.json`, voir [Supprimer les fichiers de configuration](/docs/fr/setup#remove-configuration-files).

1162 </Step>

1163</Steps>

1164 

1165<h5 id="end-one-session’s-process">

1166 Mettre fin au processus d'une session

1167</h5>

1168 

1169Pour mettre fin au processus Claude Code d'une session, [archivez la session](#work-in-parallel-with-sessions) dans Desktop pendant que Desktop est connecté à la machine distante. Le processus continue de s'exécuter une fois sa tâche terminée et après que vous avez quitté Desktop.

1170 

1171Avant d'archiver une session qui possède un worktree, voir [Travailler en parallèle avec des sessions](#work-in-parallel-with-sessions).

1172 

1173<h5 id="see-who-connected-to-the-remote-machine">

1174 Voir qui s'est connecté à la machine distante

1175</h5>

1176 

1177Pour savoir qui s'est connecté à une machine distante, lisez le log du serveur SSH sur cette machine, où une connexion depuis Desktop ressemble à une connexion depuis un terminal. Avec Desktop sur macOS ou Linux, attendez-vous à une entrée chaque fois que Desktop se connecte, et non à une entrée par session.

1178 

1179<h4 id="use-mcp-servers-set-up-on-the-remote-machine">

1180 Utiliser les serveurs MCP configurés sur la machine distante

1181</h4>

1182 

1183Pour utiliser un [serveur MCP](/docs/fr/mcp) de `~/.claude.json` ou du `.mcp.json` d'un projet dans une session SSH, configurez-le dans ces fichiers sur la machine distante. Claude Code y démarre leurs serveurs stdio ; installez donc sur la machine distante les commandes que ces serveurs exécutent. Pour les serveurs de `claude_desktop_config.json`, voir [Limites pendant que Desktop est déconnecté](#limits-while-desktop-is-disconnected).

1184 

1079<h4 id="open-an-ssh-session-from-a-link">1185<h4 id="open-an-ssh-session-from-a-link">

1080 Ouvrir une session SSH à partir d'un lien1186 Ouvrir une session SSH à partir d'un lien

1081</h4>1187</h4>


1207* **Cowork** : aucune des clés ne s'applique aux sessions [Cowork](https://claude.com/docs/cowork/overview) ni aux tâches planifiées Cowork1313* **Cowork** : aucune des clés ne s'applique aux sessions [Cowork](https://claude.com/docs/cowork/overview) ni aux tâches planifiées Cowork

1208* **Sessions cloud** : aucune des clés ne modifie la disponibilité des [sessions cloud](#cloud-sessions). Pour les désactiver, utilisez le paramètre **Sessions cloud** sous [Contrôles de la console d'administration](#admin-console-controls).1314* **Sessions cloud** : aucune des clés ne modifie la disponibilité des [sessions cloud](#cloud-sessions). Pour les désactiver, utilisez le paramètre **Sessions cloud** sous [Contrôles de la console d'administration](#admin-console-controls).

1209 1315 

1210Lorsque vous adaptez l'exemple, vérifiez les noms d'hôte et la version de Desktop :1316Lorsque vous adaptez l'exemple, vérifiez les noms d'hôte, la version de Desktop et les permissions du fichier :

1211 1317 

1212* **Noms d'hôte** : assurez-vous qu'un modèle dans `sshHostAllowlist` correspond au nom d'hôte de chaque entrée `sshConfigs`, sans `user@`, sinon les développeurs ne peuvent pas s'y connecter. Pour savoir comment Desktop fait correspondre un nom d'hôte, voir [Restreindre les hôtes SSH auxquels les utilisateurs peuvent se connecter](#restrict-which-ssh-hosts-users-can-connect-to).1318* **Noms d'hôte** : assurez-vous qu'un modèle dans `sshHostAllowlist` correspond au nom d'hôte de chaque entrée `sshConfigs`, sans `user@`, sinon les développeurs ne peuvent pas s'y connecter. Pour savoir comment Desktop fait correspondre un nom d'hôte, voir [Restreindre les hôtes SSH auxquels les utilisateurs peuvent se connecter](#restrict-which-ssh-hosts-users-can-connect-to).

1213* **Version** : `disableDesktopLocalSessions` nécessite Claude Desktop v1.37937.0 ou une version ultérieure1319* **Version** : `disableDesktopLocalSessions` nécessite Claude Desktop v1.37937.0 ou une version ultérieure

1320* **Permissions du fichier** : assurez-vous que le compte de chaque développeur sur l'ordinateur peut lire le fichier de paramètres gérés. Desktop n'applique pas les clés d'un fichier que le compte ne peut pas lire, et Claude Code [démarre également sans elles](/docs/fr/managed-settings#find-entries-claude-code-dropped).

1214 1321 

1215Placez les trois clés dans une seule [source gérée](/docs/fr/managed-settings#how-claude-code-combines-managed-sources), la mieux classée de celles que vous fournissez. Si vous fournissez des [paramètres gérés par le serveur](/docs/fr/server-managed-settings), conservez également une copie des trois clés dans la politique MDM ou le fichier de paramètres gérés le mieux classé sur chaque ordinateur. Desktop récupère les paramètres gérés par le serveur au lancement, et la copie présente sur l'ordinateur s'applique tant qu'une récupération n'a pas réussi.1322Placez les trois clés dans une seule [source gérée](/docs/fr/managed-settings#how-claude-code-combines-managed-sources), la mieux classée de celles que vous fournissez. Si vous fournissez des [paramètres gérés par le serveur](/docs/fr/server-managed-settings), conservez également une copie des trois clés dans la politique MDM ou le fichier de paramètres gérés le mieux classé sur chaque ordinateur. Desktop récupère les paramètres gérés par le serveur au lancement, et la copie présente sur l'ordinateur s'applique tant qu'une récupération n'a pas réussi.

1216 1323 


1558 1665 

1559Si les bascules du serveur MCP ne répondent pas ou que les serveurs ne se connectent pas sur Windows, vérifiez que le serveur est correctement configuré dans vos paramètres, redémarrez l'application, vérifiez que le processus du serveur s'exécute dans le Gestionnaire des tâches et examinez les journaux du serveur pour les erreurs de connexion.1666Si les bascules du serveur MCP ne répondent pas ou que les serveurs ne se connectent pas sur Windows, vérifiez que le serveur est correctement configuré dans vos paramètres, redémarrez l'application, vérifiez que le processus du serveur s'exécute dans le Gestionnaire des tâches et examinez les journaux du serveur pour les erreurs de connexion.

1560 1667 

1668<h3 id="ssh-connection-fails-after-you-log-in">

1669 La connexion SSH échoue après que vous vous êtes connecté

1670</h3>

1671 

1672Repérez dans ce tableau le titre de la carte, ou le code qui termine le message d'erreur, puis suivez les indications de la dernière colonne. Pour voir le message, sélectionnez **View details** sur la carte d'échec.

1673 

1674| Titre sur la carte | Code | Que faire |

1675| - | - | - |

1676| `<host>'s SSH server has SFTP turned off` | `[SFTP_UNAVAILABLE]` | Activez SFTP dans le `sshd_config` du serveur, comme décrit dans les [exigences de la machine distante](#remote-machine-requirements-for-ssh-sessions) |

1677| `SFTP doesn't start on <host>` | `[SFTP_NOT_STARTED]` | Connectez-vous au même hôte avec `sftp` dans un terminal de votre ordinateur pour voir ce qui l'empêche de démarrer, puis vérifiez les paramètres et les fichiers indiqués dans le message de Desktop |

1678| `<host> allows too few SSH sessions per connection` | `[SESSION_LIMIT]` | Augmentez `MaxSessions` dans le `sshd_config` du serveur, par exemple jusqu'à la valeur par défaut d'OpenSSH, soit 10 |

1679| `<host> is out of disk space` | `[ENOSPC]` ou `[EDQUOT]` | Libérez de l'espace ou du quota sur la machine distante, dans votre répertoire personnel ou dans `/tmp` |

1680| `This computer is out of disk space` | `[ENOSPC]` ou `[EDQUOT]`, dans un message qui commence par `Couldn't prepare the deploy locally` | Libérez de l'espace sur votre ordinateur |

1681| `Claude Code won't start on <host>` | `[CLI_UNRESPONSIVE]` | Patientez une minute, puis réessayez. Si l'échec persiste, exécutez sur la machine distante la commande indiquée dans le message pour vérifier si Claude Code y répond. |

1682 

1683Pour tout autre message, consultez les [exigences de la machine distante](#remote-machine-requirements-for-ssh-sessions).

1684 

1561<h3 id="app-won’t-quit">1685<h3 id="app-won’t-quit">

1562 L'application ne veut pas quitter1686 L'application ne veut pas quitter

1563</h3>1687</h3>

Details

72 Vous pouvez également sélectionner :72 Vous pouvez également sélectionner :

73 73 

74 * **Cloud** : Exécutez des sessions dans le cloud qui continuent même si vous fermez l'application. Consultez [Utiliser Claude Code dans le cloud](/docs/fr/claude-code-on-the-web) pour savoir comment fonctionnent les sessions cloud.74 * **Cloud** : Exécutez des sessions dans le cloud qui continuent même si vous fermez l'application. Consultez [Utiliser Claude Code dans le cloud](/docs/fr/claude-code-on-the-web) pour savoir comment fonctionnent les sessions cloud.

75 * **SSH** : Connectez-vous à une machine distante via SSH, comme vos propres serveurs, des machines virtuelles cloud ou des conteneurs de développement. Desktop installe Claude Code sur la machine distante automatiquement la première fois que vous vous connectez. Une tâche en cours peut [continuer pendant que Desktop est déconnecté](/docs/fr/desktop#keep-a-task-running-while-desktop-is-disconnected), mais avec un compte Claude, elle peut s'arrêter lorsque sa connexion expire.75 * **SSH** : Connectez-vous à une machine distante via SSH, comme vos propres serveurs, des machines virtuelles cloud ou des conteneurs de développement. Desktop installe Claude Code sur la machine distante automatiquement la première fois que vous vous connectez. Une tâche en cours peut [continuer pendant que Desktop est déconnecté](/docs/fr/desktop#keep-a-task-running-while-desktop-is-disconnected), mais avec un compte Claude, elle peut s'arrêter lorsque son authentification expire.

76 * **WSL** (Windows) : Exécutez la session à l'intérieur d'une [distribution WSL 2](/docs/fr/desktop-wsl) ; Claude Code, les outils et git s'exécutent du côté Linux avec des chemins natifs.76 * **WSL** (Windows) : Exécutez la session à l'intérieur d'une [distribution WSL 2](/docs/fr/desktop-wsl) ; Claude Code, les outils et git s'exécutent du côté Linux avec des chemins natifs.

77 </Step>77 </Step>

78 78 

env-vars.md +10 −4

Details

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

269| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Définissez sur `1` pour désactiver les enquêtes de qualité de session « How is Claude doing? ». Les enquêtes sont également désactivées lorsque `DISABLE_TELEMETRY`, `DO_NOT_TRACK` ou `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` est défini, sauf si `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` les réactive. Pour définir un taux d'échantillonnage plutôt que de les désactiver complètement, utilisez le paramètre [`feedbackSurveyRate`](/docs/fr/settings-reference#feedbacksurveyrate). Voir [Enquêtes de qualité de session](/docs/fr/data-usage#session-quality-surveys) |269| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Définissez sur `1` pour désactiver les enquêtes de qualité de session « How is Claude doing? ». Les enquêtes sont également désactivées lorsque `DISABLE_TELEMETRY`, `DO_NOT_TRACK` ou `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` est défini, sauf si `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` les réactive. Pour définir un taux d'échantillonnage plutôt que de les désactiver complètement, utilisez le paramètre [`feedbackSurveyRate`](/docs/fr/settings-reference#feedbacksurveyrate). Voir [Enquêtes de qualité de session](/docs/fr/data-usage#session-quality-surveys) |

270| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Définissez sur `1` pour désactiver le [checkpointing](/docs/fr/checkpointing) des fichiers. La commande `/rewind` ne pourra pas restaurer les modifications de code. Remplace le paramètre [`fileCheckpointingEnabled`](/docs/fr/settings-reference#filecheckpointingenabled) |270| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Définissez sur `1` pour désactiver le [checkpointing](/docs/fr/checkpointing) des fichiers. La commande `/rewind` ne pourra pas restaurer les modifications de code. Remplace le paramètre [`fileCheckpointingEnabled`](/docs/fr/settings-reference#filecheckpointingenabled) |

271| `CLAUDE_CODE_DISABLE_FILE_MENTIONS` | Définissez sur `1` pour empêcher Claude Code de développer les [mentions `@`](/docs/fr/common-workflows#reference-files-and-directories) de fichiers et de répertoires. Claude reçoit à la place les chemins mentionnés avec une note l'invitant à les lire à l'aide de ses outils de fichiers. Ignoré dans les [paramètres de projet et locaux](/docs/fr/settings-reference#variables-claude-code-ignores-in-env). Nécessite Claude Code v2.1.299 ou ultérieur |

271| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Définissez sur `1` pour retirer du contexte de Claude les instructions intégrées de workflow de commit et de PR ainsi que l'instantané du statut git. Utile lorsque vous utilisez vos propres skills de workflow git. Prioritaire sur le paramètre [`includeGitInstructions`](/docs/fr/settings-reference#includegitinstructions) lorsqu'elle est définie |272| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Définissez sur `1` pour retirer du contexte de Claude les instructions intégrées de workflow de commit et de PR ainsi que l'instantané du statut git. Utile lorsque vous utilisez vos propres skills de workflow git. Prioritaire sur le paramètre [`includeGitInstructions`](/docs/fr/settings-reference#includegitinstructions) lorsqu'elle est définie |

272| `CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT` | Définissez sur `1` pour empêcher Claude Code d'analyser les scripts passés à un shell avec `-c`, comme `bash -c 'rm -rf ~'`, à la recherche de suppressions de [chemins critiques](/docs/fr/permission-modes#removals-inside-nested-commands-and-inline-scripts). Claude Code vérifie toujours les cibles de variables shell et de paramètres positionnels dans ces scripts, et les autres vérifications de chemins critiques continuent de s'exécuter. Définissez-la dans l'environnement qui lance Claude Code, car Claude Code ignore une copie fournie via un bloc `env` de paramètres. Nécessite Claude Code v2.1.288 ou ultérieur |273| `CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT` | Définissez sur `1` pour empêcher Claude Code d'analyser les scripts passés à un shell avec `-c`, comme `bash -c 'rm -rf ~'`, à la recherche de suppressions de [chemins critiques](/docs/fr/permission-modes#removals-inside-nested-commands-and-inline-scripts). Claude Code vérifie toujours les cibles de variables shell et de paramètres positionnels dans ces scripts, et les autres vérifications de chemins critiques continuent de s'exécuter. Définissez-la dans l'environnement qui lance Claude Code, car Claude Code ignore une copie fournie via un bloc `env` de paramètres. Nécessite Claude Code v2.1.288 ou ultérieur |

273| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Définissez sur `1` pour empêcher le remappage automatique d'Opus 4 et Opus 4.1 vers la version actuelle d'Opus sur l'API Anthropic. À utiliser lorsque vous souhaitez délibérément épingler un modèle plus ancien. Le remappage ne s'exécute pas sur Amazon Bedrock, Google Cloud's Agent Platform ni Microsoft Foundry |274| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Définissez sur `1` pour empêcher le remappage automatique d'Opus 4 et Opus 4.1 vers la version actuelle d'Opus sur l'API Anthropic. À utiliser lorsque vous souhaitez délibérément épingler un modèle plus ancien. Le remappage ne s'exécute pas sur Amazon Bedrock, Google Cloud's Agent Platform ni Microsoft Foundry |


328| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Remplace l'adresse d'hôte utilisée pour se connecter à l'extension IDE. Par défaut, Claude Code détecte automatiquement l'adresse correcte, y compris le routage de WSL vers Windows |329| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Remplace l'adresse d'hôte utilisée pour se connecter à l'extension IDE. Par défaut, Claude Code détecte automatiquement l'adresse correcte, y compris le routage de WSL vers Windows |

329| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Définir sur `1` pour ignorer l'installation automatique des extensions IDE. Équivaut à définir [`autoInstallIdeExtension`](/docs/fr/settings-reference#autoinstallideextension) sur `false` |330| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Définir sur `1` pour ignorer l'installation automatique des extensions IDE. Équivaut à définir [`autoInstallIdeExtension`](/docs/fr/settings-reference#autoinstallideextension) sur `false` |

330| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Définir sur `1` pour ignorer la validation des entrées du fichier de verrouillage de l'IDE lors de la connexion. À utiliser lorsque la connexion automatique ne trouve pas votre IDE alors qu'il est en cours d'exécution |331| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Définir sur `1` pour ignorer la validation des entrées du fichier de verrouillage de l'IDE lors de la connexion. À utiliser lorsque la connexion automatique ne trouve pas votre IDE alors qu'il est en cours d'exécution |

332| `CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS` | Taille du contexte, en tokens, à partir de laquelle la [compaction en cas d'inactivité](/docs/fr/settings-reference#idlecompaction) s'applique à une conversation (par défaut : `200000`). Accepte un nombre entier positif ; toute autre valeur est ignorée. Les valeurs inférieures à `100000` sont relevées à `100000`, le seuil le plus bas. La compaction en cas d'inactivité est activée par défaut pour les conversations qui remplissent ses conditions. Pour la désactiver, définissez `idleCompaction` sur `false`. Nécessite Claude Code v2.1.290 ou ultérieure |

331| `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` | Nombre de [sous-agents](/docs/fr/sub-agents#concurrent-subagent-limit) pouvant s'exécuter dans une session avant que l'outil Agent refuse d'en lancer un autre (par défaut : 20). Accepte un nombre entier positif en chiffres simples ; toute autre valeur est ignorée, de sorte que la variable peut ajuster le plafond mais pas le désactiver. Nécessite Claude Code v2.1.217 ou ultérieur |333| `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` | Nombre de [sous-agents](/docs/fr/sub-agents#concurrent-subagent-limit) pouvant s'exécuter dans une session avant que l'outil Agent refuse d'en lancer un autre (par défaut : 20). Accepte un nombre entier positif en chiffres simples ; toute autre valeur est ignorée, de sorte que la variable peut ajuster le plafond mais pas le désactiver. Nécessite Claude Code v2.1.217 ou ultérieur |

332| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Remplace la taille de fenêtre de contexte que Claude Code suppose pour le modèle actif. Depuis la v2.1.193, son application dépend de la manière dont Claude Code résout l'ID du modèle ; voir [Corriger la fenêtre pour une passerelle ou un ID de modèle personnalisé](/docs/fr/model-config#correct-the-window-for-a-gateway-or-custom-model-id). À utiliser lors du routage vers un modèle via `ANTHROPIC_BASE_URL` dont la fenêtre de contexte ne correspond pas à la taille intégrée associée à son nom |334| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Remplace la taille de fenêtre de contexte que Claude Code suppose pour le modèle actif. Depuis la v2.1.193, son application dépend de la manière dont Claude Code résout l'ID du modèle ; voir [Corriger la fenêtre pour une passerelle ou un ID de modèle personnalisé](/docs/fr/model-config#correct-the-window-for-a-gateway-or-custom-model-id). À utiliser lors du routage vers un modèle via `ANTHROPIC_BASE_URL` dont la fenêtre de contexte ne correspond pas à la taille intégrée associée à son nom |

333| `CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH` | Longueur maximale en caractères de chaque description d'outil MCP et des instructions de chaque serveur MCP que Claude Code envoie au modèle (par défaut : 2048). Claude Code [tronque les textes plus longs](/docs/fr/mcp#for-mcp-server-authors). Accepte un nombre entier positif en chiffres simples. Toute autre valeur est ignorée et la valeur par défaut s'applique. Nécessite Claude Code v2.1.280 ou ultérieur |335| `CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH` | Longueur maximale en caractères de chaque description d'outil MCP et des instructions de chaque serveur MCP que Claude Code envoie au modèle. La valeur que vous définissez remplace les deux [limites par défaut](/docs/fr/mcp#for-mcp-server-authors) : 4096, et 16384 pour la description d'un outil que Claude charge via la recherche d'outils. Claude Code tronque le texte plus long. Accepte un nombre entier positif en chiffres simples. Toute autre valeur est ignorée et les valeurs par défaut s'appliquent. Nécessite Claude Code v2.1.280 ou ultérieur |

334| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Définit le nombre maximal de tokens de sortie pour la plupart des requêtes. Les valeurs par défaut et les plafonds varient selon le modèle ; voir [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). Claude Code ramène une valeur supérieure au plafond d'un modèle à ce plafond. Pour un ID de modèle que Claude Code ne peut pas associer à un modèle connu, la valeur par défaut est 32000 et le plafond est 128000. Augmenter cette valeur réduit la fenêtre de contexte effective disponible avant le déclenchement de la [compaction automatique](/docs/fr/costs#reduce-token-usage) |336| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Définit le nombre maximal de tokens de sortie pour la plupart des requêtes. Les valeurs par défaut et les plafonds varient selon le modèle ; voir [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). Claude Code ramène une valeur supérieure au plafond d'un modèle à ce plafond. Pour un ID de modèle que Claude Code ne peut pas associer à un modèle connu, la valeur par défaut est 32000 et le plafond est 128000. Augmenter cette valeur réduit la fenêtre de contexte effective disponible avant le déclenchement de la [compaction automatique](/docs/fr/costs#reduce-token-usage) |

335| `CLAUDE_CODE_MAX_RETRIES` | Remplace le nombre de nouvelles tentatives pour les requêtes API ayant échoué (par défaut : 10). Plafonné à 15 depuis la v2.1.186 ; depuis la v2.1.199, `CLAUDE_CODE_RETRY_WATCHDOG` augmente la valeur par défaut et supprime le plafond. Pour les sessions sans surveillance qui doivent patienter pendant des pannes plus longues, définissez plutôt `CLAUDE_CODE_RETRY_WATCHDOG` |337| `CLAUDE_CODE_MAX_RETRIES` | Remplace le nombre de nouvelles tentatives pour les requêtes API ayant échoué (par défaut : 10). Plafonné à 15 depuis la v2.1.186 ; depuis la v2.1.199, `CLAUDE_CODE_RETRY_WATCHDOG` augmente la valeur par défaut et supprime le plafond. Pour les sessions sans surveillance qui doivent patienter pendant des pannes plus longues, définissez plutôt `CLAUDE_CODE_RETRY_WATCHDOG` |

336| `CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION` | Supprimée dans la v2.1.224 et désormais sans effet. Plafonnait auparavant le nombre total de [sous-agents](/docs/fr/sub-agents) que Claude pouvait lancer avec l'outil Agent dans une session (par défaut : 200) ; tout lancement au-delà du plafond échouait avec `Subagent spawn limit reached`. La [limite de sous-agents simultanés](/docs/fr/sub-agents#concurrent-subagent-limit) et la [limite de profondeur](/docs/fr/sub-agents#let-subagents-spawn-their-own-subagents) s'appliquent toujours |338| `CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION` | Supprimée dans la v2.1.224 et désormais sans effet. Plafonnait auparavant le nombre total de [sous-agents](/docs/fr/sub-agents) que Claude pouvait lancer avec l'outil Agent dans une session (par défaut : 200) ; tout lancement au-delà du plafond échouait avec `Subagent spawn limit reached`. La [limite de sous-agents simultanés](/docs/fr/sub-agents#concurrent-subagent-limit) et la [limite de profondeur](/docs/fr/sub-agents#let-subagents-spawn-their-own-subagents) s'appliquent toujours |


359| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervalle d'actualisation des en-têtes OpenTelemetry dynamiques en millisecondes (par défaut : 1740000 / 29 minutes). Voir [En-têtes dynamiques](/docs/fr/monitoring-usage#dynamic-headers) |361| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Intervalle d'actualisation des en-têtes OpenTelemetry dynamiques en millisecondes (par défaut : 1740000 / 29 minutes). Voir [En-têtes dynamiques](/docs/fr/monitoring-usage#dynamic-headers) |

360| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | Délai d'expiration en millisecondes laissé à l'exportateur OpenTelemetry pour terminer lors de l'arrêt (par défaut : 2000). Augmentez-le si des métriques sont perdues à la sortie. Voir [Surveillance](/docs/fr/monitoring-usage) |362| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | Délai d'expiration en millisecondes laissé à l'exportateur OpenTelemetry pour terminer lors de l'arrêt (par défaut : 2000). Augmentez-le si des métriques sont perdues à la sortie. Voir [Surveillance](/docs/fr/monitoring-usage) |

361| `CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS` | Délai initial en millisecondes, à la place de la valeur par défaut de 500, du backoff exponentiel entre les [nouvelles tentatives automatiques](/docs/fr/errors#tune-retry-behavior) d'une requête que l'API rejette avec une erreur de surcharge `529`. Augmentez-le pour répartir les nouvelles tentatives sur une fenêtre plus longue lorsque l'API est à pleine capacité. Indiquez un nombre entier de millisecondes compris entre 500 et 32000 en chiffres simples ; Claude Code traite toute autre valeur comme non définie. Sans effet lorsque `CLAUDE_CODE_RETRY_WATCHDOG` est défini sur `1`, ou lorsque la requête rejetée a été envoyée en [mode rapide](/docs/fr/fast-mode#handle-rate-limits). Nécessite Claude Code v2.1.292 ou ultérieur |363| `CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS` | Délai initial en millisecondes, à la place de la valeur par défaut de 500, du backoff exponentiel entre les [nouvelles tentatives automatiques](/docs/fr/errors#tune-retry-behavior) d'une requête que l'API rejette avec une erreur de surcharge `529`. Augmentez-le pour répartir les nouvelles tentatives sur une fenêtre plus longue lorsque l'API est à pleine capacité. Indiquez un nombre entier de millisecondes compris entre 500 et 32000 en chiffres simples ; Claude Code traite toute autre valeur comme non définie. Sans effet lorsque `CLAUDE_CODE_RETRY_WATCHDOG` est défini sur `1`, ou lorsque la requête rejetée a été envoyée en [mode rapide](/docs/fr/fast-mode#handle-rate-limits). Nécessite Claude Code v2.1.292 ou ultérieur |

364| `CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS` | Plafond en millisecondes, à la place des 32000 par défaut, de l'attente exponentielle entre les [nouvelles tentatives automatiques](/docs/fr/errors#tune-retry-behavior) d'une requête que l'API rejette avec une erreur de surcharge `529`. Augmentez-le pour que les nouvelles tentatives ultérieures continuent de s'espacer lorsque l'API est saturée. Indiquez des millisecondes entières de 32000 à 64000 en chiffres simples ; Claude Code traite toute autre valeur comme non définie. Sans effet lorsque `CLAUDE_CODE_RETRY_WATCHDOG` est défini sur `1`, ou lorsque la requête rejetée a été envoyée en [mode rapide](/docs/fr/fast-mode#handle-rate-limits). Nécessite Claude Code v2.1.296 ou ultérieur |

362| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | Définir sur `1` pour permettre à Claude Code d'exécuter en arrière-plan la commande de mise à niveau de votre gestionnaire de paquets lorsqu'une nouvelle version est disponible. S'applique aux installations Homebrew et WinGet. Les autres gestionnaires de paquets continuent d'afficher la commande de mise à niveau sans l'exécuter. Voir [Mises à jour automatiques](/docs/fr/setup#auto-updates) |365| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | Définir sur `1` pour permettre à Claude Code d'exécuter en arrière-plan la commande de mise à niveau de votre gestionnaire de paquets lorsqu'une nouvelle version est disponible. S'applique aux installations Homebrew et WinGet. Les autres gestionnaires de paquets continuent d'afficher la commande de mise à niveau sans l'exécuter. Voir [Mises à jour automatiques](/docs/fr/setup#auto-updates) |

363| `CLAUDE_CODE_PERFORCE_MODE` | Définir sur `1` pour activer la protection en écriture compatible 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 |366| `CLAUDE_CODE_PERFORCE_MODE` | Définir sur `1` pour activer la protection en écriture compatible 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 |

364| `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` |367| `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` |


380| `CLAUDE_CODE_REMOTE_SESSION_ID` | Définie automatiquement dans les [sessions cloud](/docs/fr/claude-code-on-the-web) sur l'ID de la session en cours. Lisez-la pour construire un lien vers la transcription de la session. Voir [Relier la sortie à la session](/docs/fr/cloud-environments#link-output-back-to-the-session) |383| `CLAUDE_CODE_REMOTE_SESSION_ID` | Définie automatiquement dans les [sessions cloud](/docs/fr/claude-code-on-the-web) sur l'ID de la session en cours. Lisez-la pour construire un lien vers la transcription de la session. Voir [Relier la sortie à la session](/docs/fr/cloud-environments#link-output-back-to-the-session) |

381| `CLAUDE_CODE_RESTRICTED` | Définir sur `1` pour démarrer la session en mode restreint, comme en transmettant [`--restricted`](/docs/fr/cli-reference#cli-flags). Claude Code ignore cette variable dans le bloc `env` d'un fichier de paramètres. Nécessite Claude Code v2.1.248 ou ultérieur |384| `CLAUDE_CODE_RESTRICTED` | Définir sur `1` pour démarrer la session en mode restreint, comme en transmettant [`--restricted`](/docs/fr/cli-reference#cli-flags). Claude Code ignore cette variable dans le bloc `env` d'un fichier de paramètres. Nécessite Claude Code v2.1.248 ou ultérieur |

382| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Définir sur `1` pour reprendre automatiquement si la session précédente s'est terminée en cours de tour. Utilisée en mode SDK afin que le modèle continue sans que le SDK ait à renvoyer le prompt. Pour désactiver ce comportement, supprimez la variable ou définissez-la sur `0`. Pour le panneau de chat de VS Code, voir [Poursuivre les conversations après un rechargement](/docs/fr/vs-code#continue-conversations-after-a-reload) |385| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Définir sur `1` pour reprendre automatiquement si la session précédente s'est terminée en cours de tour. Utilisée en mode SDK afin que le modèle continue sans que le SDK ait à renvoyer le prompt. Pour désactiver ce comportement, supprimez la variable ou définissez-la sur `0`. Pour le panneau de chat de VS Code, voir [Poursuivre les conversations après un rechargement](/docs/fr/vs-code#continue-conversations-after-a-reload) |

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

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

385| `CLAUDE_CODE_RETRY_WATCHDOG` | Définir sur `1` pour les sessions sans surveillance telles que les harnais d'évaluation, les jobs CI ou les workers distants. Réessaie indéfiniment en cas d'erreurs de capacité `429` et `529` au lieu d'échouer après `CLAUDE_CODE_MAX_RETRIES` tentatives. Claude Code échoue immédiatement lorsqu'une requête à vitesse standard reçoit une erreur `429` signalant une limite de dépenses ou des crédits d'utilisation épuisés, même si elle provient d'un [plafond de dépenses de passerelle](/docs/fr/errors#spend-limit-reached) qui se réinitialise selon un calendrier. Avant la v2.1.239, le watchdog réessayait indéfiniment dans ces cas. Pour les requêtes en mode rapide, voir [Gérer les limites de débit](/docs/fr/fast-mode#handle-rate-limits). Le watchdog espace les tentatives jusqu'à 5 minutes, ou jusqu'à la réinitialisation de la limite lorsque la réponse indique une heure de réinitialisation de la limite de débit, de sorte qu'une session qui atteint une limite d'utilisation attend la fin de la fenêtre restante. Dans la v2.1.199 ou ultérieure, il porte également à 300 le nombre de nouvelles tentatives par défaut pour les autres erreurs transitoires, telles que les erreurs serveur, les expirations et les connexions interrompues, soit environ trois heures de backoff, et supprime le plafond de 15 sur `CLAUDE_CODE_MAX_RETRIES` si vous définissez explicitement cette variable. Nécessite Claude Code v2.1.186 ou ultérieur |388| `CLAUDE_CODE_RETRY_WATCHDOG` | Définir sur `1` pour les sessions sans surveillance telles que les harnais d'évaluation, les jobs CI ou les workers distants. Réessaie indéfiniment en cas d'erreurs de capacité `429` et `529` au lieu d'échouer après `CLAUDE_CODE_MAX_RETRIES` tentatives. Claude Code échoue immédiatement lorsqu'une requête à vitesse standard reçoit une erreur `429` signalant une limite de dépenses ou des crédits d'utilisation épuisés, même si elle provient d'un [plafond de dépenses de passerelle](/docs/fr/errors#spend-limit-reached) qui se réinitialise selon un calendrier. Avant la v2.1.239, le watchdog réessayait indéfiniment dans ces cas. Pour les requêtes en mode rapide, voir [Gérer les limites de débit](/docs/fr/fast-mode#handle-rate-limits). Le watchdog espace les tentatives jusqu'à 5 minutes, ou jusqu'à la réinitialisation de la limite lorsque la réponse indique une heure de réinitialisation de la limite de débit, de sorte qu'une session qui atteint une limite d'utilisation attend la fin de la fenêtre restante. Dans la v2.1.199 ou ultérieure, il porte également à 300 le nombre de nouvelles tentatives par défaut pour les autres erreurs transitoires, telles que les erreurs serveur, les expirations et les connexions interrompues, soit environ trois heures de backoff, et supprime le plafond de 15 sur `CLAUDE_CODE_MAX_RETRIES` si vous définissez explicitement cette variable. Nécessite Claude Code v2.1.186 ou ultérieur |

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


437| `CLAUDE_CODE_WORKER_CHECKIN_SCHEDULE` | Lorsque `CLAUDE_AUTO_BACKGROUND_TASKS` est défini sur `1`, durée pendant laquelle Claude Code attend avant chaque rappel invitant Claude à vérifier les [sous-agents en arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) toujours en cours d'exécution. Accepte une ou plusieurs attentes séparées par des virgules, en secondes entières de `1` à `86400`, comme `600` ou `600,1800,3600`. Chaque valeur correspond à l'attente avant le rappel suivant, et la dernière valeur se répète. N'accepte que des chiffres simples ; toute autre valeur ou écriture est considérée comme non définie. Lorsqu'elle n'est pas définie, aucun rappel n'a lieu. Nécessite Claude Code v2.1.283 ou ultérieur |440| `CLAUDE_CODE_WORKER_CHECKIN_SCHEDULE` | Lorsque `CLAUDE_AUTO_BACKGROUND_TASKS` est défini sur `1`, durée pendant laquelle Claude Code attend avant chaque rappel invitant Claude à vérifier les [sous-agents en arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) toujours en cours d'exécution. Accepte une ou plusieurs attentes séparées par des virgules, en secondes entières de `1` à `86400`, comme `600` ou `600,1800,3600`. Chaque valeur correspond à l'attente avant le rappel suivant, et la dernière valeur se répète. N'accepte que des chiffres simples ; toute autre valeur ou écriture est considérée comme non définie. Lorsqu'elle n'est pas définie, aucun rappel n'a lieu. Nécessite Claude Code v2.1.283 ou ultérieur |

438| `CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS` | Nombre d'agents qu'une seule exécution de [workflow](/docs/fr/workflows) exécute simultanément, de `1` à `256`. Par défaut, une exécution lance jusqu'à 16 agents simultanément, moins lorsque Claude Code dispose de moins de CPU ; les appels `agent()` en file d'attente attendent qu'un emplacement se libère. La transcription de chaque agent en cours d'exécution reste dans la mémoire de Claude Code, donc des valeurs plus élevées augmentent l'utilisation de la mémoire. N'accepte que des chiffres simples ; les valeurs hors plage et les autres écritures conservent la valeur par défaut. Nécessite Claude Code v2.1.269 ou ultérieur |441| `CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS` | Nombre d'agents qu'une seule exécution de [workflow](/docs/fr/workflows) exécute simultanément, de `1` à `256`. Par défaut, une exécution lance jusqu'à 16 agents simultanément, moins lorsque Claude Code dispose de moins de CPU ; les appels `agent()` en file d'attente attendent qu'un emplacement se libère. La transcription de chaque agent en cours d'exécution reste dans la mémoire de Claude Code, donc des valeurs plus élevées augmentent l'utilisation de la mémoire. N'accepte que des chiffres simples ; les valeurs hors plage et les autres écritures conservent la valeur par défaut. Nécessite Claude Code v2.1.269 ou ultérieur |

439| `CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS` | Limite supérieure, en millisecondes, du temps pendant lequel un agent de [workflow](/docs/fr/workflows) attend que la première réponse d'un agent frère partageant le même préfixe commence avant d'envoyer sa propre première requête. Lorsqu'un fan-out lance plusieurs agents partageant un [préfixe de cache de prompt](/docs/fr/workflows#prompt-caching-in-a-fan-out), Claude Code retient tous les agents sauf le premier pendant au plus cette durée, afin que les autres lisent le préfixe mis en cache au lieu de le traiter chacun sans cache. Valeur par défaut : `5000`. Définissez sur `0` pour désactiver l'attente. Lorsque `DISABLE_PROMPT_CACHING` est défini, les agents n'attendent jamais. Nécessite Claude Code v2.1.229 ou ultérieur |442| `CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS` | Limite supérieure, en millisecondes, du temps pendant lequel un agent de [workflow](/docs/fr/workflows) attend que la première réponse d'un agent frère partageant le même préfixe commence avant d'envoyer sa propre première requête. Lorsqu'un fan-out lance plusieurs agents partageant un [préfixe de cache de prompt](/docs/fr/workflows#prompt-caching-in-a-fan-out), Claude Code retient tous les agents sauf le premier pendant au plus cette durée, afin que les autres lisent le préfixe mis en cache au lieu de le traiter chacun sans cache. Valeur par défaut : `5000`. Définissez sur `0` pour désactiver l'attente. Lorsque `DISABLE_PROMPT_CACHING` est défini, les agents n'attendent jamais. Nécessite Claude Code v2.1.229 ou ultérieur |

443| `CLAUDE_CODE_YOU_SHOULD_KNOW_DEBUG` | Définissez sur `1` pour afficher, au-dessus du prompt, une ligne pour chacune des trois dernières vérifications effectuées par le [mod You should know](/docs/fr/interactive-mode#you-should-know-suggestions) dans cette session. Utilisez-la pour confirmer que le mod effectue bien ses vérifications lorsqu'aucune note n'apparaît. Nécessite Claude Code v2.1.287 ou ultérieur |

440| `CLAUDE_CONFIG_DIR` | Remplacer le répertoire de configuration (par défaut : `~/.claude`). Tous les paramètres, l'historique des sessions et les plugins sont stockés sous ce chemin. Pour les identifiants, voir [où Claude Code stocke les identifiants](/docs/fr/authentication#credential-management). Utile pour exécuter plusieurs comptes côte à côte : par exemple, `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'`. Définissez-la dans votre shell, vos paramètres utilisateur ou vos paramètres gérés. Dans un fichier de paramètres, indiquez le [chemin absolu](#in-settings-files). Ignorée dans les [paramètres de projet et locaux](/docs/fr/settings-reference#variables-claude-code-ignores-in-env) |444| `CLAUDE_CONFIG_DIR` | Remplacer le répertoire de configuration (par défaut : `~/.claude`). Tous les paramètres, l'historique des sessions et les plugins sont stockés sous ce chemin. Pour les identifiants, voir [où Claude Code stocke les identifiants](/docs/fr/authentication#credential-management). Utile pour exécuter plusieurs comptes côte à côte : par exemple, `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'`. Définissez-la dans votre shell, vos paramètres utilisateur ou vos paramètres gérés. Dans un fichier de paramètres, indiquez le [chemin absolu](#in-settings-files). Ignorée dans les [paramètres de projet et locaux](/docs/fr/settings-reference#variables-claude-code-ignores-in-env) |

441| `CLAUDE_DISABLE_ADOPT` | Définissez sur `1` pour arrêter le travail en arrière-plan en cours au lieu de le reporter lorsque vous passez une session en arrière-plan en appuyant sur `←` ou avec [`/background`](/docs/fr/agent-view#from-inside-a-session). Claude Code vous demande de confirmer avant de passer en arrière-plan, puis arrête les tâches qui auraient sinon été reportées. Nécessite Claude Code v2.1.195 ou ultérieur |445| `CLAUDE_DISABLE_ADOPT` | Définissez sur `1` pour arrêter le travail en arrière-plan en cours au lieu de le reporter lorsque vous passez une session en arrière-plan en appuyant sur `←` ou avec [`/background`](/docs/fr/agent-view#from-inside-a-session). Claude Code vous demande de confirmer avant de passer en arrière-plan, puis arrête les tâches qui auraient sinon été reportées. Nécessite Claude Code v2.1.195 ou ultérieur |

442| `CLAUDE_EFFORT` | Définie automatiquement dans les sous-processus de l'outil Bash et les commandes de hook sur le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) en vigueur au démarrage du sous-processus : `low`, `medium`, `high`, `xhigh` ou `max`. Correspond au champ `effort.level` transmis aux [hooks](/docs/fr/hooks). Définie uniquement lorsque le modèle actuel prend en charge le paramètre effort |446| `CLAUDE_EFFORT` | Définie automatiquement dans les sous-processus de l'outil Bash et les commandes de hook sur le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) en vigueur au démarrage du sous-processus : `low`, `medium`, `high`, `xhigh` ou `max`. Correspond au champ `effort.level` transmis aux [hooks](/docs/fr/hooks). Définie uniquement lorsque le modèle actuel prend en charge le paramètre effort |


452| `CLAUDE_SUBAGENT_BG_SHELL_MAX_MS` | Supprimée dans la v2.1.260 et désormais sans effet. Plafonnait auparavant la durée d'exécution, en millisecondes, d'une [commande shell en arrière-plan](/docs/fr/interactive-mode#background-bash-commands) lancée par un [sous-agent](/docs/fr/sub-agents), avec une valeur par défaut de 60 minutes. Voir [les règles de durée de vie des commandes en arrière-plan](/docs/fr/tools-reference#background-commands) |456| `CLAUDE_SUBAGENT_BG_SHELL_MAX_MS` | Supprimée dans la v2.1.260 et désormais sans effet. Plafonnait auparavant la durée d'exécution, en millisecondes, d'une [commande shell en arrière-plan](/docs/fr/interactive-mode#background-bash-commands) lancée par un [sous-agent](/docs/fr/sub-agents), avec une valeur par défaut de 60 minutes. Voir [les règles de durée de vie des commandes en arrière-plan](/docs/fr/tools-reference#background-commands) |

453| `DEBUG` | Définissez sur `1` pour activer le mode debug, ce qui équivaut à un lancement avec [`--debug`](/docs/fr/cli-reference#cli-flags). Les logs de debug sont écrits dans `~/.claude/debug/<session-id>.txt`, ou dans le chemin défini par `CLAUDE_CODE_DEBUG_LOGS_DIR`. Seules les valeurs vraies `1`, `true`, `yes` et `on` activent le mode debug, de sorte que les motifs d'espace de noms comme `DEBUG=express:*` définis pour d'autres outils ne le déclenchent pas |457| `DEBUG` | Définissez sur `1` pour activer le mode debug, ce qui équivaut à un lancement avec [`--debug`](/docs/fr/cli-reference#cli-flags). Les logs de debug sont écrits dans `~/.claude/debug/<session-id>.txt`, ou dans le chemin défini par `CLAUDE_CODE_DEBUG_LOGS_DIR`. Seules les valeurs vraies `1`, `true`, `yes` et `on` activent le mode debug, de sorte que les motifs d'espace de noms comme `DEBUG=express:*` définis pour d'autres outils ne le déclenchent pas |

454| `DISABLE_AUTOUPDATER` | Définissez sur `1` pour désactiver les mises à jour automatiques en arrière-plan. La commande manuelle `claude update` fonctionne toujours. Utilisez `DISABLE_UPDATES` pour bloquer les deux |458| `DISABLE_AUTOUPDATER` | Définissez sur `1` pour désactiver les mises à jour automatiques en arrière-plan. La commande manuelle `claude update` fonctionne toujours. Utilisez `DISABLE_UPDATES` pour bloquer les deux |

455| `DISABLE_AUTO_COMPACT` | Définissez sur `1` pour désactiver la compaction automatique à l'approche de la limite de contexte. La commande manuelle `/compact` reste disponible. Utilisez-la lorsque vous souhaitez contrôler explicitement le moment de la compaction. Remplace le paramètre [`autoCompactEnabled`](/docs/fr/settings-reference#autocompactenabled) |459| `DISABLE_AUTO_COMPACT` | Définissez à `1` pour désactiver la compaction automatique à l'approche de la limite de contexte, ainsi que la [compaction en période d'inactivité](/docs/fr/settings-reference#idlecompaction). La commande manuelle `/compact` reste disponible. Utilisez-la lorsque vous souhaitez contrôler explicitement le moment de la compaction. Remplace le paramètre [`autoCompactEnabled`](/docs/fr/settings-reference#autocompactenabled) |

456| `DISABLE_COMPACT` | Définissez sur `1` pour désactiver toute compaction : la compaction automatique comme la commande manuelle `/compact` |460| `DISABLE_COMPACT` | Définissez sur `1` pour désactiver toute compaction : la compaction automatique comme la commande manuelle `/compact` |

457| `DISABLE_COST_WARNINGS` | Définissez sur `1` pour désactiver les messages d'avertissement sur les coûts |461| `DISABLE_COST_WARNINGS` | Définissez sur `1` pour désactiver les messages d'avertissement sur les coûts |

458| `DISABLE_DOCTOR_COMMAND` | Définissez sur `1` pour masquer le skill de vérification de la configuration [`/doctor`](/docs/fr/commands#all-commands) et son alias `/checkup`. Utile pour les déploiements gérés où les utilisateurs ne doivent pas exécuter de diagnostics de configuration depuis une session. N'affecte pas la commande de terminal `claude doctor`. Avant la v2.1.205, cette variable masquait la commande d'écran de diagnostic `/doctor` |462| `DISABLE_DOCTOR_COMMAND` | Définissez sur `1` pour masquer le skill de vérification de la configuration [`/doctor`](/docs/fr/commands#all-commands) et son alias `/checkup`. Utile pour les déploiements gérés où les utilisateurs ne doivent pas exécuter de diagnostics de configuration depuis une session. N'affecte pas la commande de terminal `claude doctor`. Avant la v2.1.205, cette variable masquait la commande d'écran de diagnostic `/doctor` |


478| `ENABLE_CLAUDEAI_MCP_SERVERS` | Définissez sur `false` pour empêcher Claude Code de récupérer les [serveurs MCP de claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai). Activée par défaut pour les utilisateurs connectés. Pour désactiver par projet ou par organisation, définissez plutôt [`disableClaudeAiConnectors`](/docs/fr/settings-reference#disableclaudeaiconnectors) dans les paramètres |482| `ENABLE_CLAUDEAI_MCP_SERVERS` | Définissez sur `false` pour empêcher Claude Code de récupérer les [serveurs MCP de claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai). Activée par défaut pour les utilisateurs connectés. Pour désactiver par projet ou par organisation, définissez plutôt [`disableClaudeAiConnectors`](/docs/fr/settings-reference#disableclaudeaiconnectors) dans les paramètres |

479| `ENABLE_PROMPT_CACHING_1H` | Définissez sur `1` pour demander un [TTL de cache de prompt](/docs/fr/prompt-caching#cache-lifetime) d'une heure au lieu des 5 minutes par défaut. Destinée aux utilisateurs de clés API, d'[Amazon Bedrock](/docs/fr/amazon-bedrock), de [Google Cloud's Agent Platform](/docs/fr/google-vertex-ai), de [Microsoft Foundry](/docs/fr/microsoft-foundry) et de [Claude Platform on AWS](/docs/fr/claude-platform-on-aws). Les utilisateurs disposant d'un abonnement qui restent dans l'utilisation incluse reçoivent automatiquement le TTL d'une heure sur la [conversation principale](/docs/fr/prompt-caching#which-ttl-each-request-gets). Les utilisateurs disposant d'un abonnement qui puisent dans leurs [crédits d'utilisation](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) peuvent la définir pour conserver le TTL d'une heure. Les écritures en cache d'une heure sont facturées à un tarif plus élevé. Pour choisir plutôt le TTL par catégorie de requêtes, utilisez `CLAUDE_CODE_PROMPT_CACHE_TTL` et `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`, qui ont priorité sur cette variable |483| `ENABLE_PROMPT_CACHING_1H` | Définissez sur `1` pour demander un [TTL de cache de prompt](/docs/fr/prompt-caching#cache-lifetime) d'une heure au lieu des 5 minutes par défaut. Destinée aux utilisateurs de clés API, d'[Amazon Bedrock](/docs/fr/amazon-bedrock), de [Google Cloud's Agent Platform](/docs/fr/google-vertex-ai), de [Microsoft Foundry](/docs/fr/microsoft-foundry) et de [Claude Platform on AWS](/docs/fr/claude-platform-on-aws). Les utilisateurs disposant d'un abonnement qui restent dans l'utilisation incluse reçoivent automatiquement le TTL d'une heure sur la [conversation principale](/docs/fr/prompt-caching#which-ttl-each-request-gets). Les utilisateurs disposant d'un abonnement qui puisent dans leurs [crédits d'utilisation](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) peuvent la définir pour conserver le TTL d'une heure. Les écritures en cache d'une heure sont facturées à un tarif plus élevé. Pour choisir plutôt le TTL par catégorie de requêtes, utilisez `CLAUDE_CODE_PROMPT_CACHE_TTL` et `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`, qui ont priorité sur cette variable |

480| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Dépréciée. Utilisez plutôt `ENABLE_PROMPT_CACHING_1H` |484| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Dépréciée. Utilisez plutôt `ENABLE_PROMPT_CACHING_1H` |

481| `ENABLE_TOOL_SEARCH` | Contrôle [MCP Tool Search](/docs/fr/mcp#scale-with-mcp-tool-search). Lorsqu'elle n'est pas définie, Claude Code diffère par défaut tous les outils MCP. Il les charge néanmoins dès le départ sur les modèles de Google Cloud's Agent Platform antérieurs à la génération Claude 4.5, sur un déploiement Microsoft Foundry hébergé sur Azure, et lorsque `ANTHROPIC_BASE_URL` pointe vers un hôte non first-party. `true` diffère toujours et envoie l'en-tête bêta, sauf sur ces mêmes modèles Agent Platform et déploiements Microsoft Foundry ; les requêtes échouent sur les proxys qui ne prennent pas en charge `tool_reference`. `auto` charge dès le départ lorsque les définitions d'outils tiennent dans 10 % du contexte. `auto:N` définit un seuil personnalisé, comme `auto:5` pour 5 %. `false` charge tous les outils dès le départ. Une valeur que vous définissez vous-même est ignorée lorsque `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` est défini. Avant la v2.1.221, Claude Code désactivait la recherche d'outils pour tous les modèles sur Google Cloud's Agent Platform, sauf si vous définissiez cette variable sur `true` |485| `ENABLE_TOOL_SEARCH` | Contrôle la [recherche d'outils MCP](/docs/fr/mcp#scale-with-mcp-tool-search). Lorsqu'elle n'est pas définie, Claude Code diffère par défaut le chargement de tous les outils MCP, et les charge plutôt dès le départ lorsque `ANTHROPIC_BASE_URL` pointe vers un hôte non first-party. `true` les maintient différés également sur un tel hôte. `auto` les charge dès le départ lorsque les définitions d'outils tiennent dans 10 % du contexte. `auto:N` définit un seuil personnalisé, comme `auto:5` pour 5 %. `false` charge tous les outils dès le départ. Pour les modèles et les déploiements qui chargent tous les outils dès le départ quelle que soit cette valeur, consultez [Configurer la recherche d'outils](/docs/fr/mcp#configure-tool-search) |

482| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Définissez sur n'importe quelle valeur non vide, comme `1`, pour que Claude Code cesse de réessayer en cas d'erreurs de surcharge répétées pour tous les modèles lorsqu'aucun modèle de secours n'est configuré. **La définir sur `0` ou `false` active tout de même ce comportement**, contrairement à la plupart des variables d'activation/désactivation ; supprimez la variable pour rétablir le comportement par défaut des nouvelles tentatives. Sans elle, Claude Code cesse de réessayer de cette manière sur les modèles qu'il reconnaît comme des modèles Opus, Fable ou Mythos lorsque vous vous authentifiez avec une clé API ou un [fournisseur tiers](/docs/fr/third-party-integrations) plutôt qu'avec un abonnement Claude. Sur Claude Code v2.1.160 ou ultérieur, Claude Code bascule sur votre [chaîne de modèles de secours](/docs/fr/model-config#fallback-model-chains) configurée en cas d'erreurs de surcharge répétées pour n'importe quel modèle principal, donc cette variable n'affecte pas le basculement vers un modèle de secours |486| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Définissez sur n'importe quelle valeur non vide, comme `1`, pour que Claude Code cesse de réessayer en cas d'erreurs de surcharge répétées pour tous les modèles lorsqu'aucun modèle de secours n'est configuré. **La définir sur `0` ou `false` active tout de même ce comportement**, contrairement à la plupart des variables d'activation/désactivation ; supprimez la variable pour rétablir le comportement par défaut des nouvelles tentatives. Sans elle, Claude Code cesse de réessayer de cette manière sur les modèles qu'il reconnaît comme des modèles Opus, Fable ou Mythos lorsque vous vous authentifiez avec une clé API ou un [fournisseur tiers](/docs/fr/third-party-integrations) plutôt qu'avec un abonnement Claude. Sur Claude Code v2.1.160 ou ultérieur, Claude Code bascule sur votre [chaîne de modèles de secours](/docs/fr/model-config#fallback-model-chains) configurée en cas d'erreurs de surcharge répétées pour n'importe quel modèle principal, donc cette variable n'affecte pas le basculement vers un modèle de secours |

483| `FORCE_AUTOUPDATE_PLUGINS` | Définissez sur `1` pour forcer les mises à jour automatiques des plugins même lorsque le système de mise à jour automatique principal est désactivé via `DISABLE_AUTOUPDATER` |487| `FORCE_AUTOUPDATE_PLUGINS` | Définissez sur `1` pour forcer les mises à jour automatiques des plugins même lorsque le système de mise à jour automatique principal est désactivé via `DISABLE_AUTOUPDATER` |

484| `FORCE_HYPERLINK` | Définissez sur `1` pour activer les hyperliens OSC 8 cliquables lorsque votre terminal les prend en charge sans être détecté automatiquement, ou sur `0` pour les désactiver. Lorsqu'elle n'est pas définie, Claude Code n'active les hyperliens que s'il détecte leur prise en charge par le terminal. Claude Code analyse cette valeur comme un nombre et non comme un booléen, donc une valeur telle que `false`, `no` ou `off` active les hyperliens au lieu de les désactiver. Le [badge de PR ou de merge request](/docs/fr/interactive-mode#pr-review-status) du pied de page s'affiche sous forme d'hyperlien même lorsque Claude Code ne peut pas détecter la prise en charge par le terminal, par exemple via SSH. Définissez `0` pour afficher le badge en texte brut |488| `FORCE_HYPERLINK` | Définissez sur `1` pour activer les hyperliens OSC 8 cliquables lorsque votre terminal les prend en charge sans être détecté automatiquement, ou sur `0` pour les désactiver. Lorsqu'elle n'est pas définie, Claude Code n'active les hyperliens que s'il détecte leur prise en charge par le terminal. Claude Code analyse cette valeur comme un nombre et non comme un booléen, donc une valeur telle que `false`, `no` ou `off` active les hyperliens au lieu de les désactiver. Le [badge de PR ou de merge request](/docs/fr/interactive-mode#pr-review-status) du pied de page s'affiche sous forme d'hyperlien même lorsque Claude Code ne peut pas détecter la prise en charge par le terminal, par exemple via SSH. Définissez `0` pour afficher le badge en texte brut |


593* Exécuter [`claude import` ou la commande `/import`](/docs/fr/cli-reference#cli-commands)597* Exécuter [`claude import` ou la commande `/import`](/docs/fr/cli-reference#cli-commands)

594* Exécuter [`/skill-doctor`](/docs/fr/skills#find-unused-skills) ou ouvrir son rapport dans l'onglet **Stats** de `/plugin`598* Exécuter [`/skill-doctor`](/docs/fr/skills#find-unused-skills) ou ouvrir son rapport dans l'onglet **Stats** de `/plugin`

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

600* Activer le [mod You should know](/docs/fr/interactive-mode#you-should-know-suggestions)

596* Utiliser [l'outil advisor](/docs/fr/advisor#requirements)601* Utiliser [l'outil advisor](/docs/fr/advisor#requirements)

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

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


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

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

602* Demander à Claude Code d'[exclure les outils MCP dont l'API rejetterait le schéma d'entrée](/docs/fr/mcp#tools-with-invalid-input-schemas) ; il envoie le schéma malgré tout, et une requête qui l'inclut échoue avec [une erreur 400 désignant l'outil par sa position](/docs/fr/errors#tool-input-schema-is-invalid)607* Demander à Claude Code d'[exclure les outils MCP dont l'API rejetterait le schéma d'entrée](/docs/fr/mcp#tools-with-invalid-input-schemas) ; il envoie le schéma malgré tout, et une requête qui l'inclut échoue avec [une erreur 400 désignant l'outil par sa position](/docs/fr/errors#tool-input-schema-is-invalid)

608* Demander à Claude Code de [compacter une longue conversation pendant que votre session de terminal est inactive](/docs/fr/settings-reference#idlecompaction), peu avant l'expiration d'un cache de prompt d'une heure

603 609 

604<h3 id="first-session-after-an-install-or-upgrade">610<h3 id="first-session-after-an-install-or-upgrade">

605 Première session après une installation ou une mise à niveau611 Première session après une installation ou une mise à niveau

errors.md +163 −12

Details

134| `proxy refused the connection` | [Réseau](#the-proxy-refused-the-connection) |134| `proxy refused the connection` | [Réseau](#the-proxy-refused-the-connection) |

135| `403` avec `GitHub GraphQL is not available from Claude Code sessions` dans une session cloud | [Proxy GitHub](/docs/fr/cloud-environments#github-proxy) |135| `403` avec `GitHub GraphQL is not available from Claude Code sessions` dans une session cloud | [Proxy GitHub](/docs/fr/cloud-environments#github-proxy) |

136| `The cloud environments service returned an empty response` / `The cloud environments service returned a response in an unexpected format` | [Réseau](#the-cloud-environments-service-returned-an-empty-or-unexpected-response) |136| `The cloud environments service returned an empty response` / `The cloud environments service returned a response in an unexpected format` | [Réseau](#the-cloud-environments-service-returned-an-empty-or-unexpected-response) |

137| `Failed to fetch session from Sessions API: Failed to fetch session logs` | [Réseau](#failed-to-fetch-session-from-sessions-api) |

137| `Couldn't reconnect to your Remote Control session` | [Réseau](#couldnt-reconnect-to-your-remote-control-session) |138| `Couldn't reconnect to your Remote Control session` | [Réseau](#couldnt-reconnect-to-your-remote-control-session) |

138| `N sessions ended while this machine was offline — the environment was cleaned up on the server and can't be resumed.` | [Réseau](#sessions-ended-while-this-machine-was-offline) |139| `N sessions ended while this machine was offline — the environment was cleaned up on the server and can't be resumed.` | [Réseau](#sessions-ended-while-this-machine-was-offline) |

139| `Couldn't share the transcript.` | [Réseau](#couldnt-share-the-transcript) |140| `Couldn't share the transcript.` | [Réseau](#couldnt-share-the-transcript) |


153| `Request too large for the API's 32MB request limit` | [Erreurs de requête](#request-too-large) |154| `Request too large for the API's 32MB request limit` | [Erreurs de requête](#request-too-large) |

154| `Image was too large` | [Erreurs de requête](#image-was-too-large) |155| `Image was too large` | [Erreurs de requête](#image-was-too-large) |

155| `Unable to resize image` | [Erreurs de requête](#unable-to-resize-image) |156| `Unable to resize image` | [Erreurs de requête](#unable-to-resize-image) |

157| `Request rejected as unprocessable by the model` | [Erreurs de requête](#request-rejected-as-unprocessable-by-the-model) |

156| `PDF too large` / `PDF is password protected` / `pdftoppm is not installed` | [Erreurs de requête](#pdf-errors) |158| `PDF too large` / `PDF is password protected` / `pdftoppm is not installed` | [Erreurs de requête](#pdf-errors) |

157| `Extra inputs are not permitted` | [Erreurs de requête](#extra-inputs-are-not-permitted) |159| `Extra inputs are not permitted` | [Erreurs de requête](#extra-inputs-are-not-permitted) |

158| `API Error: 400 ... tools.N.custom.input_schema: JSON schema is invalid` / `Property keys should match pattern` | [Erreurs de requête](#tool-input-schema-is-invalid) |160| `API Error: 400 ... tools.N.custom.input_schema: JSON schema is invalid` / `Property keys should match pattern` | [Erreurs de requête](#tool-input-schema-is-invalid) |

161| `Tool "mcp__<server>__<tool>" is not sent to Claude: its name has <N> characters and the API accepts at most 128` | [Erreurs de requête](#mcp-tool-name-over-128-characters) |

162| `tools.N.custom.name: String should have at most 128 characters` | [Erreurs de requête](#mcp-tool-name-over-128-characters) |

159| `tool_use.name: String should have at most 200 characters` | [Erreurs de requête](#tool-use-name-over-200-characters) |163| `tool_use.name: String should have at most 200 characters` | [Erreurs de requête](#tool-use-name-over-200-characters) |

160| `There's an issue with the selected model` | [Erreurs de requête](#theres-an-issue-with-the-selected-model) |164| `There's an issue with the selected model` | [Erreurs de requête](#theres-an-issue-with-the-selected-model) |

161| `Model ... is not a recognized model id` | [Erreurs de requête](#model-is-not-a-recognized-model-id) |165| `Model ... is not a recognized model id` | [Erreurs de requête](#model-is-not-a-recognized-model-id) |


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

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

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

201| `Couldn't verify your organization's policy for cloud sessions` | [Erreurs de ligne de commande](#cloud-sessions-are-disabled-by-your-organizations-policy) |205| `Cloud sessions use your claude.ai login`, à la fin d'un refus par la politique qui nomme des identifiants | [Erreurs de ligne de commande](#cloud-sessions-use-your-claude-ai-login) |

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

207| `Cloud sessions aren't available:` suivi de la raison pour laquelle la politique de votre organisation n'a pas pu être chargée | [Erreurs de ligne de commande](#couldnt-verify-your-organizations-policy-for-cloud-sessions) |

202| `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) |208| `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) |

209| `Nothing was stashed: "<path>" is now a folder in place of a tracked file or link` / `are now folders in place of tracked files or links` | [Erreurs de ligne de commande](#nothing-was-stashed-because-a-folder-replaced-a-tracked-file) |

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

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

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


259| `Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load` | [Erreurs de ligne de commande](#output-styles-are-saved-to-local-settings-which-this-session-doesnt-load) |266| `Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load` | [Erreurs de ligne de commande](#output-styles-are-saved-to-local-settings-which-this-session-doesnt-load) |

260| `/recap only runs when you ask for it yourself in this session` | [Erreurs de ligne de commande](#recap-only-runs-when-you-ask-for-it-yourself) |267| `/recap only runs when you ask for it yourself in this session` | [Erreurs de ligne de commande](#recap-only-runs-when-you-ask-for-it-yourself) |

261| `` `plugin eval` is currently in early access `` / `` `plugin eval` is currently unavailable `` | [Erreurs de plugin](#plugin-eval-is-currently-in-early-access) |268| `` `plugin eval` is currently in early access `` / `` `plugin eval` is currently unavailable `` | [Erreurs de plugin](#plugin-eval-is-currently-in-early-access) |

269| `cannot be evaluated where sessions load it` | [Tester des plugins avec des evals](/docs/fr/plugin-evals#cannot-be-evaluated-where-sessions-load-it) |

262| `Marketplace "<name>" is registered from an untrusted source` | [Erreurs de plugin](#marketplace-is-registered-from-an-untrusted-source) |270| `Marketplace "<name>" is registered from an untrusted source` | [Erreurs de plugin](#marketplace-is-registered-from-an-untrusted-source) |

263| `Claude Code refuses the marketplace name "<name>"` | [Erreurs de plugin](#claude-code-refuses-the-marketplace-name) |271| `Claude Code refuses the marketplace name "<name>"` | [Erreurs de plugin](#claude-code-refuses-the-marketplace-name) |

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


358| `Claude Code's fullscreen renderer didn't finish starting last time on this machine` / `Claude Code's fullscreen renderer has repeatedly failed to start on this machine` | [Rendu en plein écran](/docs/fr/fullscreen#fullscreen-renderer-didnt-finish-starting) |366| `Claude Code's fullscreen renderer didn't finish starting last time on this machine` / `Claude Code's fullscreen renderer has repeatedly failed to start on this machine` | [Rendu en plein écran](/docs/fr/fullscreen#fullscreen-renderer-didnt-finish-starting) |

359| `Claude Code exited after an unrecoverable interface error (...)` | [Avertissements de configuration](#exited-after-an-unrecoverable-interface-error) |367| `Claude Code exited after an unrecoverable interface error (...)` | [Avertissements de configuration](#exited-after-an-unrecoverable-interface-error) |

360| `Agent descriptions are over the 15.0k-token limit` | [Avertissements de configuration](#agent-descriptions-are-over-the-15000-token-limit) |368| `Agent descriptions are over the 15.0k-token limit` | [Avertissements de configuration](#agent-descriptions-are-over-the-15000-token-limit) |

369| `hook needs quotes around a path with a space` | [Avertissements de configuration](#hook-needs-quotes-around-a-path-with-a-space) |

361| `Not loaded: rename <path>, then restart — its name uses "<name>", a name reserved for the skills synced from your claude.ai account` | [Avertissements de configuration](#a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved) |370| `Not loaded: rename <path>, then restart — its name uses "<name>", a name reserved for the skills synced from your claude.ai account` | [Avertissements de configuration](#a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved) |

371| `N skill or command names refused: run with --debug to see which ([names]), rename, then restart` | [Avertissements de configuration](#skill-or-command-name-refused) |

362| `Ignoring N permissions.allow entries from ... this workspace has not been trusted` | [Avertissements de configuration](#workspace-has-not-been-trusted) |372| `Ignoring N permissions.allow entries from ... this workspace has not been trusted` | [Avertissements de configuration](#workspace-has-not-been-trusted) |

363| `is a network path, which cannot be added as a working directory` | [Avertissements de configuration](#working-directory-is-a-network-path) |373| `is a network path, which cannot be added as a working directory` | [Avertissements de configuration](#working-directory-is-a-network-path) |

364| `Remote managed settings failed to load (<cause>)` | [Avertissements de configuration](#remote-managed-settings-failed-to-load) |374| `Remote managed settings failed to load (<cause>)` | [Avertissements de configuration](#remote-managed-settings-failed-to-load) |


447| [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/fr/env-vars) | non défini | Définissez sur `1` dans les sessions sans surveillance telles que les travaux CI pour réessayer les erreurs de capacité `429` et `529` indéfiniment au lieu d'échouer après `CLAUDE_CODE_MAX_RETRIES` tentatives. Claude Code échoue immédiatement lorsqu'une requête à vitesse standard obtient un `429` qui signale une limite de dépenses ou des crédits d'utilisation épuisés, même un provenant d'un [plafond de dépenses de passerelle](#spend-limit-reached) qui se réinitialise selon un calendrier. Avant v2.1.239, le watchdog réessayait ceux-ci indéfiniment. Pour les requêtes en mode rapide, voir [Handle rate limits](/docs/fr/fast-mode#handle-rate-limits). Sur v2.1.199 ou ultérieur, il augmente également le nombre de tentatives par défaut pour les autres erreurs transitoires, telles que les erreurs serveur, les délais d'attente et les connexions interrompues, à 300, environ trois heures de backoff, et supprime le plafond de 15 sur `CLAUDE_CODE_MAX_RETRIES` si vous définissez explicitement cette variable. |457| [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/fr/env-vars) | non défini | Définissez sur `1` dans les sessions sans surveillance telles que les travaux CI pour réessayer les erreurs de capacité `429` et `529` indéfiniment au lieu d'échouer après `CLAUDE_CODE_MAX_RETRIES` tentatives. Claude Code échoue immédiatement lorsqu'une requête à vitesse standard obtient un `429` qui signale une limite de dépenses ou des crédits d'utilisation épuisés, même un provenant d'un [plafond de dépenses de passerelle](#spend-limit-reached) qui se réinitialise selon un calendrier. Avant v2.1.239, le watchdog réessayait ceux-ci indéfiniment. Pour les requêtes en mode rapide, voir [Handle rate limits](/docs/fr/fast-mode#handle-rate-limits). Sur v2.1.199 ou ultérieur, il augmente également le nombre de tentatives par défaut pour les autres erreurs transitoires, telles que les erreurs serveur, les délais d'attente et les connexions interrompues, à 300, environ trois heures de backoff, et supprime le plafond de 15 sur `CLAUDE_CODE_MAX_RETRIES` si vous définissez explicitement cette variable. |

448| [`CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS`](/docs/fr/env-vars) | non défini | Durée maximale en millisecondes pendant laquelle chaque requête API attend la fin des erreurs `429` et `529` lorsque `CLAUDE_CODE_RETRY_WATCHDOG` est défini. Lorsqu'elle n'est pas définie, l'attente n'a pas de limite. Nécessite Claude Code v2.1.295 ou ultérieur. |458| [`CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS`](/docs/fr/env-vars) | non défini | Durée maximale en millisecondes pendant laquelle chaque requête API attend la fin des erreurs `429` et `529` lorsque `CLAUDE_CODE_RETRY_WATCHDOG` est défini. Lorsqu'elle n'est pas définie, l'attente n'a pas de limite. Nécessite Claude Code v2.1.295 ou ultérieur. |

449| [`CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS`](/docs/fr/env-vars) | 500 | Délai initial en millisecondes du backoff entre les nouvelles tentatives d'une requête que l'API rejette avec une erreur de surcharge `529`. Augmentez-le, jusqu'à 32000, pour répartir les nouvelles tentatives sur une période plus longue lorsque l'API est à pleine capacité. Sans effet lorsque `CLAUDE_CODE_RETRY_WATCHDOG` est défini sur `1`, ou lorsque la requête rejetée a été envoyée en [mode rapide](/docs/fr/fast-mode#handle-rate-limits). Nécessite Claude Code v2.1.292 ou ultérieur. |459| [`CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS`](/docs/fr/env-vars) | 500 | Délai initial en millisecondes du backoff entre les nouvelles tentatives d'une requête que l'API rejette avec une erreur de surcharge `529`. Augmentez-le, jusqu'à 32000, pour répartir les nouvelles tentatives sur une période plus longue lorsque l'API est à pleine capacité. Sans effet lorsque `CLAUDE_CODE_RETRY_WATCHDOG` est défini sur `1`, ou lorsque la requête rejetée a été envoyée en [mode rapide](/docs/fr/fast-mode#handle-rate-limits). Nécessite Claude Code v2.1.292 ou ultérieur. |

460| [`CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS`](/docs/fr/env-vars) | 32000 | Plafond en millisecondes du backoff entre les nouvelles tentatives d'une requête que l'API rejette avec une erreur de surcharge `529`. Augmentez-le, jusqu'à 64000, pour que les nouvelles tentatives ultérieures continuent de s'espacer lorsque l'API est à pleine capacité. Sans effet lorsque `CLAUDE_CODE_RETRY_WATCHDOG` est défini sur `1`, ou lorsque la requête rejetée a été envoyée en [mode rapide](/docs/fr/fast-mode#handle-rate-limits). Nécessite Claude Code v2.1.296 ou ultérieur. |

450| [`API_TIMEOUT_MS`](/docs/fr/env-vars) | 600000 | Délai d'attente par requête en millisecondes. Augmentez-le pour les réseaux lents ou les proxys. Il plafonne également la durée pendant laquelle Claude Code attend les en-têtes de réponse, décrite dans [No response from API](#no-response-from-api). |461| [`API_TIMEOUT_MS`](/docs/fr/env-vars) | 600000 | Délai d'attente par requête en millisecondes. Augmentez-le pour les réseaux lents ou les proxys. Il plafonne également la durée pendant laquelle Claude Code attend les en-têtes de réponse, décrite dans [No response from API](#no-response-from-api). |

451| [`CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES`](/docs/fr/env-vars) | non défini | Limite du nombre de renvois d'une [requête sans streaming](#streaming-response-ended-before-any-complete-data-was-received) qui expire. Une fois la limite atteinte, la requête échoue. Une réponse de Claude dont la génération dure plus longtemps que le délai d'expiration expire de nouveau à chaque renvoi ; définissez donc un nombre faible tel que `0` pour échouer plus tôt. Chaque tentative sans streaming expire après 300 secondes dans une session locale, ou après `API_TIMEOUT_MS` lorsque vous définissez une valeur positive. Nécessite Claude Code v2.1.285 ou ultérieur. |462| [`CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES`](/docs/fr/env-vars) | non défini | Limite du nombre de renvois d'une [requête sans streaming](#streaming-response-ended-before-any-complete-data-was-received) qui expire. Une fois la limite atteinte, la requête échoue. Une réponse de Claude dont la génération dure plus longtemps que le délai d'expiration expire de nouveau à chaque renvoi ; définissez donc un nombre faible tel que `0` pour échouer plus tôt. Chaque tentative sans streaming expire après 300 secondes dans une session locale, ou après `API_TIMEOUT_MS` lorsque vous définissez une valeur positive. Nécessite Claude Code v2.1.285 ou ultérieur. |

452| [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/fr/env-vars) | non défini | Délai en millisecondes pour le premier octet de réponse d'une requête en streaming. Nécessite Claude Code v2.1.242 ou ultérieur. Pour savoir comment Claude Code choisit le délai lorsque ceci n'est pas défini, voir [No response from API](#no-response-from-api). |463| [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/fr/env-vars) | non défini | Délai en millisecondes pour le premier octet de réponse d'une requête en streaming. Nécessite Claude Code v2.1.242 ou ultérieur. Pour savoir comment Claude Code choisit le délai lorsque ceci n'est pas défini, voir [No response from API](#no-response-from-api). |


2045Ces étapes modifient l'un de vos propres environnements. Un [environnement partagé par l'organisation](/docs/fr/cloud-environments#organization-shared-environments) s'ouvre en lecture seule dans le sélecteur, donc demandez à un propriétaire de modifier son accès réseau à partir de la page **Cloud environments** dans les [paramètres d'administration](https://claude.ai/admin-settings).2056Ces étapes modifient l'un de vos propres environnements. Un [environnement partagé par l'organisation](/docs/fr/cloud-environments#organization-shared-environments) s'ouvre en lecture seule dans le sélecteur, donc demandez à un propriétaire de modifier son accès réseau à partir de la page **Cloud environments** dans les [paramètres d'administration](https://claude.ai/admin-settings).

2046 2057 

2047* Ouvrez votre environnement pour l'édition, soit à partir du [formulaire de routine](/docs/fr/routines#environments-and-network-access), soit à partir du [sélecteur d'environnement](/docs/fr/cloud-environments#configure-your-environment) où vous démarrez les sessions cloud.2058* Ouvrez votre environnement pour l'édition, soit à partir du [formulaire de routine](/docs/fr/routines#environments-and-network-access), soit à partir du [sélecteur d'environnement](/docs/fr/cloud-environments#configure-your-environment) où vous démarrez les sessions cloud.

2048* Dans la boîte de dialogue **Edit environment**, changez **Network access** de **Trusted** à **Custom**, puis ajoutez le domaine bloqué à **Allowed domains**. Entrez un domaine par ligne. Cochez **Also include default list of common package managers** pour conserver la [liste d'autorisation par défaut](/docs/fr/cloud-environments#default-allowed-domains) aux côtés de vos domaines personnalisés. Sélectionnez **Full** à la place si vous voulez un accès sans restriction.2059* Dans la boîte de dialogue **Edit cloud environment**, changez **Network access** de **Trusted** à **Custom**, puis ajoutez le domaine bloqué à **Allowed domains**. Entrez un domaine par ligne. Cochez **Also include default list of common package managers** pour conserver la [liste d'autorisation par défaut](/docs/fr/cloud-environments#default-allowed-domains) aux côtés de vos domaines personnalisés. Sélectionnez **Full** à la place si vous voulez un accès sans restriction.

2049* Cliquez sur **Save changes**. La prochaine exécution utilise la liste d'autorisation mise à jour. Pour une session cloud qui est déjà ouverte, consultez [quand une modification d'accès réseau atteint les sessions existantes](/docs/fr/cloud-environments#network-access).2060* Cliquez sur **Save changes**. La prochaine exécution utilise la liste d'autorisation mise à jour. Pour une session cloud qui est déjà ouverte, consultez [quand une modification d'accès réseau atteint les sessions existantes](/docs/fr/cloud-environments#network-access).

2050 2061 

2051Consultez [Network access](/docs/fr/cloud-environments#network-access) pour les niveaux d'accès et la liste d'autorisation par défaut. Les sessions CLI locales ne sont pas affectées par cette politique.2062Consultez [Network access](/docs/fr/cloud-environments#network-access) pour les niveaux d'accès et la liste d'autorisation par défaut. Les sessions CLI locales ne sont pas affectées par cette politique.


2097 2108 

2098Avant la v2.1.236, Claude Code affichait une TypeError JavaScript brute au lieu de ces messages.2109Avant la v2.1.236, Claude Code affichait une TypeError JavaScript brute au lieu de ces messages.

2099 2110 

2111<h3 id="failed-to-fetch-session-from-sessions-api">

2112 Failed to fetch session from Sessions API

2113</h3>

2114 

2115Ce message signifie que Claude Code a trouvé la [session cloud que vous avez demandé de récupérer dans votre terminal](/docs/fr/claude-code-on-the-web#from-cloud-to-terminal) mais n'a pas pu lire son historique de conversation depuis les serveurs d'Anthropic, et ne l'a donc pas ouverte :

2116 

2117```text theme={null}

2118Failed to fetch session from Sessions API: Failed to fetch session logs

2119```

2120 

2121Vous le voyez après `claude --teleport`, `/teleport`, ou après avoir choisi la session dans la liste [`/tasks`](/docs/fr/commands). `claude --teleport <session-id>` l'affiche et se ferme avec le code 1.

2122 

2123**À faire :**

2124 

2125* Exécutez à nouveau le même teleport. S'il échoue de la même manière, [signalez le problème](#report-an-error)

2126 

2127Avant la v2.1.296, Claude Code ne réessayait pas une lecture échouée, et après un tel échec il pouvait ouvrir la session avec une conversation vide et signaler un succès au lieu d'afficher ce message.

2128 

2100<h3 id="couldnt-reconnect-to-your-remote-control-session">2129<h3 id="couldnt-reconnect-to-your-remote-control-session">

2101 Couldn't reconnect to your Remote Control session2130 Couldn't reconnect to your Remote Control session

2102</h3>2131</h3>


2344* Si le message signale une limite de dimension ou de taille, redimensionnez ou recompressez l'image en dessous de cette limite avant de la joindre.2373* Si le message signale une limite de dimension ou de taille, redimensionnez ou recompressez l'image en dessous de cette limite avant de la joindre.

2345* Si le message nomme une cause, comme un JPEG CMYK, un WebP animé ou un fichier possiblement endommagé, réenregistrez l'image dans le format que le message suggère et joignez-la à nouveau.2374* Si le message nomme une cause, comme un JPEG CMYK, un WebP animé ou un fichier possiblement endommagé, réenregistrez l'image dans le format que le message suggère et joignez-la à nouveau.

2346 2375 

2376<h3 id="request-rejected-as-unprocessable-by-the-model">

2377 Request rejected as unprocessable by the model

2378</h3>

2379 

2380L'API a refusé la requête, la jugeant impossible à traiter par le modèle. Le message est celui de l'API.

2381 

2382```text theme={null}

2383API Error: 400 Request rejected as unprocessable by the model (too many or oversized images, or unsupported parameters)

2384```

2385 

2386Claude Code peut retirer les images et documents les plus anciens d'une requête refusée et l'envoyer à nouveau. Avant la v2.1.290, Claude Code ne retirait pas les images lors de ce refus ; une longue session qui en avait accumulé des centaines pouvait donc échouer avec cette erreur à chaque tour.

2387 

2388**Que faire :**

2389 

2390* Si le message continue d'apparaître dans une conversation contenant des images ou des documents, retirez-les vous-même. Appuyez deux fois sur Échap pour revenir avant les tours qui les ont ajoutés, ou exécutez `/clear` pour repartir de zéro.

2391 

2347<h3 id="pdf-errors">2392<h3 id="pdf-errors">

2348 Erreurs PDF2393 Erreurs PDF

2349</h3>2394</h3>


2413* Supprimez ou [désactivez](/docs/fr/mcp#disable-a-server-without-removing-it) le serveur MCP qui déclare le schéma invalide. L'erreur nomme l'outil uniquement par position. Sur v2.1.216 ou ultérieur, vérifiez le journal de chaque serveur pour une ligne nommant un outil dont le schéma d'entrée serait rejeté. Si aucun journal n'en nomme un, désactivez les serveurs un par un.2458* Supprimez ou [désactivez](/docs/fr/mcp#disable-a-server-without-removing-it) le serveur MCP qui déclare le schéma invalide. L'erreur nomme l'outil uniquement par position. Sur v2.1.216 ou ultérieur, vérifiez le journal de chaque serveur pour une ligne nommant un outil dont le schéma d'entrée serait rejeté. Si aucun journal n'en nomme un, désactivez les serveurs un par un.

2414* Si vous maintenez le serveur, corrigez le `input_schema` de l'outil. Le schéma doit être un JSON Schema valide, et les noms de propriété de niveau supérieur doivent faire 1 à 64 caractères et utiliser uniquement des lettres ASCII et des chiffres, `_`, `.` et `-`. Voir [Outils avec schémas d'entrée invalides](/docs/fr/mcp#tools-with-invalid-input-schemas).2459* Si vous maintenez le serveur, corrigez le `input_schema` de l'outil. Le schéma doit être un JSON Schema valide, et les noms de propriété de niveau supérieur doivent faire 1 à 64 caractères et utiliser uniquement des lettres ASCII et des chiffres, `_`, `.` et `-`. Voir [Outils avec schémas d'entrée invalides](/docs/fr/mcp#tools-with-invalid-input-schemas).

2415 2460 

2461<h3 id="mcp-tool-name-over-128-characters">

2462 Nom d'outil MCP de plus de 128 caractères

2463</h3>

2464 

2465Un serveur MCP liste un outil dont le nom complet, comme `mcp__<server>__<tool>`, dépasse les 128 caractères que l'API accepte. Claude Code [exclut cet outil de ceux qu'il envoie à Claude](/docs/fr/mcp#tools-with-names-longer-than-128-characters), et les autres outils du serveur continuent de fonctionner. Dans une session que vous démarrez avec `claude --debug` depuis votre shell, Claude Code écrit ce message dans le log de débogage à `~/.claude/debug/<session-id>.txt` :

2466 

2467```text theme={null}

2468Tool "mcp__<server>__<tool>" is not sent to Claude: its name has <N> characters and the API accepts at most 128

2469```

2470 

2471**Que faire :**

2472 

2473* Si vous maintenez le serveur, raccourcissez le nom de l'outil.

2474* Si le serveur se trouve dans votre [configuration MCP](/docs/fr/mcp#mcp-installation-scopes), donnez-lui un nom plus court à cet endroit, comme `db` au lieu de `analytics-database`. Mettez ensuite à jour ce qui fait référence au serveur ou à ses outils par l'ancien nom, comme les [règles de permission](/docs/fr/permissions#mcp) et les [matchers de hooks](/docs/fr/hooks#match-mcp-tools).

2475* Si un [plugin regroupe le serveur](/docs/fr/mcp#plugin-provided-mcp-servers), le nom complet de l'outil inclut aussi le nom du plugin. Demandez au mainteneur du plugin de raccourcir le nom du serveur ou de l'outil.

2476 

2477Avant v2.1.292, Claude Code envoyait l'outil de toute façon, et l'API rejetait chaque requête qui l'incluait avec `API Error: 400 ... tools.N.custom.name: String should have at most 128 characters`.

2478 

2416<h3 id="tool-use-name-over-200-characters">2479<h3 id="tool-use-name-over-200-characters">

2417 tool\_use.name dépasse 200 caractères2480 tool\_use.name dépasse 200 caractères

2418</h3>2481</h3>


2648 Impossible de l'enregistrer comme valeur par défaut2711 Impossible de l'enregistrer comme valeur par défaut

2649</h3>2712</h3>

2650 2713 

2651Vous avez choisi un modèle à enregistrer comme valeur par défaut, par exemple avec `/model <name>` ou `Entrée` dans le sélecteur `/model`, et Claude Code n'a pas pu écrire le choix dans votre fichier de paramètres utilisateur, `~/.claude/settings.json`. Le changement lui-même s'est appliqué, donc la session actuelle s'exécute sur le modèle que vous avez choisi, mais votre valeur par défaut est inchangée et la session suivante démarre sur l'ancienne valeur.2714Vous avez choisi un modèle à enregistrer comme valeur par défaut, par exemple avec `/model <name>` ou `Enter` dans le sélecteur `/model`, et Claude Code n'a pas pu écrire ce choix dans votre fichier de paramètres utilisateur, `~/.claude/settings.json`. Le changement lui-même a été appliqué ; la session en cours s'exécute donc sur le modèle choisi, mais votre valeur par défaut reste inchangée et la prochaine session démarre sur l'ancienne valeur.

2652 2715 

2653```text theme={null}2716```text theme={null}

2654Set model to Fable 5.1 for this session only · couldn't save it as your default: ~/.claude/settings.json can't be written (EROFS)2717Set model to Fable 5.1 for this session only · couldn't save it as your default: ~/.claude/settings.json can't be written (EROFS)


3022 3085 

3023Le message apparaît lorsque vous [créez une session cloud depuis le terminal](/docs/fr/claude-code-on-the-web#from-terminal-to-cloud) et lorsque vous soumettez une commande qui nécessite des sessions cloud, telle que `/teleport`, `/remote-env` ou `/web-setup`. Avant la v2.1.268, la soumission de l'une de ces commandes renvoyait [`Unknown command`](#unknown-command) à la place.3086Le message apparaît lorsque vous [créez une session cloud depuis le terminal](/docs/fr/claude-code-on-the-web#from-terminal-to-cloud) et lorsque vous soumettez une commande qui nécessite des sessions cloud, telle que `/teleport`, `/remote-env` ou `/web-setup`. Avant la v2.1.268, la soumission de l'une de ces commandes renvoyait [`Unknown command`](#unknown-command) à la place.

3024 3087 

3025Il s'agit d'une politique d'organisation côté serveur, qui ne peut donc pas être outrepassée par des paramètres locaux, des variables d'environnement ou des flags CLI.3088Si le message nomme plutôt des identifiants utilisés par cette session et se termine par `Cloud sessions use your claude.ai login.`, consultez [Cloud sessions use your claude.ai login](#cloud-sessions-use-your-claude-ai-login). Si Claude Code n'a pas du tout pu charger la politique de votre organisation, vous voyez [un message différent](#couldnt-verify-your-organizations-policy-for-cloud-sessions) à la place.

3026 

3027Si Claude Code n'a pas encore chargé la politique de votre organisation ou ne parvient pas à la récupérer, ces commandes répondent à la place `Couldn't verify your organization's policy for cloud sessions. Check your network connection, then restart Claude Code and try again.`

3028 3089 

3029**Que faire :**3090**Que faire :**

3030 3091 

3031* Demandez à un [Owner](/docs/fr/server-managed-settings#access-control) de votre organisation d'activer les sessions cloud dans les paramètres d'administration de Claude Code sur [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)3092* Demandez à un [Owner](/docs/fr/server-managed-settings#access-control) de votre organisation d'activer les sessions cloud dans les paramètres d'administration de Claude Code sur [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)

3032* Si le message indique que la politique n'a pas pu être vérifiée, vérifiez votre connexion réseau, puis redémarrez Claude Code et réessayez3093 

3094<h3 id="cloud-sessions-use-your-claude-ai-login">

3095 Cloud sessions use your claude.ai login

3096</h3>

3097 

3098Lorsque le [refus lié à la politique](#cloud-sessions-are-disabled-by-your-organizations-policy) nomme des identifiants utilisés par cette session et se termine par cette phrase, Claude Code a vérifié la politique de sessions cloud de l'organisation qui a émis ces identifiants. Cette organisation peut être différente de celle à laquelle appartient votre connexion claude.ai :

3099 

3100```text theme={null}

3101Cloud sessions are disabled by your organization's policy. This session is using ANTHROPIC_API_KEY, so Claude Code checked the policy for the organization that key belongs to. Cloud sessions use your claude.ai login.

3102```

3103 

3104La dernière phrase signifie que les sessions cloud s'exécutent avec votre connexion claude.ai plutôt qu'avec ces identifiants. Cette forme apparaît lorsque vous démarrez, reprenez ou envoyez un message à une session cloud depuis votre shell, par exemple avec `--cloud` ou `--teleport`. Avant la v2.1.296, Claude Code affichait également dans ce cas la forme qui vous invite à contacter l'administrateur de votre organisation.

3105 

3106<h3 id="couldnt-verify-your-organizations-policy-for-cloud-sessions">

3107 Couldn't verify your organization's policy for cloud sessions

3108</h3>

3109 

3110Ces messages signifient que Claude Code n'a pas pu charger la politique de votre organisation, qu'il vérifie avant de créer, reprendre ou envoyer un message à une [session cloud](/docs/fr/claude-code-on-the-web). Tant que la requête de politique n'est pas terminée, le message est le suivant :

3111 

3112```text theme={null}

3113Couldn't verify your organization's policy for cloud sessions. Check your network connection and try again.

3114```

3115 

3116Dans une session, une commande nécessitant des sessions cloud, comme `/teleport` ou `/web-setup`, renvoie également ce message. C'est le cas même lorsque votre shell afficherait une forme `Cloud sessions aren't available:`, et sa deuxième phrase est `Check your network connection, then restart Claude Code and try again.`

3117 

3118Une fois que la requête de politique a échoué, le message indique ce qui a échoué. Cela s'applique lorsque vous démarrez, reprenez ou envoyez un message à une session cloud depuis votre shell avec un flag comme `--cloud` ou `--teleport`. Sans route vers l'API, il indique :

3119 

3120```text theme={null}

3121Cloud sessions aren't available: couldn't reach api.anthropic.com to load your organization's policy. Check your network or proxy.

3122```

3123 

3124Les autres échecs suivent la même introduction avec leur propre cause, comme un proxy ayant refusé la requête avec HTTP 403, une erreur serveur ou des identifiants que l'API n'a pas acceptés. Lorsque l'API n'a pas accepté des identifiants que cette session utilise à la place de votre connexion claude.ai, comme une variable d'environnement `ANTHROPIC_API_KEY`, le message peut aussi les nommer et indiquer de les supprimer :

3125 

3126```text theme={null}

3127Cloud sessions aren't available: api.anthropic.com didn't accept this session's credentials when Claude Code asked for your organization's policy. Cloud sessions use your claude.ai login. ANTHROPIC_API_KEY is set, so this session is using API-key auth — unset it (or run in a shell without it) to use cloud sessions.

3128```

3129 

3130Avant la v2.1.296, ces échecs affichaient également le message `Couldn't verify`.

3131 

3132**Que faire :**

3133 

3134* Pour le message `Couldn't verify`, vérifiez votre connexion réseau et réessayez. Dans une session, redémarrez d'abord Claude Code

3135* Pour un message `Cloud sessions aren't available:`, faites ce que requiert sa cause, comme vérifier votre proxy ou supprimer les identifiants qu'il nomme, puis exécutez à nouveau la commande

3136 

3137<h3 id="nothing-was-stashed-because-a-folder-replaced-a-tracked-file">

3138 Rien n'a été mis dans le stash car un dossier a remplacé un fichier suivi

3139</h3>

3140 

3141Ce message signifie qu'un dossier de votre checkout se trouve désormais là où se trouvait auparavant un fichier ou un lien suivi par git. Il apparaît après que vous avez choisi l'option de stash lors de la récupération d'une [session cloud](/docs/fr/claude-code-on-the-web#from-cloud-to-terminal) dans votre terminal, par exemple avec `claude --teleport` ou `/teleport`. Mettre cet état dans le stash pourrait supprimer les fichiers contenus dans le dossier, donc Claude Code refuse le stash et laisse votre checkout et votre index inchangés :

3142 

3143```text wrap theme={null}

3144Error: Nothing was stashed: "f" is now a folder in place of a tracked file or link, and stashing could delete what's in it for good. Commit the change or move the folder somewhere else, then try again.

3145```

3146 

3147**Que faire :**

3148 

3149* Faites un commit de la modification ou déplacez le dossier ailleurs, comme l'indique le message, puis relancez le teleport

3033 3150 

3034<h3 id="the-json-schema-value-is-not-a-valid-json-schema">3151<h3 id="the-json-schema-value-is-not-a-valid-json-schema">

3035 La valeur de `--json-schema` n'est pas un JSON Schema valide3152 La valeur de `--json-schema` n'est pas un JSON Schema valide


3427 3544 

3428Claude Code affiche la même erreur pour tout skill qui [injecte du contexte dynamique](/docs/fr/skills#when-an-injected-command-fails), et une commande injectée en échec interrompt l'invocation de ce skill. Deux messages apparentés se déclenchent avant même l'exécution de la commande :3545Claude Code affiche la même erreur pour tout skill qui [injecte du contexte dynamique](/docs/fr/skills#when-an-injected-command-fails), et une commande injectée en échec interrompt l'invocation de ce skill. Deux messages apparentés se déclenchent avant même l'exécution de la commande :

3429 3546 

3430* `Shell command permission check failed for pattern "..."` : la vérification des permissions de la commande ne l'a pas autorisée. [Vérifications des permissions sur les commandes injectées](/docs/fr/skills#permission-checks-on-injected-commands) décrit quels résultats entraînent une interruption dans chaque mode de permission et comment pré-approuver une commande avec `allowed-tools`3547* `Shell command permission check failed for pattern "..."` : la vérification des permissions de la commande ne l'a pas autorisée. [Vérifications des permissions sur les commandes injectées](/docs/fr/skills#permission-checks-on-injected-commands) explique quels résultats interrompent l'invocation dans chaque mode de permission et comment pré-approuver une commande avec `allowed-tools`

3431* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found`` : le frontmatter du skill exige bash sur une machine qui ne l'a pas. Installez Git for Windows ou modifiez le frontmatter en `shell: powershell`. Consultez [Comment s'exécutent les commandes injectées](/docs/fr/skills#how-injected-commands-run)3548* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found`` : le frontmatter du skill exige bash sur une machine qui n'en dispose pas. Installez Git for Windows ou modifiez le frontmatter en `shell: powershell`. Consultez [Comment s'exécutent les commandes injectées](/docs/fr/skills#how-injected-commands-run)

3432 3549 

3433**Que faire :**3550**Que faire :**

3434 3551 


3577 3694 

3578* **Vous n'avez pas passé de branche de base** : Claude Code a effectué la comparaison avec la branche par défaut du dépôt et suggère de passer explicitement votre branche de base, comme dans l'exemple ci-dessus3695* **Vous n'avez pas passé de branche de base** : Claude Code a effectué la comparaison avec la branche par défaut du dépôt et suggère de passer explicitement votre branche de base, comme dans l'exemple ci-dessus

3579* **Vous avez passé une branche de base déjà présente dans votre clone** : l'indication est ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``3696* **Vous avez passé une branche de base déjà présente dans votre clone** : l'indication est ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``

3580* **Vous avez passé une branche de base absente de votre clone** : Claude Code l'a récupérée depuis origin avant la comparaison. L'indication est ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)`` ; lorsque Claude Code ne peut pas déterminer si votre clone est superficiel, il suggère plutôt `git fetch --unshallow origin`. Avant la v2.1.221, l'indication suggérait `git fetch --unshallow origin` pour toute branche de base récupérée, et sur un clone complet, cette commande échoue avec `fatal: --unshallow on a complete repository does not make sense`.3697* **Vous avez passé une branche de base qui ne se trouvait pas dans votre clone** : Claude Code l'a récupérée depuis origin avant la comparaison. L'indication est ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)`` ; lorsque Claude Code ne peut pas déterminer si votre clone est superficiel (shallow), il suggère plutôt `git fetch --unshallow origin`. Avant la v2.1.221, l'indication suggérait `git fetch --unshallow origin` pour chaque branche de base récupérée, et sur un clone complet cette commande échoue avec `fatal: --unshallow on a complete repository does not make sense`.

3581 3698 

3582**Que faire :**3699**Que faire :**

3583 3700 


3835 Claude Code couldn't restart3952 Claude Code couldn't restart

3836</h3>3953</h3>

3837 3954 

3838Claude Code était en train de redémarrer, par exemple pour activer ou désactiver le rendu plein écran après que vous avez exécuté [`/tui`](/docs/fr/fullscreen#enable-fullscreen-rendering). Il a fermé la session mais n'a pas pu démarrer le nouveau processus ; il a donc affiché ce message et s'est terminé avec le statut 1 :3955Lorsque ce message indique que votre conversation est enregistrée, la conversation est sur le disque et vous pouvez la reprendre là où elle s'est arrêtée. Claude Code était en train de redémarrer, par exemple pour activer ou désactiver le rendu plein écran après que vous avez exécuté [`/tui`](/docs/fr/fullscreen#enable-fullscreen-rendering), et n'a pas pu démarrer le nouveau processus ; il s'est donc terminé avec le statut 1 :

3839 3956 

3840```text theme={null}3957```text theme={null}

3841Claude Code couldn't restart. Your conversation is saved. Start Claude Code again and run /resume to pick it up.3958Claude Code couldn't restart. Your conversation is saved. Start Claude Code again and run /resume to pick it up.


3845 3962 

3846**Que faire :**3963**Que faire :**

3847 3964 

3848* Exécutez à nouveau `claude` dans votre shell depuis le même répertoire. Si le message indiquait que votre conversation est enregistrée, exécutez [`/resume`](/docs/fr/sessions#resume-a-session) dans la nouvelle session et sélectionnez-la3965* Exécutez à nouveau `claude` dans votre shell. Si le message indiquait que votre conversation est enregistrée, exécutez [`/resume`](/docs/fr/sessions#resume-a-session) dans la nouvelle session et sélectionnez la conversation. Si elle ne figure pas dans la liste, [étendez le sélecteur de session](/docs/fr/sessions#where-the-session-picker-looks)

3849* Si les redémarrages continuent d'échouer, démarrez Claude Code depuis votre shell avec [`claude --debug-file claude-debug.log`](/docs/fr/cli-reference#cli-flags). Si un redémarrage depuis cette session échoue, le fichier `claude-debug.log` situé dans le répertoire de démarrage consigne une ligne `Failed to relaunch:` contenant l'erreur du système d'exploitation. Incluez cette ligne lorsque vous [signalez le problème](#report-an-error)3966* Si les redémarrages continuent d'échouer, démarrez Claude Code depuis votre shell avec [`claude --debug-file claude-debug.log`](/docs/fr/cli-reference#cli-flags). Si un redémarrage depuis cette session échoue, le fichier `claude-debug.log` situé dans le répertoire de démarrage consigne une ligne `Failed to relaunch:` contenant l'erreur du système d'exploitation. Incluez cette ligne lorsque vous [signalez le problème](#report-an-error)

3850 3967 

3851<h3 id="couldnt-open-claude-desktop">3968<h3 id="couldnt-open-claude-desktop">


5366* Raccourcissez le frontmatter `description` de vos fichiers d'agent, ou demandez à Claude de les raccourcir pour vous.5483* Raccourcissez le frontmatter `description` de vos fichiers d'agent, ou demandez à Claude de les raccourcir pour vous.

5367* Supprimez les fichiers d'agent que vous n'utilisez plus.5484* Supprimez les fichiers d'agent que vous n'utilisez plus.

5368 5485 

5486<h3 id="hook-needs-quotes-around-a-path-with-a-space">

5487 Le hook a besoin de guillemets autour d'un chemin contenant un espace

5488</h3>

5489 

5490Cette notification dans la vue de conversation signifie que le script d'un hook ne s'est pas exécuté parce que son chemin contient un espace et n'est pas entre guillemets. Ce hook est un hook [`asyncRewake`](/docs/fr/hooks#run-hooks-in-the-background) sous forme shell. Dans sa `command`, un interpréteur tel que `python3` est suivi d'un espace réservé de chemin sans guillemets, et le chemin résolu contient un espace.

5491 

5492La notification commence par le nom de l'événement du hook et nomme le script :

5493 

5494```text theme={null}

5495Stop hook needs quotes around a path with a space (check.py)

5496```

5497 

5498**À faire :**

5499 

5500* Dans la `command` du hook qui exécute le script que la notification nomme, entourez le chemin de guillemets doubles. Dans un fichier JSON, écrivez-le sous la forme `"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/hooks/check.py\""`.

5501 

5369<h3 id="a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved">5502<h3 id="a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved">

5370 Un skill, une commande ou un workflow n'a pas été chargé parce que son nom est réservé5503 Un skill, une commande ou un workflow n'a pas été chargé parce que son nom est réservé

5371</h3>5504</h3>


5386 5519 

5387Avant la v2.1.282, Claude Code chargeait les skills et les commandes avec ces noms.5520Avant la v2.1.282, Claude Code chargeait les skills et les commandes avec ces noms.

5388 5521 

5522<h3 id="skill-or-command-name-refused">

5523 Nom de skill ou de commande refusé

5524</h3>

5525 

5526Cet avis de démarrage signifie que Claude Code a refusé le nom d'au moins un [skill ou d'une commande personnalisée](/docs/fr/skills), qui n'a donc pas été chargé ou a été chargé sans son champ `name` :

5527 

5528```text theme={null}

55291 skill or command name refused: run with --debug to see which ([names]), rename, then restart — a name may not hold hidden, direction-changing or blank-like characters, < or >, or be over 256 characters

5530```

5531 

5532* **Non chargé** : Claude Code a refusé le nom sous lequel un skill ou une commande est connu, comme le nom de son répertoire ou le nom ou le sous-dossier d'un fichier de commande. Il est absent du menu `/` et Claude ne peut pas l'invoquer. Sa ligne dans le journal de débogage indique `<name> is not offered`.

5533* **Champ `name` ignoré** : Claude Code a refusé le `name` du frontmatter d'un skill. Le skill se charge quand même, mais le menu `/` n'affiche pas la valeur `name` et la saisir n'invoque pas le skill. Sa ligne dans le journal de débogage indique `<name value> is not shown for <skill>`.

5534 

5535**À faire :**

5536 

5537* Démarrez Claude Code avec `claude --debug` depuis votre shell et recherchez `[names]` dans le [journal de débogage](/docs/fr/debug-your-config). Chaque nom que l'avis compte y a une ligne. La ligne écrit certains caractères cachés sous forme de codes, comme `\u{200B}` pour une espace de largeur nulle, afin que vous puissiez voir où ils se trouvent.

5538* Supprimez les [caractères qu'un nom de skill ne peut pas contenir](/docs/fr/skills#characters-a-skill-name-cant-hold) en renommant le dossier ou le fichier ou en modifiant la ligne `name:`, ou raccourcissez un nom de plus de 256 caractères. Redémarrez ensuite la session, sauf si le fichier se trouve dans un répertoire que Claude Code [surveille pour détecter les modifications](/docs/fr/skills#live-change-detection). Pour un skill provenant d'un plugin que vous n'avez pas écrit, demandez à l'auteur du plugin de le renommer.

5539 

5389<h3 id="workspace-has-not-been-trusted">5540<h3 id="workspace-has-not-been-trusted">

5390 L'espace de travail n'a pas été approuvé5541 L'espace de travail n'a pas été approuvé

5391</h3>5542</h3>

Details

220</table>220</table>

221 221 

222<span id="fn1" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>1</sup> Sur Google Cloud's Agent Platform, la recherche web est disponible pour Opus 4, Sonnet 4, Haiku 4.5 et les modèles ultérieurs.<br />222<span id="fn1" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>1</sup> Sur Google Cloud's Agent Platform, la recherche web est disponible pour Opus 4, Sonnet 4, Haiku 4.5 et les modèles ultérieurs.<br />

223<span id="fn2" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>2</sup> Sur ces fournisseurs, le mode auto prend en charge uniquement Claude Sonnet 5 ou version ultérieure, Opus 4.7 ou version ultérieure, Haiku 5.5 et les modèles Fable. Consultez [Configuration du mode Auto](/docs/fr/auto-mode-config). Pour le mode de permission qu'une session sur ces fournisseurs démarre, consultez [Quel mode une session démarre](/docs/fr/permission-modes#which-mode-a-session-starts-in). Dans les versions v2.1.158 à v2.1.206, le mode auto sur ces fournisseurs nécessitait également de définir `CLAUDE_CODE_ENABLE_AUTO_MODE=1` ; v2.1.207 a supprimé cette exigence.<br />223<span id="fn2" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>2</sup> Sur ces fournisseurs, le mode auto prend en charge uniquement Claude Sonnet 5 ou version ultérieure, Opus 4.7 ou version ultérieure, Haiku 5.5 et les modèles Fable. Consultez [Configuration du mode Auto](/docs/fr/auto-mode-config). Pour le mode de permission qu'une session sur ces fournisseurs démarre, consultez [Quel mode une session démarre](/docs/fr/permission-modes#which-mode-a-session-starts-in).<br />

224<span id="fn3" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>3</sup> Soumis à votre accord avec le fournisseur de cloud.<br />224<span id="fn3" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>3</sup> Soumis à votre accord avec le fournisseur de cloud.<br />

225<span id="fn4" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>4</sup> Tableau de bord et API uniquement. Les [métriques de contribution](/docs/fr/analytics#enable-contribution-metrics) nécessitent une organisation Claude.ai Team ou Enterprise.<br />225<span id="fn4" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>4</sup> Tableau de bord et API uniquement. Les [métriques de contribution](/docs/fr/analytics#enable-contribution-metrics) nécessitent une organisation Claude.ai Team ou Enterprise.<br />

226<span id="fn5" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>5</sup> Nécessite Claude Code v2.1.224 ou version ultérieure sur macOS et Linux, y compris Linux dans WSL 2. Sur Windows natif, nécessite Claude Code v2.1.234 ou version ultérieure. Avec l'authentification par clé API, la messagerie est limitée à la même machine uniquement. Sur Amazon Bedrock, Claude Platform sur AWS, Google Cloud's Agent Platform et Microsoft Foundry, la messagerie est limitée à la même machine uniquement et nécessite Claude Code v2.1.248 ou version ultérieure. Claude peut trouver vos [sessions cloud](/docs/fr/claude-code-on-the-web) et vos sessions sur d'autres machines uniquement à partir d'une session connectée à [Remote Control](/docs/fr/remote-control). Pour vous connecter, vous avez besoin d'une connexion claude.ai et des autres [exigences de Remote Control](/docs/fr/remote-control#requirements). Consultez [Messagerie des sessions sur d'autres machines](/docs/fr/cross-session-messaging#message-sessions-on-other-machines).226<span id="fn5" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>5</sup> Nécessite Claude Code v2.1.224 ou version ultérieure sur macOS et Linux, y compris Linux dans WSL 2. Sur Windows natif, nécessite Claude Code v2.1.234 ou version ultérieure. Avec l'authentification par clé API, la messagerie est limitée à la même machine uniquement. Sur Amazon Bedrock, Claude Platform sur AWS, Google Cloud's Agent Platform et Microsoft Foundry, la messagerie est limitée à la même machine uniquement et nécessite Claude Code v2.1.248 ou version ultérieure. Claude peut trouver vos [sessions cloud](/docs/fr/claude-code-on-the-web) et vos sessions sur d'autres machines uniquement à partir d'une session connectée à [Remote Control](/docs/fr/remote-control). Pour vous connecter, vous avez besoin d'une connexion claude.ai et des autres [exigences de Remote Control](/docs/fr/remote-control#requirements). Consultez [Messagerie des sessions sur d'autres machines](/docs/fr/cross-session-messaging#message-sessions-on-other-machines).

Details

312 312 

313 **Ce qui se charge :** Contexte frais et isolé contenant :313 **Ce qui se charge :** Contexte frais et isolé contenant :

314 314 

315 * L'invite système de l'agent, pas l'invite système de Claude Code315 * Le prompt système propre à l'agent, pas le prompt système de Claude Code

316 * Contenu complet des skills listées dans le champ `skills:` de l'agent316 * Contenu complet des skills listés dans le champ `skills:` de l'agent

317 * CLAUDE.md et statut git, sauf les agents Explore et Plan intégrés [qui omettent les deux](/docs/fr/sub-agents#what-loads-at-startup), et un agent dont la définition définit [`omitClaudeMd`](/docs/fr/sub-agents#supported-frontmatter-fields) ignore les fichiers CLAUDE.md utilisateur, projet et local317 * CLAUDE.md et le statut git. Les agents intégrés Explore et Plan [ne démarrent avec aucun des deux](/docs/fr/sub-agents#what-loads-at-startup), et un agent dont la définition définit [`omitClaudeMd`](/docs/fr/sub-agents#supported-frontmatter-fields) démarre sans les fichiers CLAUDE.md utilisateur, projet et local.

318 * Quel que soit le contexte que l'agent principal transmet dans l'invite318 * Quel que soit le contexte que l'agent principal transmet dans le prompt

319 319 

320 Pour un [fork](/docs/fr/sub-agents#fork-the-current-conversation), Claude Code charge la conversation parent jusqu'à présent, l'invite système et les outils à la place.320 Pour un [fork](/docs/fr/sub-agents#fork-the-current-conversation), Claude Code charge la conversation parent jusqu'à présent, l'invite système et les outils à la place.

321 321 

Details

22 22 

23| Fonctionnalité | Support GHES | Notes |23| Fonctionnalité | Support GHES | Notes |

24| :- | :- | :- |24| :- | :- | :- |

25| Sessions cloud | ✅ Supporté | Un propriétaire connecte l'instance GHES une fois ; les développeurs utilisent `claude --cloud` ou [claude.ai/code](https://claude.ai/code) comme d'habitude |25| Sessions cloud | ✅ Supporté | Un propriétaire connecte l'instance GHES une fois ; les développeurs utilisent `claude --cloud` ou [claude.ai/code](https://claude.ai/code) |

26| Révision de code | ✅ Supporté | Mêmes révisions de PR automatisées que github.com |26| Révision de code | ✅ Supporté | Mêmes révisions de PR automatisées que github.com |

27| Claude Security | ✅ Supporté | Disponible en bêta publique pour les plans Enterprise à [claude.ai/security](https://claude.ai/security) |27| Claude Security | ✅ Supporté | Disponible en bêta publique pour les plans Enterprise à [claude.ai/security](https://claude.ai/security) |

28| Sessions Teleport | ✅ Supporté | Déplacez les sessions entre le cloud et le terminal avec `--teleport` |28| Sessions Teleport | ✅ Supporté | Déplacez les sessions entre le cloud et le terminal avec `--teleport` |


35 Configuration administrateur35 Configuration administrateur

36</h2>36</h2>

37 37 

38Un propriétaire connecte votre instance GHES à Claude Code une seule fois. Après cela, les développeurs de votre organisation peuvent utiliser les dépôts GHES sans aucune configuration supplémentaire. Vous avez besoin du rôle Propriétaire ou Propriétaire principal dans votre organisation Claude et de la permission de créer des GitHub Apps sur votre instance GHES.38Un propriétaire connecte votre instance GHES à Claude Code une seule fois. Vous avez besoin du rôle Propriétaire ou Propriétaire principal dans votre organisation Claude et de la permission de créer des GitHub Apps sur votre instance GHES.

39 39 

40La configuration guidée génère un manifeste GitHub App et vous redirige vers votre instance GHES pour créer l'application en un clic. Si votre environnement bloque le flux de redirection, une [configuration manuelle alternative](#manual-setup) est disponible.40La configuration guidée génère un manifeste GitHub App et vous redirige vers votre instance GHES pour créer l'application en un clic. Si votre environnement bloque le flux de redirection, une [configuration manuelle alternative](#manual-setup) est disponible.

41 41 


103 Flux de travail des développeurs103 Flux de travail des développeurs

104</h2>104</h2>

105 105 

106Une fois que votre administrateur a connecté l'instance GHES, aucune configuration côté développeur n'est nécessaire. Claude Code détecte automatiquement le nom d'hôte de votre GHES à partir de la télécommande git dans votre répertoire de travail.106Claude Code détecte automatiquement le nom d'hôte de votre GHES à partir du remote git dans votre répertoire de travail.

107 107 

108Clonez un dépôt à partir de votre instance GHES comme vous le feriez normalement, en remplaçant `github.example.com` et le chemin du dépôt par le nom d'hôte de votre GHES et le dépôt :108Clonez un dépôt à partir de votre instance GHES comme vous le feriez normalement, en remplaçant `github.example.com` et le chemin du dépôt par le nom d'hôte de votre GHES et le dépôt :

109 109 


228 228 

229Si `claude --cloud` échoue avec une erreur de clonage, vérifiez qu'un Owner a terminé la configuration de votre instance GHES et que la GitHub App est installée sur le dépôt dans lequel vous travaillez. Demandez à l'Owner qui a connecté l'instance de confirmer que le nom d'hôte enregistré dans les paramètres de Claude correspond au nom d'hôte de votre remote git.229Si `claude --cloud` échoue avec une erreur de clonage, vérifiez qu'un Owner a terminé la configuration de votre instance GHES et que la GitHub App est installée sur le dépôt dans lequel vous travaillez. Demandez à l'Owner qui a connecté l'instance de confirmer que le nom d'hôte enregistré dans les paramètres de Claude correspond au nom d'hôte de votre remote git.

230 230 

231Si la session s'arrête avec « Authentication failed while accessing the repository », il se peut que vous n'ayez pas connecté votre propre compte GitHub Enterprise. Connectez-le depuis le sélecteur de dépôt sur [claude.ai/code](https://claude.ai/code), puis démarrez une nouvelle session.

232 

231<h3 id="marketplace-add-fails-with-a-policy-error">233<h3 id="marketplace-add-fails-with-a-policy-error">

232 L'ajout d'une marketplace échoue avec une erreur de politique234 L'ajout d'une marketplace échoue avec une erreur de politique

233</h3>235</h3>

Details

261* Pour utiliser Haiku pour les tâches en arrière-plan, définissez `ANTHROPIC_DEFAULT_HAIKU_MODEL` sur un ID de modèle disponible dans votre projet.261* Pour utiliser Haiku pour les tâches en arrière-plan, définissez `ANTHROPIC_DEFAULT_HAIKU_MODEL` sur un ID de modèle disponible dans votre projet.

262 262 

263<Warning>263<Warning>

264 Les modèles Opus ont un prix par jeton plus élevé que les modèles Sonnet, donc un déploiement qui n'épingle pas un modèle principal est facturé au taux Opus une fois qu'il se met à jour vers v2.1.207 ou ultérieur. Pour conserver Sonnet 4.5 comme modèle principal, définissez `ANTHROPIC_MODEL` sur son ID de modèle complet. Un déploiement qui oriente la valeur par défaut avec `ANTHROPIC_DEFAULT_SONNET_MODEL` et ne définit pas `ANTHROPIC_DEFAULT_OPUS_MODEL` conserve son modèle Sonnet orienté comme valeur par défaut.264 Les modèles Opus ont un prix par token plus élevé que les modèles Sonnet, donc si vous n'épinglez pas de modèle principal, vous êtes facturé au taux Opus. Pour utiliser Sonnet 4.5 comme modèle principal, définissez `ANTHROPIC_MODEL` sur son ID de modèle complet. Un déploiement qui oriente la valeur par défaut avec `ANTHROPIC_DEFAULT_SONNET_MODEL` et ne définit pas `ANTHROPIC_DEFAULT_OPUS_MODEL` conserve son modèle Sonnet orienté comme valeur par défaut.

265</Warning>265</Warning>

266 266 

267Avant v2.1.280, le modèle principal sur Google Cloud's Agent Platform était par défaut Opus 5 et l'alias `opus` se résolvait à Opus 5 à partir de v2.1.219. Sur v2.1.207 à v2.1.218, le modèle principal sur Google Cloud's Agent Platform était par défaut Opus 4.8 et l'alias `opus` se résolvait à Opus 4.8. Avant v2.1.207, le modèle principal était par défaut Sonnet 4.5, l'alias `opus` se résolvait à Opus 4.6, et les tâches en arrière-plan utilisaient toujours le modèle principal.267Avant v2.1.280, le modèle principal sur Google Cloud's Agent Platform était par défaut Opus 5 et l'alias `opus` se résolvait à Opus 5 à partir de v2.1.219. Sur v2.1.207 à v2.1.218, le modèle principal sur Google Cloud's Agent Platform était par défaut Opus 4.8 et l'alias `opus` se résolvait à Opus 4.8.

268 268 

269Pour personnaliser davantage les modèles :269Pour personnaliser davantage les modèles :

270 270 

headless.md +6 −6

Details

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

39</h3>39</h3>

40 40 

41Ajoutez `--bare` pour réduire le temps de démarrage en ignorant la découverte automatique des hooks, skills, commandes personnalisées, [sous-agents](/docs/fr/sub-agents), plugins installés, serveurs MCP, mémoire automatique et CLAUDE.md. Sans cela, `claude -p` charge le même [contexte](/docs/fr/how-claude-code-works#the-context-window) qu'une session interactive, y compris tout ce qui est configuré dans le répertoire de travail ou `~/.claude`.41Ajoutez `--bare` pour réduire le temps de démarrage en ignorant la découverte automatique des hooks, skills, commandes personnalisées, [sous-agents](/docs/fr/sub-agents), plugins installés, serveurs MCP, mémoire automatique et CLAUDE.md. Sans cela, `claude -p` les découvre et les charge comme le ferait une session interactive, y compris tout ce qui est configuré dans le répertoire de travail ou `~/.claude`.

42 42 

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

44 44 


184 --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'184 --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'

185```185```

186 186 

187Si la valeur n'est pas un JSON Schema valide, `claude` se ferme avec `Error: --json-schema is not a valid JSON Schema` suivi du diagnostic du validateur. Claude Code accepte les schémas qui utilisent le mot-clé `format`, tel que `"format": "email"`, mais traite `format` comme une annotation et ne l'applique pas. Avant la v2.1.205, Claude Code ignorait silencieusement un schéma invalide et retournait du texte non structuré, et traitait tout schéma contenant `format` comme invalide.187Si la valeur n'est pas un JSON Schema valide, `claude` se ferme avec `Error: --json-schema is not a valid JSON Schema` suivi du diagnostic du validateur. Claude Code accepte les schémas qui utilisent le mot-clé `format`, tel que `"format": "email"`, mais traite `format` comme une annotation et ne l'applique pas.

188 188 

189<Tip>189<Tip>

190 Utilisez un outil comme [jq](https://jqlang.org/) pour analyser la réponse et extraire des champs spécifiques :190 Utilisez un outil comme [jq](https://jqlang.org/) pour analyser la réponse et extraire des champs spécifiques :


281L'événement `system/init` rapporte les métadonnées de session, y compris le modèle, les outils, les serveurs MCP et les plugins chargés. C'est le premier événement du flux sauf si des événements de démarrage le précèdent :281L'événement `system/init` rapporte les métadonnées de session, y compris le modèle, les outils, les serveurs MCP et les plugins chargés. C'est le premier événement du flux sauf si des événements de démarrage le précèdent :

282 282 

283* Événements `plugin_install`, lorsque [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/fr/env-vars) est défini.283* Événements `plugin_install`, lorsque [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/fr/env-vars) est défini.

284* [Événements `hook_started`, `hook_progress` et `hook_response`](/docs/fr/agent-sdk/typescript#sdkhookstartedmessage), tandis qu'un hook [`SessionStart`](/docs/fr/hooks#sessionstart) ou [`Setup`](/docs/fr/hooks#setup) configuré s'exécute. Ceux-ci se transmettent au fur et à mesure que le hook les produit. Claude Code v2.1.169 à v2.1.203 les a livrés en un seul lot après la fin du hook, toujours avant `system/init` ; v2.1.204 a restauré la livraison en direct.284* [Événements `hook_started`, `hook_progress` et `hook_response`](/docs/fr/agent-sdk/typescript#sdkhookstartedmessage), tandis qu'un hook [`SessionStart`](/docs/fr/hooks#sessionstart) ou [`Setup`](/docs/fr/hooks#setup) configuré s'exécute. Ceux-ci se transmettent au fur et à mesure que le hook les produit.

285 285 

286L'événement porte également un tableau optionnel `capabilities` de chaînes nommant les comportements de protocole que cette version de Claude Code implémente, tels que `interrupt_receipt_v1` ou `interrupt_cancel_queued_v1`. Vérifiez-le pour détecter les fonctionnalités au lieu de comparer les chaînes de version, et ignorez les valeurs que vous ne reconnaissez pas. Le champ nécessite Claude Code v2.1.205 ou ultérieur et est absent des versions antérieures. Consultez [`SDKSystemMessage`](/docs/fr/agent-sdk/typescript#sdksystemmessage) pour la liste des capacités.286L'événement porte également un tableau optionnel `capabilities` de chaînes nommant les comportements de protocole que cette version de Claude Code implémente, tels que `interrupt_receipt_v1` ou `interrupt_cancel_queued_v1`. Vérifiez-le pour détecter les fonctionnalités au lieu de comparer les chaînes de version, et ignorez les valeurs que vous ne reconnaissez pas. Consultez [`SDKSystemMessage`](/docs/fr/agent-sdk/typescript#sdksystemmessage) pour la liste des capacités.

287 287 

288<h4 id="fail-ci-when-a-plugin-or-mcp-server-doesn’t-load">288<h4 id="fail-ci-when-a-plugin-or-mcp-server-doesn’t-load">

289 Échouer CI lorsqu'un plugin ou un serveur MCP ne se charge pas289 Échouer CI lorsqu'un plugin ou un serveur MCP ne se charge pas


388 388 

389 * Les [skills](/docs/fr/skills) invoqués par l'utilisateur et les commandes personnalisées fonctionnent. Incluez `/skill-name` dans la chaîne du prompt et Claude Code l'étend avant d'exécuter.389 * Les [skills](/docs/fr/skills) invoqués par l'utilisateur et les commandes personnalisées fonctionnent. Incluez `/skill-name` dans la chaîne du prompt et Claude Code l'étend avant d'exécuter.

390 * Les commandes intégrées qui ne s'exécutent que dans l'interface du terminal, telles que `/login`, ne sont pas disponibles.390 * Les commandes intégrées qui ne s'exécutent que dans l'interface du terminal, telles que `/login`, ne sont pas disponibles.

391 * `/model`, `/effort`, `/fast`, `/color` et `/rename` acceptent la valeur comme argument, par exemple `/model sonnet`, et `/mcp` sans argument imprime un résumé textuel du statut du serveur. Ces formes nécessitent Claude Code v2.1.205 ou ultérieur et suivent les [notes de disponibilité de chaque commande](/docs/fr/commands#all-commands).391 * `/model`, `/effort`, `/fast`, `/color` et `/rename` acceptent la valeur comme argument, par exemple `/model sonnet`, et `/mcp` sans argument imprime un résumé textuel du statut du serveur. Ces formes suivent les [notes de disponibilité de chaque commande](/docs/fr/commands#all-commands).

392 * Pour modifier un paramètre, passez `key=value` à `/config`, par exemple `/config thinking=false`.392 * Pour modifier un paramètre, passez `key=value` à `/config`, par exemple `/config thinking=false`.

393 * `/output-style <style>` bascule les [styles de sortie](/docs/fr/output-styles) et `/output-style` seul les énumère. Nécessite Claude Code v2.1.269 ou ultérieur.393 * `/output-style <style>` bascule les [styles de sortie](/docs/fr/output-styles) et `/output-style` seul les énumère. Nécessite Claude Code v2.1.269 ou ultérieur.

394</Note>394</Note>


407 407 

408Dans le script, `"$1"` représente le premier argument que vous passez sur la ligne de commande. Exécutez `bash review.sh 123` et le shell remplace `"$1"` par `123`, donc le script récupère le diff pour la PR 123. Claude Code imprime l'examen en JSON, avec le texte dans le champ `result`.408Dans le script, `"$1"` représente le premier argument que vous passez sur la ligne de commande. Exécutez `bash review.sh 123` et le shell remplace `"$1"` par `123`, donc le script récupère le diff pour la PR 123. Claude Code imprime l'examen en JSON, avec le texte dans le champ `result`.

409 409 

410Consultez les [flags de prompt système](/docs/fr/cli-reference#system-prompt-flags) pour plus d'options, y compris `--system-prompt` pour remplacer complètement le prompt par défaut.410Consultez les [flags de prompt système](/docs/fr/cli-reference#system-prompt-flags) pour plus d'options, y compris `--system-prompt` pour remplacer complètement le prompt par défaut. Si vous le remplacez, l'exécution démarre également sans l'[instantané du statut git](/docs/fr/settings-reference#includegitinstructions).

411 411 

412<h3 id="continue-conversations">412<h3 id="continue-conversations">

413 Continuer les conversations413 Continuer les conversations

hipaa-setup.md +1 −0

Details

228| `--cloud`, `/teleport` et [Remote Control](/docs/fr/remote-control) sont refusés | Les [sessions cloud](/docs/fr/claude-code-on-the-web) et Remote Control sont désactivés |228| `--cloud`, `/teleport` et [Remote Control](/docs/fr/remote-control) sont refusés | Les [sessions cloud](/docs/fr/claude-code-on-the-web) et Remote Control sont désactivés |

229| `/feedback` et `/bug` ne sont pas disponibles | L'envoi de commentaires est désactivé |229| `/feedback` et `/bug` ne sont pas disponibles | L'envoi de commentaires est désactivé |

230| Claude ne peut pas publier d'[artefact](/docs/fr/artifacts) | La publication d'artefacts est désactivée |230| Claude ne peut pas publier d'[artefact](/docs/fr/artifacts) | La publication d'artefacts est désactivée |

231| Les outils MCP sont chargés dans le contexte dès le départ | [MCP Tool Search](/docs/fr/mcp#configure-tool-search) est désactivé. Ni `ENABLE_TOOL_SEARCH` ni les paramètres gérés ne permettent de le réactiver |

231| Un serveur MCP ou un hook qui lit `ANTHROPIC_API_KEY` cesse de s'authentifier | Claude Code [supprime les identifiants Anthropic](#anthropic-credentials-in-commands-hooks-and-mcp-servers) des processus qu'il lance |232| Un serveur MCP ou un hook qui lit `ANTHROPIC_API_KEY` cesse de s'authentifier | Claude Code [supprime les identifiants Anthropic](#anthropic-credentials-in-commands-hooks-and-mcp-servers) des processus qu'il lance |

232| Les restrictions persistent après un `/login` vers une autre organisation | Le statut HIPAA persiste jusqu'au redémarrage de Claude Code |233| Les restrictions persistent après un `/login` vers une autre organisation | Le statut HIPAA persiste jusqu'au redémarrage de Claude Code |

233 234 

hooks.md +369 −343

Details

827 827 

828Le code de sortie de votre hook indique à Claude Code s'il doit poursuivre l'action qui a déclenché le hook, comme un appel d'outil ou un prompt. Une exécution qui se termine aboutit à l'un de ces trois résultats :828Le code de sortie de votre hook indique à Claude Code s'il doit poursuivre l'action qui a déclenché le hook, comme un appel d'outil ou un prompt. Une exécution qui se termine aboutit à l'un de ces trois résultats :

829 829 

830* **Succès** : votre hook quitte avec 0. Claude Code applique tous les champs de [sortie JSON](#json-output) que votre hook a imprimés, et l'action se poursuit sauf si ces champs la bloquent ou la refusent.830* **Succès** : votre hook quitte avec 0. Claude Code applique tous les champs de [sortie JSON](#json-output) que votre hook a imprimés, et l'action se poursuit sauf si ces champs la bloquent ou la refusent. [Hooks qui démarrent un processus en arrière-plan](#hooks-that-start-a-background-process) couvre l'exception.

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

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

833 833 


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

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

934 934 

935<h4 id="hooks-that-start-a-background-process">

936 Hooks qui démarrent un processus en arrière-plan

937</h4>

938 

939Si votre hook de commande prend sa décision dans un processus en arrière-plan puis se termine, un refus que ce processus imprime après que Claude Code a cessé de lire ne bloque pas l'appel d'outil. Pour un hook qui n'est pas [async](#run-hooks-in-the-background), Claude Code termine la lecture de la sortie du hook peu après la fin du propre processus du hook.

940 

941Imprimez la décision avant de démarrer un processus en arrière-plan, et redirigez le stdout et le stderr de ce processus. Si votre script imprime une autorisation, puis démarre un processus en arrière-plan sans rediriger le stdout et le stderr de ce processus, Claude Code bloque l'appel d'outil. L'erreur du hook inclut `refusing to honor the suspect capture`.

942 

943Ce script de hook `PreToolUse` imprime la décision avec `policy-check.sh`, puis envoie des métriques en arrière-plan :

944 

945```bash theme={null}

946#!/bin/bash

947"$CLAUDE_PROJECT_DIR"/.claude/hooks/policy-check.sh || exit $?

948"$CLAUDE_PROJECT_DIR"/.claude/hooks/upload-metrics.sh >/dev/null 2>&1 &

949```

950 

951Le reste du script fait ceci :

952 

953* **`|| exit $?`** : fait du code de sortie de la vérification celui du hook, de sorte qu'une vérification qui quitte avec 2 pour refuser bloque toujours. Sinon, le hook quitte avec le code de la dernière ligne, qui est 0.

954* **`>/dev/null 2>&1 &`** : exécute `upload-metrics.sh` en arrière-plan avec sa sortie redirigée, afin qu'il ne garde pas la sortie du hook ouverte.

955 

956Pour tester le script, faites en sorte que `policy-check.sh` quitte avec 2, puis déclenchez un appel d'outil auquel le hook correspond. L'appel d'outil est bloqué.

957 

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

936 Bloquer l'action lorsqu'un hook échoue959 Bloquer l'action lorsqu'un hook échoue

937</h4>960</h4>


1245 Événements de hook1268 Événements de hook

1246</h2>1269</h2>

1247 1270 

1248Chaque événement correspond à un moment du cycle de vie de Claude Code où des hooks peuvent s'exécuter. Les sections ci-dessous suivent l'ordre du cycle de vie : de la configuration de la session à la fin de la session, en passant par la boucle agentique. Chaque section décrit quand l'événement se déclenche, quels matchers il prend en charge, l'entrée JSON qu'il reçoit et comment contrôler le comportement via la sortie.1271Chaque événement correspond à un moment du cycle de vie de Claude Code où des hooks peuvent s'exécuter. Les sections ci-dessous suivent l'ordre de ce cycle de vie : de la configuration de la session à la fin de la session, en passant par la boucle agentique. Chaque section décrit quand l'événement se déclenche, quels matchers il prend en charge, l'entrée JSON qu'il reçoit et comment contrôler le comportement via la sortie.

1249 1272 

1250<h3 id="sessionstart">1273<h3 id="sessionstart">

1251 SessionStart1274 SessionStart


1253 1276 

1254S'exécute lorsque Claude Code démarre une nouvelle session ou reprend une session existante. Utile pour charger du contexte de développement, comme les issues existantes ou les modifications récentes de votre base de code, ou pour définir des variables d'environnement. Pour un contexte statique qui ne nécessite pas de script, utilisez plutôt [CLAUDE.md](/docs/fr/memory).1277S'exécute lorsque Claude Code démarre une nouvelle session ou reprend une session existante. Utile pour charger du contexte de développement, comme les issues existantes ou les modifications récentes de votre base de code, ou pour définir des variables d'environnement. Pour un contexte statique qui ne nécessite pas de script, utilisez plutôt [CLAUDE.md](/docs/fr/memory).

1255 1278 

1256SessionStart s'exécute à chaque session, alors veillez à ce que ces hooks restent rapides. Seuls les hooks `type: "command"` et `type: "mcp_tool"` sont pris en charge. Consultez [Champs des hooks d'outil MCP](#mcp-tool-hook-fields) pour savoir quand les hooks `mcp_tool` s'exécutent.1279SessionStart s'exécute à chaque session : veillez donc à ce que ces hooks soient rapides. Seuls les hooks `type: "command"` et `type: "mcp_tool"` sont pris en charge. Consultez [Champs des hooks d'outil MCP](#mcp-tool-hook-fields) pour savoir quand les hooks `mcp_tool` s'exécutent.

1257 1280 

1258La valeur du matcher correspond à la manière dont la session a été lancée :1281La valeur du matcher correspond à la manière dont la session a été lancée :

1259 1282 


1265| `compact` | Compaction automatique ou manuelle |1288| `compact` | Compaction automatique ou manuelle |

1266| `fork` | Une nouvelle session dérivée d'une session existante : `--fork-session` avec `--resume` ou `--continue`, la copie en arrière-plan de `/fork`, `/branch`, ou une conversation que vous [passez en arrière-plan](/docs/fr/agent-view#from-inside-a-session) |1289| `fork` | Une nouvelle session dérivée d'une session existante : `--fork-session` avec `--resume` ou `--continue`, la copie en arrière-plan de `/fork`, `/branch`, ou une conversation que vous [passez en arrière-plan](/docs/fr/agent-view#from-inside-a-session) |

1267 1290 

1268Avant la v2.1.214, les sessions dérivées signalaient la source `"resume"`.1291Avant la v2.1.214, les sessions dérivées indiquaient la source `"resume"`.

1269 1292 

1270Lorsque vous démarrez une session interactive, reprenez une conversation au lancement avec `--continue` ou `--resume`, ou exécutez `/clear`, les hooks SessionStart s'exécutent en arrière-plan. Vous pouvez saisir du texte immédiatement, et une conversation reprise s'affiche sans attendre les hooks. La première réponse de Claude attend tout de même la fin des hooks, afin que leur contexte parvienne à Claude.1293Lorsque vous démarrez une session interactive, reprenez une conversation au lancement avec `--continue` ou `--resume`, ou exécutez `/clear`, les hooks SessionStart s'exécutent en arrière-plan. Vous pouvez saisir du texte immédiatement, et une conversation que vous avez reprise s'affiche sans attendre les hooks. La première réponse de Claude attend toujours la fin des hooks, afin que leur contexte parvienne à Claude.

1271 1294 

1272Lorsque vous changez de conversation avec `/resume` au sein d'une session, le changement attend au contraire la fin des hooks. Si vous exécutez `/clear` ou passez à une autre conversation alors que des hooks en arrière-plan sont encore en cours d'exécution, rien de ce qu'ils renvoient ne s'applique à la session.1295Lorsque vous changez de conversation avec `/resume` au sein d'une session, le changement attend au contraire la fin des hooks. Si vous exécutez `/clear` ou passez à une autre conversation alors que des hooks en arrière-plan sont encore en cours d'exécution, rien de ce qu'ils renvoient ne s'applique à la session.

1273 1296 

1274La même attente s'applique au lancement, y compris pour une session reprise : un prompt que vous envoyez alors que des hooks SessionStart sont encore en cours d'exécution ne parvient pas à Claude avant leur fin.1297La même attente s'applique au lancement, y compris pour une session reprise : un prompt que vous envoyez pendant que des hooks SessionStart sont encore en cours d'exécution ne parvient à Claude qu'une fois ceux-ci terminés.

1275 1298 

1276Pendant l'une ou l'autre de ces attentes, appuyez sur `Esc` pour ramener le prompt dans la zone de saisie sans l'envoyer. Les hooks continuent de s'exécuter.1299Pendant l'une ou l'autre de ces attentes, appuyez sur `Esc` pour récupérer le prompt dans la zone de saisie sans l'envoyer. Les hooks continuent de s'exécuter.

1277 1300 

1278<h4 id="sessionstart-input">1301<h4 id="sessionstart-input">

1279 Entrée de SessionStart1302 Entrée de SessionStart

1280</h4>1303</h4>

1281 1304 

1282En plus des [champs d'entrée communs](#common-input-fields), les hooks SessionStart reçoivent `source` et, de manière facultative, `model`, `agent_type` et `session_title` :1305En plus des [champs d'entrée communs](#common-input-fields), les hooks SessionStart reçoivent `source` et, éventuellement, `model`, `agent_type` et `session_title` :

1283 1306 

1284| Champ | Description |1307| Champ | Description |

1285| :- | :- |1308| :- | :- |

1286| `source` | La manière dont la session a démarré : `"startup"` pour les nouvelles sessions, `"resume"` pour les sessions reprises, `"clear"` après `/clear`, `"compact"` après une compaction, ou `"fork"` pour une nouvelle session dérivée d'une session existante |1309| `source` | Comment la session a démarré : `"startup"` pour les nouvelles sessions, `"resume"` pour les sessions reprises, `"clear"` après `/clear`, `"compact"` après une compaction, ou `"fork"` pour une nouvelle session dérivée d'une session existante |

1287| `model` | L'identifiant du modèle actif. Il peut être omis, par exemple après `/clear` ou lorsqu'une session est restaurée via la récupération de conversation ; vérifiez donc la présence du champ avant de le lire |1310| `model` | L'identifiant du modèle actif. Il peut être omis, par exemple après `/clear` ou lorsqu'une session est restaurée via la récupération de conversation : vérifiez donc la présence du champ avant de le lire |

1288| `agent_type` | Le nom de l'agent, présent lorsque vous démarrez Claude Code avec `claude --agent <name>` |1311| `agent_type` | Le nom de l'agent, présent lorsque vous démarrez Claude Code avec `claude --agent <name>` |

1289| `session_title` | Le titre personnalisé de la session, présent lorsqu'il est défini, par exemple avec `--name`, `/rename`, la sortie `sessionTitle` d'un hook ou `renameSession()` de l'Agent SDK. Un hook qui émet `sessionTitle` peut d'abord vérifier ce champ pour éviter d'écraser un titre personnalisé existant |1312| `session_title` | Le titre personnalisé de la session, présent lorsqu'il est défini, par exemple avec `--name`, `/rename`, la sortie `sessionTitle` d'un hook ou `renameSession()` de l'Agent SDK. Un hook qui émet `sessionTitle` peut d'abord vérifier ce champ pour éviter d'écraser un titre personnalisé existant |

1290 1313 

1291Une session que vous n'avez pas nommée peut tout de même avoir un [titre généré](/docs/fr/sessions#name-your-sessions). Ce titre n'est pas un titre personnalisé et n'apparaît pas dans `session_title`.1314Une session que vous n'avez pas nommée peut tout de même avoir un [titre généré](/docs/fr/sessions#name-your-sessions). Ce titre n'est pas un titre personnalisé et n'apparaît pas dans `session_title`.

1292 1315 

1293Lorsque `source` vaut `"resume"` ou `"fork"` et que la transcription contient au moins une réponse de Claude, les hooks SessionStart reçoivent également les quatre champs ci-dessous. Votre hook peut les utiliser pour indiquer ce que coûte la reprise d'une conversation ancienne avant la première requête, par exemple dans un [`systemMessage`](#json-output). Ces champs nécessitent Claude Code v2.1.251 ou une version ultérieure.1316Lorsque `source` vaut `"resume"` ou `"fork"` et que la transcription contient au moins une réponse de Claude, les hooks SessionStart reçoivent également les quatre champs ci-dessous. Votre hook peut s'en servir pour indiquer ce que coûte la reprise d'une conversation ancienne avant la première requête, par exemple dans un [`systemMessage`](#json-output). Ces champs nécessitent Claude Code v2.1.251 ou une version ultérieure.

1294 1317 

1295| Champ | Description |1318| Champ | Description |

1296| :- | :- |1319| :- | :- |

1297| `seconds_since_last_response` | Secondes réelles écoulées depuis la dernière réponse de la transcription reprise |1320| `seconds_since_last_response` | Secondes réelles écoulées depuis la dernière réponse dans la transcription reprise |

1298| `context_tokens` | Tokens que la première requête de la session reprise renvoie comme prompt |1321| `context_tokens` | Tokens que la première requête de la session reprise renvoie comme prompt |

1299| `prompt_cache_likely_expired` | `true` lorsque la dernière réponse est plus ancienne que la [durée de vie du cache de prompt](/docs/fr/prompt-caching#cache-lifetime) de la session ou qu'une compaction ultérieure a remplacé la conversation mise en cache |1322| `prompt_cache_likely_expired` | `true` lorsque la dernière réponse est plus ancienne que la [durée de vie du prompt cache](/docs/fr/prompt-caching#cache-lifetime) de la session ou qu'une compaction ultérieure a remplacé la conversation mise en cache |

1300| `estimated_cache_write_usd` | Coût estimé en dollars américains de l'écriture de `context_tokens` dans le cache de prompt sur le modèle de la session, hors réponse |1323| `estimated_cache_write_usd` | Coût estimé en dollars américains de l'écriture de `context_tokens` dans le prompt cache sur le modèle de la session, hors réponse |

1301 1324 

1302Cet exemple montre l'entrée pour une session reprise 90 minutes après sa dernière réponse :1325Cet exemple montre l'entrée d'une session reprise 90 minutes après sa dernière réponse :

1303 1326 

1304```json theme={null}1327```json theme={null}

1305{1328{


1325| Champ | Description |1348| Champ | Description |

1326| :- | :- |1349| :- | :- |

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

1328| `initialUserMessage` | Chaîne utilisée comme premier message utilisateur de la session, en [mode non interactif](/docs/fr/headless) avec le flag `-p`. Elle devient le premier tour même si vous ne passez aucun prompt. Un prompt que vous passez suit comme tour suivant |1351| `initialUserMessage` | Chaîne utilisée comme premier message utilisateur de la session, en [mode non interactif](/docs/fr/headless) avec le flag `-p`. Elle devient le premier tour même si vous ne transmettez aucun prompt. Un prompt que vous transmettez suit comme tour suivant |

1329| `sessionTitle` | Définit le titre de la session, avec le même effet que `/rename`. S'applique lorsque `source` vaut `"startup"`, `"resume"` ou `"fork"` |1352| `sessionTitle` | Définit le titre de la session, avec le même effet que `/rename`. S'applique lorsque `source` vaut `"startup"`, `"resume"` ou `"fork"` |

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

1331| `reloadSkills` | Booléen. Lorsqu'il vaut `true`, Claude Code analyse de nouveau les répertoires de [skills](/docs/fr/skills) et de commandes une fois les hooks SessionStart terminés. Consultez [Recharger les skills installés par un hook](#reload-skills-that-a-hook-installs) |1354| `reloadSkills` | Booléen. Lorsqu'il vaut `true`, Claude Code analyse à nouveau les répertoires de [skills](/docs/fr/skills) et de commandes une fois les hooks SessionStart terminés. Consultez [Recharger les skills installés par un hook](#reload-skills-that-a-hook-installs) |

1332 1355 

1333Cette sortie ajoute du contexte et nomme la session :1356Cette sortie ajoute du contexte et nomme la session :

1334 1357 


1344 1367 

1345Un hook qui se contente d'ajouter du contexte peut l'afficher sans construire de JSON, car Claude Code ajoute la [sortie stdout en texte brut](#exit-code-0) d'un hook SessionStart au contexte de Claude.1368Un hook qui se contente d'ajouter du contexte peut l'afficher sans construire de JSON, car Claude Code ajoute la [sortie stdout en texte brut](#exit-code-0) d'un hook SessionStart au contexte de Claude.

1346 1369 

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

1348 1371 

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

1350 Recharger les skills installés par un hook1373 Recharger les skills installés par un hook

1351</h4>1374</h4>

1352 1375 

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

1354 1377 

1355Cet exemple synchronise un dépôt de skills partagé et demande une nouvelle analyse :1378Cet exemple synchronise un dépôt de skills partagé et demande une nouvelle analyse :

1356 1379 


1363echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'1386echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'

1364```1387```

1365 1388 

1366L'URL du dépôt est un exemple fictif. Remplacez-la par votre propre dépôt de skills.1389L'URL du dépôt est fictive. Remplacez-la par celle de votre propre dépôt de skills.

1367 1390 

1368<h4 id="persist-environment-variables">1391<h4 id="persist-environment-variables">

1369 Conserver les variables d'environnement1392 Conserver les variables d'environnement

1370</h4>1393</h4>

1371 1394 

1372Les hooks SessionStart ont accès à la variable d'environnement `CLAUDE_ENV_FILE`, qui fournit un chemin de fichier où vous pouvez conserver des variables d'environnement pour les commandes shell que Claude exécute plus tard dans la session.1395Les hooks SessionStart ont accès à la variable d'environnement `CLAUDE_ENV_FILE`, qui fournit un chemin de fichier dans lequel vous pouvez conserver des variables d'environnement pour les commandes shell que Claude exécute plus tard dans la session.

1373 1396 

1374Pour définir des variables d'environnement individuelles, écrivez des instructions `export` dans `CLAUDE_ENV_FILE`. Utilisez l'ajout (`>>`) pour préserver les variables définies par d'autres hooks :1397Pour définir des variables d'environnement individuelles, écrivez des instructions `export` dans `CLAUDE_ENV_FILE`. Utilisez l'ajout (`>>`) pour préserver les variables définies par d'autres hooks :

1375 1398 


1404exit 01427exit 0

1405```1428```

1406 1429 

1407Chaque commande Bash exécute le contenu du fichier comme code shell avant la commande elle-même ; une ligne de ce fichier peut donc utiliser tout ce que Bash évalue, comme la référence `$PATH` dans `export PATH="$PATH:./node_modules/.bin"`.1430Chaque commande Bash exécute le contenu du fichier en tant que code shell avant la commande elle-même ; une ligne de ce fichier peut donc utiliser tout ce que Bash évalue, comme la référence `$PATH` dans `export PATH="$PATH:./node_modules/.bin"`.

1408 1431 

1409<a id="persisted-variables-in-powershell-commands" />1432<a id="persisted-variables-in-powershell-commands" />

1410 1433 


1412 Variables conservées dans les commandes PowerShell1435 Variables conservées dans les commandes PowerShell

1413</h5>1436</h5>

1414 1437 

1415Les commandes [PowerShell](/docs/fr/tools-reference#powershell-tool) reçoivent elles aussi les variables de `CLAUDE_ENV_FILE`, dans Claude Code v2.1.296 ou version ultérieure, mais PowerShell n'exécute jamais le fichier. Claude Code en extrait plutôt les affectations et les copie dans l'environnement de la commande PowerShell. Il ne le fait que lorsque chaque ligne relève de l'un des cas suivants, sur l'ensemble de ce que chaque hook de cette session a écrit et de tout script vers lequel vous avez [défini `CLAUDE_ENV_FILE`](/docs/fr/env-vars) avant le lancement :1438Les commandes [PowerShell](/docs/fr/tools-reference#powershell-tool) reçoivent également les variables de `CLAUDE_ENV_FILE`, dans Claude Code v2.1.296 ou une version ultérieure, mais PowerShell n'exécute jamais le fichier. Claude Code en extrait plutôt les affectations et les copie dans l'environnement de la commande PowerShell. Il ne le fait que lorsque chaque ligne correspond à l'un des cas suivants, pour l'ensemble de ce que chaque hook de cette session a écrit et de tout script sur lequel vous avez [défini `CLAUDE_ENV_FILE`](/docs/fr/env-vars) avant le lancement :

1416 1439 

1417* Une ligne vide ou un commentaire `#`1440* Une ligne vide ou un commentaire `#`

1418* Une affectation unique en début de ligne, écrite `export NAME=value`, `declare -x NAME=value` ou `NAME=value`, avec une valeur que Bash utiliserait exactement telle qu'elle est écrite, composée de n'importe quelle combinaison des éléments suivants : du texte sans guillemets n'utilisant que des lettres, des chiffres et les caractères `_ @ % + = : , . / -`, du texte entre guillemets simples, et du texte entre guillemets doubles où tout `$`, accent grave ou `"` à l'intérieur est échappé par une barre oblique inverse1441* Une affectation unique en début de ligne, écrite `export NAME=value`, `declare -x NAME=value` ou `NAME=value`, avec une valeur que Bash utiliserait exactement telle qu'elle est écrite, composée de n'importe quelle combinaison des éléments suivants : du texte sans guillemets n'utilisant que des lettres, des chiffres et les caractères `_ @ % + = : , . / -`, du texte entre guillemets simples, et du texte entre guillemets doubles dans lequel chaque `$`, backtick ou `"` est échappé par une barre oblique inverse

1419 1442 

1420Si une ligne est d'un autre type, comme `export PATH="$PATH:./node_modules/.bin"` avec son `$PATH` non échappé, une commande `source` ou les chaînes `$'...'` qu'affiche `direnv export bash`, les commandes PowerShell ne reçoivent aucune des variables, et `claude --debug` journalise `Session environment is not all plain assignments`. Les commandes Bash les reçoivent toujours toutes. Sous Windows, les commandes PowerShell ne reçoivent pas non plus une variable dont la valeur contient `/` ou `\`, car Git Bash et Windows écrivent les chemins différemment. Une commande PowerShell [en sandbox](/docs/fr/sandboxing) ne reçoit aucune des variables.1443Si une ligne est d'un autre type, comme `export PATH="$PATH:./node_modules/.bin"` avec son `$PATH` non échappé, une commande `source` ou les chaînes `$'...'` qu'affiche `direnv export bash`, les commandes PowerShell ne reçoivent aucune des variables, et `claude --debug` consigne `Session environment is not all plain assignments`. Les commandes Bash les reçoivent toujours toutes. Sous Windows, les commandes PowerShell ne reçoivent pas non plus une variable dont la valeur contient `/` ou `\`, car Git Bash et Windows écrivent les chemins différemment. Une commande PowerShell exécutée dans un [sandbox](/docs/fr/sandboxing) ne reçoit aucune des variables.

1421 1444 

1422<Note>1445<Note>

1423 `CLAUDE_ENV_FILE` est disponible pour les hooks SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged) et [FileChanged](#filechanged). Les autres événements de hook n'ont pas accès à cette variable, pas plus qu'un hook exécuté dans PowerShell, que ce soit via [`"shell": "powershell"`](#command-hook-fields) ou par défaut sous Windows sans Git Bash.1446 `CLAUDE_ENV_FILE` est disponible pour les hooks SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged) et [FileChanged](#filechanged). Les autres événements de hook n'ont pas accès à cette variable, pas plus qu'un hook qui s'exécute dans PowerShell, que ce soit via [`"shell": "powershell"`](#command-hook-fields) ou par défaut sous Windows sans Git Bash.

1424</Note>1447</Note>

1425 1448 

1426<h3 id="setup">1449<h3 id="setup">


1436| `init` | `claude --init-only` ou `claude -p --init` |1459| `init` | `claude --init-only` ou `claude -p --init` |

1437| `maintenance` | `claude -p --maintenance` |1460| `maintenance` | `claude -p --maintenance` |

1438 1461 

1439Lorsque vous exécutez `claude --init-only`, Claude Code exécute les hooks Setup et les hooks `SessionStart` avec le matcher `startup`, puis se termine sans démarrer de conversation.1462Lorsque vous exécutez `claude --init-only`, Claude Code exécute les hooks Setup et les hooks `SessionStart` avec le matcher `startup`, puis se ferme sans démarrer de conversation.

1440 1463 

1441Lorsque vous démarrez ou poursuivez une conversation avec `-p`, vous devez également fournir un prompt, en argument ou transmis via stdin. Vous pouvez omettre le prompt lorsqu'un hook `SessionStart` fournit [`initialUserMessage`](#sessionstart-decision-control) ou lorsque vous reprenez une session avec un [appel d'outil différé](#defer-a-tool-call-for-later).1464Lorsque vous démarrez ou poursuivez une conversation avec `-p`, vous devez également fournir un prompt, en argument ou transmis via stdin. Vous pouvez omettre le prompt lorsqu'un hook `SessionStart` fournit [`initialUserMessage`](#sessionstart-decision-control) ou lorsque vous reprenez une session avec un [appel d'outil différé](#defer-a-tool-call-for-later).

1442 1465 

1443En cas de succès, `--init-only` n'affiche rien dans le terminal. Pour vérifier que les hooks se sont exécutés, lancez `claude --debug-file <path> --init-only` en remplaçant `<path>` par l'emplacement d'un fichier de log, puis recherchez dans le log les entrées des hooks Setup et SessionStart.1466En cas de succès, `--init-only` n'affiche rien dans le terminal. Pour vérifier que les hooks se sont exécutés, démarrez avec `claude --debug-file <path> --init-only`, en remplaçant `<path>` par l'emplacement d'un fichier de log, puis recherchez dans le log les entrées des hooks Setup et SessionStart.

1444 1467 

1445Comme Setup ne se déclenche pas à chaque lancement, un plugin qui a besoin d'une dépendance installée ne peut pas s'appuyer uniquement sur Setup. L'approche pratique consiste à vérifier la présence de la dépendance lors de la première utilisation et à l'installer si elle est absente, par exemple un hook ou un skill qui teste `${CLAUDE_PLUGIN_DATA}/node_modules` et exécute `npm install` en son absence. Consultez le [répertoire de données persistantes](/docs/fr/plugins/components#path-variables-and-persistent-data) pour savoir où stocker les dépendances installées. Si vous distribuez votre plugin via une marketplace, vous n'aurez peut-être pas besoin de cette approche : Claude Code [installe automatiquement les dépendances de packages Node.js éligibles](/docs/fr/plugins/loading#node-js-package-dependencies) lorsqu'il met le plugin en cache.1468Comme Setup ne se déclenche pas à chaque lancement, un plugin qui a besoin d'une dépendance installée ne peut pas s'appuyer uniquement sur Setup. La pratique consiste à vérifier la présence de la dépendance lors de la première utilisation et à l'installer si elle est absente, par exemple avec un hook ou un skill qui teste `${CLAUDE_PLUGIN_DATA}/node_modules` et exécute `npm install` en cas d'absence. Consultez le [répertoire de données persistantes](/docs/fr/plugins/components#path-variables-and-persistent-data) pour savoir où stocker les dépendances installées. Si vous distribuez votre plugin via une marketplace, ce modèle n'est peut-être pas nécessaire : Claude Code [installe automatiquement les dépendances de packages Node.js éligibles](/docs/fr/plugins/loading#node-js-package-dependencies) lorsqu'il met le plugin en cache.

1446 1469 

1447<h4 id="setup-input">1470<h4 id="setup-input">

1448 Entrée de Setup1471 Entrée de Setup


1464 Contrôle de décision de Setup1487 Contrôle de décision de Setup

1465</h4>1488</h4>

1466 1489 

1467Les hooks Setup ne peuvent pas bloquer ; l'exécution se poursuit quel que soit le code de sortie. Quel que soit le code de sortie, Claude Code ignore les [champs de sortie JSON](#json-output) d'un hook Setup, comme `systemMessage`, `continue` et `hookSpecificOutput.additionalContext`. Avec `-p`, la sortie stdout, la sortie stderr et le code de sortie d'un hook Setup n'apparaissent dans la sortie de l'exécution que sous forme d'[événements `hook_response`](/docs/fr/headless#read-session-metadata), lorsque vous lancez avec `--output-format stream-json --verbose`.1490Les hooks Setup ne peuvent pas bloquer ; l'exécution se poursuit quel que soit le code de sortie. Quel que soit le code de sortie, Claude Code ignore les [champs de sortie JSON](#json-output) d'un hook Setup, tels que `systemMessage`, `continue` et `hookSpecificOutput.additionalContext`. Avec `-p`, la sortie stdout, la sortie stderr et le code de sortie d'un hook Setup n'apparaissent dans la sortie de l'exécution que sous forme d'[événements `hook_response`](/docs/fr/headless#read-session-metadata) lorsque vous lancez avec `--output-format stream-json --verbose`.

1468 1491 

1469Les hooks Setup ont accès à `CLAUDE_ENV_FILE`. Les variables écrites dans ce fichier persistent dans les commandes Bash suivantes de la session, comme pour les [hooks SessionStart](#persist-environment-variables). Seuls les hooks `type: "command"` s'exécutent sur `Setup`. Un hook `type: "mcp_tool"` sur `Setup` est toujours ignoré, comme décrit dans [Champs des hooks d'outil MCP](#mcp-tool-hook-fields).1492Les hooks Setup ont accès à `CLAUDE_ENV_FILE`. Les variables écrites dans ce fichier persistent dans les commandes Bash suivantes de la session, comme pour les [hooks SessionStart](#persist-environment-variables). Seuls les hooks `type: "command"` s'exécutent sur `Setup`. Un hook `type: "mcp_tool"` sur `Setup` est toujours ignoré, comme décrit dans [Champs des hooks d'outil MCP](#mcp-tool-hook-fields).

1470 1493 


1476 1499 

1477Cet événement ne se déclenche pas lorsque Claude [lit `AGENTS.md` directement](/docs/fr/memory#agents-md) via le paramètre **Project instructions**. Il se déclenche en revanche lorsqu'un `CLAUDE.md` importe votre `AGENTS.md`, avec `load_reason` défini sur `include` comme pour tout autre fichier importé, et lorsque `CLAUDE.md` est un lien symbolique vers celui-ci, comme un chargement normal de `CLAUDE.md`.1500Cet événement ne se déclenche pas lorsque Claude [lit `AGENTS.md` directement](/docs/fr/memory#agents-md) via le paramètre **Project instructions**. Il se déclenche en revanche lorsqu'un `CLAUDE.md` importe votre `AGENTS.md`, avec `load_reason` défini sur `include` comme pour tout autre fichier importé, et lorsque `CLAUDE.md` est un lien symbolique vers celui-ci, comme un chargement normal de `CLAUDE.md`.

1478 1501 

1479Le matcher s'applique à `load_reason`. Par exemple, utilisez `"matcher": "session_start"` pour ne déclencher le hook que pour les fichiers chargés au démarrage de la session, ou `"matcher": "path_glob_match|nested_traversal"` pour ne le déclencher que pour les chargements à la demande.1502Le matcher s'applique à `load_reason`. Par exemple, utilisez `"matcher": "session_start"` pour ne le déclencher que pour les fichiers chargés au démarrage de la session, ou `"matcher": "path_glob_match|nested_traversal"` pour ne le déclencher que pour les chargements à la demande.

1480 1503 

1481<h4 id="instructionsloaded-input">1504<h4 id="instructionsloaded-input">

1482 Entrée d'InstructionsLoaded1505 Entrée d'InstructionsLoaded


1488| :- | :- |1511| :- | :- |

1489| `file_path` | Chemin absolu du fichier d'instructions qui a été chargé |1512| `file_path` | Chemin absolu du fichier d'instructions qui a été chargé |

1490| `memory_type` | Portée du fichier : `"User"`, `"Project"`, `"Local"` ou `"Managed"` |1513| `memory_type` | Portée du fichier : `"User"`, `"Project"`, `"Local"` ou `"Managed"` |

1491| `load_reason` | Raison du chargement du fichier : `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"` ou `"compact"`. La valeur `"compact"` est utilisée lorsque les fichiers d'instructions sont rechargés après un événement de compaction |1514| `load_reason` | Raison du chargement du fichier : `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"` ou `"compact"`. La valeur `"compact"` se déclenche lorsque des fichiers d'instructions sont rechargés après un événement de compaction |

1492| `globs` | Motifs glob de chemin issus du frontmatter `paths:` du fichier, le cas échéant. Présent uniquement pour les chargements `path_glob_match` |1515| `globs` | Motifs glob de chemins issus du frontmatter `paths:` du fichier, le cas échéant. Présent uniquement pour les chargements `path_glob_match` |

1493| `trigger_file_path` | Chemin du fichier dont l'accès a déclenché ce chargement, pour les chargements à la demande |1516| `trigger_file_path` | Chemin du fichier dont l'accès a déclenché ce chargement, pour les chargements à la demande |

1494| `parent_file_path` | Chemin du fichier d'instructions parent qui a inclus celui-ci, pour les chargements `include` |1517| `parent_file_path` | Chemin du fichier d'instructions parent qui a inclus celui-ci, pour les chargements `include` |

1495 1518 


1509 Contrôle de décision d'InstructionsLoaded1532 Contrôle de décision d'InstructionsLoaded

1510</h4>1533</h4>

1511 1534 

1512Les hooks InstructionsLoaded n'ont aucun contrôle de décision. Ils ne peuvent ni bloquer ni modifier le chargement des instructions. Claude Code ignore leurs [champs de sortie JSON](#json-output), comme `systemMessage` et `continue`. Utilisez cet événement pour la journalisation d'audit, le suivi de conformité ou l'observabilité.1535Les hooks InstructionsLoaded n'ont pas de contrôle de décision. Ils ne peuvent ni bloquer ni modifier le chargement des instructions. Claude Code ignore leurs [champs de sortie JSON](#json-output), tels que `systemMessage` et `continue`. Utilisez cet événement pour la journalisation d'audit, le suivi de conformité ou l'observabilité.

1513 1536 

1514<h3 id="userpromptsubmit">1537<h3 id="userpromptsubmit">

1515 UserPromptSubmit1538 UserPromptSubmit


1519d'ajouter du contexte supplémentaire en fonction du prompt ou de la conversation, de valider des prompts ou1542d'ajouter du contexte supplémentaire en fonction du prompt ou de la conversation, de valider des prompts ou

1520de bloquer certains types de prompts.1543de bloquer certains types de prompts.

1521 1544 

1522Les hooks `UserPromptSubmit` ne se déclenchent pas uniquement sur les prompts que vous saisissez. Claude Code les exécute également lors :1545Les hooks `UserPromptSubmit` ne se déclenchent pas uniquement sur les prompts que vous saisissez. Claude Code les exécute également lors de :

1523 1546 

1524* Du déclenchement d'une [tâche planifiée](/docs/fr/scheduled-tasks), y compris une itération de `/loop`1547* Le déclenchement d'une [tâche planifiée](/docs/fr/scheduled-tasks), y compris une itération de `/loop`

1525* Du compte rendu d'un [sous-agent en arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) à la session qui l'a lancé1548* Le compte rendu d'un [sous-agent en arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) à la session qui l'a lancé

1526* D'un [message qu'une autre session envoie](/docs/fr/cross-session-messaging) à votre conversation principale1549* Un [message envoyé par une autre session](/docs/fr/cross-session-messaging) à votre conversation principale

1527 1550 

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

1529 1552 

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

1531 1554 

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

1533 1556 

1534<h4 id="userpromptsubmit-input">1557<h4 id="userpromptsubmit-input">

1535 Entrée d'UserPromptSubmit1558 Entrée d'UserPromptSubmit

1536</h4>1559</h4>

1537 1560 

1538En plus des [champs d'entrée communs](#common-input-fields), les hooks UserPromptSubmit reçoivent le champ `prompt` contenant le texte soumis. Le contenu collé qui a été réduit à un espace réservé `[Pasted text #N]` arrive développé à sa place. Dans les sessions où Claude Code [balise le texte collé pour Claude](/docs/fr/terminal-config#how-claude-treats-pasted-text), ce contenu développé se trouve entre une ligne `<pasted_content id="…">` et une ligne `</pasted_content id="…">` ; tenez-en compte si votre hook analyse le prompt.1561En plus des [champs d'entrée communs](#common-input-fields), les hooks UserPromptSubmit reçoivent le champ `prompt` contenant le texte soumis. Le contenu collé qui a été réduit en un espace réservé `[Pasted text #N]` arrive développé à sa place. Dans les sessions où Claude Code [signale le texte collé à Claude](/docs/fr/terminal-config#how-claude-treats-pasted-text), ce contenu développé se trouve entre une ligne `<pasted_content id="…">` et une ligne `</pasted_content id="…">` : tenez donc compte de ces lignes si votre hook analyse le prompt.

1539 1562 

1540Les hooks UserPromptSubmit reçoivent également `session_title` lorsque la session a un titre personnalisé, avec la même signification que le [champ `session_title` de SessionStart](#sessionstart-input).1563Les hooks UserPromptSubmit reçoivent également `session_title` lorsque la session a un titre personnalisé, avec la même signification que le [champ `session_title` de SessionStart](#sessionstart-input).

1541 1564 


1558 1581 

1559Il existe deux façons d'ajouter du contexte à la conversation avec le code de sortie 0 :1582Il existe deux façons d'ajouter du contexte à la conversation avec le code de sortie 0 :

1560 1583 

1561* **Sortie stdout en texte brut** : Claude Code ajoute au contexte de Claude la sortie stdout qu'il [traite comme du texte brut](#exit-code-0)1584* **Stdout en texte brut** : Claude Code ajoute au contexte de Claude la sortie stdout qu'il [traite comme du texte brut](#exit-code-0)

1562* **JSON avec `additionalContext`** : utilisez le format JSON ci-dessous pour davantage de contrôle. Le champ `additionalContext` est ajouté comme contexte1585* **JSON avec `additionalContext`** : utilisez le format JSON ci-dessous pour plus de contrôle. Le champ `additionalContext` est ajouté en tant que contexte

1563 1586 

1564Aucun de ces canaux ne produit d'entrée visible dans la transcription. La sortie stdout brute et la valeur `additionalContext` sont chacune injectées sous forme de rappel système commençant par le nom du hook ; Claude lit les deux. Pour vérifier la transmission, consultez le [log de débogage](#debug-hooks).1587Aucun de ces deux canaux ne produit d'entrée visible dans la transcription. La sortie stdout brute et la valeur `additionalContext` sont chacune injectées sous forme de rappel système commençant par le nom du hook ; Claude lit les deux. Pour confirmer la transmission, consultez le [log de débogage](#debug-hooks).

1565 1588 

1566Pour bloquer un prompt, renvoyez un objet JSON dont `decision` est défini sur `"block"` :1589Pour bloquer un prompt, renvoyez un objet JSON avec `decision` défini sur `"block"` :

1567 1590 

1568| Champ | Description |1591| Champ | Description |

1569| :- | :- |1592| :- | :- |

1570| `decision` | `"block"` arrête le prompt avant qu'il ne parvienne à Claude. Omettez-le pour laisser le prompt poursuivre |1593| `decision` | `"block"` arrête le prompt avant qu'il n'atteigne Claude. Omettez-le pour laisser le prompt se poursuivre |

1571| `reason` | Affiché à l'utilisateur lorsque `decision` vaut `"block"`. N'est pas ajouté au contexte |1594| `reason` | Affiché à l'utilisateur lorsque `decision` vaut `"block"`. Non ajouté au contexte |

1572| `additionalContext` | Chaîne ajoutée au contexte de Claude avec le prompt soumis. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) |1595| `additionalContext` | Chaîne ajoutée au contexte de Claude en plus du prompt soumis. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) |

1573| `sessionTitle` | Définit le titre de la session. À utiliser pour nommer automatiquement les sessions en fonction du contenu du prompt |1596| `sessionTitle` | Définit le titre de la session. Utilisez-le pour nommer automatiquement les sessions en fonction du contenu du prompt |

1574| `suppressOriginalPrompt` | Si `true` lorsque le hook bloque le prompt, omet le texte du prompt du message de blocage. Consultez [Ce que laisse derrière lui un prompt bloqué](#what-a-blocked-prompt-leaves-behind) |1597| `suppressOriginalPrompt` | S'il vaut `true` lorsque le hook bloque le prompt, exclut le texte du prompt du message de blocage. Consultez [Ce que laisse derrière lui un prompt bloqué](#what-a-blocked-prompt-leaves-behind) |

1575 1598 

1576Un hook qui bloque en se terminant avec le code 2 est traité de la même manière que `reason` : le message de blocage affiche le texte stderr à l'utilisateur, et celui-ci n'est pas ajouté au contexte.1599Un hook qui bloque en se terminant avec le code 2 suit le même acheminement que `reason` : le message de blocage affiche le texte stderr à l'utilisateur, et celui-ci n'est pas ajouté au contexte.

1577 1600 

1578```json theme={null}1601```json theme={null}

1579{1602{


1592 Ce que laisse derrière lui un prompt bloqué1615 Ce que laisse derrière lui un prompt bloqué

1593</h4>1616</h4>

1594 1617 

1595Un prompt bloqué ne parvient jamais à Claude, mais son texte n'est pas supprimé partout. Par défaut, le message de blocage affiché à l'utilisateur se termine par `Original prompt:` suivi du texte soumis, et Claude Code écrit ce message dans le fichier de transcription de la session sur le disque. Pour omettre le texte du message, affichez un JSON avec `"suppressOriginalPrompt": true` dans `hookSpecificOutput`. Cela fonctionne que le hook bloque avec `decision: "block"` ou en se terminant avec le code 2.1618Un prompt bloqué n'atteint jamais Claude, mais son texte n'est pas supprimé partout. Par défaut, le message de blocage affiché à l'utilisateur se termine par `Original prompt:` suivi du texte soumis, et Claude Code écrit ce message dans le fichier de transcription de la session sur le disque. Pour exclure le texte du message, affichez un JSON avec `"suppressOriginalPrompt": true` dans `hookSpecificOutput`. Cela fonctionne que le hook bloque avec `decision: "block"` ou en se terminant avec le code 2.

1596 1619 

1597`suppressOriginalPrompt` ne modifie que le message de blocage. Le texte soumis peut toujours apparaître dans des fichiers locaux comme la transcription de la session et votre historique de prompts ; un hook de blocage n'est donc pas un moyen d'empêcher qu'un secret soit écrit sur le disque. Pour limiter ou supprimer ces fichiers, consultez [Stockage en texte clair](/docs/fr/claude-directory#plaintext-storage) et [Effacer les données locales](/docs/fr/claude-directory#clear-local-data).1620`suppressOriginalPrompt` ne modifie que le message de blocage. Le texte soumis peut toujours apparaître dans des fichiers locaux tels que la transcription de la session et votre historique de prompts : un hook de blocage n'est donc pas un moyen d'empêcher un secret d'être écrit sur le disque. Pour limiter ou supprimer ces fichiers, consultez [Stockage en texte brut](/docs/fr/claude-directory#plaintext-storage) et [Effacer les données locales](/docs/fr/claude-directory#clear-local-data).

1598 1621 

1599<h3 id="userpromptexpansion">1622<h3 id="userpromptexpansion">

1600 UserPromptExpansion1623 UserPromptExpansion

1601</h3>1624</h3>

1602 1625 

1603S'exécute lorsqu'une commande saisie par l'utilisateur est développée en prompt avant de parvenir à Claude. Utilisez-le pour empêcher l'invocation directe de commandes spécifiques, injecter du contexte pour un skill particulier ou journaliser les commandes invoquées par les utilisateurs. Par exemple, un hook correspondant à `deploy` peut bloquer `/deploy` à moins qu'un fichier d'approbation ne soit présent, ou un hook correspondant à un skill de revue peut ajouter la checklist de revue de l'équipe sous forme d'`additionalContext`.1626S'exécute lorsqu'une commande saisie par l'utilisateur se développe en prompt avant d'atteindre Claude. Utilisez-le pour empêcher l'invocation directe de commandes spécifiques, injecter du contexte pour un skill particulier ou journaliser les commandes invoquées par les utilisateurs. Par exemple, un hook correspondant à `deploy` peut bloquer `/deploy` sauf si un fichier d'approbation est présent, ou un hook correspondant à un skill de revue peut ajouter la checklist de revue de l'équipe en tant que `additionalContext`.

1604 1627 

1605Cet événement couvre le chemin que `PreToolUse` ne couvre pas : un hook `PreToolUse` correspondant à l'outil `Skill` ne se déclenche que lorsque Claude appelle l'outil, mais saisir `/skillname` directement contourne `PreToolUse`. `UserPromptExpansion` se déclenche sur ce chemin direct.1628Cet événement couvre le chemin que `PreToolUse` ne couvre pas : un hook `PreToolUse` correspondant à l'outil `Skill` ne se déclenche que lorsque Claude appelle l'outil, mais saisir directement `/skillname` contourne `PreToolUse`. `UserPromptExpansion` se déclenche sur ce chemin direct.

1606 1629 

1607Le matcher s'applique à `command_name`. Laissez le matcher vide pour déclencher le hook sur chaque commande de type prompt.1630Le matcher s'applique à `command_name`. Laissez le matcher vide pour le déclencher sur chaque commande de type prompt.

1608 1631 

1609<h4 id="userpromptexpansion-input">1632<h4 id="userpromptexpansion-input">

1610 Entrée d'UserPromptExpansion1633 Entrée d'UserPromptExpansion


1635 1658 

1636| Champ | Description |1659| Champ | Description |

1637| :- | :- |1660| :- | :- |

1638| `decision` | `"block"` empêche le développement de la commande. Omettez-le pour la laisser poursuivre |1661| `decision` | `"block"` empêche le développement de la commande. Omettez-le pour la laisser se poursuivre |

1639| `reason` | Affiché à l'utilisateur lorsque `decision` vaut `"block"` |1662| `reason` | Affiché à l'utilisateur lorsque `decision` vaut `"block"` |

1640| `additionalContext` | Chaîne ajoutée au contexte de Claude avec le prompt développé. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) |1663| `additionalContext` | Chaîne ajoutée au contexte de Claude en plus du prompt développé. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) |

1641 1664 

1642Un hook qui bloque en se terminant avec le code 2 est traité de la même manière que `reason` : le message de blocage affiche le texte stderr à l'utilisateur.1665Un hook qui bloque en se terminant avec le code 2 suit le même acheminement que `reason` : le message de blocage affiche le texte stderr à l'utilisateur.

1643 1666 

1644```json theme={null}1667```json theme={null}

1645{1668{


1656 MessageDisplay1679 MessageDisplay

1657</h3>1680</h3>

1658 1681 

1659S'exécute pendant qu'un message de l'assistant s'affiche en streaming à l'écran. Claude Code affiche le message par incréments : chaque fois qu'un lot de lignes nouvellement complétées est prêt à être rendu, le hook s'exécute une fois avec ces lignes et Claude Code affiche à leur place le texte de remplacement du hook. Un message long produit plusieurs appels ; un message court peut n'en produire qu'un seul.1682S'exécute pendant qu'un message de l'assistant s'affiche progressivement à l'écran. Claude Code affiche le message par incréments : chaque fois qu'un lot de lignes nouvellement terminées est prêt à être rendu, le hook s'exécute une fois avec ces lignes, et Claude Code affiche le texte de remplacement du hook à leur place. Un message long génère plusieurs appels ; un message court peut n'en générer qu'un seul.

1660 1683 

1661Utilisez MessageDisplay pour :1684Utilisez MessageDisplay pour :

1662 1685 

1663* supprimer le markdown pour un affichage minimal1686* supprimer le markdown pour un affichage minimal

1664* transformer le texte qu'une application Agent SDK présente à ses utilisateurs1687* transformer le texte qu'une application Agent SDK affiche à ses utilisateurs

1665* masquer des clés API ou des noms d'hôtes internes dans les réponses de Claude1688* masquer des clés API ou des noms d'hôtes internes dans les réponses de Claude

1666 1689 

1667Claude Code retient chaque lot jusqu'à ce que votre hook renvoie un résultat ; veillez donc à ce que le hook reste rapide. Si le hook échoue ou expire, Claude Code affiche le texte d'origine. Le délai d'expiration par défaut pour cet événement est de 10 secondes ; si votre hook a besoin de plus de temps, définissez le champ `timeout` dans l'entrée du hook.1690Claude Code retient chaque lot jusqu'à ce que votre hook réponde : veillez donc à ce que le hook soit rapide. Si le hook échoue ou expire, Claude Code affiche le texte d'origine. Le délai d'expiration par défaut pour cet événement est de 10 secondes ; si votre hook a besoin de plus de temps, définissez le champ `timeout` dans l'entrée du hook.

1668 1691 

1669MessageDisplay ne concerne que l'affichage : le texte de remplacement ne modifie que ce qui est rendu à l'écran. La transcription et ce que voit Claude conservent le texte d'origine ; Claude ne voit donc jamais le remplacement, et le mode verbeux affiche l'original. Le hook ne reçoit que le texte des messages de l'assistant ; les résultats d'outils et le texte que vous saisissez s'affichent donc sans modification.1692MessageDisplay ne concerne que l'affichage : le texte de remplacement ne modifie que ce qui est rendu à l'écran. La transcription et ce que voit Claude conservent le texte d'origine ; Claude ne voit donc jamais le remplacement, et le mode verbeux affiche l'original. Le hook ne reçoit que le texte des messages de l'assistant : les résultats d'outils et le texte que vous saisissez s'affichent donc sans modification.

1670 1693 

1671MessageDisplay ne prend pas en charge les matchers et se déclenche pour chaque message de l'assistant qui diffuse du texte en streaming ; les messages sans texte, comme les réponses ne contenant que des appels d'outils, ne le déclenchent pas.1694MessageDisplay ne prend pas en charge les matchers et se déclenche pour chaque message de l'assistant qui diffuse du texte ; les messages sans texte, comme les réponses composées uniquement d'appels d'outils, ne le déclenchent pas.

1672 1695 

1673Dans les exécutions non interactives, y compris les requêtes de l'Agent SDK et `claude -p`, MessageDisplay s'exécute une fois par message de l'assistant au lieu d'une fois par lot de lignes. L'appel unique arrive une fois le message terminé et contient le texte complet du message : `index` vaut `0`, `final` vaut `true` et `delta` contient l'intégralité du message. Un hook qui collecte le texte `delta` de chaque message reçoit le même texte total dans les deux modes.1696Dans les exécutions non interactives, y compris les requêtes Agent SDK et `claude -p`, MessageDisplay s'exécute une fois par message de l'assistant au lieu d'une fois par lot de lignes. L'appel unique arrive une fois le message terminé et contient le texte complet du message : `index` vaut `0`, `final` vaut `true` et `delta` contient l'intégralité du message. Un hook qui collecte le texte `delta` de chaque message reçoit le même texte total dans les deux modes.

1674 1697 

1675<h4 id="messagedisplay-input">1698<h4 id="messagedisplay-input">

1676 Entrée de MessageDisplay1699 Entrée de MessageDisplay

1677</h4>1700</h4>

1678 1701 

1679En plus des [champs d'entrée communs](#common-input-fields), les hooks MessageDisplay reçoivent des identifiants pour le tour et le message, la position de cet appel au sein du message, et le nouveau texte dans `delta`. Les limites des lots dépendent de la manière dont le texte est diffusé ; utilisez donc `index` et `final` pour suivre la progression dans un message plutôt que de vous attendre à ce que les lignes soient regroupées d'une façon particulière.1702En plus des [champs d'entrée communs](#common-input-fields), les hooks MessageDisplay reçoivent des identifiants pour le tour et le message, la position de cet appel dans le message et le nouveau texte dans `delta`. Les limites des lots dépendent de la manière dont le texte est diffusé : utilisez donc `index` et `final` pour suivre la progression dans un message plutôt que de vous attendre à ce que les lignes soient regroupées d'une manière particulière.

1680 1703 

1681| Champ | Description |1704| Champ | Description |

1682| :- | :- |1705| :- | :- |

1683| `turn_id` | UUID du tour en cours |1706| `turn_id` | UUID du tour en cours |

1684| `message_id` | UUID du message de l'assistant en cours d'affichage. Stable sur tous les lots d'un même message. Il ne s'agit pas de l'identifiant `msg_…` de l'API ; il ne peut donc pas être mis en correspondance avec les identifiants de messages de la transcription |1707| `message_id` | UUID du message de l'assistant en cours d'affichage. Stable pour tous les lots d'un même message. Il ne s'agit pas de l'identifiant `msg_…` de l'API ; il ne peut donc pas être mis en correspondance avec les identifiants de messages de la transcription |

1685| `index` | Index, en partant de zéro, de ce lot au sein du message |1708| `index` | Index, en partant de zéro, de ce lot dans le message |

1686| `final` | `true` pour le dernier lot du message. Chaque message comporte exactement un lot final |1709| `final` | `true` sur le dernier lot du message. Chaque message a exactement un lot final |

1687| `delta` | Les lignes nouvellement complétées depuis le lot précédent, retours à la ligne finaux inclus. Toujours des lignes entières, sauf pour le lot final, qui peut se terminer en milieu de ligne. Dans les exécutions interactives, le delta du lot final est vide lorsque le message se termine par un retour à la ligne ; considérez donc `final`, et non un delta non vide, comme le signal de fin de message. Dans les exécutions de l'Agent SDK et de `claude -p`, l'appel unique contient l'intégralité du message |1710| `delta` | Les lignes nouvellement terminées depuis le lot précédent, retours à la ligne finaux inclus. Toujours des lignes complètes, sauf pour le lot final, qui peut se terminer en milieu de ligne. Dans les exécutions interactives, le delta du lot final est vide lorsque le message se termine par un retour à la ligne : considérez donc `final`, et non un delta non vide, comme le signal de fin de message. Dans les exécutions Agent SDK et `claude -p`, l'appel unique contient l'intégralité du message |

1688 1711 

1689```json theme={null}1712```json theme={null}

1690{1713{


1710| :- | :- |1733| :- | :- |

1711| `displayContent` | Texte affiché à la place du delta. Omettez-le pour afficher l'original |1734| `displayContent` | Texte affiché à la place du delta. Omettez-le pour afficher l'original |

1712 1735 

1713Les hooks MessageDisplay n'ont aucun contrôle de décision. Ils ne peuvent ni bloquer le message ni modifier ce qui est stocké dans la transcription ou envoyé à Claude. Claude Code tient compte de `displayContent` dans leur sortie JSON et ignore `systemMessage` et `continue`.1736Les hooks MessageDisplay n'ont pas de contrôle de décision. Ils ne peuvent ni bloquer le message ni modifier ce qui est stocké dans la transcription ou envoyé à Claude. Claude Code tient compte de `displayContent` dans leur sortie JSON et ignore `systemMessage` et `continue`.

1714 1737 

1715Cet exemple supprime la mise en forme markdown des réponses de Claude pour un affichage en texte brut. Le script lit chaque lot depuis stdin, supprime les marqueurs de gras et les backticks de code inline de `delta`, et renvoie le résultat dans `displayContent`.1738Cet exemple supprime la mise en forme markdown des réponses de Claude pour un affichage en texte brut. Le script lit chaque lot depuis stdin, supprime les marqueurs de gras et les backticks de code en ligne de `delta`, et renvoie le résultat en tant que `displayContent`.

1716 1739 

1717<Tabs>1740<Tabs>

1718 <Tab title="macOS/Linux">1741 <Tab title="macOS/Linux">


1788 </Tab>1811 </Tab>

1789</Tabs>1812</Tabs>

1790 1813 

1791Les lots sans markdown passent sans modification. Si le script échoue, par exemple parce que `jq` est absent, Claude Code affiche le texte d'origine et signale l'échec uniquement dans la [sortie de débogage](#debug-hooks), et non dans la session.1814Les lots sans markdown passent sans modification. Si le script échoue, par exemple parce que `jq` est absent, Claude Code affiche le texte d'origine et ne signale l'échec que dans la [sortie de débogage](#debug-hooks), et non dans la session.

1792 1815 

1793<h3 id="pretooluse">1816<h3 id="pretooluse">

1794 PreToolUse1817 PreToolUse

1795</h3>1818</h3>

1796 1819 

1797S'exécute après que Claude a créé les paramètres de l'outil et avant le traitement de l'appel d'outil. Correspond à n'importe quel nom d'outil sauf `EndConversation` : les outils intégrés comme `Bash`, `PowerShell`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `Workflow`, `WebFetch`, `WebSearch`, `AskUserQuestion` et `ExitPlanMode`, ainsi que tous les [noms d'outils MCP](#match-mcp-tools).1820S'exécute après que Claude a créé les paramètres de l'outil et avant le traitement de l'appel d'outil. Correspond à n'importe quel nom d'outil sauf `EndConversation` : les outils intégrés tels que `Bash`, `PowerShell`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `Workflow`, `WebFetch`, `WebSearch`, `AskUserQuestion` et `ExitPlanMode`, ainsi que tous les [noms d'outils MCP](#match-mcp-tools).

1798 1821 

1799Pour exécuter un hook lorsqu'un fichier spécifique change sur le disque, quel que soit ce qui l'a écrit, utilisez [FileChanged](#filechanged) plutôt que de faire correspondre les outils d'édition de fichiers par leur nom. Contrairement à PreToolUse, Claude Code exécute les hooks FileChanged après la modification, et ils n'ont aucun contrôle de décision ; ils ne peuvent donc pas bloquer l'écriture.1822Pour exécuter un hook lorsqu'un fichier spécifique change sur le disque, quel que soit ce qui l'a écrit, utilisez [FileChanged](#filechanged) plutôt que de faire correspondre les outils d'édition de fichiers par leur nom. Contrairement à PreToolUse, Claude Code exécute les hooks FileChanged après la modification, et ceux-ci n'ont pas de contrôle de décision : ils ne peuvent donc pas bloquer l'écriture.

1800 1823 

1801<Warning>1824<Warning>

1802 PreToolUse ne s'exécute que lorsque Claude appelle un outil. Les fichiers que vous [référencez avec `@` dans votre prompt](/docs/fr/common-workflows#reference-files-and-directories) sont ajoutés sans aucun appel d'outil : Claude Code insère leur contenu lors de la construction du prompt, donc aucun hook PreToolUse ne se déclenche pour eux, y compris les hooks correspondant à `Read`. Pour empêcher des chemins spécifiques d'être référencés avec `@`, utilisez plutôt une [règle de refus `Read`](/docs/fr/permissions#read-and-edit).1825 PreToolUse ne s'exécute que lorsque Claude appelle un outil. Par défaut, les fichiers que vous [référencez avec `@` dans votre prompt](/docs/fr/common-workflows#reference-files-and-directories) sont ajoutés sans aucun appel d'outil. Claude Code insère leur contenu lors de la construction du prompt : aucun hook PreToolUse ne se déclenche donc pour eux, y compris les hooks correspondant à `Read`. PreToolUse ne se déclenche pas non plus pour [`EndConversation`](/docs/fr/tools-reference#endconversation-tool-behavior).

1803 1826 

1804 PreToolUse ne se déclenche pas non plus pour [`EndConversation`](/docs/fr/tools-reference#endconversation-tool-behavior).1827 Vous pouvez bloquer des chemins spécifiques dans les références `@`, ou désactiver l'insertion :

1828 

1829 * **Bloquer des chemins spécifiques** : ajoutez une [règle de refus `Read`](/docs/fr/permissions#read-and-edit) pour ces chemins

1830 * **Désactiver l'insertion** : définissez [`CLAUDE_CODE_DISABLE_FILE_MENTIONS=1`](/docs/fr/env-vars#variables) dans votre shell, vos paramètres utilisateur ou vos paramètres gérés. Claude reçoit alors les chemins mentionnés avec une note l'invitant à les lire à l'aide de ses outils de fichiers. S'il le fait, vos hooks PreToolUse correspondants s'exécutent. La variable nécessite Claude Code v2.1.299 ou une version ultérieure, et Claude Code l'ignore dans les paramètres de projet et locaux.

1805</Warning>1831</Warning>

1806 1832 

1807Utilisez le [contrôle de décision de PreToolUse](#pretooluse-decision-control) pour autoriser, refuser, demander ou différer l'appel d'outil.1833Utilisez le [contrôle de décision de PreToolUse](#pretooluse-decision-control) pour autoriser, refuser, demander confirmation ou différer l'appel d'outil.

1808 1834 

1809Un [hook de callback de l'Agent SDK](/docs/fr/agent-sdk/hooks) sur `PreToolUse` qui dépasse son délai d'expiration bloque l'appel d'outil, et Claude reçoit un résultat d'erreur indiquant le délai d'expiration. Un refus explicite renvoyé par un autre hook reste prioritaire.1835Un [hook de callback de l'Agent SDK](/docs/fr/agent-sdk/hooks) sur `PreToolUse` qui dépasse son délai d'expiration bloque l'appel d'outil, et Claude reçoit un résultat d'erreur indiquant le délai d'expiration. Un refus explicite renvoyé par un autre hook reste prioritaire.

1810 1836 


1814 1840 

1815En plus des [champs d'entrée communs](#common-input-fields), les hooks PreToolUse reçoivent `tool_name`, `tool_input` et `tool_use_id`.1841En plus des [champs d'entrée communs](#common-input-fields), les hooks PreToolUse reçoivent `tool_name`, `tool_input` et `tool_use_id`.

1816 1842 

1817Pour un [outil MCP](#match-mcp-tools), l'entrée contient également `mcp_server`, un objet avec le `name` du serveur et une `source` qui indique d'où provient la définition du serveur. Les valeurs de `source` incluent `plugin`, `sdk` et des portées de configuration comme `user` et `project`. [`McpServerProvenance`](/docs/fr/agent-sdk/typescript#mcpserverprovenance) dans la référence de l'Agent SDK les répertorie toutes et explique comment traiter une valeur que vous ne reconnaissez pas. Fondez vos décisions de confiance sur `source` plutôt que sur `name` ou sur le préfixe de nom d'outil `mcp__<server>__`. Le champ `mcp_server` nécessite Claude Code v2.1.274 ou une version ultérieure.1843Pour un [outil MCP](#match-mcp-tools), l'entrée contient également `mcp_server`, un objet comportant le `name` du serveur et une `source` qui indique d'où provient la définition du serveur. Les valeurs de `source` incluent `plugin`, `sdk` et des portées de configuration telles que `user` et `project`. [`McpServerProvenance`](/docs/fr/agent-sdk/typescript#mcpserverprovenance) dans la référence de l'Agent SDK les répertorie toutes et indique comment traiter une valeur que vous ne reconnaissez pas. Fondez vos décisions de confiance sur `source` plutôt que sur `name` ou sur le préfixe de nom d'outil `mcp__<server>__`. Le champ `mcp_server` nécessite Claude Code v2.1.274 ou une version ultérieure.

1818 1844 

1819Pour les outils de fichiers `Write`, `Edit` et `Read`, `tool_input.file_path` est toujours absolu :1845Pour les outils de fichiers `Write`, `Edit` et `Read`, `tool_input.file_path` est toujours absolu :

1820 1846 

1821* Claude Code développe `~` et les chemins relatifs avant l'exécution des hooks ; un hook qui filtre sur les chemins ne peut donc pas être contourné via `~` ou une écriture relative du même chemin1847* Claude Code développe `~` et les chemins relatifs avant l'exécution des hooks ; un hook qui filtre sur les chemins ne peut donc pas être contourné via `~` ou une écriture relative du même chemin

1822* Sous Windows, le chemin arrive avec des barres obliques inverses comme séparateurs, même lorsque votre hook s'exécute sous Git Bash, où `$PWD` ressemble à `/c/project`1848* Sous Windows, le chemin arrive avec des barres obliques inverses comme séparateurs, même lorsque votre hook s'exécute sous Git Bash, où `$PWD` ressemble à `/c/project`

1823* Une comparaison écrite avec des barres obliques, comme une vérification de `/src/`, ne correspond jamais à un chemin avec des barres obliques inverses, et l'appel d'outil se poursuit comme si le hook n'avait rien à bloquer1849* Une comparaison écrite avec des barres obliques, comme une vérification de `/src/`, ne correspond jamais à un chemin avec des barres obliques inverses, et l'appel d'outil se poursuit comme si le hook n'avait rien à bloquer

1824* Normalisez les séparateurs avant de comparer : `FILE_PATH="${FILE_PATH//\\//}"` en Bash, ou `file_path.replace("\\", "/")` en Python, puis faites correspondre un segment de chemin comme `/src/` plutôt que d'ancrer avec `^`, puisque le chemin est absolu1850* Normalisez les séparateurs avant de comparer : `FILE_PATH="${FILE_PATH//\\//}"` en Bash, ou `file_path.replace("\\", "/")` en Python, puis faites correspondre un segment de chemin tel que `/src/` plutôt que d'ancrer avec `^`, puisque le chemin est absolu

1825 1851 

1826Un appel `Write` sous Windows transmet :1852Un appel `Write` sous Windows transmet :

1827 1853 


1859Votre [hook PostToolUse](#posttooluse) reçoit alors les fichiers modifiés dans `tool_response.bashEditDiff`. La liste couvre ce qui a changé dans le dépôt pendant l'exécution de la commande. Les fichiers ignorés par Git et les fichiers des sous-modules ne sont pas répertoriés. Nécessite Claude Code v2.1.269 ou une version ultérieure.1885Votre [hook PostToolUse](#posttooluse) reçoit alors les fichiers modifiés dans `tool_response.bashEditDiff`. La liste couvre ce qui a changé dans le dépôt pendant l'exécution de la commande. Les fichiers ignorés par Git et les fichiers des sous-modules ne sont pas répertoriés. Nécessite Claude Code v2.1.269 ou une version ultérieure.

1860 1886 

1861<Note>1887<Note>

1862 La liste est établie au mieux et est en bêta publique. Claude Code peut manquer une modification, inclure un fichier qu'un autre processus a modifié au même moment, ou s'arrêter à ses limites de taille. La structure du champ peut changer. Utilisez la liste pour identifier ce qu'il faut examiner, et non pour appliquer une politique.1888 La liste est établie au mieux et est en bêta publique. Claude Code peut manquer une modification, inclure un fichier qu'un autre processus a modifié au même moment, ou s'arrêter à ses limites de taille. La structure du champ peut changer. Utilisez la liste pour savoir quoi examiner, pas pour appliquer une politique.

1863</Note>1889</Note>

1864 1890 

1865`changedFiles` et `files` répertorient ce que la commande a modifié ; les autres champs indiquent dans quelle mesure cette liste est complète et fiable.1891`changedFiles` et `files` répertorient ce que la commande a modifié ; les autres champs indiquent dans quelle mesure cette liste est complète et fiable.

1866 1892 

1867| Champ | Type | Exemple | Description |1893| Champ | Type | Exemple | Description |

1868| :- | :- | :- | :- |1894| :- | :- | :- | :- |

1869| `changedFiles` | array | `["/path/to/src/app.ts"]` | Chemins absolus des fichiers modifiés par la commande, 200 au maximum. Présent chaque fois que `files` contient un diff ou que `moreFiles` est supérieur à zéro |1895| `changedFiles` | array | `["/path/to/src/app.ts"]` | Chemins absolus des fichiers modifiés par la commande, 200 au maximum. Présent dès que `files` contient un diff ou que `moreFiles` est supérieur à zéro |

1870| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | Diffs d'au plus 5 fichiers modifiés, pour l'affichage. `created` ou `deleted` vaut `true` pour un fichier que la commande a ajouté ou supprimé |1896| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | Diffs d'au plus 5 fichiers modifiés, destinés à l'affichage. `created` ou `deleted` vaut `true` pour un fichier que la commande a ajouté ou supprimé |

1871| `moreFiles` | number | `2` | Nombre de fichiers modifiés sans diff dans `files` |1897| `moreFiles` | number | `2` | Nombre de fichiers modifiés sans diff dans `files` |

1872| `unavailable` | boolean | `true` | Défini lorsque le diff est incomplet ou n'a pas pu être obtenu |1898| `unavailable` | boolean | `true` | Défini lorsque le diff est incomplet ou n'a pas pu être obtenu |

1873| `skipped` | boolean | `true` | Défini pour une commande Git qui déplace l'arbre de travail, comme `git checkout` ou `git stash` ; Claude Code ne calcule alors aucun diff |1899| `skipped` | boolean | `true` | Défini pour une commande Git qui déplace l'arbre de travail, telle que `git checkout` ou `git stash`, de sorte que Claude Code ne calcule aucun diff |

1874| `shared` | boolean | `true` | Défini lorsqu'un autre appel de l'outil Bash, comme celui d'un sous-agent, s'est exécuté dans le même dépôt au même moment ; certaines modifications répertoriées peuvent donc provenir de cette commande |1900| `shared` | boolean | `true` | Défini lorsqu'un autre appel de l'outil Bash, comme celui d'un sous-agent, s'est exécuté dans le même dépôt au même moment ; certaines modifications répertoriées peuvent donc provenir de cette commande |

1875 1901 

1876<a id="powershell" />1902<a id="powershell" />


1881 1907 

1882Exécute des commandes PowerShell. Consultez l'[outil PowerShell](/docs/fr/tools-reference#powershell-tool) pour connaître sa disponibilité selon la plateforme.1908Exécute des commandes PowerShell. Consultez l'[outil PowerShell](/docs/fr/tools-reference#powershell-tool) pour connaître sa disponibilité selon la plateforme.

1883 1909 

1884Les champs correspondent à ceux de l'outil Bash, avec la chaîne de commande dans `command` :1910Les champs sont les mêmes que pour l'outil Bash, avec la chaîne de commande dans `command` :

1885 1911 

1886| Champ | Type | Exemple | Description |1912| Champ | Type | Exemple | Description |

1887| :- | :- | :- | :- |1913| :- | :- | :- | :- |


1936 Glob1962 Glob

1937</h5>1963</h5>

1938 1964 

1939Trouve les fichiers correspondant à un motif glob.1965Recherche les fichiers correspondant à un motif glob.

1940 1966 

1941| Champ | Type | Exemple | Description |1967| Champ | Type | Exemple | Description |

1942| :- | :- | :- | :- |1968| :- | :- | :- | :- |


1947 Grep1973 Grep

1948</h5>1974</h5>

1949 1975 

1950Recherche dans le contenu des fichiers avec des expressions régulières.1976Recherche dans le contenu des fichiers à l'aide d'expressions régulières.

1951 1977 

1952| Champ | Type | Exemple | Description |1978| Champ | Type | Exemple | Description |

1953| :- | :- | :- | :- |1979| :- | :- | :- | :- |


1966 1992 

1967| Champ | Type | Exemple | Description |1993| Champ | Type | Exemple | Description |

1968| :- | :- | :- | :- |1994| :- | :- | :- | :- |

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

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

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

1972 1998 

1973<h5 id="websearch">1999<h5 id="websearch">

1974 WebSearch2000 WebSearch


1979| Champ | Type | Exemple | Description |2005| Champ | Type | Exemple | Description |

1980| :- | :- | :- | :- |2006| :- | :- | :- | :- |

1981| `query` | string | `"react hooks best practices"` | Requête de recherche |2007| `query` | string | `"react hooks best practices"` | Requête de recherche |

1982| `allowed_domains` | array | `["docs.example.com"]` | Facultatif : n'inclure que les résultats de ces domaines |2008| `allowed_domains` | array | `["docs.example.com"]` | Facultatif : inclure uniquement les résultats de ces domaines |

1983| `blocked_domains` | array | `["spam.example.com"]` | Facultatif : exclure les résultats de ces domaines |2009| `blocked_domains` | array | `["spam.example.com"]` | Facultatif : exclure les résultats de ces domaines |

1984 2010 

1985<h5 id="agent">2011<h5 id="agent">


1993| `prompt` | string | `"Find all API endpoints"` | La tâche que l'agent doit effectuer |2019| `prompt` | string | `"Find all API endpoints"` | La tâche que l'agent doit effectuer |

1994| `description` | string | `"Find API endpoints"` | Brève description de la tâche |2020| `description` | string | `"Find API endpoints"` | Brève description de la tâche |

1995| `subagent_type` | string | `"Explore"` | Type d'agent spécialisé à utiliser |2021| `subagent_type` | string | `"Explore"` | Type d'agent spécialisé à utiliser |

1996| `model` | string | `"sonnet"` | Alias de modèle facultatif pour remplacer celui par défaut |2022| `model` | string | `"sonnet"` | Alias de modèle facultatif pour remplacer le modèle par défaut |

1997 2023 

1998Lorsqu'un appel Agent au premier plan se termine, votre [hook PostToolUse](#posttooluse) reçoit le résultat du sous-agent et la télémétrie de l'exécution dans `tool_response`. Lisez ces champs pour inspecter l'exécution ; pour des cumuls de tokens et de coûts sur l'ensemble des sous-agents, utilisez les [compteurs de tokens et de coûts](/docs/fr/monitoring-usage#token-counter) filtrés sur `query_source` `"subagent"`, car `totalTokens` et `usage` ne couvrent que la requête finale :2024Lorsqu'un appel Agent au premier plan se termine, votre [hook PostToolUse](#posttooluse) reçoit le résultat du sous-agent et la télémétrie de l'exécution dans `tool_response`. Lisez ces champs pour examiner l'exécution ; pour des totaux de tokens et de coûts sur l'ensemble des sous-agents, utilisez les [compteurs de tokens et de coûts](/docs/fr/monitoring-usage#token-counter) filtrés sur `query_source` `"subagent"`, car `totalTokens` et `usage` ne couvrent que la requête finale :

1999 2025 

2000| Champ | Type | Exemple | Description |2026| Champ | Type | Exemple | Description |

2001| :- | :- | :- | :- |2027| :- | :- | :- | :- |

2002| `status` | string | `"completed"` | `"completed"` pour les sous-agents au premier plan, `"async_launched"` pour les sous-agents en arrière-plan. Les sous-agents s'exécutent en arrière-plan par défaut ; un appel Agent qui omet `run_in_background` produit donc également `"async_launched"` |2028| `status` | string | `"completed"` | `"completed"` pour les sous-agents au premier plan, `"async_launched"` pour les sous-agents en arrière-plan. Les sous-agents s'exécutent en arrière-plan par défaut : un appel Agent qui omet `run_in_background` produit donc également `"async_launched"` |

2003| `agentId` | string | `"a4d2c8f1e0b3a297"` | Identifiant de l'exécution du sous-agent |2029| `agentId` | string | `"a4d2c8f1e0b3a297"` | Identifiant de l'exécution du sous-agent |

2004| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Les blocs de texte finaux du sous-agent ou, pour un sous-agent dont le rapport passe par `SubagentHandback`, une brève note sur cette transmission à leur place |2030| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Les blocs de texte finaux du sous-agent ou, pour un sous-agent dont le rapport passe par `SubagentHandback`, une brève note sur cette transmission à leur place |

2005| `resolvedModel` | string | `"claude-sonnet-4-5"` | Modèle sur lequel le sous-agent a démarré, qui peut différer du modèle demandé |2031| `resolvedModel` | string | `"claude-sonnet-4-5"` | Modèle sur lequel le sous-agent a démarré, qui peut différer du modèle demandé |


2009| `totalToolUseCount` | number | `7` | Nombre d'appels d'outils effectués par le sous-agent |2035| `totalToolUseCount` | number | `7` | Nombre d'appels d'outils effectués par le sous-agent |

2010| `usage` | object | `{"input_tokens": 8320, ...}` | Répartition par type des tokens de la requête API finale : `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens` |2036| `usage` | object | `{"input_tokens": 8320, ...}` | Répartition par type des tokens de la requête API finale : `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens` |

2011 2037 

2012Sur Claude Code v2.1.271 ou une version ultérieure, un sous-agent qui s'exécute avec l'outil [`SubagentHandback`](/docs/fr/tools-reference), que Claude Code fournit en [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), transmet son rapport via cet outil plutôt que de le renvoyer sous forme de texte. Le champ `content` de son résultat `completed` contient alors une brève note sur cette transmission plutôt que le rapport lui-même. Pour lire le rapport, faites correspondre un hook `PreToolUse` ou `PostToolUse` à `SubagentHandback` et lisez `tool_input.message`.2038Dans Claude Code v2.1.271 ou une version ultérieure, un sous-agent qui s'exécute avec l'outil [`SubagentHandback`](/docs/fr/tools-reference), que Claude Code fournit en [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), transmet son rapport via cet outil plutôt que de le renvoyer sous forme de texte. Le champ `content` de son résultat `completed` contient alors une brève note sur cette transmission plutôt que le rapport lui-même. Pour lire le rapport, faites correspondre un hook `PreToolUse` ou `PostToolUse` à `SubagentHandback` et lisez `tool_input.message`.

2013 2039 

2014Pour les sous-agents en arrière-plan, l'outil renvoie son résultat lorsque la tâche passe en arrière-plan ; `tool_response` ne contient donc aucun champ d'utilisation : un lancement en arrière-plan renvoie immédiatement, et une tâche au premier plan que Claude Code passe en arrière-plan en cours d'exécution renvoie au moment de cette transition. Il contient `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile` et `resolvedModel`.2040Pour les sous-agents en arrière-plan, l'outil rend la main lorsque la tâche passe en arrière-plan ; `tool_response` ne contient donc aucun champ d'utilisation : un lancement en arrière-plan rend la main immédiatement, et une tâche au premier plan que Claude Code passe en arrière-plan en cours d'exécution rend la main lors de cette transition. Il contient `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile` et `resolvedModel`.

2015 2041 

2016Dans une réponse `completed`, `resolvedModel` indique le modèle sur lequel le sous-agent a démarré, qui peut différer de la valeur `model` de `tool_input`, par exemple lorsque `availableModels` ou un autre remplacement s'applique. Dans une réponse `async_launched`, `resolvedModel` indique le modèle utilisé au moment où l'agent est passé en arrière-plan ; un changement survenu avant le passage en arrière-plan y est donc reflété. `modelsUsed` et le comportement de `resolvedModel` au moment du passage en arrière-plan nécessitent Claude Code v2.1.212 ou une version ultérieure.2042Dans une réponse `completed`, `resolvedModel` indique le modèle sur lequel le sous-agent a démarré, qui peut différer de la valeur `model` de `tool_input`, par exemple lorsque `availableModels` ou un autre remplacement s'applique. Dans une réponse `async_launched`, `resolvedModel` indique le modèle utilisé au moment où l'agent est passé en arrière-plan ; un changement survenu avant le passage en arrière-plan y est donc reflété. `modelsUsed` et le comportement de `resolvedModel` au moment du passage en arrière-plan nécessitent Claude Code v2.1.212 ou une version ultérieure.

2017 2043 


2026| Champ | Type | Exemple | Description |2052| Champ | Type | Exemple | Description |

2027| :- | :- | :- | :- |2053| :- | :- | :- | :- |

2028| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React", "description": "Component library"}, {"label": "Vue", "description": "Progressive framework"}], "multiSelect": false}]` | Questions à présenter, chacune avec une chaîne `question`, un `header` court, un tableau `options` et un flag `multiSelect` facultatif |2054| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React", "description": "Component library"}, {"label": "Vue", "description": "Progressive framework"}], "multiSelect": false}]` | Questions à présenter, chacune avec une chaîne `question`, un `header` court, un tableau `options` et un flag `multiSelect` facultatif |

2029| `answers` | object | `{"Which framework?": "React"}` | Facultatif. Associe le texte de la question au libellé de l'option sélectionnée. Les réponses à sélection multiple joignent les libellés par des virgules. Claude ne définit pas ce champ ; fournissez-le via `updatedInput` pour répondre de manière programmatique |2055| `answers` | object | `{"Which framework?": "React"}` | Facultatif. Associe le texte de chaque question au libellé de l'option sélectionnée. Les réponses à sélection multiple joignent les libellés par des virgules. Claude ne définit pas ce champ ; fournissez-le via `updatedInput` pour répondre par programmation |

2030 2056 

2031<h5 id="exitplanmode">2057<h5 id="exitplanmode">

2032 ExitPlanMode2058 ExitPlanMode


2036 2062 

2037| Champ | Type | Exemple | Description |2063| Champ | Type | Exemple | Description |

2038| :- | :- | :- | :- |2064| :- | :- | :- | :- |

2039| `plan` | string | `"## Refactor auth\n1. Extract..."` | Contenu du plan en Markdown. Injecté à partir du fichier de plan sur le disque |2065| `plan` | string | `"## Refactor auth\n1. Extract..."` | Contenu du plan en Markdown. Injecté depuis le fichier de plan sur le disque |

2040| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Chemin du fichier de plan. Injecté |2066| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Chemin du fichier de plan. Injecté |

2041| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Déprécié. Claude Code accepte le champ mais l'ignore. Avant la v2.1.205, il contenait les permissions basées sur des prompts que Claude demandait pour mettre en œuvre le plan |2067| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Déprécié. Claude Code accepte le champ mais l'ignore. Avant la v2.1.205, il contenait les permissions basées sur des prompts que Claude demandait pour mettre en œuvre le plan |

2042 2068 

2043Dans `PostToolUse`, `tool_response` est un objet avec des champs `plan` et `filePath` contenant le plan approuvé, ainsi que des flags d'état internes. Lisez `tool_response.plan` pour obtenir le contenu du plan plutôt que de relire le fichier sur le disque.2069Dans `PostToolUse`, `tool_response` est un objet comportant les champs `plan` et `filePath` qui contiennent le plan approuvé, ainsi que des indicateurs d'état internes. Lisez `tool_response.plan` pour obtenir le contenu du plan plutôt que de relire le fichier sur le disque.

2044 2070 

2045<h4 id="pretooluse-decision-control">2071<h4 id="pretooluse-decision-control">

2046 Contrôle de décision de PreToolUse2072 Contrôle de décision de PreToolUse

2047</h4>2073</h4>

2048 2074 

2049Les hooks `PreToolUse` peuvent contrôler si un appel d'outil se poursuit. Contrairement aux autres hooks qui utilisent un champ `decision` de premier niveau, PreToolUse renvoie sa décision dans un objet `hookSpecificOutput`. Cela lui donne un contrôle plus riche : quatre issues possibles (autoriser, refuser, demander ou différer) ainsi que la possibilité de modifier l'entrée de l'outil avant l'exécution.2075Les hooks `PreToolUse` peuvent contrôler si un appel d'outil se poursuit. Contrairement aux autres hooks qui utilisent un champ `decision` de premier niveau, PreToolUse renvoie sa décision dans un objet `hookSpecificOutput`. Cela lui offre un contrôle plus riche : quatre issues (autoriser, refuser, demander ou différer) ainsi que la possibilité de modifier l'entrée de l'outil avant l'exécution.

2050 2076 

2051| Champ | Description |2077| Champ | Description |

2052| :- | :- |2078| :- | :- |

2053| `permissionDecision` | `"allow"` ignore la demande de permission, sauf pour les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves), pour les [lectures depuis des chemins réseau](/docs/fr/permissions#network-paths), et pour `AskUserQuestion` et `ExitPlanMode`, qui nécessitent d'y [associer `updatedInput`](#allow-with-updatedinput). `"deny"` empêche l'appel d'outil. `"ask"` demande à l'utilisateur de confirmer. `"defer"` se termine proprement afin que l'outil puisse être repris plus tard. Les [règles de refus et de demande](/docs/fr/permissions#manage-permissions) sont toujours évaluées, quoi que renvoie le hook |2079| `permissionDecision` | `"allow"` ignore la demande de permission, sauf pour les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves), pour les [lectures depuis des chemins réseau](/docs/fr/permissions#network-paths), et pour `AskUserQuestion` et `ExitPlanMode`, qui nécessitent d'y [associer `updatedInput`](#allow-with-updatedinput). `"deny"` empêche l'appel d'outil. `"ask"` demande confirmation à l'utilisateur. `"defer"` sort proprement afin que l'outil puisse être repris ultérieurement. Les [règles de refus et de demande](/docs/fr/permissions#manage-permissions) sont toujours évaluées, quoi que renvoie le hook |

2054| `permissionDecisionReason` | Pour `"ask"`, affiché à l'utilisateur dans la demande de permission. Lorsque Claude Code [refuse l'appel](/docs/fr/headless#turn-off-permission-prompts-in-unattended-runs) dans une exécution `-p` où personne ne peut répondre à cette demande, Claude lit plutôt la raison dans le résultat de l'outil. Pour `"deny"`, affiché à Claude. Pour `"allow"` et `"defer"`, écrit uniquement dans le [log de débogage](#debug-hooks) |2080| `permissionDecisionReason` | Pour `"ask"`, affiché à l'utilisateur dans la demande de permission. Lorsque Claude Code [refuse l'appel](/docs/fr/headless#turn-off-permission-prompts-in-unattended-runs) lors d'une exécution `-p` où personne ne peut répondre à cette demande, Claude lit plutôt la raison dans le résultat de l'outil. Pour `"deny"`, affiché à Claude. Pour `"allow"` et `"defer"`, écrit uniquement dans le [log de débogage](#debug-hooks) |

2055| `updatedInput` | Modifie les paramètres d'entrée de l'outil avant l'exécution. Remplace l'intégralité de l'objet d'entrée ; incluez donc les champs inchangés avec ceux modifiés. Claude Code évalue les règles de permission et l'[éligibilité au passage automatique en arrière-plan](/docs/fr/tools-reference#foreground-commands-that-move-to-the-background) d'une commande Bash par rapport à l'entrée renvoyée par votre hook, et non à l'entrée envoyée par Claude. Combinez-le avec `"allow"` pour approuver automatiquement, ou avec `"ask"` pour montrer l'entrée modifiée à l'utilisateur. Ignoré pour `"defer"` |2081| `updatedInput` | Modifie les paramètres d'entrée de l'outil avant l'exécution. Remplace l'intégralité de l'objet d'entrée : incluez donc les champs inchangés en plus des champs modifiés. Claude Code évalue les règles de permission et l'[éligibilité au passage automatique en arrière-plan](/docs/fr/tools-reference#foreground-commands-that-move-to-the-background) d'une commande Bash par rapport à l'entrée renvoyée par votre hook, et non à celle envoyée par Claude. Combinez-le avec `"allow"` pour approuver automatiquement, ou avec `"ask"` pour montrer l'entrée modifiée à l'utilisateur. Ignoré pour `"defer"` |

2056| `additionalContext` | Chaîne ajoutée au contexte de Claude avec le résultat de l'outil. Ignorée lorsque `permissionDecision` vaut `"defer"`. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) |2082| `additionalContext` | Chaîne ajoutée au contexte de Claude en plus du résultat de l'outil. Ignorée lorsque `permissionDecision` vaut `"defer"`. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) |

2057 2083 

2058Lorsque plusieurs hooks PreToolUse renvoient des décisions différentes, l'ordre de priorité est `deny` > `defer` > `ask` > `allow`.2084Lorsque plusieurs hooks PreToolUse renvoient des décisions différentes, l'ordre de priorité est `deny` > `defer` > `ask` > `allow`.

2059 2085 

2060Un hook qui bloque en se terminant avec le code 2 est traité de la même manière que `"deny"` : Claude voit le message stderr comme raison du refus.2086Un hook qui bloque en se terminant avec le code 2 suit le même acheminement que `"deny"` : Claude voit le message stderr comme raison du refus.

2061 2087 

2062Lorsqu'un hook renvoie `"ask"`, la demande de permission affichée à l'utilisateur comprend une étiquette identifiant l'origine du hook : `[settings]` pour un hook provenant d'un fichier de paramètres ou du frontmatter d'un agent, `[plugin:<name>]` pour le hook d'un plugin, ou `[skill]` pour un hook provenant du frontmatter d'un skill. Cela aide les utilisateurs à comprendre quelle source de configuration demande la confirmation.2088Lorsqu'un hook renvoie `"ask"`, la demande de permission affichée à l'utilisateur comprend une étiquette indiquant l'origine du hook : `[settings]` pour un hook provenant d'un fichier de paramètres ou du frontmatter d'un agent, `[plugin:<name>]` pour le hook d'un plugin, ou `[skill]` pour un hook provenant du frontmatter d'un skill. Cela aide les utilisateurs à comprendre quelle source de configuration demande la confirmation.

2063 2089 

2064Un `"ask"` de hook force également une demande de permission en [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) : le classifieur peut toujours refuser l'appel d'outil, mais il ne peut pas approuver l'appel silencieusement. Avant la v2.1.211, le classifieur pouvait approuver une commande Bash s'exécutant en dehors du [sandbox](/docs/fr/sandboxing) sans afficher la demande requise par le hook ; le classifieur appliquait tout de même ses propres règles de sécurité à cette commande, et un `"deny"` de hook était toujours respecté.2090Le `"ask"` d'un hook force également une demande de permission en [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) : le classifieur peut toujours refuser l'appel d'outil, mais il ne peut pas l'approuver silencieusement. Avant la v2.1.211, le classifieur pouvait approuver une commande Bash s'exécutant en dehors du [sandbox](/docs/fr/sandboxing) sans afficher la demande requise par le hook ; le classifieur appliquait néanmoins ses propres règles de sécurité à cette commande, et un `"deny"` de hook était toujours respecté.

2065 2091 

2066```json theme={null}2092```json theme={null}

2067{2093{


2078```2104```

2079 2105 

2080<Note>2106<Note>

2081 PreToolUse utilisait auparavant des champs `decision` et `reason` de premier niveau, mais ceux-ci sont dépréciés pour cet événement. Utilisez plutôt `hookSpecificOutput.permissionDecision` et `hookSpecificOutput.permissionDecisionReason`. Les valeurs dépréciées `"approve"` et `"block"` correspondent respectivement à `"allow"` et `"deny"`. D'autres événements comme PostToolUse et Stop continuent d'utiliser `decision` et `reason` de premier niveau comme format actuel.2107 PreToolUse utilisait auparavant les champs `decision` et `reason` de premier niveau, mais ceux-ci sont dépréciés pour cet événement. Utilisez plutôt `hookSpecificOutput.permissionDecision` et `hookSpecificOutput.permissionDecisionReason`. Les valeurs dépréciées `"approve"` et `"block"` correspondent respectivement à `"allow"` et `"deny"`. D'autres événements comme PostToolUse et Stop continuent d'utiliser `decision` et `reason` de premier niveau comme format actuel.

2082</Note>2108</Note>

2083 2109 

2084<h4 id="allow-with-updatedinput">2110<h4 id="allow-with-updatedinput">

2085 Outils nécessitant une interaction de l'utilisateur2111 Outils nécessitant une interaction utilisateur

2086</h4>2112</h4>

2087 2113 

2088`AskUserQuestion` et `ExitPlanMode` nécessitent une interaction de l'utilisateur. En [mode non interactif](/docs/fr/headless) avec le flag `-p`, Claude Code ne les propose que lorsque l'exécution dispose d'un [hôte de permissions](/docs/fr/headless#turn-off-permission-prompts-in-unattended-runs) pour recevoir la demande, comme un callback `canUseTool` de l'Agent SDK.2114`AskUserQuestion` et `ExitPlanMode` nécessitent une interaction utilisateur. En [mode non interactif](/docs/fr/headless) avec le flag `-p`, Claude Code ne les propose que lorsque l'exécution dispose d'un [hôte de permissions](/docs/fr/headless#turn-off-permission-prompts-in-unattended-runs) pour recevoir la demande, comme un callback `canUseTool` de l'Agent SDK.

2089 2115 

2090Un hook `PreToolUse` satisfait cette exigence lorsqu'il effectue les opérations suivantes :2116Un hook `PreToolUse` satisfait cette exigence lorsqu'il effectue les opérations suivantes :

2091 2117 

20921. Lit l'entrée de l'outil depuis stdin21181. Il lit l'entrée de l'outil depuis stdin

20932. Recueille la réponse via votre propre interface utilisateur21192. Il recueille la réponse via votre propre interface utilisateur

20943. Renvoie `permissionDecision: "allow"` accompagné d'un `updatedInput` contenant la réponse, afin que l'outil s'exécute sans demande21203. Il renvoie `permissionDecision: "allow"` accompagné d'un `updatedInput` contenant la réponse, afin que l'outil s'exécute sans demande

2095 2121 

2096Renvoyer `"allow"` seul ne suffit pas pour ces outils.2122Renvoyer `"allow"` seul ne suffit pas pour ces outils.

2097 2123 


2117}2143}

2118```2144```

2119 2145 

2120Un outil MCP que son serveur marque avec [`_meta["anthropic/requiresUserInteraction"]`](/docs/fr/mcp#require-approval-for-a-specific-tool) est plus strict : un hook ne peut pas ignorer sa demande d'approbation avec `"allow"`, avec ou sans `updatedInput`, car Claude Code ne peut pas confirmer que le hook a recueilli l'interaction dont l'outil a besoin.2146Un outil MCP que son serveur marque avec [`_meta["anthropic/requiresUserInteraction"]`](/docs/fr/mcp#require-approval-for-a-specific-tool) est plus strict : un hook ne peut pas ignorer sa demande d'approbation avec `"allow"`, avec ou sans `updatedInput`, car Claude Code ne peut pas vérifier que le hook a recueilli l'interaction dont l'outil a besoin.

2121 2147 

2122<h4 id="defer-a-tool-call-for-later">2148<h4 id="defer-a-tool-call-for-later">

2123 Différer un appel d'outil2149 Différer un appel d'outil

2124</h4>2150</h4>

2125 2151 

2126`"defer"` est destiné aux intégrations qui exécutent `claude -p` en tant que sous-processus et lisent sa sortie JSON, comme une application Agent SDK ou une interface utilisateur personnalisée construite au-dessus de Claude Code. Il permet à ce processus appelant de mettre Claude en pause au niveau d'un appel d'outil, de recueillir une saisie via sa propre interface, puis de reprendre là où il s'était arrêté. Claude Code ne respecte cette valeur qu'en [mode non interactif](/docs/fr/headless) avec le flag `-p`. Dans les sessions interactives, il journalise un avertissement et ignore le résultat du hook.2152`"defer"` est destiné aux intégrations qui exécutent `claude -p` en tant que sous-processus et lisent sa sortie JSON, comme une application Agent SDK ou une interface utilisateur personnalisée construite sur Claude Code. Il permet à ce processus appelant de mettre Claude en pause lors d'un appel d'outil, de recueillir une saisie via sa propre interface et de reprendre là où il s'était arrêté. Claude Code ne respecte cette valeur qu'en [mode non interactif](/docs/fr/headless) avec le flag `-p`. Dans les sessions interactives, il consigne un avertissement et ignore le résultat du hook.

2127 2153 

2128L'outil `AskUserQuestion` est le cas typique : Claude veut poser une question à l'utilisateur, mais il n'y a aucun terminal où répondre. Une exécution `-p` ne propose `AskUserQuestion` que lorsqu'elle dispose d'un [hôte de permissions](/docs/fr/headless#turn-off-permission-prompts-in-unattended-runs), comme un outil MCP que vous transmettez avec `--permission-prompt-tool` ; démarrez donc l'exécution avec l'un d'eux. L'aller-retour fonctionne comme suit :2154L'outil `AskUserQuestion` en est le cas typique : Claude veut poser une question à l'utilisateur, mais aucun terminal ne permet d'y répondre. Une exécution `-p` ne propose `AskUserQuestion` que lorsqu'elle dispose d'un [hôte de permissions](/docs/fr/headless#turn-off-permission-prompts-in-unattended-runs), comme un outil MCP que vous transmettez avec `--permission-prompt-tool` : démarrez donc l'exécution avec l'un d'eux. L'aller-retour fonctionne ainsi :

2129 2155 

21301. Claude appelle `AskUserQuestion`. Le hook `PreToolUse` se déclenche.21561. Claude appelle `AskUserQuestion`. Le hook `PreToolUse` se déclenche.

21312. Le hook renvoie `permissionDecision: "defer"`. L'outil ne s'exécute pas. Le processus se termine avec `stop_reason: "tool_deferred"` et l'appel d'outil en attente est conservé dans la transcription.21572. Le hook renvoie `permissionDecision: "defer"`. L'outil ne s'exécute pas. Le processus se termine avec `stop_reason: "tool_deferred"` et l'appel d'outil en attente est conservé dans la transcription.

21323. Le processus appelant lit `deferred_tool_use` dans le résultat du SDK, présente la question dans sa propre interface utilisateur et attend une réponse.21583. Le processus appelant lit `deferred_tool_use` dans le résultat du SDK, affiche la question dans sa propre interface utilisateur et attend une réponse.

21334. Le processus appelant exécute `claude -p --resume <session-id>` avec le même hôte de permissions. Le même appel d'outil déclenche à nouveau `PreToolUse`.21594. Le processus appelant exécute `claude -p --resume <session-id>` avec le même hôte de permissions. Le même appel d'outil déclenche à nouveau `PreToolUse`.

21345. Le hook renvoie `permissionDecision: "allow"` avec la réponse dans `updatedInput`. L'outil s'exécute et Claude poursuit.21605. Le hook renvoie `permissionDecision: "allow"` avec la réponse dans `updatedInput`. L'outil s'exécute et Claude continue.

2135 2161 

2136Le champ `deferred_tool_use` contient l'`id`, le `name` et l'`input` de l'outil. L'`input` correspond aux paramètres que Claude a générés pour l'appel d'outil, capturés avant l'exécution :2162Le champ `deferred_tool_use` contient l'`id`, le `name` et l'`input` de l'outil. L'`input` correspond aux paramètres que Claude a générés pour l'appel d'outil, capturés avant l'exécution :

2137 2163 


2149}2175}

2150```2176```

2151 2177 

2152Il n'existe ni délai d'expiration ni limite de nouvelles tentatives. La session reste sur le disque jusqu'à ce que vous la repreniez, sous réserve du nettoyage de rétention [`cleanupPeriodDays`](/docs/fr/settings-reference#cleanupperioddays), qui supprime les fichiers de session après 30 jours par défaut, conformément aux [règles du nettoyage de rétention](/docs/fr/claude-directory#cleaned-up-automatically). Si la réponse n'est pas prête au moment de la reprise, le hook peut renvoyer `"defer"` à nouveau et le processus se termine de la même manière. Le processus appelant décide quand sortir de la boucle en renvoyant finalement `"allow"` ou `"deny"` depuis le hook.2178Il n'y a ni délai d'expiration ni limite de nouvelles tentatives. La session reste sur le disque jusqu'à ce que vous la repreniez, sous réserve du nettoyage de rétention [`cleanupPeriodDays`](/docs/fr/settings-reference#cleanupperioddays), qui supprime les fichiers de session après 30 jours par défaut, selon les [règles du nettoyage de rétention](/docs/fr/claude-directory#cleaned-up-automatically). Si la réponse n'est pas prête lorsque vous reprenez la session, le hook peut renvoyer à nouveau `"defer"` et le processus se termine de la même manière. Le processus appelant décide quand sortir de la boucle en renvoyant finalement `"allow"` ou `"deny"` depuis le hook.

2153 2179 

2154`"defer"` ne fonctionne que lorsque Claude effectue un seul appel d'outil dans le tour. Si Claude effectue plusieurs appels d'outils à la fois, `"defer"` est ignoré avec un avertissement et l'outil suit le flux de permission normal. Cette contrainte existe parce que la reprise ne peut réexécuter qu'un seul outil : il n'existe aucun moyen de différer un appel d'un lot sans laisser les autres non résolus.2180`"defer"` ne fonctionne que lorsque Claude effectue un seul appel d'outil dans le tour. Si Claude effectue plusieurs appels d'outils à la fois, `"defer"` est ignoré avec un avertissement et l'outil suit le flux de permission normal. Cette contrainte existe parce que la reprise ne peut réexécuter qu'un seul outil : il n'existe aucun moyen de différer un appel d'un lot sans laisser les autres non résolus.

2155 2181 

2156Si l'outil différé n'est plus disponible au moment de la reprise, le processus se termine avec `stop_reason: "tool_deferred_unavailable"` et `is_error: true` avant que le hook ne se déclenche. Cela se produit lorsqu'un serveur MCP qui fournissait l'outil n'est pas connecté pour la session reprise. Le payload `deferred_tool_use` est tout de même inclus afin que vous puissiez identifier l'outil manquant.2182Si l'outil différé n'est plus disponible lors de la reprise, le processus se termine avec `stop_reason: "tool_deferred_unavailable"` et `is_error: true` avant que le hook ne se déclenche. Cela se produit lorsqu'un serveur MCP qui fournissait l'outil n'est pas connecté pour la session reprise. Le payload `deferred_tool_use` est tout de même inclus afin que vous puissiez identifier l'outil manquant.

2157 2183 

2158<Note>2184<Note>

2159 Pour reprendre une session différée en mode plan, passez [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags) avec `--resume` afin que Claude Code puisse présenter le plan pour approbation. Pour les autres conditions, consultez [Reprendre en mode plan avec `-p`](/docs/fr/sessions#resume-in-plan-mode-with-p). Nécessite Claude Code v2.1.246 ou version ultérieure.2185 Pour reprendre une session différée en mode plan, transmettez [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags) avec `--resume` afin que Claude Code puisse présenter le plan pour approbation. Pour les autres conditions, consultez [Reprendre en mode plan avec `-p`](/docs/fr/sessions#resume-in-plan-mode-with-p). Nécessite Claude Code v2.1.246 ou une version ultérieure.

2160 2186 

2161 Lorsque vous reprenez avec `-p`, Claude Code ne restaure aucun autre mode de permission enregistré. Il démarre l'exécution dans le mode de permission dans lequel démarrerait une nouvelle exécution `claude -p` ; transmettez donc à nouveau `--permission-mode` ou `--dangerously-skip-permissions` si la session différée en utilisait un. Lorsque vous reprenez avec `claude --resume <session-id>` sans `-p`, Claude Code restaure le mode de permission enregistré, à l'exception des cas répertoriés dans [mode de permission lors de la reprise](/docs/fr/sessions#permission-mode-on-resume).2187 Lorsque vous reprenez avec `-p`, Claude Code ne restaure aucun autre mode de permission enregistré. Il démarre l'exécution dans le mode de permission dans lequel démarrerait une nouvelle exécution `claude -p` : transmettez donc à nouveau `--permission-mode` ou `--dangerously-skip-permissions` si la session différée en utilisait un. Lorsque vous reprenez avec `claude --resume <session-id>` sans `-p`, Claude Code restaure le mode de permission enregistré, avec les exceptions répertoriées dans [Mode de permission lors de la reprise](/docs/fr/sessions#permission-mode-on-resume).

2162</Note>2188</Note>

2163 2189 

2164<h3 id="permissionrequest">2190<h3 id="permissionrequest">


2168S'exécute lorsque Claude Code est sur le point de vous demander la permission d'utiliser un outil. Dans les sessions qui ne peuvent pas afficher de demande, comme les sous-agents en arrière-plan en [mode non interactif](/docs/fr/headless), Claude Code exécute tout de même ces hooks et, si aucun hook ne renvoie de décision, il refuse l'appel d'outil. Pour un appel qui atteint un `--permission-prompt-tool` ou le [callback `canUseTool`](/docs/fr/agent-sdk/permissions) de l'Agent SDK, les hooks s'exécutent en parallèle de votre hôte, et c'est la première décision prise qui s'applique.2194S'exécute lorsque Claude Code est sur le point de vous demander la permission d'utiliser un outil. Dans les sessions qui ne peuvent pas afficher de demande, comme les sous-agents en arrière-plan en [mode non interactif](/docs/fr/headless), Claude Code exécute tout de même ces hooks et, si aucun hook ne renvoie de décision, il refuse l'appel d'outil. Pour un appel qui atteint un `--permission-prompt-tool` ou le [callback `canUseTool`](/docs/fr/agent-sdk/permissions) de l'Agent SDK, les hooks s'exécutent en parallèle de votre hôte, et c'est la première décision prise qui s'applique.

2169Utilisez le [contrôle de décision de PermissionRequest](#permissionrequest-decision-control) pour autoriser ou refuser au nom de l'utilisateur.2195Utilisez le [contrôle de décision de PermissionRequest](#permissionrequest-decision-control) pour autoriser ou refuser au nom de l'utilisateur.

2170 2196 

2171Utilisez cet événement lorsque vous avez besoin d'un signal dès que Claude demande la permission d'utiliser un outil. Claude Code n'exécute un hook [Notification](#notification) de type `permission_prompt` qu'après que la demande a attendu environ six secondes.2197Utilisez cet événement lorsque vous avez besoin d'un signal au moment même où Claude demande la permission d'utiliser un outil. Claude Code n'exécute un hook [Notification](#notification) avec le type `permission_prompt` qu'après que la demande a attendu environ six secondes.

2172 2198 

2173Claude Code n'exécute pas les hooks PermissionRequest pour la [requête réseau](/docs/fr/sandboxing#network-isolation) d'une commande exécutée dans le sandbox. Pour obtenir un signal pour cette demande, utilisez le type de notification `permission_prompt`.2199Claude Code n'exécute pas les hooks PermissionRequest pour la [requête réseau](/docs/fr/sandboxing#network-isolation) d'une commande exécutée dans un sandbox. Pour obtenir un signal pour cette demande, utilisez le type de notification `permission_prompt`.

2174 2200 

2175Le matcher s'applique au nom de l'outil, avec les mêmes valeurs que PreToolUse.2201Le matcher s'applique au nom de l'outil, avec les mêmes valeurs que pour PreToolUse.

2176 2202 

2177<h4 id="permissionrequest-input">2203<h4 id="permissionrequest-input">

2178 Entrée de PermissionRequest2204 Entrée PermissionRequest

2179</h4>2205</h4>

2180 2206 

2181Les hooks PermissionRequest reçoivent les champs `tool_name` et `tool_input` comme les hooks PreToolUse, mais sans `tool_use_id`. Pour un outil MCP, ils reçoivent également l'objet [`mcp_server`](#pretooluse-input). Un tableau facultatif `permission_suggestions` contient les [mises à jour de permissions](#permission-update-entries) que Claude Code suggère pour cette demande, comme l'ajout d'une règle d'autorisation ou le changement du mode de permission.2207Les hooks PermissionRequest reçoivent les champs `tool_name` et `tool_input` comme les hooks PreToolUse, mais sans `tool_use_id`. Pour un outil MCP, ils reçoivent également l'objet [`mcp_server`](#pretooluse-input). Un tableau `permission_suggestions` facultatif contient les [mises à jour de permissions](#permission-update-entries) que Claude Code suggère pour cette demande, comme l'ajout d'une règle d'autorisation ou le changement du mode de permission.

2182 2208 

2183Le tableau `permission_suggestions` n'est pas une liste exacte des options que vous voyez, car chaque boîte de dialogue de permission construit ses propres options. Certaines boîtes de dialogue, comme celle des modifications de fichiers, ne lisent pas du tout le tableau et dérivent leurs options de la demande elle-même. Une boîte de dialogue qui le lit peut tout de même masquer une option dont la suggestion reste dans le tableau, par exemple lorsque [`allowManagedPermissionRulesOnly`](/docs/fr/settings-reference#allowmanagedpermissionrulesonly) masque les options d'enregistrement de règles. Elle peut également proposer des options sans entrée de suggestion, comme [**Yes, and switch to auto mode**](/docs/fr/permission-modes#switch-permission-modes), qui change directement le mode de permission plutôt que via une mise à jour de permissions.2209Le tableau `permission_suggestions` n'est pas une liste exacte des options que vous voyez, car chaque boîte de dialogue de permission construit ses propres options. Certaines boîtes de dialogue, comme celle des modifications de fichiers, ne lisent pas du tout le tableau et déduisent leurs options de la demande elle-même. Une boîte de dialogue qui le lit peut tout de même masquer une option dont la suggestion reste dans le tableau, par exemple lorsque [`allowManagedPermissionRulesOnly`](/docs/fr/settings-reference#allowmanagedpermissionrulesonly) masque les options d'enregistrement de règles. Elle peut aussi proposer des options sans entrée de suggestion correspondante, comme [**Yes, and switch to auto mode**](/docs/fr/permission-modes#switch-permission-modes), qui change directement le mode de permission plutôt que de passer par une mise à jour de permissions.

2184 2210 

2185Les hooks PreToolUse s'exécutent avant chaque appel d'outil, qu'il nécessite une permission ou non. Les hooks PermissionRequest ne s'exécutent que lorsque Claude Code est sur le point de vous demander la permission, ou lorsqu'il refuserait sinon automatiquement un appel qui ne peut pas afficher de demande. Aucun de ces événements ne se déclenche pour [`EndConversation`](/docs/fr/tools-reference#endconversation-tool-behavior).2211Les hooks PreToolUse s'exécutent avant chaque appel d'outil, qu'il nécessite ou non une permission. Les hooks PermissionRequest ne s'exécutent que lorsque Claude Code s'apprête à vous demander une permission, ou lorsqu'il refuserait sinon automatiquement un appel qui ne peut pas afficher de demande. Aucun de ces événements ne se déclenche pour [`EndConversation`](/docs/fr/tools-reference#endconversation-tool-behavior).

2186 2212 

2187```json theme={null}2213```json theme={null}

2188{2214{


2208```2234```

2209 2235 

2210<h4 id="permissionrequest-decision-control">2236<h4 id="permissionrequest-decision-control">

2211 Contrôle de décision de PermissionRequest2237 Contrôle de décision PermissionRequest

2212</h4>2238</h4>

2213 2239 

2214Les hooks `PermissionRequest` peuvent autoriser ou refuser les demandes de permission. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, votre script de hook peut renvoyer un objet `decision` avec ces champs propres à l'événement :2240Les hooks `PermissionRequest` peuvent autoriser ou refuser les demandes de permission. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, votre script de hook peut renvoyer un objet `decision` avec ces champs propres à l'événement :

2215 2241 

2216| Champ | Description |2242| Champ | Description |

2217| :- | :- |2243| :- | :- |

2218| `behavior` | `"allow"` accorde la permission, `"deny"` la refuse. Les [règles de refus et de demande](/docs/fr/permissions#manage-permissions) sont toujours évaluées ; un hook qui renvoie `"allow"` ne remplace donc pas une règle de refus correspondante |2244| `behavior` | `"allow"` accorde la permission, `"deny"` la refuse. Les [règles de refus et de demande](/docs/fr/permissions#manage-permissions) sont toujours évaluées, donc un hook renvoyant `"allow"` ne remplace pas une règle de refus correspondante |

2219| `updatedInput` | Pour `"allow"` uniquement : modifie les paramètres d'entrée de l'outil avant l'exécution. Remplace l'intégralité de l'objet d'entrée ; incluez donc les champs inchangés avec ceux modifiés. L'entrée modifiée est réévaluée par rapport aux règles de refus et de demande |2245| `updatedInput` | Pour `"allow"` uniquement : modifie les paramètres d'entrée de l'outil avant l'exécution. Remplace l'objet d'entrée entier, incluez donc les champs inchangés avec les champs modifiés. L'entrée modifiée est réévaluée par rapport aux règles de refus et de demande |

2220| `updatedPermissions` | Pour `"allow"` uniquement : tableau d'[entrées de mise à jour de permissions](#permission-update-entries) à appliquer, comme l'ajout d'une règle d'autorisation ou le changement du mode de permission de la session |2246| `updatedPermissions` | Pour `"allow"` uniquement : tableau d'[entrées de mise à jour de permissions](#permission-update-entries) à appliquer, comme l'ajout d'une règle d'autorisation ou le changement du mode de permission de la session |

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

2222| `interrupt` | Pour `"deny"` uniquement : si `true`, arrête Claude |2248| `interrupt` | Pour `"deny"` uniquement : si `true`, arrête Claude |

2223 2249 

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

2225 2251 

2226```json theme={null}2252```json theme={null}

2227{2253{


2238```2264```

2239 2265 

2240<h4 id="permission-update-entries">2266<h4 id="permission-update-entries">

2241 Entrées de mise à jour des permissions2267 Entrées de mise à jour de permissions

2242</h4>2268</h4>

2243 2269 

2244Le champ de sortie `updatedPermissions` et le [champ d'entrée `permission_suggestions`](#permissionrequest-input) utilisent tous deux le même tableau d'objets d'entrée. Chaque entrée possède un `type` qui détermine ses autres champs, ainsi qu'une `destination` qui contrôle l'emplacement où la modification est écrite.2270Le champ de sortie `updatedPermissions` et le [champ d'entrée `permission_suggestions`](#permissionrequest-input) utilisent tous deux le même tableau d'objets d'entrée. Chaque entrée possède un `type` qui détermine ses autres champs, et une `destination` qui contrôle l'endroit où la modification est écrite.

2245 2271 

2246| `type` | Champs | Effet |2272| `type` | Champs | Effet |

2247| :- | :- | :- |2273| :- | :- | :- |

2248| `addRules` | `rules`, `behavior`, `destination` | Ajoute des règles de permission. `rules` est un tableau d'objets `{toolName, ruleContent?}`. Omettez `ruleContent` pour correspondre à l'outil entier. `behavior` vaut `"allow"`, `"deny"` ou `"ask"` |2274| `addRules` | `rules`, `behavior`, `destination` | Ajoute des règles de permission. `rules` est un tableau d'objets `{toolName, ruleContent?}`. Omettez `ruleContent` pour correspondre à l'outil entier. `behavior` vaut `"allow"`, `"deny"` ou `"ask"` |

2249| `replaceRules` | `rules`, `behavior`, `destination` | Remplace toutes les règles du `behavior` donné à la `destination` par les `rules` fournies |2275| `replaceRules` | `rules`, `behavior`, `destination` | Remplace toutes les règles du `behavior` donné à la `destination` par les `rules` fournies |

2250| `removeRules` | `rules`, `behavior`, `destination` | Supprime les règles correspondantes du `behavior` donné |2276| `removeRules` | `rules`, `behavior`, `destination` | Supprime les règles correspondantes du `behavior` donné |

2251| `setMode` | `mode`, `destination` | Modifie le mode de permission. Les modes valides sont `default`, `auto`, `acceptEdits`, `dontAsk`, `bypassPermissions`, `plan`, ainsi que `manual` comme alias de `default` |2277| `setMode` | `mode`, `destination` | Change le mode de permission. Les modes valides sont `default`, `auto`, `acceptEdits`, `dontAsk`, `bypassPermissions`, `plan`, et `manual` comme alias de `default` |

2252| `addDirectories` | `directories`, `destination` | Ajoute des répertoires de travail. `directories` est un tableau de chaînes de chemins |2278| `addDirectories` | `directories`, `destination` | Ajoute des répertoires de travail. `directories` est un tableau de chaînes de chemins |

2253| `removeDirectories` | `directories`, `destination` | Supprime des répertoires de travail |2279| `removeDirectories` | `directories`, `destination` | Supprime des répertoires de travail |

2254 2280 

2255<Note>2281<Note>

2256 `setMode` avec `bypassPermissions` ne prend effet que si vous avez lancé la session avec le mode bypass déjà disponible : `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, ou `permissions.defaultMode: "bypassPermissions"` dans les [paramètres utilisateur, `--settings` ou les paramètres gérés](/docs/fr/settings-reference#permissions-defaultmode). Sinon, la mise à jour n'a aucun effet. La mise à jour n'a également aucun effet lorsque [`permissions.disableBypassPermissionsMode`](/docs/fr/permissions#managed-settings) désactive le mode, ou lorsque la session démarre en [mode restreint](/docs/fr/cli-reference#cli-flags).2282 `setMode` avec `bypassPermissions` ne prend effet que si vous avez lancé la session avec le mode bypass déjà disponible : `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, ou `permissions.defaultMode: "bypassPermissions"` dans les [paramètres utilisateur, `--settings` ou les paramètres gérés](/docs/fr/settings-reference#permissions-defaultmode). Sinon, la mise à jour n'a aucun effet. La mise à jour n'a également aucun effet lorsque [`permissions.disableBypassPermissionsMode`](/docs/fr/permissions#managed-settings) désactive le mode, ou lorsque la session démarre en [mode restreint](/docs/fr/cli-reference#cli-flags).

2257 2283 

2258 `bypassPermissions` n'est jamais persisté comme `defaultMode`, quelle que soit la `destination`.2284 `bypassPermissions` n'est jamais conservé comme `defaultMode`, quelle que soit la `destination`.

2259</Note>2285</Note>

2260 2286 

2261Le champ `destination` de chaque entrée détermine si la modification reste en mémoire ou est persistée dans un fichier de paramètres.2287Le champ `destination` de chaque entrée détermine si la modification reste en mémoire ou est conservée dans un fichier de paramètres.

2262 2288 

2263| `destination` | Écrit dans |2289| `destination` | Écrit dans |

2264| :- | :- |2290| :- | :- |


2273 PostToolUse2299 PostToolUse

2274</h3>2300</h3>

2275 2301 

2276S'exécute immédiatement après qu'un outil s'est terminé avec succès.2302S'exécute immédiatement après la réussite d'un outil.

2277 2303 

2278Correspond au nom de l'outil, avec les mêmes valeurs que PreToolUse.2304Correspond au nom de l'outil, avec les mêmes valeurs que PreToolUse.

2279 2305 

2280Utilisez une correspondance plus large lorsque le nom de l'outil n'est pas le bon filtre :2306Utilisez une correspondance plus large lorsque le nom de l'outil n'est pas le bon filtre :

2281 2307 

2282* Pour exécuter un hook après la réussite de n'importe quel outil, omettez le `matcher` ou définissez-le sur `"*"`. Votre hook peut alors découvrir lui-même ce qui a changé, par exemple en exécutant `git status --porcelain`, qui liste également les fichiers non suivis que `git diff` ne voit pas. Pour les appels d'outils qui échouent, ajoutez le même hook sous [PostToolUseFailure](#posttoolusefailure).2308* Pour exécuter un hook après la réussite de n'importe quel outil, omettez le `matcher` ou définissez-le sur `"*"`. Votre hook peut alors découvrir lui-même ce qui a changé, par exemple en exécutant `git status --porcelain`, qui liste également les fichiers non suivis que `git diff` ignore. Pour les appels d'outils qui échouent, ajoutez le même hook sous [PostToolUseFailure](#posttoolusefailure).

2283* Pour exécuter un hook lorsqu'un fichier spécifique change sur le disque, quel que soit ce qui l'a écrit, utilisez [FileChanged](#filechanged). Claude Code n'exécute pas un hook `PostToolUse` correspondant à `Edit|Write` lorsqu'une commande `Bash` ou un processus extérieur à Claude Code réécrit le même fichier.2309* Pour exécuter un hook lorsqu'un fichier spécifique change sur le disque, quel que soit ce qui l'a écrit, utilisez [FileChanged](#filechanged). Claude Code n'exécute pas un hook `PostToolUse` correspondant à `Edit|Write` lorsqu'une commande `Bash` ou un processus extérieur à Claude Code réécrit le même fichier.

2284 2310 

2285<h4 id="posttooluse-input">2311<h4 id="posttooluse-input">


2317 Contrôle de décision PostToolUse2343 Contrôle de décision PostToolUse

2318</h4>2344</h4>

2319 2345 

2320Les hooks `PostToolUse` peuvent fournir un retour à Claude après l'exécution de l'outil. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, votre script de hook peut renvoyer ces champs spécifiques à l'événement :2346Les hooks `PostToolUse` peuvent fournir un retour à Claude après l'exécution de l'outil. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, votre script de hook peut renvoyer ces champs propres à l'événement :

2321 2347 

2322| Champ | Description |2348| Champ | Description |

2323| :- | :- |2349| :- | :- |

2324| `decision` | `"block"` ajoute la `reason` à côté du résultat de l'outil. Claude voit toujours la sortie d'origine ; pour la remplacer, utilisez `updatedToolOutput` |2350| `decision` | `"block"` ajoute la `reason` à côté du résultat de l'outil. Claude voit toujours la sortie d'origine ; pour la remplacer, utilisez `updatedToolOutput` |

2325| `reason` | Explication affichée à Claude lorsque `decision` vaut `"block"` |2351| `reason` | Explication montrée à Claude lorsque `decision` vaut `"block"` |

2326| `additionalContext` | Chaîne ajoutée au contexte de Claude avec le résultat de l'outil. Voir [Ajouter du contexte pour Claude](#add-context-for-claude) |2352| `additionalContext` | Chaîne ajoutée au contexte de Claude avec le résultat de l'outil. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) |

2327| `classifierContext` | Courte note sur le résultat de cet appel, destinée au classifieur du [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) plutôt qu'à Claude. Voir [Annoter un résultat pour le classifieur du mode auto](#annotate-a-result-for-the-auto-mode-classifier). Nécessite Claude Code v2.1.236 ou ultérieur |2353| `classifierContext` | Courte note sur le résultat de cet appel destinée au classifieur du [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) plutôt qu'à Claude. Consultez [Annoter un résultat pour le classifieur du mode auto](#annotate-a-result-for-the-auto-mode-classifier). Nécessite Claude Code v2.1.236 ou une version ultérieure |

2328| `updatedToolOutput` | Remplace la sortie de l'outil par la valeur fournie avant son envoi à Claude. La valeur doit correspondre à la forme de sortie de l'outil |2354| `updatedToolOutput` | Remplace la sortie de l'outil par la valeur fournie avant qu'elle ne soit envoyée à Claude. La valeur doit correspondre à la forme de sortie de l'outil |

2329| `updatedMCPToolOutput` | Remplace la sortie uniquement pour les [outils MCP](#match-mcp-tools). Préférez `updatedToolOutput`, qui fonctionne pour tous les outils |2355| `updatedMCPToolOutput` | Remplace la sortie pour les [outils MCP](#match-mcp-tools) uniquement. Préférez `updatedToolOutput`, qui fonctionne pour tous les outils |

2330 2356 

2331L'exemple ci-dessous remplace la sortie d'un appel `Bash`. La valeur de remplacement correspond à la forme de sortie de l'outil `Bash` :2357L'exemple ci-dessous remplace la sortie d'un appel `Bash`. La valeur de remplacement correspond à la forme de sortie de l'outil `Bash` :

2332 2358 


2346```2372```

2347 2373 

2348<Warning>2374<Warning>

2349 `updatedToolOutput` ne modifie que ce que voit Claude. L'outil s'est déjà exécuté au moment où le hook se déclenche, donc tous les fichiers écrits, commandes exécutées ou requêtes réseau envoyées ont déjà pris effet. La télémétrie, comme les spans d'outils OpenTelemetry et les événements d'analytique, capture également la sortie d'origine avant l'exécution du hook. Pour empêcher ou modifier un appel d'outil avant son exécution, utilisez plutôt un hook [PreToolUse](#pretooluse).2375 `updatedToolOutput` ne modifie que ce que Claude voit. L'outil s'est déjà exécuté au moment où le hook se déclenche, donc tous les fichiers écrits, les commandes exécutées ou les requêtes réseau envoyées ont déjà pris effet. La télémétrie, comme les spans d'outils OpenTelemetry et les événements d'analyse, capture également la sortie d'origine avant l'exécution du hook. Pour empêcher ou modifier un appel d'outil avant son exécution, utilisez plutôt un hook [PreToolUse](#pretooluse).

2350 2376 

2351 La valeur de remplacement doit correspondre à la forme de sortie de l'outil. Les outils intégrés renvoient des objets structurés plutôt que de simples chaînes. Par exemple, `Bash` renvoie un objet avec les champs `stdout`, `stderr`, `interrupted` et `isImage`. Pour les outils intégrés, une valeur qui ne correspond pas au schéma de sortie de l'outil est ignorée et la sortie d'origine est utilisée. La sortie des outils MCP est transmise sans validation de schéma. Supprimer des détails d'erreur dont Claude a besoin peut l'amener à poursuivre sur une hypothèse erronée.2377 La valeur de remplacement doit correspondre à la forme de sortie de l'outil. Les outils intégrés renvoient des objets structurés plutôt que de simples chaînes. Par exemple, `Bash` renvoie un objet avec les champs `stdout`, `stderr`, `interrupted` et `isImage`. Pour les outils intégrés, une valeur qui ne correspond pas au schéma de sortie de l'outil est ignorée et la sortie d'origine est utilisée. La sortie des outils MCP est transmise sans validation de schéma. Supprimer des détails d'erreur dont Claude a besoin peut l'amener à poursuivre sur une hypothèse erronée.

2352</Warning>2378</Warning>


2355 Annoter un résultat pour le classifieur du mode auto2381 Annoter un résultat pour le classifieur du mode auto

2356</h4>2382</h4>

2357 2383 

2358Renvoyez `classifierContext` pour envoyer une courte note sur le résultat de l'appel d'outil au classifieur du [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) plutôt qu'à Claude. Le classifieur [ne reçoit jamais les résultats des outils eux-mêmes](/docs/fr/permission-modes#how-the-classifier-evaluates-actions) ; ce champ est donc le moyen pris en charge de lui indiquer quelque chose sur ce qu'un appel a renvoyé avant qu'il n'examine les actions suivantes. Le champ nécessite Claude Code v2.1.236 ou ultérieur.2384Renvoyez `classifierContext` pour envoyer une courte note sur le résultat de l'appel d'outil au classifieur du [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) plutôt qu'à Claude. Le classifieur [ne reçoit jamais les résultats des outils eux-mêmes](/docs/fr/permission-modes#how-the-classifier-evaluates-actions), ce champ est donc le moyen pris en charge pour lui indiquer quelque chose sur ce qu'un appel a renvoyé avant qu'il n'examine les actions suivantes. Ce champ nécessite Claude Code v2.1.236 ou une version ultérieure.

2359 2385 

2360L'exemple ci-dessous indique au classifieur d'où provient la sortie d'une requête :2386L'exemple ci-dessous indique au classifieur d'où provient la sortie d'une requête :

2361 2387 


2370 2396 

2371Le poids que le classifieur accorde à la note dépend de l'endroit où vous avez configuré le hook :2397Le poids que le classifieur accorde à la note dépend de l'endroit où vous avez configuré le hook :

2372 2398 

2373* **Hooks configurés dans Claude Code** : pour les hooks issus des fichiers de paramètres, des plugins, des skills et du frontmatter des agents, le classifieur traite la note comme un contexte non vérifié fourni par l'application. La note n'établit jamais l'intention de l'utilisateur, et si elle affirme que vous avez approuvé ou demandé quelque chose, le classifieur vérifie cette affirmation par rapport à vos propres messages dans la conversation2399* **Hooks configurés dans Claude Code** : pour les hooks provenant de fichiers de paramètres, de plugins, de skills et du frontmatter d'agents, le classifieur traite la note comme un contexte non vérifié fourni par l'application. La note n'établit jamais l'intention de l'utilisateur, et si elle affirme que vous avez approuvé ou demandé quelque chose, le classifieur vérifie cette affirmation par rapport à vos propres messages dans la conversation

2374* **Callbacks in-process de l'Agent SDK** : lorsqu'une application intégrant Claude Code enregistre le hook comme [callback du SDK TypeScript](/docs/fr/agent-sdk/hooks) et renvoie la note pendant la session en cours, le classifieur peut considérer une déclaration de l'utilisateur relayée dans la note comme une intention de l'utilisateur. Une telle déclaration peut satisfaire une exigence de consentement que le classifieur accepterait d'un message que vous envoyez, mais elle ne lève jamais un blocage que votre propre message ne pourrait pas lever non plus. Après la reprise d'une session, Claude Code traite les notes restaurées comme un contexte non vérifié. Lorsque des hooks des deux groupes annotent le même appel, le classifieur traite la note combinée comme non vérifiée2400* **Callbacks Agent SDK en processus** : lorsqu'une application intégrant Claude Code enregistre le hook en tant que [callback du SDK TypeScript](/docs/fr/agent-sdk/hooks) et renvoie la note pendant la session active, le classifieur peut considérer une déclaration de l'utilisateur relayée dans la note comme une intention de l'utilisateur. Une telle déclaration peut satisfaire une exigence de consentement que le classifieur accepterait d'un message que vous envoyez, mais elle ne lève jamais un blocage que votre propre message ne pourrait pas lever non plus. Après la reprise d'une session, Claude Code traite les notes restaurées comme un contexte non vérifié. Lorsque des hooks des deux groupes annotent le même appel, le classifieur traite la note combinée comme non vérifiée

2375 2401 

2376Claude Code applique ces limites lors de la transmission de la note :2402Claude Code applique ces limites lors de la transmission de la note :

2377 2403 

2378* **Longueur** : Claude Code plafonne les notes d'un même appel d'outil à 2 000 caractères et tronque le reste. Ce plafond est partagé entre tous les hooks qui répondent à cet appel2404* **Longueur** : Claude Code plafonne les notes d'un appel d'outil à 2 000 caractères et tronque le reste. Le plafond est partagé entre tous les hooks qui répondent à cet appel

2379* **Réponses synchrones uniquement** : Claude Code ignore le champ dans la réponse d'un hook qui [s'exécute en arrière-plan](#run-hooks-in-the-background), car cette réponse arrive après que Claude Code a enregistré le résultat de l'outil2405* **Réponses synchrones uniquement** : Claude Code ignore le champ dans la réponse d'un hook qui [s'exécute en arrière-plan](#run-hooks-in-the-background), car cette réponse arrive après que Claude Code a enregistré le résultat de l'outil

2380* **Appels que le classifieur n'enregistre pas** : la transcription du classifieur omet les consultations en lecture seule, comme les lectures de fichiers et les recherches. Claude Code supprime une note attachée à l'un de ces appels2406* **Appels que le classifieur n'enregistre pas** : la transcription du classifieur omet les consultations en lecture seule, comme les lectures de fichiers et les recherches. Claude Code ignore une note attachée à l'un de ces appels

2381* **Interaction avec les réécritures** : lorsque la note décrit une sortie que vous remplacez par `updatedToolOutput`, renvoyez les deux champs dans la même réponse de hook. Claude Code abandonne la note si cette réécriture est rejetée ou si la réécriture d'un autre hook la remplace. Claude Code transmet une note que vous renvoyez sans réécriture même lorsqu'un autre hook réécrit la sortie2407* **Interaction avec les réécritures** : lorsque la note décrit une sortie que vous remplacez avec `updatedToolOutput`, renvoyez les deux champs dans la même réponse de hook. Claude Code abandonne la note si cette réécriture est rejetée ou si la réécriture d'un autre hook la remplace. Claude Code transmet une note que vous renvoyez sans réécriture même lorsqu'un autre hook réécrit la sortie

2382 2408 

2383<Warning>2409<Warning>

2384 Le classifieur lit le contenu que vous placez dans `classifierContext` comme une information provenant de l'application qui héberge la session ; n'y copiez donc pas de sortie d'outil non fiable ni de texte tiers. Limitez la note à une courte assertion sur cet appel précis, comme un fait concernant son origine ou une déclaration de l'utilisateur à son sujet ; n'utilisez pas ce champ pour transmettre des messages sans rapport ou un flux d'événements.2410 Le classifieur lit le contenu que vous placez dans `classifierContext` comme une information provenant de l'application qui héberge la session, ne copiez donc pas de sortie d'outil non fiable ou de texte tiers dans ce champ. Limitez la note à une courte affirmation sur cet unique appel, comme un fait sur son origine ou une déclaration de l'utilisateur à son sujet ; n'utilisez pas ce champ pour transmettre des messages sans rapport ou un flux d'événements.

2385</Warning>2411</Warning>

2386 2412 

2387<h3 id="posttoolusefailure">2413<h3 id="posttoolusefailure">

2388 PostToolUseFailure2414 PostToolUseFailure

2389</h3>2415</h3>

2390 2416 

2391S'exécute lorsqu'un outil dont l'exécution a commencé échoue : l'outil a levé une erreur, ou un outil MCP a renvoyé un résultat d'erreur. Utilisez-le pour journaliser les échecs, envoyer des alertes ou fournir un retour correctif à Claude.2417S'exécute lorsqu'un outil qui a commencé à s'exécuter échoue : l'outil a levé une erreur, ou un outil MCP a renvoyé un résultat d'erreur. Utilisez-le pour journaliser les échecs, envoyer des alertes ou fournir un retour correctif à Claude.

2392 2418 

2393Correspond au nom de l'outil, avec les mêmes valeurs que PreToolUse.2419Correspond au nom de l'outil, avec les mêmes valeurs que PreToolUse.

2394 2420 

2395<Note>2421<Note>

2396 Cet événement ne se déclenche pas pour les appels d'outils rejetés avant l'exécution : un nom d'outil inconnu, une entrée qui échoue à la validation de schéma ou à la validation propre à l'outil, ou un refus de permission. Les rejets de validation sont renvoyés sous forme de résultats `tool_use_error` et surviennent avant l'exécution des hooks ; ils ne déclenchent donc ni `PreToolUse` ni `PostToolUseFailure`. Les refus de permission déclenchent `PreToolUse` mais pas cet événement ; voir [PermissionDenied](#permissiondenied).2422 Cet événement ne se déclenche pas pour les appels d'outils rejetés avant l'exécution : un nom d'outil inconnu, une entrée qui échoue à la validation du schéma ou à la validation propre à l'outil, ou un refus de permission. Les rejets de validation sont renvoyés sous forme de résultats `tool_use_error` et se produisent avant l'exécution des hooks, ils ne déclenchent donc ni `PreToolUse` ni `PostToolUseFailure`. Les refus de permission déclenchent `PreToolUse` mais pas cet événement ; consultez [PermissionDenied](#permissiondenied).

2397</Note>2423</Note>

2398 2424 

2399<h4 id="posttoolusefailure-input">2425<h4 id="posttoolusefailure-input">

2400 Entrée PostToolUseFailure2426 Entrée PostToolUseFailure

2401</h4>2427</h4>

2402 2428 

2403Les hooks PostToolUseFailure reçoivent les mêmes champs `tool_name` et `tool_input` que PostToolUse, ainsi que des informations d'erreur sous forme de champs de premier niveau. Pour un outil MCP, ils reçoivent également l'objet [`mcp_server`](#pretooluse-input). Par exemple, une commande `npm test` en échec pourrait fournir :2429Les hooks PostToolUseFailure reçoivent les mêmes champs `tool_name` et `tool_input` que PostToolUse, ainsi que des informations d'erreur sous forme de champs de premier niveau. Pour un outil MCP, ils reçoivent également l'objet [`mcp_server`](#pretooluse-input). Par exemple, une commande `npm test` en échec pourrait transmettre :

2404 2430 

2405```json theme={null}2431```json theme={null}

2406{2432{


2429 2455 

2430La chaîne `error` est généralement le même texte que Claude reçoit comme résultat de l'outil en échec. Son format varie selon l'outil et l'échec. Basez votre hook sur `tool_name`, `is_interrupt` et la première ligne `Exit code N` ; traitez le reste de la chaîne comme du texte d'affichage, et non comme un format stable.2456La chaîne `error` est généralement le même texte que Claude reçoit comme résultat de l'outil en échec. Son format varie selon l'outil et l'échec. Basez votre hook sur `tool_name`, `is_interrupt` et la première ligne `Exit code N` ; traitez le reste de la chaîne comme du texte d'affichage, et non comme un format stable.

2431 2457 

2432* Pour Bash et PowerShell, une commande qui s'est exécutée et terminée produit une première ligne `Exit code N`, suivie de toute sortie produite par la commande sous forme d'un seul bloc où stdout et stderr sont entrelacés2458* Pour Bash et PowerShell, une commande qui s'est exécutée et terminée produit une première ligne `Exit code N`, puis toute sortie produite par la commande sous la forme d'un seul bloc où stdout et stderr sont entrelacés

2433* Un payload peut aussi contenir un simple message d'échec sans ligne de code de sortie, lorsque Claude Code n'a pas pu démarrer le processus shell lui-même2459* Un payload peut aussi contenir un simple message d'échec sans ligne de code de sortie, lorsque Claude Code n'a pas pu démarrer le processus shell lui-même

2434* Claude Code tronque les longues chaînes en leur milieu autour d'un marqueur `... [N characters truncated] ...`, et peut insérer ses propres lignes, comme `Command timed out after 2m 0s`2460* Claude Code tronque les longues chaînes en leur milieu autour d'un marqueur `... [N characters truncated] ...`, et peut insérer ses propres lignes, comme `Command timed out after 2m 0s`

2435 2461 


2437 Contrôle de décision PostToolUseFailure2463 Contrôle de décision PostToolUseFailure

2438</h4>2464</h4>

2439 2465 

2440Les hooks `PostToolUseFailure` peuvent fournir du contexte à Claude après l'échec d'un outil. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, votre script de hook peut renvoyer ces champs spécifiques à l'événement :2466Les hooks `PostToolUseFailure` peuvent fournir du contexte à Claude après l'échec d'un outil. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, votre script de hook peut renvoyer ces champs propres à l'événement :

2441 2467 

2442| Champ | Description |2468| Champ | Description |

2443| :- | :- |2469| :- | :- |

2444| `additionalContext` | Chaîne ajoutée au contexte de Claude avec l'erreur. Voir [Ajouter du contexte pour Claude](#add-context-for-claude) |2470| `additionalContext` | Chaîne ajoutée au contexte de Claude avec l'erreur. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) |

2445 2471 

2446```json theme={null}2472```json theme={null}

2447{2473{


2456 PostToolBatch2482 PostToolBatch

2457</h3>2483</h3>

2458 2484 

2459S'exécute une fois après la résolution de chaque appel d'outil d'un lot, avant que Claude Code n'envoie la requête suivante au modèle. `PostToolUse` se déclenche une fois par outil, ce qui signifie qu'il se déclenche de manière concurrente lorsque Claude effectue des appels d'outils en parallèle. `PostToolBatch` se déclenche exactement une fois avec le lot complet ; c'est donc le bon endroit pour injecter du contexte qui dépend de l'ensemble des outils exécutés plutôt que d'un outil en particulier. Il n'y a pas de matcher pour cet événement.2485S'exécute une fois après la résolution de tous les appels d'outils d'un lot, avant que Claude Code n'envoie la requête suivante au modèle. `PostToolUse` se déclenche une fois par outil, ce qui signifie qu'il se déclenche de manière concurrente lorsque Claude effectue des appels d'outils en parallèle. `PostToolBatch` se déclenche exactement une fois avec le lot complet, c'est donc l'endroit idéal pour injecter du contexte qui dépend de l'ensemble des outils exécutés plutôt que d'un outil en particulier. Il n'y a pas de matcher pour cet événement.

2460 2486 

2461<h4 id="posttoolbatch-input">2487<h4 id="posttoolbatch-input">

2462 Entrée PostToolBatch2488 Entrée PostToolBatch


2488}2514}

2489```2515```

2490 2516 

2491`tool_response` contient le même contenu que celui que le modèle reçoit dans le bloc `tool_result` correspondant. La valeur est une chaîne sérialisée ou un tableau de blocs de contenu, exactement tel que l'outil l'a émis. Pour `Read`, cela signifie du texte préfixé par les numéros de ligne plutôt que le contenu brut du fichier. Les réponses peuvent être volumineuses ; analysez donc uniquement les champs dont vous avez besoin.2517`tool_response` contient le même contenu que celui que le modèle reçoit dans le bloc `tool_result` correspondant. La valeur est une chaîne sérialisée ou un tableau de blocs de contenu, exactement tel que l'outil l'a émis. Pour `Read`, cela signifie du texte préfixé par des numéros de ligne plutôt que le contenu brut du fichier. Les réponses peuvent être volumineuses, analysez donc uniquement les champs dont vous avez besoin.

2492 2518 

2493<Note>2519<Note>

2494 La forme de `tool_response` diffère de celle de `PostToolUse`. `PostToolUse` transmet l'objet `Output` structuré de l'outil, comme `{filePath: "...", type: "create"}` pour `Write` ; `PostToolBatch` transmet le contenu `tool_result` sérialisé que voit le modèle.2520 La forme de `tool_response` diffère de celle de `PostToolUse`. `PostToolUse` transmet l'objet `Output` structuré de l'outil, comme `{filePath: "...", type: "create"}` pour `Write` ; `PostToolBatch` transmet le contenu `tool_result` sérialisé que voit le modèle.


2498 Contrôle de décision PostToolBatch2524 Contrôle de décision PostToolBatch

2499</h4>2525</h4>

2500 2526 

2501Les hooks `PostToolBatch` peuvent injecter du contexte pour Claude. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, votre script de hook peut renvoyer ces champs spécifiques à l'événement :2527Les hooks `PostToolBatch` peuvent injecter du contexte pour Claude. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, votre script de hook peut renvoyer ces champs propres à l'événement :

2502 2528 

2503| Champ | Description |2529| Champ | Description |

2504| :- | :- |2530| :- | :- |

2505| `additionalContext` | Chaîne de contexte injectée une fois avant le prochain appel au modèle. Voir [Ajouter du contexte pour Claude](#add-context-for-claude) pour les détails de transmission, ce qu'il faut y mettre et la façon dont les sessions reprises gèrent les valeurs passées |2531| `additionalContext` | Chaîne de contexte injectée une fois avant l'appel suivant au modèle. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) pour les détails de transmission, ce qu'il faut y mettre et la façon dont les sessions reprises gèrent les valeurs passées |

2506 2532 

2507```json theme={null}2533```json theme={null}

2508{2534{


2513}2539}

2514```2540```

2515 2541 

2516Renvoyer `decision: "block"` ou `continue: false` arrête la boucle agentique avant le prochain appel au modèle. Le message de blocage provient de la `reason` ou du `stopReason` JSON, ou de stderr en cas de sortie avec le code 2. Vous le voyez comme un avertissement dans la transcription, et il reste dans la conversation ; Claude le voit donc lorsque la conversation se poursuit.2542Renvoyer `decision: "block"` ou `continue: false` arrête la boucle agentique avant l'appel suivant au modèle. Le message de blocage provient de la `reason` ou du `stopReason` JSON, ou de stderr avec le code de sortie 2. Vous le voyez comme un avertissement dans la transcription, et il reste dans la conversation, donc Claude le voit lorsque la conversation se poursuit.

2517 2543 

2518<h3 id="permissiondenied">2544<h3 id="permissiondenied">

2519 PermissionDenied2545 PermissionDenied


2548 2574 

2549| Champ | Description |2575| Champ | Description |

2550| :- | :- |2576| :- | :- |

2551| `reason` | La raison du refus. Pour un verdict du classifieur, dans la plupart des sessions, elle nomme la règle correspondante entre crochets, comme `[Data Exfiltration]` ; voir [Examiner les refus](/docs/fr/auto-mode-config#review-denials) pour les autres formes. Pour un [refus sans verdict](#permissiondenied-decision-control), elle commence par `Auto mode could not evaluate this action and is blocking it for safety`. Pour un refus dû à l'indisponibilité du modèle classifieur, il s'agit du texte fixe `Classifier unavailable` |2577| `reason` | La raison du refus. Pour un verdict du classifieur, dans la plupart des sessions, elle nomme la règle correspondante entre crochets, comme `[Data Exfiltration]` ; consultez [Examiner les refus](/docs/fr/auto-mode-config#review-denials) pour les autres formes. Pour un [refus sans verdict](#permissiondenied-decision-control), elle commence par `Auto mode could not evaluate this action and is blocking it for safety`. Pour un refus dû à l'indisponibilité du modèle du classifieur, il s'agit du texte fixe `Classifier unavailable` |

2552 2578 

2553<h4 id="permissiondenied-decision-control">2579<h4 id="permissiondenied-decision-control">

2554 Contrôle de décision PermissionDenied2580 Contrôle de décision PermissionDenied


2565}2591}

2566```2592```

2567 2593 

2568Lorsque `retry` vaut `true`, Claude Code ajoute un message à la conversation indiquant au modèle qu'il peut réessayer l'appel d'outil. Claude Code n'annule pas le refus lui-même. Si votre hook ne renvoie pas de JSON, ou renvoie `retry: false`, le refus est maintenu et le modèle reçoit le message de rejet d'origine.2594Lorsque `retry` vaut `true`, Claude Code ajoute à la conversation un message indiquant au modèle qu'il peut réessayer l'appel d'outil. Claude Code n'annule pas le refus lui-même. Si votre hook ne renvoie pas de JSON, ou renvoie `retry: false`, le refus est maintenu et le modèle reçoit le message de rejet d'origine.

2569 2595 

2570Claude Code ignore `retry: true` lorsque le classifieur n'a produit [aucun verdict sur l'action](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action) : sa réponse n'a pas pu être analysée, ou une vérification de sécurité distincte du mode auto a refusé la propre requête du classifieur. Pour ces refus, Claude Code indique déjà au modèle, dans le message de rejet, s'il doit réessayer plus tard ou passer à autre chose.2596Claude Code ignore `retry: true` lorsque le classifieur n'a produit [aucun verdict sur l'action](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action) : sa réponse n'a pas pu être analysée, ou une vérification de sécurité distincte du mode auto a refusé la propre requête du classifieur. Pour ces refus, Claude Code indique déjà au modèle dans le message de rejet s'il doit réessayer plus tard ou passer à autre chose.

2571 2597 

2572<h3 id="notification">2598<h3 id="notification">

2573 Notification2599 Notification


2575 2601 

2576S'exécute lorsque Claude Code envoie des notifications. Correspond au type de notification. Omettez le matcher pour exécuter les hooks pour tous les types de notification.2602S'exécute lorsque Claude Code envoie des notifications. Correspond au type de notification. Omettez le matcher pour exécuter les hooks pour tous les types de notification.

2577 2603 

2578Vous recevez ces événements de hook même lorsque les notifications de bureau sont désactivées : le paramètre `preferredNotifChannel`, y compris `notifications_disabled`, ne modifie que la façon dont vous êtes alerté, et non le fait que votre hook s'exécute.2604Vous recevez ces événements de hook même lorsque les notifications de bureau sont désactivées : le paramètre `preferredNotifChannel`, y compris `notifications_disabled`, ne modifie que la façon dont vous êtes alerté, et non l'exécution de votre hook.

2579 2605 

2580| Matcher | Quand il se déclenche |2606| Matcher | Moment du déclenchement |

2581| :- | :- |2607| :- | :- |

2582| `permission_prompt` | Claude a besoin que vous approuviez une utilisation d'outil ou la [requête réseau](/docs/fr/sandboxing#network-isolation) d'une commande en sandbox, et la demande attend depuis environ six secondes |2608| `permission_prompt` | Claude a besoin que vous approuviez l'utilisation d'un outil ou la [requête réseau](/docs/fr/sandboxing#network-isolation) d'une commande en sandbox, et la demande attend depuis environ six secondes |

2583| `idle_prompt` | Claude a fini de répondre il y a environ 60 secondes et vous n'avez rien tapé depuis |2609| `idle_prompt` | Claude a fini de répondre il y a environ 60 secondes et vous n'avez rien saisi depuis |

2584| `auth_success` | L'authentification est terminée |2610| `auth_success` | L'authentification est terminée |

2585| `elicitation_dialog` | Un serveur MCP ouvre un formulaire d'élicitation et vous n'avez rien tapé depuis environ six secondes |2611| `elicitation_dialog` | Un serveur MCP ouvre un formulaire d'élicitation et vous n'avez rien saisi depuis environ six secondes |

2586| `elicitation_url_dialog` | Un serveur MCP vous demande d'ouvrir une URL dans le navigateur et vous n'avez rien tapé depuis environ six secondes |2612| `elicitation_url_dialog` | Un serveur MCP vous demande d'ouvrir une URL dans le navigateur et vous n'avez rien saisi depuis environ six secondes |

2587| `elicitation_complete` | Un serveur MCP signale qu'une [élicitation en mode URL](#elicitation-input) est terminée |2613| `elicitation_complete` | Un serveur MCP signale qu'une [élicitation en mode URL](#elicitation-input) est terminée |

2588| `elicitation_response` | Une réponse d'élicitation MCP est renvoyée au serveur |2614| `elicitation_response` | Une réponse d'élicitation MCP est renvoyée au serveur |

2589| `agent_needs_input` | Une session en arrière-plan commence à attendre votre saisie alors que la [vue des agents](/docs/fr/agent-view) est ouverte dans un terminal. Se déclenche également lorsqu'une session de terminal vous affiche la [question de configuration du terminal d'un coéquipier d'une équipe d'agents](/docs/fr/agent-teams#choose-a-display-mode) ou l'avis du mode auto concernant les [frais de requêtes du classifieur](/docs/fr/auto-mode-classifier-billing) et que vous n'avez rien tapé depuis environ six secondes |2615| `agent_needs_input` | Une session en arrière-plan commence à attendre votre saisie alors que la [vue des agents](/docs/fr/agent-view) est ouverte dans un terminal. Se déclenche également lorsqu'une session de terminal vous montre la [question de configuration du terminal d'un coéquipier d'une équipe d'agents](/docs/fr/agent-teams#choose-a-display-mode) ou l'avis du mode auto concernant les [frais des requêtes du classifieur](/docs/fr/auto-mode-classifier-billing) et que vous n'avez rien saisi depuis environ six secondes |

2590| `agent_completed` | Une session en arrière-plan se termine ou échoue. Se déclenche uniquement lorsque la [vue des agents](/docs/fr/agent-view) est ouverte dans un terminal |2616| `agent_completed` | Une session en arrière-plan se termine ou échoue. Se déclenche uniquement lorsque la [vue des agents](/docs/fr/agent-view) est ouverte dans un terminal |

2591| `quota_auto_resume_fired` | Claude Code poursuit votre tâche après qu'une limite d'utilisation claude.ai l'a mise en pause : à la réinitialisation, ou plus tôt lorsqu'une action que vous effectuez dans Claude Code pendant l'attente, comme l'ajout de crédits d'utilisation, la mise à niveau de votre forfait ou le changement de modèle, rend à nouveau l'utilisation disponible, avec l'[exception liée au paramètre de modèle](/docs/fr/interactive-mode#wait-for-a-usage-limit-to-reset) |2617| `quota_auto_resume_fired` | Claude Code poursuit votre tâche après qu'une limite d'utilisation de claude.ai l'a mise en pause : lors de la réinitialisation, ou plus tôt lorsqu'une action que vous effectuez dans Claude Code pendant l'attente, comme l'ajout de crédits d'utilisation, la mise à niveau de votre forfait ou le changement de modèle, rend à nouveau l'utilisation disponible, avec l'[exception relative au paramètre de modèle](/docs/fr/interactive-mode#wait-for-a-usage-limit-to-reset) |

2592| `quota_auto_resume_stale` | Une limite d'utilisation claude.ai a été réinitialisée pendant que votre ordinateur était en veille depuis plus d'environ 30 minutes. Claude Code attend que vous appuyiez sur `Enter` au lieu de poursuivre. Après une veille plus courte, il poursuit et déclenche plutôt `quota_auto_resume_fired` |2618| `quota_auto_resume_stale` | Une limite d'utilisation de claude.ai a été réinitialisée alors que votre ordinateur était en veille depuis plus d'environ 30 minutes. Claude Code attend que vous appuyiez sur `Enter` au lieu de continuer. Après une veille plus courte, il continue et déclenche plutôt `quota_auto_resume_fired` |

2593| `quota_auto_resume_disabled` | Claude Code met fin à son attente d'une limite d'utilisation claude.ai sans poursuivre votre tâche : [`autoContinueAtUsageLimit`](/docs/fr/settings-reference#autocontinueatusagelimit) a été désactivé ou la réinitialisation a été repoussée de plus de 24 heures pendant une attente que Claude Code avait lancée de lui-même, la tâche poursuivie a continué d'atteindre la limite, ou la poursuite a été bloquée avant d'atteindre le modèle. Ne se déclenche pas lorsque vous appuyez sur `Esc` ou `Ctrl+C`, ou choisissez **Don't continue automatically** |2619| `quota_auto_resume_disabled` | Claude Code met fin à son attente d'une limite d'utilisation de claude.ai sans poursuivre votre tâche : [`autoContinueAtUsageLimit`](/docs/fr/settings-reference#autocontinueatusagelimit) a été désactivé ou la réinitialisation a été repoussée à plus de 24 heures pendant une attente que Claude Code a lancée de lui-même, la tâche poursuivie a continué d'atteindre la limite, ou la poursuite a été bloquée avant d'atteindre le modèle. Ne se déclenche pas lorsque vous appuyez sur `Esc` ou `Ctrl+C`, ou choisissez **Don't continue automatically** |

2594 2620 

2595Les types `quota_auto_resume_fired`, `quota_auto_resume_stale` et `quota_auto_resume_disabled` nécessitent Claude Code v2.1.234 ou ultérieur.2621Les types `quota_auto_resume_fired`, `quota_auto_resume_stale` et `quota_auto_resume_disabled` nécessitent Claude Code v2.1.234 ou une version ultérieure.

2596 2622 

2597Dans les sessions de terminal, `permission_prompt` pour la requête réseau d'une commande en sandbox nécessite Claude Code v2.1.246 ou ultérieur.2623Dans les sessions de terminal, `permission_prompt` pour la requête réseau d'une commande en sandbox nécessite Claude Code v2.1.246 ou une version ultérieure.

2598 2624 

2599`agent_needs_input` pour la question de configuration du terminal d'un coéquipier nécessite Claude Code v2.1.248 ou ultérieur.2625`agent_needs_input` pour la question de configuration du terminal d'un coéquipier nécessite Claude Code v2.1.248 ou une version ultérieure.

2600 2626 

2601<Note>2627<Note>

2602 Les types `permission_prompt`, `idle_prompt`, `elicitation_dialog` et `elicitation_url_dialog` partagent leur temporisation avec les notifications de bureau ; dans les sessions de terminal, vous ne les voyez donc que lorsque vous semblez être absent du terminal :2628 Les types `permission_prompt`, `idle_prompt`, `elicitation_dialog` et `elicitation_url_dialog` partagent leur temporisation avec les notifications de bureau, donc dans les sessions de terminal, vous ne les voyez que lorsque vous semblez être éloigné du terminal :

2603 2629 

2604 * Attendez-vous à `permission_prompt` une fois que vous n'avez rien tapé depuis environ six secondes. Le minuteur démarre lorsque la demande de permission apparaît, et chaque frappe le reporte. Pour exécuter un hook immédiatement lorsque Claude demande la permission d'utiliser un outil, utilisez plutôt [PermissionRequest](#permissionrequest).2630 * Attendez-vous à `permission_prompt` une fois que vous n'avez rien saisi depuis environ six secondes. Le minuteur démarre lorsque la demande de permission apparaît, et chaque frappe le repousse. Pour exécuter un hook immédiatement lorsque Claude demande la permission d'utiliser un outil, utilisez plutôt [PermissionRequest](#permissionrequest).

2605 * Attendez-vous à `idle_prompt` environ 60 secondes après que Claude a fini de répondre, et uniquement si vous n'avez rien tapé depuis et qu'aucun agent en arrière-plan, comme un [sous-agent](/docs/fr/sub-agents) en arrière-plan, n'est encore en cours d'exécution. Claude Code n'envoie pas `idle_prompt` pendant qu'il attend la réinitialisation d'une limite d'utilisation claude.ai. Lorsque l'attente se termine d'elle-même, l'un des types `quota_auto_resume_*` se déclenche à la place.2631 * Attendez-vous à `idle_prompt` environ 60 secondes après que Claude a fini de répondre, et seulement si vous n'avez rien saisi depuis et qu'aucun agent en arrière-plan, comme un [sous-agent](/docs/fr/sub-agents) en arrière-plan, n'est encore en cours d'exécution. Claude Code n'envoie pas `idle_prompt` pendant qu'il attend la réinitialisation d'une limite d'utilisation de claude.ai. Lorsque l'attente se termine d'elle-même, l'un des types `quota_auto_resume_*` se déclenche à la place.

2606 * Attendez-vous à `elicitation_dialog` pour un formulaire d'élicitation, ou à `elicitation_url_dialog` pour une demande d'URL de navigateur, une fois que vous n'avez rien tapé depuis environ six secondes. Tous deux partagent le même seuil de six secondes que `permission_prompt` : le minuteur démarre lorsque la boîte de dialogue apparaît, et chaque frappe le reporte.2632 * Attendez-vous à `elicitation_dialog` pour un formulaire d'élicitation, ou à `elicitation_url_dialog` pour une demande d'URL dans le navigateur, une fois que vous n'avez rien saisi depuis environ six secondes. Tous deux partagent le même seuil de six secondes que `permission_prompt` : le minuteur démarre lorsque la boîte de dialogue apparaît, et chaque frappe le repousse.

2607 2633 

2608 Une demande de permission ou une élicitation qui arrive alors qu'une autre boîte de dialogue est affichée conserve le même seuil de six secondes, mesuré à partir de l'arrivée de la demande. Sa notification peut vous parvenir alors que la demande attend encore derrière la boîte de dialogue ouverte.2634 Une demande de permission ou une élicitation qui arrive alors qu'une autre boîte de dialogue est affichée conserve le même seuil de six secondes, calculé à partir de l'arrivée de la demande. Sa notification peut vous parvenir alors que la demande attend encore derrière la boîte de dialogue ouverte.

2609</Note>2635</Note>

2610 2636 

2611Claude Code temporise `permission_prompt` différemment dans les sessions où il envoie les demandes de permission au [callback `canUseTool`](/docs/fr/agent-sdk/user-input) de l'Agent SDK, ce qui correspond à la façon dont Claude Desktop et l'extension VS Code hébergent Claude Code :2637Claude Code temporise `permission_prompt` différemment dans les sessions où il envoie les demandes de permission au [callback `canUseTool`](/docs/fr/agent-sdk/user-input) de l'Agent SDK, c'est-à-dire la façon dont Claude Desktop et l'extension VS Code hébergent Claude Code :

2612 2638 

2613* Attendez-vous à `permission_prompt` environ six secondes après que Claude a demandé la permission. Claude Code ne le reporte pas pendant que vous tapez.2639* Attendez-vous à `permission_prompt` environ six secondes après que Claude a demandé la permission. Claude Code ne le repousse pas pendant que vous saisissez.

2614* Si vous ou un hook [PermissionRequest](#permissionrequest) répondez plus tôt, Claude Code n'exécute pas `permission_prompt`.2640* Si vous ou un hook [PermissionRequest](#permissionrequest) répondez plus tôt, Claude Code n'exécute pas `permission_prompt`.

2615* Définissez [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/fr/env-vars) sur `1` pour désactiver `permission_prompt` dans ces sessions.2641* Définissez [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/fr/env-vars) sur `1` pour désactiver `permission_prompt` dans ces sessions.

2616 2642 

2617Avant la v2.1.233, `permission_prompt` ne se déclenchait pas dans ces sessions.2643Avant la v2.1.233, `permission_prompt` ne se déclenchait pas dans ces sessions.

2618 2644 

2619Utilisez des matchers distincts pour exécuter des gestionnaires différents selon le type de notification. Cette configuration déclenche un script d'alerte spécifique aux permissions lorsque Claude a besoin d'une approbation de permission et une notification différente lorsque Claude est inactif :2645Utilisez des matchers distincts pour exécuter des gestionnaires différents selon le type de notification. Cette configuration déclenche un script d'alerte propre aux permissions lorsque Claude a besoin d'une approbation de permission, et une notification différente lorsque Claude est inactif :

2620 2646 

2621```json theme={null}2647```json theme={null}

2622{2648{


2649 Entrée Notification2675 Entrée Notification

2650</h4>2676</h4>

2651 2677 

2652En plus des [champs d'entrée communs](#common-input-fields), les hooks Notification reçoivent `message` avec le texte de la notification, un `title` facultatif et `notification_type` indiquant quel type s'est déclenché.2678En plus des [champs d'entrée communs](#common-input-fields), les hooks Notification reçoivent `message` avec le texte de la notification, un `title` facultatif, et `notification_type` indiquant quel type s'est déclenché.

2653 2679 

2654```json theme={null}2680```json theme={null}

2655{2681{


2663}2689}

2664```2690```

2665 2691 

2666Les hooks Notification ne peuvent ni bloquer ni modifier les notifications. Claude Code supprime leurs champs `systemMessage` et `continue`, mais émet tout de même [`terminalSequence`](#emit-terminal-notifications), sur lequel repose l'exemple de notification de bureau. Les hooks Notification sont destinés à des effets de bord, comme le transfert de la notification vers un service externe.2692Les hooks Notification ne peuvent ni bloquer ni modifier les notifications. Claude Code ignore leurs champs `systemMessage` et `continue` mais émet tout de même [`terminalSequence`](#emit-terminal-notifications), sur lequel repose l'exemple de notification de bureau. Les hooks Notification sont destinés à des effets de bord, comme la transmission de la notification à un service externe.

2667 2693 

2668<h3 id="subagentstart">2694<h3 id="subagentstart">

2669 SubagentStart2695 SubagentStart

2670</h3>2696</h3>

2671 2697 

2672S'exécute lorsque Claude lance un sous-agent avec l'outil Agent, lorsque Claude [reprend un sous-agent](/docs/fr/sub-agents#resume-subagents), et chaque fois qu'un coéquipier in-process d'une [équipe d'agents](/docs/fr/agent-teams) traite un nouveau message. Prend en charge les matchers pour filtrer par nom de type d'agent. Pour les agents intégrés, il s'agit du nom de l'agent, comme `general-purpose`, `Explore` ou `Plan`. Pour les [sous-agents personnalisés](/docs/fr/sub-agents), il s'agit du champ `name` du frontmatter de l'agent, et non du nom de fichier.2698S'exécute lorsque Claude lance un sous-agent avec l'outil Agent, lorsque Claude [reprend un sous-agent](/docs/fr/sub-agents#resume-subagents), et chaque fois qu'un coéquipier en processus d'une [équipe d'agents](/docs/fr/agent-teams) traite un nouveau message. Prend en charge les matchers pour filtrer par nom de type d'agent. Pour les agents intégrés, il s'agit du nom de l'agent, comme `general-purpose`, `Explore` ou `Plan`. Pour les [sous-agents personnalisés](/docs/fr/sub-agents), il s'agit du champ `name` du frontmatter de l'agent, et non du nom de fichier.

2673 2699 

2674Pour les sous-agents fournis par un [plugin](/docs/fr/plugins/overview), le type d'agent est l'identifiant propre au plugin, comme `my-plugin:reviewer`, et non le simple nom du frontmatter. Les deux-points font passer un nom propre à un plugin par le chemin des expressions régulières ; ancrez donc le matcher avec `^` et `$` pour une correspondance exacte : `^my-plugin:reviewer$`.2700Pour les sous-agents fournis par un [plugin](/docs/fr/plugins/overview), le type d'agent est l'identifiant à portée de plugin, comme `my-plugin:reviewer`, et non le simple nom du frontmatter. Les deux-points font passer un nom à portée de plugin par le chemin des expressions régulières, ancrez donc le matcher avec `^` et `$` pour une correspondance exacte : `^my-plugin:reviewer$`.

2675 2701 

2676<h4 id="subagentstart-input">2702<h4 id="subagentstart-input">

2677 Entrée SubagentStart2703 Entrée SubagentStart


2694 2720 

2695| Champ | Description |2721| Champ | Description |

2696| :- | :- |2722| :- | :- |

2697| `additionalContext` | Chaîne ajoutée au contexte du sous-agent au début de sa conversation, avant son premier prompt. Voir [Ajouter du contexte pour Claude](#add-context-for-claude) |2723| `additionalContext` | Chaîne ajoutée au contexte du sous-agent au début de sa conversation, avant son premier prompt. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) |

2698 2724 

2699```json theme={null}2725```json theme={null}

2700{2726{


2705}2731}

2706```2732```

2707 2733 

2708Lorsque le hook s'exécute à nouveau pour le même sous-agent, Claude Code n'injecte le contexte renvoyé que si le contexte du sous-agent ne contient pas déjà la copie issue d'une exécution précédente. La copie injectée au lancement reste en place, ce qui préserve le [cache de prompts](/docs/fr/prompt-caching#subagents-and-the-cache) du sous-agent. Après que la [compaction automatique](/docs/fr/sub-agents#auto-compaction) a supprimé cette copie, Claude Code injecte à nouveau le contexte de l'exécution suivante.2734Lorsque le hook s'exécute à nouveau pour le même sous-agent, Claude Code n'injecte le contexte renvoyé que si le contexte du sous-agent ne contient pas déjà la copie d'une exécution précédente. La copie injectée au lancement reste en place, ce qui laisse intact le [cache de prompts](/docs/fr/prompt-caching#subagents-and-the-cache) du sous-agent. Après que la [compaction automatique](/docs/fr/sub-agents#auto-compaction) a supprimé cette copie, Claude Code injecte à nouveau le contexte de l'exécution suivante.

2709 2735 

2710<h3 id="subagentstop">2736<h3 id="subagentstop">

2711 SubagentStop2737 SubagentStop


2717 Entrée SubagentStop2743 Entrée SubagentStop

2718</h4>2744</h4>

2719 2745 

2720En plus des [champs d'entrée communs](#common-input-fields), les hooks SubagentStop reçoivent `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path` et `last_assistant_message`. Le champ `agent_type` est la valeur utilisée pour le filtrage par matcher. Le `transcript_path` est la transcription de la session principale, tandis que `agent_transcript_path` est la propre transcription du sous-agent, stockée dans un dossier imbriqué `subagents/`. Le champ `last_assistant_message` contient le contenu textuel de la réponse finale du sous-agent, ce qui permet aux hooks d'y accéder sans analyser le fichier de transcription.2746En plus des [champs d'entrée communs](#common-input-fields), les hooks SubagentStop reçoivent `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path` et `last_assistant_message`. Le champ `agent_type` est la valeur utilisée pour le filtrage par matcher. `transcript_path` est la transcription de la session principale, tandis que `agent_transcript_path` est la propre transcription du sous-agent, stockée dans un dossier `subagents/` imbriqué. Le champ `last_assistant_message` contient le contenu textuel de la réponse finale du sous-agent, afin que les hooks puissent y accéder sans analyser le fichier de transcription.

2721 2747 

2722Tous les événements SubagentStop ne proviennent pas d'un sous-agent lancé par Claude. Claude Code exécute aussi des agents internes pour certaines de ses propres fonctionnalités, comme les [suggestions de prompts](/docs/fr/interactive-mode#prompt-suggestions) et les [questions annexes `/btw`](/docs/fr/interactive-mode#side-questions-with-%2Fbtw), et SubagentStop se déclenche également lorsque l'un d'eux se termine. Pour ces événements, `agent_type` est le nom de l'agent sous lequel la session elle-même s'exécute, tel que défini avec [`--agent`](/docs/fr/cli-reference#cli-flags) ou le [paramètre `agent`](/docs/fr/settings-reference#agent), et une chaîne vide lorsque la session s'exécute sans agent.2748Tous les événements SubagentStop ne proviennent pas d'un sous-agent lancé par Claude. Claude Code exécute également des agents internes pour certaines de ses propres fonctionnalités, comme les [suggestions de prompts](/docs/fr/interactive-mode#prompt-suggestions) et les [questions annexes `/btw`](/docs/fr/interactive-mode#side-questions-with-%2Fbtw), et SubagentStop se déclenche aussi lorsque l'un d'eux se termine. Pour ces événements, `agent_type` est le nom de l'agent sous lequel la session elle-même s'exécute, comme celui défini avec [`--agent`](/docs/fr/cli-reference#cli-flags) ou le [paramètre `agent`](/docs/fr/settings-reference#agent), et une chaîne vide lorsque la session s'exécute sans agent.

2723 2749 

2724Un `matcher` qui nomme des types d'agents ne correspond pas à un `agent_type` vide. Un hook dont le matcher est omis, vaut `""` ou `"*"`, ou est une expression régulière qui correspond à une chaîne vide, s'exécute également pour les événements avec un `agent_type` vide.2750Un `matcher` qui nomme des types d'agents ne correspond pas à un `agent_type` vide. Un hook dont le matcher est omis, vaut `""` ou `"*"`, ou est une expression régulière qui correspond à une chaîne vide, s'exécute également pour les événements avec un `agent_type` vide.

2725 2751 

2726Sur Claude Code v2.1.271 ou ultérieur, un sous-agent qui s'exécute avec l'outil [`SubagentHandback`](/docs/fr/tools-reference) transmet son rapport via cet outil avant de s'arrêter. Le champ `last_assistant_message` contient alors le texte de clôture du sous-agent, le cas échéant, qui n'est pas le rapport transmis. Le rapport est l'entrée `message` de cet appel, qu'un hook `PreToolUse` ou `PostToolUse` correspondant à `SubagentHandback` reçoit sous la forme `tool_input.message`.2752Avec Claude Code v2.1.271 ou une version ultérieure, un sous-agent qui s'exécute avec l'outil [`SubagentHandback`](/docs/fr/tools-reference) transmet son rapport via cet outil avant de s'arrêter. Le champ `last_assistant_message` contient alors le texte de clôture du sous-agent, le cas échéant, qui n'est pas le rapport transmis. Le rapport correspond à l'entrée `message` de cet appel, qu'un hook `PreToolUse` ou `PostToolUse` correspondant à `SubagentHandback` reçoit sous la forme `tool_input.message`.

2727 2753 

2728Les hooks SubagentStop reçoivent également les tableaux `background_tasks` et `session_crons` décrits dans [Entrée Stop](#stop-input). Les deux tableaux sont limités à la session parente, et non au sous-agent.2754Les hooks SubagentStop reçoivent également les tableaux `background_tasks` et `session_crons` décrits dans [Entrée Stop](#stop-input). Les deux tableaux sont limités à la session parente, et non au sous-agent.

2729 2755 


2744}2770}

2745```2771```

2746 2772 

2747Les hooks SubagentStop utilisent le même format de contrôle de décision que les [hooks Stop](#stop-decision-control), y compris `hookSpecificOutput.additionalContext` avec `hookEventName` défini sur `"SubagentStop"`, pour un retour sans erreur qui maintient le sous-agent en cours d'exécution. Renvoyer `decision: "block"` avec une `reason` maintient le sous-agent en cours d'exécution et lui transmet `reason` comme prochaine instruction. Un hook qui bloque en sortant avec le code 2 transmet son message stderr de la même manière. Pour injecter du contexte dans la session parente après le retour d'un sous-agent, utilisez plutôt un hook [`PostToolUse`](#posttooluse) sur l'outil `Agent`.2773Les hooks SubagentStop utilisent le même format de contrôle de décision que les [hooks Stop](#stop-decision-control), y compris `hookSpecificOutput.additionalContext` avec `hookEventName` défini sur `"SubagentStop"`, pour un retour hors erreur qui maintient le sous-agent en cours d'exécution. Renvoyer `decision: "block"` avec une `reason` maintient le sous-agent en cours d'exécution et lui transmet `reason` comme instruction suivante. Un hook qui bloque en se terminant avec le code 2 transmet son message stderr de la même manière. Pour injecter du contexte dans la session parente après le retour d'un sous-agent, utilisez plutôt un hook [`PostToolUse`](#posttooluse) sur l'outil `Agent`.

2748 2774 

2749<h3 id="taskcreated">2775<h3 id="taskcreated">

2750 TaskCreated2776 TaskCreated


2781| `task_description` | Description détaillée de la tâche. Peut être absent |2807| `task_description` | Description détaillée de la tâche. Peut être absent |

2782| `teammate_name` | Nom du coéquipier qui crée la tâche. Peut être absent |2808| `teammate_name` | Nom du coéquipier qui crée la tâche. Peut être absent |

2783| `team_name` | Déprécié. Nom d'équipe dérivé de la session ; sera supprimé dans une version future |2809| `team_name` | Déprécié. Nom d'équipe dérivé de la session ; sera supprimé dans une version future |

2784| `agent_id` | Pour cet événement, le [champ d'entrée commun](#common-input-fields) identifie le sous-agent ou le [coéquipier in-process](/docs/fr/agent-teams#choose-a-display-mode) qui crée la tâche. Peut être absent. Nécessite Claude Code v2.1.290 ou ultérieur |2810| `agent_id` | Pour cet événement, le [champ d'entrée commun](#common-input-fields) identifie le sous-agent ou le [coéquipier en processus](/docs/fr/agent-teams#choose-a-display-mode) qui crée la tâche. Peut être absent. Nécessite Claude Code v2.1.290 ou une version ultérieure |

2785 2811 

2786<h4 id="taskcreated-decision-control">2812<h4 id="taskcreated-decision-control">

2787 Contrôle de décision TaskCreated2813 Contrôle de décision TaskCreated


2789 2815 

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

2791 2817 

2792* **Code de sortie 2** : Claude Code renvoie le texte de stderr comme message.2818* **Code de sortie 2** : Claude Code renvoie le texte stderr comme message.

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

2794 2820 

2795Cet exemple bloque les tâches dont le sujet ne respecte pas le format requis :2821Cet exemple bloque les tâches dont les sujets ne respectent pas le format requis :

2796 2822 

2797```bash theme={null}2823```bash theme={null}

2798#!/bin/bash2824#!/bin/bash


2811 TaskCompleted2837 TaskCompleted

2812</h3>2838</h3>

2813 2839 

2814S'exécute lorsqu'une tâche est en cours de marquage comme terminée. Cela se produit dans deux situations : lorsqu'un agent marque explicitement une tâche comme terminée via l'outil TaskUpdate, ou lorsqu'un coéquipier d'une [équipe d'agents](/docs/fr/agent-teams) termine son tour avec des tâches en cours. Utilisez-le pour imposer des critères d'achèvement, comme la réussite des tests ou des vérifications de lint, avant qu'une tâche puisse être clôturée.2840S'exécute lorsqu'une tâche est en train d'être marquée comme terminée. Cela se produit dans deux situations : lorsqu'un agent marque explicitement une tâche comme terminée via l'outil TaskUpdate, ou lorsqu'un coéquipier d'une [équipe d'agents](/docs/fr/agent-teams) termine son tour avec des tâches en cours. Utilisez-le pour imposer des critères d'achèvement, comme la réussite des tests ou des vérifications lint, avant qu'une tâche puisse être clôturée.

2815 2841 

2816Les hooks TaskCompleted ne prennent pas en charge les matchers et se déclenchent à chaque occurrence.2842Les hooks TaskCompleted ne prennent pas en charge les matchers et se déclenchent à chaque occurrence.

2817 2843 


2843| `task_description` | Description détaillée de la tâche. Peut être absent |2869| `task_description` | Description détaillée de la tâche. Peut être absent |

2844| `teammate_name` | Nom du coéquipier qui termine la tâche. Peut être absent |2870| `teammate_name` | Nom du coéquipier qui termine la tâche. Peut être absent |

2845| `team_name` | Déprécié. Nom d'équipe dérivé de la session ; sera supprimé dans une version future |2871| `team_name` | Déprécié. Nom d'équipe dérivé de la session ; sera supprimé dans une version future |

2846| `agent_id` | Pour cet événement, le [champ d'entrée commun](#common-input-fields) identifie le sous-agent ou le [coéquipier in-process](/docs/fr/agent-teams#choose-a-display-mode) qui termine la tâche. Peut être absent. Nécessite Claude Code v2.1.290 ou ultérieur |2872| `agent_id` | Pour cet événement, le [champ d'entrée commun](#common-input-fields) identifie le sous-agent ou le [coéquipier en processus](/docs/fr/agent-teams#choose-a-display-mode) qui termine la tâche. Peut être absent. Nécessite Claude Code v2.1.290 ou une version ultérieure |

2847 2873 

2848<h4 id="taskcompleted-decision-control">2874<h4 id="taskcompleted-decision-control">

2849 Contrôle de décision TaskCompleted2875 Contrôle de décision TaskCompleted


2852Les hooks TaskCompleted prennent en charge deux façons de contrôler l'achèvement des tâches :2878Les hooks TaskCompleted prennent en charge deux façons de contrôler l'achèvement des tâches :

2853 2879 

2854* **Code de sortie 2** : la tâche n'est pas marquée comme terminée et le message stderr est renvoyé au modèle comme retour.2880* **Code de sortie 2** : la tâche n'est pas marquée comme terminée et le message stderr est renvoyé au modèle comme retour.

2855* **JSON `{"continue": false, "stopReason": "..."}`** : lorsque c'est un coéquipier terminant son tour qui a déclenché l'événement, arrête complètement le coéquipier, comme le comportement du hook `Stop`. Le `stopReason` est affiché à l'utilisateur. Lorsque c'est l'outil `TaskUpdate` qui a déclenché l'événement, Claude Code ignore `continue: false` ; le code de sortie 2 bloque toujours l'achèvement.2881* **JSON `{"continue": false, "stopReason": "..."}`** : lorsqu'un coéquipier terminant son tour a déclenché l'événement, arrête complètement le coéquipier, conformément au comportement du hook `Stop`. Le `stopReason` est affiché à l'utilisateur. Lorsque l'outil `TaskUpdate` a déclenché l'événement, Claude Code ignore `continue: false` ; le code de sortie 2 bloque toujours l'achèvement.

2856 2882 

2857Cet exemple exécute les tests et bloque l'achèvement de la tâche s'ils échouent :2883Cet exemple exécute les tests et bloque l'achèvement de la tâche s'ils échouent :

2858 2884 


2874 Stop2900 Stop

2875</h3>2901</h3>

2876 2902 

2877S'exécute lorsque l'agent principal de Claude Code a fini de répondre. Ne s'exécute pas si2903S'exécute lorsque l'agent principal de Claude Code a fini de répondre. Ne s'exécute pas

2878l'arrêt est dû à une interruption par l'utilisateur. Les erreurs d'API déclenchent2904si l'arrêt est dû à une interruption de l'utilisateur. Les erreurs d'API déclenchent

2879plutôt [StopFailure](#stopfailure).2905plutôt [StopFailure](#stopfailure).

2880 2906 

2881<Tip>2907<Tip>

2882 La commande [`/goal`](/docs/fr/goal) est un raccourci intégré pour un hook Stop basé sur un prompt et limité à la session. Utilisez-la lorsque vous voulez que Claude continue de travailler vers une condition sans écrire de configuration de hook.2908 La commande [`/goal`](/docs/fr/goal) est un raccourci intégré pour un hook Stop basé sur un prompt et limité à la session. Utilisez-la lorsque vous souhaitez que Claude continue de travailler vers une condition sans écrire de configuration de hook.

2883</Tip>2909</Tip>

2884 2910 

2885<h4 id="stop-input">2911<h4 id="stop-input">

2886 Entrée Stop2912 Entrée Stop

2887</h4>2913</h4>

2888 2914 

2889En plus des [champs d'entrée communs](#common-input-fields), les hooks Stop reçoivent `stop_hook_active`, `last_assistant_message`, `background_tasks` et `session_crons`. Le champ `stop_hook_active` vaut `true` lorsque Claude Code poursuit déjà en raison d'un hook stop. Vérifiez cette valeur ou traitez la transcription pour éviter de bloquer sur une condition qui ne se résoudra jamais.2915En plus des [champs d'entrée communs](#common-input-fields), les hooks Stop reçoivent `stop_hook_active`, `last_assistant_message`, `background_tasks` et `session_crons`. Le champ `stop_hook_active` vaut `true` lorsque Claude Code continue déjà à la suite d'un hook Stop. Vérifiez cette valeur ou traitez la transcription pour éviter de bloquer sur une condition qui ne se résoudra jamais.

2890 2916 

2891Claude Code applique un plafond de 8 poursuites consécutives : après que les hooks stop ont fait poursuivre le tour huit fois de suite, Claude Code remplace le blocage suivant et met fin au tour. Le compteur de poursuites consécutives est réinitialisé chaque fois que Claude appelle un outil. Pour relever ce plafond, définissez [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/fr/env-vars).2917Claude Code applique un plafond de 8 poursuites consécutives : après que des hooks Stop ont fait continuer le tour huit fois de suite, Claude Code passe outre le blocage suivant et termine le tour. Le compteur de poursuites consécutives est réinitialisé chaque fois que Claude appelle un outil. Pour relever le plafond, définissez [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/fr/env-vars).

2892 2918 

2893Le champ `last_assistant_message` contient le contenu textuel de la réponse finale de Claude, ce qui permet aux hooks d'y accéder sans analyser le fichier de transcription. Pour les hooks qui agissent sur le tour qui vient de se terminer, comme les hooks de lecture à voix haute ou de notification, utilisez ce champ plutôt que de lire `transcript_path` : il n'est pas garanti, sur toutes les versions, que le fichier de transcription inclue le message final au moment de Stop.2919Le champ `last_assistant_message` contient le contenu textuel de la réponse finale de Claude, afin que les hooks puissent y accéder sans analyser le fichier de transcription. Pour les hooks qui agissent sur le tour qui vient de se terminer, comme les hooks de lecture à voix haute ou de notification, utilisez ce champ plutôt que de lire `transcript_path` : il n'est pas garanti, sur toutes les versions, que le fichier de transcription inclue le message final au moment de Stop.

2894 2920 

2895Les tableaux `background_tasks` et `session_crons` permettent aux hooks de distinguer « la session est terminée » de « la session est en pause en attendant qu'un travail en arrière-plan la réveille ». Les deux tableaux sont présents lorsque le registre des tâches est accessible et sont vides lorsque rien n'est en cours ni planifié.2921Les tableaux `background_tasks` et `session_crons` permettent aux hooks de distinguer « la session est terminée » de « la session est en pause en attendant qu'un travail en arrière-plan la réveille ». Les deux tableaux sont présents lorsque le registre des tâches est accessible et sont vides lorsque rien n'est en cours ou planifié.

2896 2922 

2897Chaque entrée de `background_tasks` décrit une tâche en cours et utilise ces champs :2923Chaque entrée de `background_tasks` décrit une tâche en cours et utilise ces champs :

2898 2924 


2901| `id` | Identifiant de la tâche |2927| `id` | Identifiant de la tâche |

2902| `type` | Libellé lisible du type de tâche, comme `shell`, `subagent`, `monitor`, `workflow`, `teammate`, `cloud session` ou `MCP task`. Chaque libellé identifie la fonctionnalité de Claude Code qui a créé la tâche. Se rabat sur le discriminant brut pour les types non reconnus |2928| `type` | Libellé lisible du type de tâche, comme `shell`, `subagent`, `monitor`, `workflow`, `teammate`, `cloud session` ou `MCP task`. Chaque libellé identifie la fonctionnalité de Claude Code qui a créé la tâche. Se rabat sur le discriminant brut pour les types non reconnus |

2903| `status` | Statut actuel de la tâche |2929| `status` | Statut actuel de la tâche |

2904| `description` | Description en texte libre, plafonnée à 1000 caractères avec un marqueur `… [+N chars]` dans la chaîne en cas de troncature |2930| `description` | Description en texte libre, plafonnée à 1 000 caractères avec un marqueur `… [+N chars]` dans la chaîne lorsqu'elle est tronquée |

2905| `command` | Ligne de commande shell, plafonnée à 1000 caractères. Présent uniquement pour les tâches `shell` |2931| `command` | Ligne de commande shell, plafonnée à 1 000 caractères. Présent uniquement pour les tâches `shell` |

2906| `agent_type` | Nom du type de sous-agent. Présent uniquement pour les tâches `subagent` |2932| `agent_type` | Nom du type de sous-agent. Présent uniquement pour les tâches `subagent` |

2907| `server` | Nom du serveur MCP. Présent uniquement pour les tâches `monitor` et `MCP task` |2933| `server` | Nom du serveur MCP. Présent uniquement pour les tâches `monitor` et `MCP task` |

2908| `tool` | Nom de l'outil MCP. Présent uniquement pour les tâches `monitor` et `MCP task` |2934| `tool` | Nom de l'outil MCP. Présent uniquement pour les tâches `monitor` et `MCP task` |

2909| `name` | Nom du workflow. Présent uniquement pour les tâches `workflow` |2935| `name` | Nom du workflow. Présent uniquement pour les tâches `workflow` |

2910 2936 

2911Chaque entrée de `session_crons` décrit un réveil planifié limité à la session, issu de `CronCreate`, `ScheduleWakeup` et `/loop` :2937Chaque entrée de `session_crons` décrit un réveil planifié limité à la session, provenant de `CronCreate`, `ScheduleWakeup` et `/loop` :

2912 2938 

2913| Champ | Description |2939| Champ | Description |

2914| :- | :- |2940| :- | :- |

2915| `id` | Identifiant de la tâche cron |2941| `id` | Identifiant de la tâche cron |

2916| `schedule` | Expression cron, par exemple `0 9 * * 1-5` |2942| `schedule` | Expression cron, par exemple `0 9 * * 1-5` |

2917| `recurring` | `false` pour les réveils ponctuels dont la planification encode une seule heure de déclenchement, `true` pour les tâches qui se redéclenchent à chaque correspondance |2943| `recurring` | `false` pour les réveils ponctuels dont la planification encode un unique moment de déclenchement, `true` pour les tâches qui se redéclenchent à chaque correspondance |

2918| `prompt` | Prompt soumis lorsque le cron se déclenche, plafonné à 1000 caractères avec le même marqueur `… [+N chars]` |2944| `prompt` | Prompt soumis lorsque le cron se déclenche, plafonné à 1 000 caractères avec le même marqueur `… [+N chars]` |

2919 2945 

2920Cet exemple montre une entrée Stop avec une tâche shell en cours et un cron récurrent :2946Cet exemple montre une entrée Stop avec une tâche shell en cours et un cron récurrent :

2921 2947 


2952 Contrôle de décision Stop2978 Contrôle de décision Stop

2953</h4>2979</h4>

2954 2980 

2955Les hooks `Stop` et `SubagentStop` peuvent contrôler si Claude continue. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, votre script de hook peut renvoyer ces champs spécifiques à l'événement :2981Les hooks `Stop` et `SubagentStop` peuvent contrôler si Claude continue. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, votre script de hook peut renvoyer ces champs propres à l'événement :

2956 2982 

2957| Champ | Description |2983| Champ | Description |

2958| :- | :- |2984| :- | :- |

2959| `decision` | `"block"` empêche Claude de s'arrêter. Omettez-le pour permettre à Claude de s'arrêter |2985| `decision` | `"block"` empêche Claude de s'arrêter. Omettez-le pour permettre à Claude de s'arrêter |

2960| `reason` | Obligatoire lorsque `decision` vaut `"block"`. Indique à Claude pourquoi il doit continuer |2986| `reason` | Obligatoire lorsque `decision` vaut `"block"`. Indique à Claude pourquoi il doit continuer |

2961| `hookSpecificOutput.additionalContext` | Retour sans erreur pour Claude. La conversation se poursuit pour que Claude puisse y donner suite, mais contrairement à `decision: "block"`, il est affiché dans la transcription comme un retour de hook plutôt que comme une erreur de hook |2987| `hookSpecificOutput.additionalContext` | Retour hors erreur pour Claude. La conversation continue afin que Claude puisse y donner suite, mais contrairement à `decision: "block"`, il apparaît dans la transcription comme un retour de hook plutôt que comme une erreur de hook |

2962 2988 

2963Un hook qui bloque en sortant avec le code 2 est acheminé de la même manière que `reason` : Claude reçoit le message stderr comme explication de la raison pour laquelle il doit continuer.2989Un hook qui bloque en se terminant avec le code 2 est traité de la même manière que `reason` : Claude reçoit le message stderr comme explication de la raison pour laquelle il doit continuer.

2964 2990 

2965```json theme={null}2991```json theme={null}

2966{2992{


2969}2995}

2970```2996```

2971 2997 

2972Utilisez `additionalContext` lorsque le hook fonctionne comme prévu et donne des indications à Claude, comme « exécuter la suite de tests avant de terminer ». Il fait se poursuivre la conversation avec les mêmes protections contre les boucles que `decision: "block"`, à savoir l'entrée `stop_hook_active` et le plafond de 8 poursuites consécutives, mais la transcription l'étiquette `Stop hook feedback` et aucune notification d'erreur de hook n'est affichée :2998Utilisez `additionalContext` lorsque le hook fonctionne comme prévu et donne des indications à Claude, comme « exécuter la suite de tests avant de terminer ». Il maintient la conversation avec les mêmes protections contre les boucles que `decision: "block"`, à savoir l'entrée `stop_hook_active` et le plafond de 8 poursuites consécutives, mais la transcription le libelle `Stop hook feedback` et aucune notification d'erreur de hook n'est affichée :

2973 2999 

2974```json theme={null}3000```json theme={null}

2975{3001{


2984 StopFailure3010 StopFailure

2985</h3>3011</h3>

2986 3012 

2987S'exécute à la place de [Stop](#stop) lorsque le tour se termine en raison d'une erreur d'API. Claude Code ignore la sortie et le code de sortie du hook, à l'exception de [`terminalSequence`](#emit-terminal-notifications). Utilisez-le pour journaliser les échecs, envoyer des alertes ou prendre des mesures de récupération lorsque Claude ne peut pas terminer une réponse en raison de limites de débit, de problèmes d'authentification ou d'autres erreurs d'API.3013S'exécute à la place de [Stop](#stop) lorsque le tour se termine en raison d'une erreur d'API. Claude Code ignore la sortie et le code de sortie du hook, à l'exception de [`terminalSequence`](#emit-terminal-notifications). Utilisez-le pour journaliser les échecs, envoyer des alertes ou entreprendre des actions de récupération lorsque Claude ne peut pas terminer une réponse en raison de limites de débit, de problèmes d'authentification ou d'autres erreurs d'API.

2988 3014 

2989<h4 id="stopfailure-input">3015<h4 id="stopfailure-input">

2990 Entrée StopFailure3016 Entrée StopFailure


2996| :- | :- |3022| :- | :- |

2997| `error` | Type d'erreur : `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error` ou `unknown` |3023| `error` | Type d'erreur : `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error` ou `unknown` |

2998| `error_details` | Détails supplémentaires sur l'erreur, lorsqu'ils sont disponibles |3024| `error_details` | Détails supplémentaires sur l'erreur, lorsqu'ils sont disponibles |

2999| `last_assistant_message` | Le texte d'erreur rendu, affiché dans la conversation. Contrairement à `Stop` et `SubagentStop`, où ce champ contient la sortie conversationnelle de Claude, pour `StopFailure` il contient la chaîne d'erreur d'API elle-même, comme `"API Error: Rate limit reached"` |3025| `last_assistant_message` | Le texte d'erreur affiché dans la conversation. Contrairement à `Stop` et `SubagentStop`, où ce champ contient la sortie conversationnelle de Claude, pour `StopFailure` il contient la chaîne d'erreur de l'API elle-même, comme `"API Error: Rate limit reached"` |

3000 3026 

3001```json theme={null}3027```json theme={null}

3002{3028{


3016 TeammateIdle3042 TeammateIdle

3017</h3>3043</h3>

3018 3044 

3019S'exécute lorsqu'un coéquipier d'une [équipe d'agents](/docs/fr/agent-teams) est sur le point de devenir inactif après avoir terminé son tour. Utilisez-le pour imposer des contrôles qualité avant qu'un coéquipier arrête de travailler, par exemple en exigeant la réussite des vérifications de lint ou en vérifiant que les fichiers de sortie existent.3045S'exécute lorsqu'un coéquipier d'une [équipe d'agents](/docs/fr/agent-teams) est sur le point de devenir inactif après avoir terminé son tour. Utilisez-le pour imposer des contrôles de qualité avant qu'un coéquipier n'arrête de travailler, comme exiger la réussite des vérifications lint ou vérifier que les fichiers de sortie existent.

3020 3046 

3021Les hooks TeammateIdle ne prennent pas en charge les matchers et se déclenchent à chaque occurrence.3047Les hooks TeammateIdle ne prennent pas en charge les matchers et se déclenchent à chaque occurrence.

3022 3048 


3040 3066 

3041| Champ | Description |3067| Champ | Description |

3042| :- | :- |3068| :- | :- |

3043| `teammate_name` | Nom du coéquipier sur le point de devenir inactif |3069| `teammate_name` | Nom du coéquipier qui est sur le point de devenir inactif |

3044| `team_name` | Déprécié. Nom d'équipe dérivé de la session ; sera supprimé dans une version future |3070| `team_name` | Déprécié. Nom d'équipe dérivé de la session ; sera supprimé dans une version future |

3045| `agent_id` | Pour cet événement, le [champ d'entrée commun](#common-input-fields) identifie le [coéquipier in-process](/docs/fr/agent-teams#choose-a-display-mode) sur le point de devenir inactif. Peut être absent. Nécessite Claude Code v2.1.290 ou ultérieur |3071| `agent_id` | Pour cet événement, le [champ d'entrée commun](#common-input-fields) identifie le [coéquipier en processus](/docs/fr/agent-teams#choose-a-display-mode) qui est sur le point de devenir inactif. Peut être absent. Nécessite Claude Code v2.1.290 ou une version ultérieure |

3046 3072 

3047<h4 id="teammateidle-decision-control">3073<h4 id="teammateidle-decision-control">

3048 Contrôle de décision TeammateIdle3074 Contrôle de décision TeammateIdle


3051Les hooks TeammateIdle prennent en charge deux façons de contrôler le comportement des coéquipiers :3077Les hooks TeammateIdle prennent en charge deux façons de contrôler le comportement des coéquipiers :

3052 3078 

3053* **Code de sortie 2** : le coéquipier reçoit le message stderr comme retour et continue de travailler au lieu de devenir inactif.3079* **Code de sortie 2** : le coéquipier reçoit le message stderr comme retour et continue de travailler au lieu de devenir inactif.

3054* **JSON `{"continue": false, "stopReason": "..."}`** : arrête complètement le coéquipier, comme le comportement du hook `Stop`. Le `stopReason` est affiché à l'utilisateur.3080* **JSON `{"continue": false, "stopReason": "..."}`** : arrête complètement le coéquipier, conformément au comportement du hook `Stop`. Le `stopReason` est affiché à l'utilisateur.

3055 3081 

3056Cet exemple vérifie qu'un artefact de build existe avant de permettre à un coéquipier de devenir inactif :3082Cet exemple vérifie qu'un artefact de build existe avant de permettre à un coéquipier de devenir inactif :

3057 3083 


3070 ConfigChange3096 ConfigChange

3071</h3>3097</h3>

3072 3098 

3073S'exécute lorsqu'un fichier de configuration change au cours d'une session. Utilisez-le pour auditer les modifications de paramètres, appliquer des politiques de sécurité ou bloquer les modifications non autorisées des fichiers de configuration.3099S'exécute lorsqu'un fichier de configuration change pendant une session. Utilisez-le pour auditer les modifications de paramètres, appliquer des politiques de sécurité ou bloquer les modifications non autorisées des fichiers de configuration.

3074 3100 

3075Claude Code exécute les hooks ConfigChange lorsqu'un fichier de paramètres, un fichier de politique gérée ou un fichier de skill change. Pour la politique gérée, il ne les exécute que lorsque `managed-settings.json` ou un fichier de `managed-settings.d/` change. Il applique les [paramètres gérés par le serveur](/docs/fr/server-managed-settings) et les modifications des préférences gérées macOS ou de la politique du registre Windows sans les exécuter. Sous WSL avec [`wslInheritsWindowsSettings`](/docs/fr/settings-reference#wslinheritswindowssettings), il applique également un fichier de paramètres gérés modifié côté Windows lors de son interrogation de la politique, sans les exécuter.3101Claude Code exécute les hooks ConfigChange lorsqu'un fichier de paramètres, un fichier de politique gérée ou un fichier de skill change. Pour la politique gérée, il ne les exécute que lorsque `managed-settings.json` ou un fichier de `managed-settings.d/` change. Il applique les [paramètres gérés par le serveur](/docs/fr/server-managed-settings) et les modifications des préférences gérées macOS ou de la politique du registre Windows sans les exécuter. Sous WSL avec [`wslInheritsWindowsSettings`](/docs/fr/settings-reference#wslinheritswindowssettings), il applique également, lors de son interrogation de la politique, un fichier de paramètres gérés côté Windows modifié sans les exécuter.

3076 3102 

3077Le matcher filtre sur la source de la configuration :3103Le matcher filtre sur la source de configuration :

3078 3104 

3079| Matcher | Quand il se déclenche |3105| Matcher | Moment du déclenchement |

3080| :- | :- |3106| :- | :- |

3081| `user_settings` | `~/.claude/settings.json` change |3107| `user_settings` | `~/.claude/settings.json` change |

3082| `project_settings` | `.claude/settings.json` change |3108| `project_settings` | `.claude/settings.json` change |


3084| `policy_settings` | `managed-settings.json` ou un fichier de `managed-settings.d/` change |3110| `policy_settings` | `managed-settings.json` ou un fichier de `managed-settings.d/` change |

3085| `skills` | Un fichier de skill dans `.claude/skills/` change |3111| `skills` | Un fichier de skill dans `.claude/skills/` change |

3086 3112 

3087Cet exemple journalise toutes les modifications de configuration à des fins d'audit de sécurité :3113Cet exemple journalise toutes les modifications de configuration pour un audit de sécurité :

3088 3114 

3089```json theme={null}3115```json theme={null}

3090{3116{


3125 Contrôle de décision ConfigChange3151 Contrôle de décision ConfigChange

3126</h4>3152</h4>

3127 3153 

3128Les hooks ConfigChange peuvent empêcher les modifications de configuration de prendre effet. Utilisez le code de sortie 2 ou une `decision` JSON pour empêcher la modification. En cas de blocage, les nouveaux paramètres ne sont pas appliqués à la session en cours.3154Les hooks ConfigChange peuvent empêcher les modifications de configuration de prendre effet. Utilisez le code de sortie 2 ou une `decision` JSON pour empêcher la modification. Lorsqu'elle est bloquée, les nouveaux paramètres ne sont pas appliqués à la session en cours.

3129 3155 

3130| Champ | Description |3156| Champ | Description |

3131| :- | :- |3157| :- | :- |


3139}3165}

3140```3166```

3141 3167 

3142Les modifications `policy_settings` ne peuvent pas être bloquées. Les hooks se déclenchent toujours pour les sources `policy_settings` lorsqu'un fichier de paramètres gérés sur la machine change, ce qui vous permet de les utiliser pour journaliser ces modifications, mais toute décision de blocage est ignorée. Cela garantit que les paramètres gérés par l'entreprise prennent toujours effet. Claude Code n'exécute pas les hooks `ConfigChange` lorsque des [paramètres gérés par le serveur](/docs/fr/server-managed-settings) arrivent ou sont actualisés.3168Les modifications `policy_settings` ne peuvent pas être bloquées. Les hooks se déclenchent toujours pour les sources `policy_settings` lorsqu'un fichier de paramètres gérés sur la machine change, vous pouvez donc les utiliser pour journaliser ces modifications, mais toute décision de blocage est ignorée. Cela garantit que les paramètres gérés par l'entreprise prennent toujours effet. Claude Code n'exécute pas les hooks `ConfigChange` lorsque des [paramètres gérés par le serveur](/docs/fr/server-managed-settings) arrivent ou sont actualisés.

3143 3169 

3144Claude Code applique la décision de blocage issue de la sortie JSON d'un hook ConfigChange et supprime `systemMessage` et `continue`. Une modification bloquée ne fait remonter aucun message, ni à vous ni à Claude, que vous bloquiez avec `reason` ou avec stderr en sortant avec le code 2. Claude Code se contente d'écrire une ligne dans le log de débogage.3170Claude Code applique la décision de blocage provenant de la sortie JSON d'un hook ConfigChange et ignore `systemMessage` et `continue`. Une modification bloquée n'affiche aucun message, ni à vous ni à Claude, que vous bloquiez avec `reason` ou avec stderr et le code de sortie 2. Claude Code écrit seulement une ligne dans le log de débogage.

3145 3171 

3146<h3 id="cwdchanged">3172<h3 id="cwdchanged">

3147 CwdChanged3173 CwdChanged

3148</h3>3174</h3>

3149 3175 

3150S'exécute lorsqu'une commande shell de la conversation principale change le répertoire de travail, par exemple lorsque Claude exécute une commande `cd`. Utilisez-le pour réagir aux changements de répertoire : recharger les variables d'environnement, activer des chaînes d'outils propres au projet ou exécuter automatiquement des scripts de configuration. Se combine avec [FileChanged](#filechanged) pour des outils comme [direnv](https://direnv.net/) qui gèrent un environnement par répertoire.3176S'exécute lorsqu'une commande shell dans la conversation principale change le répertoire de travail, par exemple lorsque Claude exécute une commande `cd`. Utilisez-le pour réagir aux changements de répertoire : recharger les variables d'environnement, activer des chaînes d'outils propres au projet ou exécuter automatiquement des scripts de configuration. S'associe à [FileChanged](#filechanged) pour des outils comme [direnv](https://direnv.net/) qui gèrent l'environnement par répertoire.

3151 3177 

3152Les hooks CwdChanged ont accès à [`CLAUDE_ENV_FILE`](#persist-environment-variables). Les variables écrites dans ce fichier persistent dans les commandes Bash suivantes jusqu'au prochain événement CwdChanged, lorsque Claude Code les efface.3178Les hooks CwdChanged ont accès à [`CLAUDE_ENV_FILE`](#persist-environment-variables). Les variables écrites dans ce fichier persistent dans les commandes Bash suivantes jusqu'au prochain événement CwdChanged, lorsque Claude Code les efface.

3153 3179 


3178 3204 

3179| Champ | Description |3205| Champ | Description |

3180| :- | :- |3206| :- | :- |

3181| `watchPaths` | Tableau de chemins absolus. Remplace la liste de surveillance dynamique actuelle. Les chemins de votre configuration `matcher` sont toujours surveillés. Renvoyer un tableau vide efface la liste dynamique, ce qui est typique lors de l'entrée dans un nouveau répertoire |3207| `watchPaths` | Tableau de chemins absolus. Remplace la liste de surveillance dynamique actuelle. Les chemins issus de la configuration de votre `matcher` sont toujours surveillés. Renvoyer un tableau vide efface la liste dynamique, ce qui est typique lors de l'entrée dans un nouveau répertoire |

3182 3208 

3183Les hooks CwdChanged n'ont pas de contrôle de décision. Ils ne peuvent pas bloquer le changement de répertoire.3209Les hooks CwdChanged n'ont pas de contrôle de décision. Ils ne peuvent pas bloquer le changement de répertoire.

3184 3210 

3185Claude Code lit `watchPaths` et `systemMessage` dans leur sortie JSON et supprime `continue`. Dans les sessions interactives, il affiche le `systemMessage` sous forme de brève notification dans le terminal. Le message n'atteint pas le flux de messages du SDK.3211Claude Code lit `watchPaths` et `systemMessage` depuis leur sortie JSON et ignore `continue`. Dans les sessions interactives, il affiche le `systemMessage` sous forme de brève notification dans le terminal. Le message n'atteint pas le flux de messages du SDK.

3186 3212 

3187<h3 id="directoryadded">3213<h3 id="directoryadded">

3188 DirectoryAdded3214 DirectoryAdded


3192 3218 

3193Claude Code ne déclenche pas cet événement lorsque :3219Claude Code ne déclenche pas cet événement lorsque :

3194 3220 

3195* Vous passez un répertoire avec le flag de démarrage `--add-dir` ; [SessionStart](#sessionstart) couvre ces répertoires3221* Vous transmettez un répertoire avec le flag de démarrage `--add-dir` ; [SessionStart](#sessionstart) couvre ces répertoires

3196* Vous ajoutez un répertoire dans l'onglet Workspace de `/permissions`3222* Vous ajoutez un répertoire dans l'onglet Workspace de `/permissions`

3197* Vous ajoutez un répertoire qui est déjà un répertoire de travail ou qui se trouve à l'intérieur de l'un d'eux3223* Vous ajoutez un répertoire qui est déjà un répertoire de travail ou qui se trouve à l'intérieur de l'un d'eux

3198 3224 

3199Claude Code déclenche DirectoryAdded après avoir actualisé l'état du sandbox et des permissions ; les outils en sandbox voient donc déjà le nouveau répertoire lorsque votre hook s'exécute. Les commandes de hook elles-mêmes s'exécutent hors sandbox.3225Claude Code déclenche DirectoryAdded après avoir actualisé l'état du sandbox et des permissions, de sorte que les outils en sandbox voient déjà le nouveau répertoire lorsque votre hook s'exécute. Les commandes de hook elles-mêmes s'exécutent hors sandbox.

3200 3226 

3201Claude Code n'attend pas le hook : l'ajout se termine immédiatement, et le hook s'exécute en arrière-plan avec le délai d'expiration par défaut de 600 secondes.3227Claude Code n'attend pas le hook : l'ajout se termine immédiatement, et le hook s'exécute en arrière-plan avec le délai d'expiration par défaut de 600 secondes.

3202 3228 

3203Le matcher filtre sur la façon dont le répertoire a été ajouté :3229Le matcher filtre sur la façon dont le répertoire a été ajouté :

3204 3230 

3205| Matcher | Quand il se déclenche |3231| Matcher | Moment du déclenchement |

3206| :- | :- |3232| :- | :- |

3207| `slash_command` | Vous ajoutez un répertoire avec `/add-dir` |3233| `slash_command` | Vous ajoutez un répertoire avec `/add-dir` |

3208| `register_repo_root` | Un client SDK ajoute un répertoire avec la requête de contrôle `register_repo_root` |3234| `register_repo_root` | Un client SDK ajoute un répertoire avec la requête de contrôle `register_repo_root` |


3216| Champ | Description |3242| Champ | Description |

3217| :- | :- |3243| :- | :- |

3218| `directory` | Chemin absolu du répertoire qui a été ajouté |3244| `directory` | Chemin absolu du répertoire qui a été ajouté |

3219| `source` | Façon dont le répertoire a été ajouté : `"slash_command"` pour `/add-dir` ou `"register_repo_root"` pour la requête de contrôle du SDK |3245| `source` | La façon dont le répertoire a été ajouté, `"slash_command"` pour `/add-dir` ou `"register_repo_root"` pour la requête de contrôle du SDK |

3220 3246 

3221```json theme={null}3247```json theme={null}

3222{3248{


3229}3255}

3230```3256```

3231 3257 

3232Les hooks DirectoryAdded n'ont pas de contrôle de décision. Ils ne peuvent pas bloquer l'ajout, qui est déjà terminé lorsque le hook s'exécute. Claude Code supprime le champ `continue` de leur sortie JSON et fait remonter le reste différemment selon la source :3258Les hooks DirectoryAdded n'ont pas de contrôle de décision. Ils ne peuvent pas bloquer l'ajout, qui est déjà terminé lorsque le hook s'exécute. Claude Code ignore le champ `continue` de leur sortie JSON et traite le reste différemment selon la source :

3233 3259 

3234* `slash_command` : Claude Code transmet le `systemMessage` du hook à Claude comme contexte au tour de conversation suivant, au lieu de vous l'afficher. Un décompte des hooks en échec apparaît dans la transcription. La sortie complète des échecs va dans le log de débogage3260* `slash_command` : Claude Code transmet le `systemMessage` du hook à Claude comme contexte au tour de conversation suivant, plutôt que de vous l'afficher. Un décompte des hooks en échec apparaît dans la transcription. La sortie d'échec complète est envoyée dans le log de débogage

3235* `register_repo_root` : Claude Code écrit la sortie `systemMessage` et la sortie des échecs uniquement dans le log de débogage3261* `register_repo_root` : Claude Code écrit la sortie `systemMessage` et la sortie d'échec uniquement dans le log de débogage

3236 3262 

3237<h3 id="filechanged">3263<h3 id="filechanged">

3238 FileChanged3264 FileChanged

3239</h3>3265</h3>

3240 3266 

3241S'exécute lorsqu'un fichier surveillé change sur le disque. Claude Code détecte les modifications avec un observateur du système de fichiers, et non en inspectant les appels d'outils ; il exécute donc le hook quelle que soit l'origine de la modification du fichier : un appel d'outil `Edit` ou `Write`, un script que Claude exécute avec `Bash`, ou un processus entièrement extérieur à Claude Code. Un usage courant consiste à recharger les variables d'environnement lorsque les fichiers de configuration du projet changent.3267S'exécute lorsqu'un fichier surveillé change sur le disque. Claude Code détecte les modifications à l'aide d'un observateur du système de fichiers, et non en inspectant les appels d'outils, de sorte qu'il exécute le hook quelle que soit l'origine de la modification du fichier : un appel d'outil `Edit` ou `Write`, un script que Claude exécute avec `Bash`, ou un processus entièrement extérieur à Claude Code. Un usage courant consiste à recharger les variables d'environnement lorsque les fichiers de configuration du projet changent.

3242 3268 

3243Le `matcher` de cet événement joue deux rôles :3269Le `matcher` de cet événement remplit deux rôles :

3244 3270 

3245* **Construire la liste de surveillance** : la valeur est découpée sur `|` et chaque segment est enregistré comme un nom de fichier littéral dans le répertoire de travail ; ainsi `".envrc|.env"` surveille exactement ces deux fichiers. Les motifs regex ne sont pas utiles ici : une valeur comme `^\.env` surveillerait un fichier littéralement nommé `^\.env`.3271* **Construire la liste de surveillance** : la valeur est découpée selon `|` et chaque segment est enregistré comme un nom de fichier littéral dans le répertoire de travail, de sorte que `".envrc|.env"` surveille exactement ces deux fichiers. Les motifs regex ne sont pas utiles ici : une valeur comme `^\.env` surveillerait un fichier littéralement nommé `^\.env`.

3246* **Filtrer les hooks qui s'exécutent** : lorsqu'un fichier surveillé change, la même valeur filtre les groupes de hooks qui s'exécutent, en appliquant les [règles de matcher](#matcher-patterns) standard au nom de base du fichier modifié.3272* **Filtrer les hooks qui s'exécutent** : lorsqu'un fichier surveillé change, la même valeur filtre les groupes de hooks qui s'exécutent en appliquant les [règles de matcher](#matcher-patterns) standard au nom de base du fichier modifié.

3247 3273 

3248Cet exemple normalise les fins de ligne de `data.csv` après toute modification, y compris lorsqu'une commande `Bash` ou un script externe réécrit le fichier :3274Cet exemple normalise les fins de ligne dans `data.csv` après toute modification, y compris lorsqu'une commande `Bash` ou un script externe réécrit le fichier :

3249 3275 

3250```json theme={null}3276```json theme={null}

3251{3277{


3265}3291}

3266```3292```

3267 3293 

3268Le hook lit le chemin absolu du fichier modifié dans le champ `file_path` de l'[entrée JSON](#filechanged-input) sur stdin. Sa garde `grep` teste la même chose que ce que `perl` supprime, un CR en fin de ligne ; ainsi, l'exécution qui suit une normalisation se termine sans toucher au fichier. Une garde plus permissive boucle indéfiniment, car `perl -i` réécrit le fichier même lorsqu'il ne substitue rien, et Claude Code exécute à nouveau le hook après chaque réécriture. Enregistrez ce script sous `/path/to/normalize-line-endings.sh` et rendez-le exécutable :3294Le hook lit le chemin absolu du fichier modifié depuis le champ `file_path` de l'[entrée JSON](#filechanged-input) sur stdin. Sa garde `grep` teste exactement ce que `perl` supprime, un CR en fin de ligne, de sorte que l'exécution qui suit une normalisation se termine sans toucher au fichier. Une garde moins stricte boucle indéfiniment, car `perl -i` réécrit le fichier même lorsqu'il ne substitue rien, et Claude Code exécute à nouveau le hook après chaque réécriture. Enregistrez ce script sous `/path/to/normalize-line-endings.sh` et rendez-le exécutable :

3269 3295 

3270```bash theme={null}3296```bash theme={null}

3271#!/bin/bash3297#!/bin/bash


3277 3303 

3278Pour vérifier que le hook fonctionne, demandez à Claude d'ajouter une ligne CRLF à `data.csv` avec une commande `Bash`. Claude Code exécute le hook et le fichier se retrouve avec des fins de ligne LF.3304Pour vérifier que le hook fonctionne, demandez à Claude d'ajouter une ligne CRLF à `data.csv` avec une commande `Bash`. Claude Code exécute le hook et le fichier se retrouve avec des fins de ligne LF.

3279 3305 

3280Pour surveiller des fichiers que vous ne pouvez pas nommer à l'avance, renvoyez [`watchPaths`](#filechanged-output) depuis un hook afin de mettre à jour dynamiquement la liste de surveillance. Claude Code ne démarre l'observateur que lorsque quelque chose nomme un fichier à surveiller ; amorcez donc la liste avec un groupe FileChanged dont le matcher nomme au moins un fichier, ou avec un hook [SessionStart](#sessionstart-decision-control) ou [CwdChanged](#cwdchanged) qui renvoie `watchPaths`. Le matcher filtre toujours les groupes de hooks qui s'exécutent lorsqu'un fichier surveillé change ; donnez donc au groupe qui gère les chemins dynamiques un matcher omis, qui correspond à tous les fichiers surveillés et n'ajoute rien à la liste de surveillance. Un matcher `"*"` correspond également à tous les fichiers, mais Claude Code l'enregistre dans la liste de surveillance comme n'importe quelle autre valeur, sous la forme d'un fichier littéral nommé `*`.3306Pour surveiller des fichiers que vous ne pouvez pas nommer à l'avance, renvoyez [`watchPaths`](#filechanged-output) depuis un hook afin de mettre à jour la liste de surveillance dynamiquement. Claude Code ne démarre l'observateur que lorsque quelque chose nomme un fichier à surveiller ; initialisez donc la liste avec un groupe FileChanged dont le matcher nomme au moins un fichier, ou avec un hook [SessionStart](#sessionstart-decision-control) ou [CwdChanged](#cwdchanged) qui renvoie `watchPaths`. Le matcher filtre toujours les groupes de hooks qui s'exécutent lorsqu'un fichier surveillé change ; omettez donc le matcher du groupe qui gère les chemins dynamiques : il correspond alors à tous les fichiers surveillés et n'ajoute rien à la liste de surveillance. Un matcher `"*"` correspond également à tous les fichiers, mais Claude Code l'enregistre dans la liste de surveillance comme n'importe quelle autre valeur, en tant que fichier littéralement nommé `*`.

3281 3307 

3282Les hooks FileChanged ont accès à [`CLAUDE_ENV_FILE`](#persist-environment-variables). Les variables écrites dans ce fichier persistent dans les commandes Bash suivantes jusqu'au prochain événement [CwdChanged](#cwdchanged), lorsque Claude Code les efface.3308Les hooks FileChanged ont accès à [`CLAUDE_ENV_FILE`](#persist-environment-variables). Les variables écrites dans ce fichier persistent dans les commandes Bash suivantes jusqu'au prochain événement [CwdChanged](#cwdchanged), lorsque Claude Code les efface.

3283 3309 


3289 3315 

3290| Champ | Description |3316| Champ | Description |

3291| :- | :- |3317| :- | :- |

3292| `file_path` | Chemin absolu du fichier qui a changé |3318| `file_path` | Chemin absolu du fichier modifié |

3293| `event` | Ce qui s'est passé : `"change"` pour un fichier modifié, `"add"` pour un fichier créé, ou `"unlink"` pour un fichier supprimé |3319| `event` | Ce qui s'est produit : `"change"` pour un fichier modifié, `"add"` pour un fichier créé ou `"unlink"` pour un fichier supprimé |

3294 3320 

3295```json theme={null}3321```json theme={null}

3296{3322{


3311 3337 

3312| Champ | Description |3338| Champ | Description |

3313| :- | :- |3339| :- | :- |

3314| `watchPaths` | Tableau de chemins absolus. Remplace la liste de surveillance dynamique actuelle. Les chemins de votre configuration `matcher` sont toujours surveillés. Utilisez-le lorsque votre script de hook découvre des fichiers supplémentaires à surveiller en fonction du fichier modifié |3340| `watchPaths` | Tableau de chemins absolus. Remplace la liste de surveillance dynamique actuelle. Les chemins issus de votre configuration `matcher` sont toujours surveillés. Utilisez-le lorsque votre script de hook découvre des fichiers supplémentaires à surveiller en fonction du fichier modifié |

3315 3341 

3316Les hooks FileChanged n'ont pas de contrôle de décision. Ils ne peuvent pas empêcher la modification du fichier de se produire.3342Les hooks FileChanged n'ont pas de contrôle de décision. Ils ne peuvent pas empêcher la modification du fichier.

3317 3343 

3318Claude Code lit `watchPaths` et `systemMessage` dans leur sortie JSON et supprime `continue`. Dans les sessions interactives, il affiche le `systemMessage` sous forme de brève notification dans le terminal. Le message n'atteint pas le flux de messages du SDK.3344Claude Code lit `watchPaths` et `systemMessage` dans leur sortie JSON et ignore `continue`. Dans les sessions interactives, il affiche le `systemMessage` sous forme de brève notification dans le terminal. Le message n'atteint pas le flux de messages du SDK.

3319 3345 

3320<h3 id="worktreecreate">3346<h3 id="worktreecreate">

3321 WorktreeCreate3347 WorktreeCreate


3332 3358 

3333Lorsque Claude exécute `git worktree add` via l'outil Bash au lieu d'appeler `EnterWorktree`, votre hook WorktreeCreate ne s'exécute pas. Pour inspecter ou bloquer cette commande, ajoutez un hook [`PreToolUse`](#pretooluse) avec le matcher `Bash`.3359Lorsque Claude exécute `git worktree add` via l'outil Bash au lieu d'appeler `EnterWorktree`, votre hook WorktreeCreate ne s'exécute pas. Pour inspecter ou bloquer cette commande, ajoutez un hook [`PreToolUse`](#pretooluse) avec le matcher `Bash`.

3334 3360 

3335Par défaut, Claude Code crée la copie de travail isolée avec `git worktree`. La configuration d'un hook WorktreeCreate remplace ce comportement git par défaut, ce qui vous permet d'utiliser un autre système de gestion de versions comme SVN, Perforce ou Mercurial.3361Par défaut, Claude Code crée la copie de travail isolée avec `git worktree`. Configurer un hook WorktreeCreate remplace ce comportement git par défaut, ce qui vous permet d'utiliser un autre système de gestion de versions comme SVN, Perforce ou Mercurial.

3336 3362 

3337Comme le hook remplace entièrement le comportement par défaut, [`.worktreeinclude`](/docs/fr/worktrees#copy-gitignored-files-into-worktrees) n'est pas traité. Si vous devez copier des fichiers de configuration locaux comme `.env` dans le nouveau worktree, faites-le dans votre script de hook.3363Comme le hook remplace entièrement le comportement par défaut, [`.worktreeinclude`](/docs/fr/worktrees#copy-gitignored-files-into-worktrees) n'est pas traité. Si vous devez copier des fichiers de configuration locaux comme `.env` dans le nouveau worktree, faites-le dans votre script de hook.

3338 3364 

3339Le hook doit renvoyer le chemin du répertoire du worktree créé. Claude Code utilise ce chemin comme répertoire de travail pour la session isolée. Consultez [Sortie de WorktreeCreate](#worktreecreate-output) pour savoir comment chaque type de hook renvoie le chemin.3365Le hook doit renvoyer le chemin du répertoire du worktree créé. Claude Code utilise ce chemin comme répertoire de travail pour la session isolée. Consultez [Sortie WorktreeCreate](#worktreecreate-output) pour savoir comment chaque type de hook renvoie le chemin.

3340 3366 

3341Claude Code tient compte de la réussite du hook et du chemin renvoyé, et ignore `systemMessage` et `continue`.3367Claude Code agit en fonction de la réussite du hook et du chemin renvoyé, et ignore `systemMessage` et `continue`.

3342 3368 

3343Cet exemple crée une copie de travail SVN et affiche le chemin que Claude Code doit utiliser. Remplacez l'URL du dépôt par la vôtre :3369Cet exemple crée une copie de travail SVN et affiche le chemin que Claude Code doit utiliser. Remplacez l'URL du dépôt par la vôtre :

3344 3370 


3359}3385}

3360```3386```

3361 3387 

3362Le hook lit le `name` du worktree depuis l'entrée JSON sur stdin, extrait une nouvelle copie dans un nouveau répertoire et affiche le chemin du répertoire. C'est le `echo` de la dernière ligne que Claude Code lit comme chemin du worktree. Redirigez toute autre sortie vers stderr afin qu'elle n'interfère pas avec le chemin.3388Le hook lit le `name` du worktree depuis l'entrée JSON sur stdin, extrait une nouvelle copie dans un nouveau répertoire et affiche le chemin du répertoire. Le `echo` de la dernière ligne est ce que Claude Code lit comme chemin du worktree. Redirigez toute autre sortie vers stderr afin qu'elle n'interfère pas avec le chemin.

3363 3389 

3364<h4 id="worktreecreate-input">3390<h4 id="worktreecreate-input">

3365 Entrée de WorktreeCreate3391 Entrée WorktreeCreate

3366</h4>3392</h4>

3367 3393 

3368En plus des [champs d'entrée communs](#common-input-fields), les hooks WorktreeCreate reçoivent le champ `name`. Il s'agit d'un identifiant de type slug pour le nouveau worktree, spécifié par l'utilisateur ou généré automatiquement, par exemple `bold-oak-a3f2`.3394En plus des [champs d'entrée communs](#common-input-fields), les hooks WorktreeCreate reçoivent le champ `name`. Il s'agit d'un identifiant de type slug pour le nouveau worktree, spécifié par l'utilisateur ou généré automatiquement, par exemple `bold-oak-a3f2`.


3378```3404```

3379 3405 

3380<h4 id="worktreecreate-output">3406<h4 id="worktreecreate-output">

3381 Sortie de WorktreeCreate3407 Sortie WorktreeCreate

3382</h4>3408</h4>

3383 3409 

3384Les hooks WorktreeCreate n'utilisent pas le modèle de décision standard autoriser/bloquer. C'est la réussite ou l'échec du hook qui détermine le résultat. Le hook doit renvoyer le chemin du répertoire du worktree créé :3410Les hooks WorktreeCreate n'utilisent pas le modèle de décision standard autoriser/bloquer. C'est la réussite ou l'échec du hook qui détermine le résultat. Le hook doit renvoyer le chemin du répertoire du worktree créé :

3385 3411 

3386* **Hooks de commande** (`type: "command"`) : affichez le chemin sur la dernière ligne non vide de stdout. Claude Code supprime les séquences d'échappement ANSI avant de lire cette ligne, de sorte que les bannières de démarrage du shell affichées avant votre `echo` sont ignorées. Redirigez toute autre sortie du hook vers stderr.3412* **Hooks de commande** (`type: "command"`) : affichez le chemin sur la dernière ligne non vide de stdout. Claude Code supprime les codes d'échappement ANSI avant de lire cette ligne, de sorte que les bannières de démarrage du shell affichées avant votre `echo` sont ignorées. Redirigez toute autre sortie du hook vers stderr.

3387* **Hooks HTTP** (`type: "http"`) : renvoyez `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` dans le corps de la réponse.3413* **Hooks HTTP** (`type: "http"`) : renvoyez `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` dans le corps de la réponse.

3388 3414 

3389Si le hook échoue ou ne produit aucun chemin, la création du worktree échoue avec une erreur.3415Si le hook échoue ou ne produit aucun chemin, la création du worktree échoue avec une erreur.

3390 3416 

3391Claude Code résout un chemin relatif par rapport au répertoire dans lequel le hook s'est exécuté, en réduisant tout segment `.` ou `..` qu'il contient. Si le chemin obtenu n'est pas un répertoire dans lequel Claude Code peut entrer, la session affiche une erreur indiquant le chemin et se termine avec le code 1.3417Claude Code résout un chemin relatif par rapport au répertoire dans lequel le hook s'est exécuté, en réduisant les éventuels segments `.` ou `..`. Si le chemin obtenu n'est pas un répertoire dans lequel Claude Code peut entrer, la session affiche une erreur indiquant le chemin et se termine avec le code 1.

3392 3418 

3393Claude Code refuse un chemin absolu contenant des segments `.` ou `..`, ainsi que tout chemin passant par un lien symbolique situé sous la racine du dépôt, car un lien symbolique commité dans le dépôt pourrait rediriger le worktree en dehors de celui-ci. L'erreur indique le composant rejeté. Renvoyez un chemin normalisé qui ne passe pas par un lien symbolique à l'intérieur du dépôt. Avant la v2.1.216, la création du worktree suivait le chemin du hook sans cette vérification.3419Claude Code refuse un chemin absolu contenant des segments `.` ou `..`, ainsi que tout chemin qui passe par un lien symbolique situé sous la racine du dépôt, car un lien symbolique commité dans le dépôt pourrait rediriger le worktree hors de celui-ci. L'erreur indique le composant rejeté. Renvoyez un chemin normalisé qui ne passe pas par un lien symbolique à l'intérieur du dépôt. Avant la v2.1.216, la création du worktree suivait le chemin du hook sans ce contrôle.

3394 3420 

3395<h3 id="worktreeremove">3421<h3 id="worktreeremove">

3396 WorktreeRemove3422 WorktreeRemove


3399S'exécute lorsque Claude Code nettoie un worktree créé par votre hook [`WorktreeCreate`](#worktreecreate). L'événement se déclenche lorsque :3425S'exécute lorsque Claude Code nettoie un worktree créé par votre hook [`WorktreeCreate`](#worktreecreate). L'événement se déclenche lorsque :

3400 3426 

3401* Vous quittez une [session de worktree](/docs/fr/worktrees#start-claude-in-a-worktree) interactive et choisissez de supprimer le worktree lorsque Claude Code vous le demande3427* Vous quittez une [session de worktree](/docs/fr/worktrees#start-claude-in-a-worktree) interactive et choisissez de supprimer le worktree lorsque Claude Code vous le demande

3402* Vous quittez une session de worktree interactive que vous n'avez pas [nommée](/docs/fr/sessions#name-your-sessions), Claude Code ne trouve aucun fichier modifié ou non suivi, et supprime le worktree sans vous le demander3428* Vous quittez une session de worktree interactive que vous n'avez pas [nommée](/docs/fr/sessions#name-your-sessions), Claude Code ne trouve aucun fichier modifié ou non suivi, et il supprime le worktree sans vous le demander

3403* Vous supprimez une [session en arrière-plan](/docs/fr/agent-view#what-deleting-a-session-removes) qui s'exécute dans le worktree3429* Vous supprimez une [session en arrière-plan](/docs/fr/agent-view#what-deleting-a-session-removes) qui s'exécute dans le worktree

3404* Vous demandez à Claude de quitter et de supprimer le worktree pendant une session, et Claude le supprime avec l'outil [`ExitWorktree`](/docs/fr/tools-reference)3430* Vous demandez à Claude de quitter et de supprimer le worktree pendant une session, et Claude le supprime avec l'outil [`ExitWorktree`](/docs/fr/tools-reference)

3405* Une session démarrée par [`claude remote-control`](/docs/fr/remote-control#start-a-remote-control-session) en mode `worktree` se termine sans plantage, et Claude Code ne trouve dans son worktree aucun fichier modifié ou non suivi ni aucun nouveau commit3431* Une session que [`claude remote-control`](/docs/fr/remote-control#start-a-remote-control-session) a démarrée en mode `worktree` se termine sans plantage, et Claude Code ne trouve aucun fichier modifié ou non suivi ni aucun nouveau commit dans son worktree

3406* Vous arrêtez `claude remote-control` alors que des sessions qu'il a démarrées en mode `worktree` sont toujours en cours d'exécution, et Claude Code ne trouve dans leurs worktrees aucun fichier modifié ou non suivi ni aucun nouveau commit3432* Vous arrêtez `claude remote-control` alors que des sessions qu'il a démarrées en mode `worktree` sont encore en cours d'exécution, et Claude Code ne trouve aucun fichier modifié ou non suivi ni aucun nouveau commit dans leurs worktrees

3407 3433 

3408Lorsqu'un sous-agent ou un agent de workflow se termine, Claude Code conserve le worktree que votre hook WorktreeCreate a créé pour lui et n'exécute pas votre hook WorktreeRemove. Supprimez vous-même ces worktrees une fois le travail terminé.3434Lorsqu'un sous-agent ou un agent de workflow termine, Claude Code conserve le worktree que votre hook WorktreeCreate a créé pour lui et n'exécute pas votre hook WorktreeRemove. Supprimez vous-même ces worktrees une fois le travail terminé.

3409 3435 

3410Claude Code ne vous demande rien avant l'exécution de votre hook pour un appel `ExitWorktree` ou un nettoyage `claude remote-control`. `ExitWorktree` refuse de supprimer un worktree créé par un hook à moins que l'appel ne passe [`discard_changes: true`](/docs/fr/agent-sdk/typescript#exitworktree), ce qui fait de votre hook la dernière vérification sur ce chemin.3436Claude Code ne vous demande rien avant que votre hook s'exécute pour un appel `ExitWorktree` ou un nettoyage `claude remote-control`. `ExitWorktree` refuse de supprimer un worktree créé par un hook à moins que l'appel ne transmette [`discard_changes: true`](/docs/fr/agent-sdk/typescript#exitworktree), ce qui fait de votre hook la dernière vérification sur ce chemin.

3411 3437 

3412Claude Code utilise git pour rechercher les fichiers modifiés ou non suivis ; il n'en trouve donc aucun dans un worktree qui n'est pas un checkout git ni situé dans l'un d'eux, même lorsque le répertoire contient du travail non commité. Vérifiez la présence de ce travail dans votre hook WorktreeRemove avant qu'il ne supprime quoi que ce soit.3438Claude Code utilise git pour rechercher les fichiers modifiés ou non suivis ; il n'en trouve donc aucun dans un worktree qui n'est pas un checkout git ou qui ne se trouve pas dans un checkout git, même lorsque le répertoire contient du travail non commité. Vérifiez la présence de ce travail dans votre hook WorktreeRemove avant qu'il ne supprime quoi que ce soit.

3413 3439 

3414Pour 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 :3440Pour 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 :

3415 3441 

3416* **Aucun hook WorktreeRemove** : Claude Code se rabat sur git pour une suppression à la sortie ou via `ExitWorktree`, et conserve le worktree lorsque `claude remote-control` effectue le nettoyage :3442* **Aucun hook WorktreeRemove** : Claude Code se rabat sur git pour une suppression à la sortie ou via `ExitWorktree`, et conserve le worktree lors du nettoyage par `claude remote-control` :

3417 * **Vous quittez une session worktree, ou Claude appelle `ExitWorktree`** : Claude Code supprime le chemin renvoyé par votre hook WorktreeCreate comme le ferait `git worktree remove --force`, de sorte qu'un worktree reconnu par git est supprimé. Un worktree que git ne reconnaît pas, par exemple un worktree créé par votre hook avec un système de gestion de versions autre que git, reste sur le disque.3443 * **Vous quittez une session de worktree, ou Claude appelle `ExitWorktree`** : Claude Code supprime le chemin renvoyé par votre hook WorktreeCreate comme le ferait `git worktree remove --force`, de sorte qu'un worktree reconnu par git est supprimé. Un worktree que git ne reconnaît pas, par exemple un worktree créé par votre hook avec un système de gestion de versions autre que git, reste sur le disque.

3418 * **`claude remote-control` nettoie le worktree d'une session** : le worktree reste sur le disque, et le terminal qui exécute `claude remote-control` affiche `worktree removal failed, kept: <path>`.3444 * **`claude remote-control` nettoie le worktree d'une session** : le worktree reste sur le disque, et le terminal qui exécute `claude remote-control` affiche `worktree removal failed, kept: <path>`.

3419 * **Vous supprimez une session en arrière-plan** : consultez [Ce que supprime la suppression d'une session](/docs/fr/agent-view#what-deleting-a-session-removes).3445 * **Vous supprimez une session en arrière-plan** : consultez [Ce que supprime la suppression d'une session](/docs/fr/agent-view#what-deleting-a-session-removes).

3420* **Le hook se termine avec 0** : le worktree est considéré comme supprimé. Claude Code ne lit rien d'autre du hook, assurez-vous donc que votre hook a bien supprimé le répertoire.3446* **Le hook se termine avec le code 0** : le worktree est considéré comme supprimé. Claude Code ne lit rien d'autre du hook ; assurez-vous donc que votre hook a bien supprimé le répertoire.

3421* **Le hook se termine avec un code non nul** : la suppression échoue si le répertoire situé à `worktree_path` existe toujours ensuite, et le worktree reste sur le disque sans solution de repli git. Un hook qui a supprimé le répertoire avant de se terminer avec un code non nul est considéré comme ayant supprimé le worktree. Pour savoir comment l'échec est signalé, consultez [Entrée de WorktreeRemove](#worktreeremove-input).3447* **Le hook se termine avec un code non nul** : la suppression échoue si le répertoire situé à `worktree_path` existe encore ensuite, et le worktree reste sur le disque sans solution de repli git. Un hook qui a supprimé le répertoire avant de se terminer avec un code non nul est considéré comme ayant supprimé le worktree. Pour savoir comment l'échec est signalé, consultez [Entrée WorktreeRemove](#worktreeremove-input).

3422 3448 

3423Claude Code ne supprime jamais une branche appartenant à un worktree créé par un hook, car il ne connaît que le chemin renvoyé par votre hook WorktreeCreate. Si votre hook WorktreeCreate crée une branche, supprimez-la dans votre hook WorktreeRemove.3449Claude Code ne supprime jamais une branche appartenant à un worktree créé par un hook, car il ne connaît que le chemin renvoyé par votre hook WorktreeCreate. Si votre hook WorktreeCreate crée une branche, supprimez-la dans votre hook WorktreeRemove.

3424 3450 

3425Claude Code ignore les [champs de sortie JSON](#json-output) d'un hook WorktreeRemove, tels que `systemMessage` et `continue`.3451Claude Code ignore les [champs de sortie JSON](#json-output) d'un hook WorktreeRemove, comme `systemMessage` et `continue`.

3426 3452 

3427Lors de la suppression d'une session en arrière-plan, Claude Code vérifie le chemin de worktree enregistré avant d'exécuter le hook et refuse un chemin qui est un lien symbolique ou qui passe par un lien symbolique situé sous la racine du dépôt. Sur ce chemin, le hook ne s'exécute pour un worktree qui contient encore des fichiers que lorsque vous confirmez la suppression dans la [vue des agents](/docs/fr/agent-view#what-deleting-a-session-removes) ; pour un tel worktree, [`claude rm`](/docs/fr/agent-view#manage-sessions-from-the-shell) conserve au contraire la session et le worktree. Avant la v2.1.216, le hook s'exécutait sur le chemin enregistré sans ces vérifications.3453Pour la suppression d'une session en arrière-plan, Claude Code vérifie le chemin du worktree enregistré avant d'exécuter le hook et refuse un chemin qui est un lien symbolique ou qui passe par un lien symbolique situé sous la racine du dépôt. Sur ce chemin, le hook s'exécute pour un worktree qui contient encore des fichiers uniquement lorsque vous confirmez la suppression dans la [vue agent](/docs/fr/agent-view#what-deleting-a-session-removes) ; pour un tel worktree, [`claude rm`](/docs/fr/agent-view#manage-sessions-from-the-shell) conserve plutôt la session et le worktree. Avant la v2.1.216, le hook s'exécutait sur le chemin enregistré sans ces vérifications.

3428 3454 

3429Claude Code transmet le chemin renvoyé par WorktreeCreate en tant que `worktree_path` dans l'entrée du hook. Cet exemple lit ce chemin et supprime le répertoire :3455Claude Code transmet le chemin renvoyé par WorktreeCreate sous la forme `worktree_path` dans l'entrée du hook. Cet exemple lit ce chemin et supprime le répertoire :

3430 3456 

3431```json theme={null}3457```json theme={null}

3432{3458{


3446```3472```

3447 3473 

3448<h4 id="worktreeremove-input">3474<h4 id="worktreeremove-input">

3449 Entrée de WorktreeRemove3475 Entrée WorktreeRemove

3450</h4>3476</h4>

3451 3477 

3452En plus des [champs d'entrée communs](#common-input-fields), les hooks WorktreeRemove reçoivent le champ `worktree_path`, qui est le chemin absolu du worktree en cours de suppression.3478En plus des [champs d'entrée communs](#common-input-fields), les hooks WorktreeRemove reçoivent le champ `worktree_path`, qui est le chemin absolu du worktree en cours de suppression.


3461}3487}

3462```3488```

3463 3489 

3464Le code de sortie d'un hook WorktreeRemove détermine le résultat. Lorsqu'un hook se termine avec un code non nul et que le répertoire situé à `worktree_path` existe toujours ensuite, la suppression échoue :3490Le code de sortie d'un hook WorktreeRemove détermine le résultat. Lorsqu'un hook se termine avec un code non nul et que le répertoire situé à `worktree_path` existe encore ensuite, la suppression échoue :

3465 3491 

3466* Le worktree reste sur le disque, et la commande et le stderr du hook sont envoyés au [log de débogage](#debug-hooks).3492* Le worktree reste sur le disque, et la commande et le stderr du hook sont envoyés dans le [log de débogage](#debug-hooks).

3467* Si vous supprimiez une session en arrière-plan, la session est également conservée. Le message de refus dans la [vue des agents](/docs/fr/agent-view#what-deleting-a-session-removes) indique comment le hook s'est terminé, par exemple `exited 1`, cite le début de son stderr et précise si une nouvelle suppression de la session supprime quand même le répertoire.3493* Si vous supprimiez une session en arrière-plan, la session reste également. Le message de refus dans la [vue agent](/docs/fr/agent-view#what-deleting-a-session-removes) indique comment le hook s'est terminé, par exemple `exited 1`, cite le début de son stderr et précise si supprimer à nouveau la session supprime quand même le répertoire.

3468* Si `claude remote-control` nettoyait le worktree d'une session, le terminal qui l'exécute affiche `worktree removal failed, kept: <path>`.3494* Si `claude remote-control` nettoyait le worktree d'une session, le terminal qui l'exécute affiche `worktree removal failed, kept: <path>`.

3469 3495 

3470<h3 id="precompact">3496<h3 id="precompact">

3471 PreCompact3497 PreCompact

3472</h3>3498</h3>

3473 3499 

3474S'exécute juste avant que Claude Code n'effectue une opération de compaction.3500S'exécute juste avant que Claude Code lance une opération de compaction.

3475 3501 

3476La valeur du matcher indique si la compaction a été déclenchée manuellement ou automatiquement :3502La valeur du matcher indique si la compaction a été déclenchée manuellement ou automatiquement :

3477 3503 

3478| Matcher | Quand il se déclenche |3504| Matcher | Quand il se déclenche |

3479| :- | :- |3505| :- | :- |

3480| `manual` | `/compact` |3506| `manual` | `/compact` |

3481| `auto` | Compaction automatique lorsque la conversation atteint la [fenêtre de compaction automatique](/docs/fr/model-config#set-the-auto-compact-window) |3507| `auto` | Compaction automatique lorsque la conversation atteint la [fenêtre de compaction automatique](/docs/fr/model-config#set-the-auto-compact-window), et [compaction en cas d'inactivité](/docs/fr/settings-reference#idlecompaction) |

3482 3508 

3483Terminez avec le code 2 pour bloquer la compaction. Pour un `/compact` manuel, le message stderr est affiché à l'utilisateur. Vous pouvez également bloquer en renvoyant du JSON avec `"decision": "block"`.3509Terminez avec le code 2 pour bloquer la compaction. Pour un `/compact` manuel, le message stderr est affiché à l'utilisateur. Vous pouvez également bloquer en renvoyant du JSON avec `"decision": "block"`.

3484 3510 

3485Bloquer la compaction automatique a des effets différents selon le moment où elle se déclenche. Si la compaction a été déclenchée de manière proactive avant la limite de contexte, Claude Code l'ignore et la conversation continue sans être compactée. Si la compaction a été déclenchée pour récupérer d'une erreur de limite de contexte déjà renvoyée par l'API, l'erreur sous-jacente remonte et la requête en cours échoue.3511Bloquer la compaction automatique a des effets différents selon le moment où elle se déclenche. Si la compaction a été déclenchée de manière proactive avant la limite de contexte, Claude Code l'ignore et la conversation se poursuit sans compaction. Si la compaction a été déclenchée pour récupérer d'une erreur de limite de contexte déjà renvoyée par l'API, l'erreur sous-jacente apparaît et la requête en cours échoue.

3486 3512 

3487Claude Code ignore les champs `systemMessage` et `continue` d'un hook PreCompact.3513Claude Code ignore les champs `systemMessage` et `continue` d'un hook PreCompact.

3488 3514 

3489<h4 id="precompact-input">3515<h4 id="precompact-input">

3490 Entrée de PreCompact3516 Entrée PreCompact

3491</h4>3517</h4>

3492 3518 

3493En plus des [champs d'entrée communs](#common-input-fields), les hooks PreCompact reçoivent `trigger` et `custom_instructions`. Pour `manual`, `custom_instructions` contient ce que l'utilisateur transmet à `/compact` et vaut `null` s'il ne transmet rien. Pour `auto`, `custom_instructions` vaut `null`.3519En plus des [champs d'entrée communs](#common-input-fields), les hooks PreCompact reçoivent `trigger` et `custom_instructions`. Pour `manual`, `custom_instructions` contient ce que l'utilisateur transmet à `/compact` et vaut `null` lorsqu'il ne transmet rien. Pour `auto`, `custom_instructions` vaut `null`.

3494 3520 

3495```json theme={null}3521```json theme={null}

3496{3522{


3509 3535 

3510S'exécute après que Claude Code a terminé une opération de compaction. Utilisez cet événement pour réagir au nouvel état compacté, par exemple pour journaliser le résumé généré ou mettre à jour un état externe. Claude Code ignore les champs `systemMessage` et `continue` d'un hook PostCompact.3536S'exécute après que Claude Code a terminé une opération de compaction. Utilisez cet événement pour réagir au nouvel état compacté, par exemple pour journaliser le résumé généré ou mettre à jour un état externe. Claude Code ignore les champs `systemMessage` et `continue` d'un hook PostCompact.

3511 3537 

3512Les mêmes valeurs de matcher que pour `PreCompact` s'appliquent :3538Les mêmes valeurs de matcher s'appliquent que pour `PreCompact` :

3513 3539 

3514| Matcher | Quand il se déclenche |3540| Matcher | Quand il se déclenche |

3515| :- | :- |3541| :- | :- |

3516| `manual` | Après `/compact` |3542| `manual` | Après `/compact` |

3517| `auto` | Après la compaction automatique lorsque la conversation atteint la [fenêtre de compaction automatique](/docs/fr/model-config#set-the-auto-compact-window) |3543| `auto` | Après la compaction automatique lorsque la conversation atteint la [fenêtre de compaction automatique](/docs/fr/model-config#set-the-auto-compact-window), et après la [compaction en cas d'inactivité](/docs/fr/settings-reference#idlecompaction) |

3518 3544 

3519<h4 id="postcompact-input">3545<h4 id="postcompact-input">

3520 Entrée de PostCompact3546 Entrée PostCompact

3521</h4>3547</h4>

3522 3548 

3523En plus des [champs d'entrée communs](#common-input-fields), les hooks PostCompact reçoivent `trigger` et `compact_summary`. Le champ `compact_summary` contient le résumé de la conversation généré par l'opération de compaction.3549En plus des [champs d'entrée communs](#common-input-fields), les hooks PostCompact reçoivent `trigger` et `compact_summary`. Le champ `compact_summary` contient le résumé de la conversation généré par l'opération de compaction.


3533}3559}

3534```3560```

3535 3561 

3536Les hooks PostCompact n'ont pas de contrôle de décision. Ils ne peuvent pas influer sur le résultat de la compaction, mais peuvent effectuer des tâches de suivi.3562Les hooks PostCompact n'ont pas de contrôle de décision. Ils ne peuvent pas modifier le résultat de la compaction, mais peuvent effectuer des tâches de suivi.

3537 3563 

3538<h3 id="premodelswitch">3564<h3 id="premodelswitch">

3539 PreModelSwitch3565 PreModelSwitch

3540</h3>3566</h3>

3541 3567 

3542S'exécute avant que Claude Code n'applique un changement de modèle que vous ou un client avez demandé. Utilisez-le pour bloquer un changement, exiger une confirmation ou indiquer le coût du changement avant qu'il ait lieu.3568S'exécute avant que Claude Code applique un changement de modèle que vous ou un client avez demandé. Utilisez-le pour bloquer un changement, exiger une confirmation ou afficher ce que coûtera le changement avant qu'il ait lieu.

3543 3569 

3544PreModelSwitch nécessite Claude Code v2.1.251 ou ultérieur. Claude Code l'exécute pour les demandes suivantes :3570PreModelSwitch nécessite Claude Code v2.1.251 ou une version ultérieure. Claude Code l'exécute pour ces demandes :

3545 3571 

3546* `/model <name>` et le sélecteur `/model`3572* `/model <name>` et le sélecteur `/model`

3547* Le sélecteur de modèle `Option+P` ou `Alt+P`3573* Le sélecteur de modèle `Option+P` ou `Alt+P`

3548* Le paramètre Model dans `/config`3574* Le paramètre Model dans `/config`

3549* L'activation du [mode rapide](/docs/fr/fast-mode) lorsque cela change le modèle de la session3575* L'activation du [mode rapide](/docs/fr/fast-mode) lorsqu'elle change le modèle de la session

3550* Une requête `set_model`, ou un changement de modèle dans une requête `apply_flag_settings`, provenant d'un hôte [Agent SDK](/docs/fr/agent-sdk/typescript#query-object) ou de [Remote Control](/docs/fr/remote-control)3576* Une requête `set_model`, ou un changement de modèle dans une requête `apply_flag_settings`, provenant d'un hôte [Agent SDK](/docs/fr/agent-sdk/typescript#query-object) ou de [Remote Control](/docs/fr/remote-control)

3551 3577 

3552Claude Code n'exécute pas les hooks PreModelSwitch pour les changements qu'il effectue de lui-même, comme un [basculement automatique vers un modèle de secours](/docs/fr/model-config#automatic-model-fallback) ou la restauration du modèle lorsque vous reprenez une session. Ces changements n'atteignent que [PostModelSwitch](#postmodelswitch).3578Claude Code n'exécute pas les hooks PreModelSwitch pour les changements qu'il effectue de lui-même, comme un [basculement automatique vers un modèle de secours](/docs/fr/model-config#automatic-model-fallback) ou la restauration du modèle lorsque vous reprenez une session. Ces changements n'atteignent que [PostModelSwitch](#postmodelswitch).

3553 3579 

3554Claude Code compare le matcher au nom canonique du modèle vers lequel la session bascule, en ignorant tout suffixe `[1m]`. Un alias tel que `opus`, un ID de modèle daté et un ID propre à un fournisseur, comme un ID de modèle Amazon Bedrock, correspondent tous au nom canonique unique vers lequel ils se résolvent, de sorte que `claude-opus-5` couvre toutes les graphies d'Opus 5.3580Claude Code compare le matcher au nom canonique du modèle vers lequel la session bascule, en ignorant tout suffixe `[1m]`. Un alias tel que `opus`, un ID de modèle daté et un ID propre à un fournisseur, comme un ID de modèle Amazon Bedrock, correspondent tous au nom canonique unique vers lequel ils se résolvent, de sorte que `claude-opus-5` couvre toutes les écritures d'Opus 5.

3555 3581 

3556Lorsque Claude Code ne peut pas déterminer un nom canonique pour la cible, par exemple un ID de modèle personnalisé que seule votre [passerelle LLM](/docs/fr/llm-gateway) connaît, il exécute chaque hook PreModelSwitch quel que soit le matcher. Un hook qui bloque doit donc vérifier `to_model` dans son entrée plutôt que de se fier uniquement au matcher.3582Lorsque Claude Code ne peut pas déterminer de nom canonique pour la cible, par exemple un ID de modèle personnalisé que seule votre [passerelle LLM](/docs/fr/llm-gateway) connaît, il exécute tous les hooks PreModelSwitch quel que soit le matcher. Un hook qui bloque doit donc vérifier `to_model` dans son entrée plutôt que de se fier uniquement au matcher.

3557 3583 

3558Écrivez le matcher sous la forme d'un nom exact, d'une liste séparée par `|` telle que `claude-opus-4-6|claude-opus-5`, ou d'une expression régulière telle que `.*opus.*`. Cet exemple utilise un matcher à nom exact et vérifie également `to_model` dans l'entrée du hook ; il refuse ainsi un passage à Opus 4.6 en se terminant avec le code 2 et laisse passer toute autre cible :3584Écrivez le matcher sous la forme d'un nom exact, d'une liste séparée par `|` comme `claude-opus-4-6|claude-opus-5`, ou d'une expression régulière comme `.*opus.*`. Cet exemple utilise un matcher de nom exact et vérifie également `to_model` dans l'entrée du hook ; il refuse ainsi un passage à Opus 4.6 en se terminant avec le code 2 et laisse passer toute autre cible :

3559 3585 

3560<Tabs>3586<Tabs>

3561 <Tab title="macOS/Linux">3587 <Tab title="macOS/Linux">


3608 }3634 }

3609 ```3635 ```

3610 3636 

3611 Enregistrez ce script dans `.claude/hooks/block-opus-46.ps1` dans votre projet :3637 Enregistrez ce script sous `.claude/hooks/block-opus-46.ps1` dans votre projet :

3612 3638 

3613 ```powershell theme={null}3639 ```powershell theme={null}

3614 $hookInput = [Console]::In.ReadToEnd() | ConvertFrom-Json3640 $hookInput = [Console]::In.ReadToEnd() | ConvertFrom-Json


3621 </Tab>3647 </Tab>

3622</Tabs>3648</Tabs>

3623 3649 

3624Pour vérifier que le hook fonctionne, exécutez `/model claude-opus-4-6` depuis une session utilisant un autre modèle. Claude Code conserve le modèle actuel et indique qu'un hook PreModelSwitch a bloqué le changement, avec votre message comme motif.3650Pour vérifier que le hook fonctionne, exécutez `/model claude-opus-4-6` depuis une session utilisant un autre modèle. Claude Code conserve le modèle actuel et signale qu'un hook PreModelSwitch a bloqué le changement, avec votre message comme motif.

3625 3651 

3626<h4 id="premodelswitch-input">3652<h4 id="premodelswitch-input">

3627 Entrée de PreModelSwitch3653 Entrée PreModelSwitch

3628</h4>3654</h4>

3629 3655 

3630En plus des [champs d'entrée communs](#common-input-fields), les hooks PreModelSwitch reçoivent les champs de ce tableau. Les cinq derniers décrivent le coût du renvoi de la conversation au nouveau modèle, afin qu'un hook puisse afficher ce montant avant le changement.3656En plus des [champs d'entrée communs](#common-input-fields), les hooks PreModelSwitch reçoivent les champs de ce tableau. Les cinq derniers décrivent ce que coûte le renvoi de la conversation au nouveau modèle, afin qu'un hook puisse afficher ce chiffre avant que le changement ait lieu.

3631 3657 

3632| Champ | Type | Description |3658| Champ | Type | Description |

3633| :- | :- | :- |3659| :- | :- | :- |

3634| `from_model` | string | ID du modèle de départ du changement |3660| `from_model` | string | ID du modèle à partir duquel le changement s'effectue |

3635| `to_model` | string | ID du modèle d'arrivée du changement. Le matcher est comparé au nom canonique de ce modèle |3661| `to_model` | string | ID du modèle vers lequel le changement s'effectue. Le matcher est comparé au nom canonique de ce modèle |

3636| `requested_model` | string ou `null` | Le modèle indiqué par la requête : un alias tel que `opus`, un ID de modèle complet, ou `null` lorsque la requête portait sur le modèle par défaut |3662| `requested_model` | string ou `null` | Le modèle nommé dans la demande : un alias tel que `opus`, un ID de modèle complet, ou `null` lorsque la demande portait sur le modèle par défaut |

3637| `source` | string | Origine de la demande : `"command"` pour `/model <name>`, le paramètre Model dans `/config` ou l'activation du mode rapide ; `"picker"` pour un sélecteur de modèle ; `"sdk"` pour une requête `set_model`, ou un changement de modèle dans une requête `apply_flag_settings`, provenant d'un hôte Agent SDK ou de Remote Control |3663| `source` | string | Origine de la demande : `"command"` pour `/model <name>`, le paramètre Model dans `/config` ou l'activation du mode rapide ; `"picker"` pour un sélecteur de modèle ; `"sdk"` pour une requête `set_model`, ou un changement de modèle dans une requête `apply_flag_settings`, provenant d'un hôte Agent SDK ou de Remote Control |

3638| `context_tokens` | number | Tokens que la prochaine requête renvoie comme prompt : la somme des tokens d'entrée, de lecture du cache, de création du cache et de sortie de la dernière réponse de la conversation principale. `0` avant la première réponse |3664| `context_tokens` | number | Tokens que la prochaine requête renvoie comme prompt : la somme des tokens d'entrée, de lecture du cache, de création du cache et de sortie de la dernière réponse de la conversation principale. `0` avant la première réponse |

3639| `prompt_cache_warm` | boolean | Indique si le cache de prompt du modèle actuel est probablement encore chaud, ce qui signifie que le changement le fait perdre |3665| `prompt_cache_warm` | boolean | Indique si le cache de prompt du modèle actuel est probablement encore chaud, ce qui signifie que le changement le fait perdre |

3640| `cache_ttl` | string | [Durée de vie du cache de prompt](/docs/fr/prompt-caching#cache-lifetime) que Claude Code demande pour cette session : `"5m"` ou `"1h"` |3666| `cache_ttl` | string | [Durée de vie du cache de prompt](/docs/fr/prompt-caching#cache-lifetime) que Claude Code demande pour cette session : `"5m"` ou `"1h"` |

3641| `estimated_cache_write_usd` | number | Coût estimé en dollars américains de l'écriture de `context_tokens` dans le cache de prompt sur `to_model` au tarif `cache_ttl`, hors réponse suivante. Le serveur n'a pas forcément besoin de remettre en cache l'intégralité du contexte, considérez donc ce montant comme une estimation |3667| `estimated_cache_write_usd` | number | Coût estimé en dollars américains de l'écriture de `context_tokens` dans le cache de prompt sur `to_model` au tarif `cache_ttl`, hors réponse suivante. Le serveur n'a pas forcément besoin de remettre en cache l'intégralité du contexte ; considérez donc cette valeur comme une estimation |

3642| `pricing` | string | Comment Claude Code a calculé `estimated_cache_write_usd` : `"configured"` aux tarifs propres à votre organisation lorsqu'elle les a configurés, `"catalog"` au prix catalogue, ou `"default"` lorsque `to_model` n'a pas de prix connu et que Claude Code a supposé un tarif par défaut |3668| `pricing` | string | Comment Claude Code a calculé `estimated_cache_write_usd` : `"configured"` aux tarifs propres à votre organisation lorsqu'elle les a configurés, `"catalog"` au prix catalogue, ou `"default"` lorsque `to_model` n'a pas de prix connu et que Claude Code a supposé un tarif par défaut |

3643 3669 

3644Cet exemple montre l'entrée pour `/model opus` dans une session utilisant Sonnet 5 :3670Cet exemple montre l'entrée pour `/model opus` dans une session utilisant Sonnet 5 :


3662```3688```

3663 3689 

3664<h4 id="premodelswitch-decision-control">3690<h4 id="premodelswitch-decision-control">

3665 Contrôle de décision de PreModelSwitch3691 Contrôle de décision PreModelSwitch

3666</h4>3692</h4>

3667 3693 

3668Les hooks `PreModelSwitch` peuvent annuler le changement, demander à l'utilisateur de le confirmer ou le laisser se poursuivre. Le code de sortie 2 ou un `decision: "block"` de premier niveau annule le changement.3694Les hooks `PreModelSwitch` peuvent annuler le changement, demander à l'utilisateur de le confirmer ou le laisser se poursuivre. Le code de sortie 2 ou un `decision: "block"` de premier niveau annule le changement.


3690 3716 

3691Lorsque plusieurs hooks PreModelSwitch renvoient des décisions différentes, l'ordre de priorité est `deny` > `ask` > `allow`.3717Lorsque plusieurs hooks PreModelSwitch renvoient des décisions différentes, l'ordre de priorité est `deny` > `ask` > `allow`.

3692 3718 

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

3694 3720 

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

3696 3722 

3697Un hook qui se termine avec un code autre que 0 ou 2 et n'affiche aucune décision JSON constitue une erreur non bloquante, comme décrit dans [Autres codes de sortie](#other-exit-codes).3723Un hook qui se termine avec un code autre que 0 ou 2 et n'affiche aucune décision JSON constitue une erreur non bloquante, comme décrit dans [Autres codes de sortie](#other-exit-codes).

3698 3724 


3700 PostModelSwitch3726 PostModelSwitch

3701</h3>3727</h3>

3702 3728 

3703S'exécute après le changement du modèle de la session. Utilisez-le pour donner à Claude des consignes propres à un modèle sans modifier chaque CLAUDE.md, par exemple une instruction à l'échelle de l'organisation qui s'applique à certains modèles.3729S'exécute après le changement du modèle de la session. Utilisez-le pour donner à Claude des consignes propres au modèle sans modifier chaque CLAUDE.md, par exemple une instruction à l'échelle de l'organisation qui s'applique à certains modèles.

3704 3730 

3705PostModelSwitch nécessite Claude Code v2.1.251 ou ultérieur. Il ne peut pas bloquer, car le modèle a déjà changé. Claude Code exécute les hooks PostModelSwitch après l'un des changements suivants :3731PostModelSwitch nécessite Claude Code v2.1.251 ou une version ultérieure. Il ne peut pas bloquer, car le modèle a déjà changé. Claude Code exécute les hooks PostModelSwitch après l'un de ces changements :

3706 3732 

3707* Un changement que vous ou un client avez demandé3733* Un changement que vous ou un client avez demandé

3708* Un [basculement automatique vers un modèle de secours](/docs/fr/model-config#automatic-model-fallback), qui change le modèle de la session3734* Un [basculement automatique vers un modèle de secours](/docs/fr/model-config#automatic-model-fallback), qui change le modèle de la session


3736Pour vérifier que le hook fonctionne, passez à un modèle Opus depuis une session utilisant un autre modèle, par exemple en exécutant `/model opus` depuis une session Sonnet, puis demandez à Claude quelles consignes il a concernant le modèle actuel.3762Pour vérifier que le hook fonctionne, passez à un modèle Opus depuis une session utilisant un autre modèle, par exemple en exécutant `/model opus` depuis une session Sonnet, puis demandez à Claude quelles consignes il a concernant le modèle actuel.

3737 3763 

3738<h4 id="postmodelswitch-input">3764<h4 id="postmodelswitch-input">

3739 Entrée de PostModelSwitch3765 Entrée PostModelSwitch

3740</h4>3766</h4>

3741 3767 

3742Les hooks PostModelSwitch reçoivent les mêmes champs que [PreModelSwitch](#premodelswitch-input), avec `hook_event_name` défini sur `"PostModelSwitch"` et deux valeurs supplémentaires de `source` : `"auto"` pour un basculement automatique vers un modèle de secours ou tout autre changement effectué par Claude Code de lui-même, et `"resume"` pour le modèle restauré lorsque vous reprenez une session.3768Les hooks PostModelSwitch reçoivent les mêmes champs que [PreModelSwitch](#premodelswitch-input), avec `hook_event_name` défini sur `"PostModelSwitch"` et deux valeurs `source` supplémentaires : `"auto"` pour un basculement automatique vers un modèle de secours ou tout autre changement effectué par Claude Code de lui-même, et `"resume"` pour le modèle restauré lorsque vous reprenez une session.

3743 3769 

3744`requested_model` vaut `null` lorsque `source` vaut `"auto"`. Lorsque `source` vaut `"resume"`, il s'agit du paramètre de modèle enregistré que Claude Code a restauré.3770`requested_model` vaut `null` lorsque `source` vaut `"auto"`. Lorsque `source` vaut `"resume"`, il s'agit du paramètre de modèle enregistré que Claude Code a restauré.

3745 3771 

3746<h4 id="postmodelswitch-decision-control">3772<h4 id="postmodelswitch-decision-control">

3747 Contrôle de décision de PostModelSwitch3773 Contrôle de décision PostModelSwitch

3748</h4>3774</h4>

3749 3775 

3750Claude Code prend la [sortie stdout en texte brut](#exit-code-0) de votre hook en cas de sortie avec 0, ou `additionalContext` depuis la sortie JSON, et la transmet à Claude avec la prochaine requête après le changement. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, vous pouvez renvoyer :3776Claude Code prend la [sortie stdout en texte brut](#exit-code-0) de votre hook en cas de sortie avec le code 0, ou `additionalContext` issu de la sortie JSON, et la transmet à Claude avec la requête suivant le changement. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, vous pouvez renvoyer :

3751 3777 

3752| Champ | Description |3778| Champ | Description |

3753| :- | :- |3779| :- | :- |

3754| `additionalContext` | Chaîne ajoutée au contexte de Claude avec la prochaine requête. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) |3780| `additionalContext` | Chaîne ajoutée au contexte de Claude avec la requête suivante. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) |

3755 3781 

3756Si le hook n'a pas terminé dans les cinq secondes suivant l'envoi de votre prochain prompt, Claude Code envoie cette requête sans la sortie et l'attache à la requête suivante. Si le modèle change plusieurs fois avant la prochaine requête, Claude Code ne transmet que la sortie correspondant au modèle cible du dernier changement.3782Si le hook n'a pas terminé dans les cinq secondes suivant l'envoi de votre prompt suivant, Claude Code envoie cette requête sans la sortie et la joint plutôt à la requête d'après. Si le modèle change plusieurs fois avant la requête suivante, Claude Code ne transmet que la sortie correspondant au modèle cible du dernier changement.

3757 3783 

3758<h3 id="sessionend">3784<h3 id="sessionend">

3759 SessionEnd3785 SessionEnd

3760</h3>3786</h3>

3761 3787 

3762S'exécute à la fin d'une session Claude Code. Utile pour les tâches de nettoyage, la journalisation des3788S'exécute lorsqu'une session Claude Code se termine. Utile pour les tâches de nettoyage, la journalisation des

3763statistiques de session ou l'enregistrement de l'état de la session. Prend en charge les matchers pour filtrer par motif de sortie.3789statistiques de session ou l'enregistrement de l'état de la session. Prend en charge les matchers pour filtrer selon le motif de sortie.

3764 3790 

3765Le champ `reason` de l'entrée du hook indique pourquoi la session s'est terminée :3791Le champ `reason` de l'entrée du hook indique pourquoi la session s'est terminée :

3766 3792 


3774| `bypass_permissions_disabled` | Supprimé dans la v2.1.234 ; Claude Code ne l'envoie plus. Retirez-le de vos matchers `SessionEnd` |3800| `bypass_permissions_disabled` | Supprimé dans la v2.1.234 ; Claude Code ne l'envoie plus. Retirez-le de vos matchers `SessionEnd` |

3775 3801 

3776<h4 id="sessionend-input">3802<h4 id="sessionend-input">

3777 Entrée de SessionEnd3803 Entrée SessionEnd

3778</h4>3804</h4>

3779 3805 

3780En plus des [champs d'entrée communs](#common-input-fields), les hooks SessionEnd reçoivent un champ `reason` indiquant pourquoi la session s'est terminée. Consultez le [tableau des motifs](#sessionend) ci-dessus pour toutes les valeurs.3806En plus des [champs d'entrée communs](#common-input-fields), les hooks SessionEnd reçoivent un champ `reason` indiquant pourquoi la session s'est terminée. Consultez le [tableau des motifs](#sessionend) ci-dessus pour toutes les valeurs.


3789}3815}

3790```3816```

3791 3817 

3792Les hooks SessionEnd n'ont pas de contrôle de décision. Ils ne peuvent pas bloquer la fin de la session, mais peuvent effectuer des tâches de nettoyage. Claude Code ignore leurs [champs de sortie JSON](#json-output), tels que `systemMessage`.3818Les hooks SessionEnd n'ont pas de contrôle de décision. Ils ne peuvent pas bloquer la fin de la session, mais peuvent effectuer des tâches de nettoyage. Claude Code ignore leurs [champs de sortie JSON](#json-output), comme `systemMessage`.

3793 3819 

3794Les hooks SessionEnd ont un délai d'expiration par défaut de 1,5 seconde. Il s'applique lorsque vous quittez, exécutez `/clear` ou changez de session avec `/resume` en mode interactif. Vous pouvez accorder plus de temps à un hook de deux façons :3820Les hooks SessionEnd ont un délai d'expiration par défaut de 1,5 seconde. Il s'applique lorsque vous quittez, exécutez `/clear` ou changez de session avec `/resume` en mode interactif. Vous pouvez accorder plus de temps à un hook de deux façons :

3795 3821 

3796* **`timeout` par hook** : définissez `timeout` dans la configuration de ce hook. Le budget global augmente automatiquement pour correspondre au `timeout` par hook le plus élevé de vos fichiers de paramètres, jusqu'à 60 secondes. Si vous augmentez le budget de cette façon, un hook sans son propre `timeout` conserve tout de même la valeur par défaut. Les délais d'expiration définis sur les hooks fournis par des plugins n'augmentent pas le budget.3822* **`timeout` par hook** : définissez `timeout` dans la configuration de ce hook. Le budget global augmente automatiquement pour correspondre au `timeout` par hook le plus élevé dans vos fichiers de paramètres, dans la limite de 60 secondes. Si vous augmentez le budget de cette façon, un hook sans son propre `timeout` conserve tout de même la valeur par défaut. Les délais d'expiration définis sur les hooks fournis par des plugins n'augmentent pas le budget.

3797* **`CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS`** : définissez cette variable d'environnement en millisecondes pour remplacer explicitement le budget. La valeur que vous définissez devient également le délai d'expiration de chaque hook sans son propre `timeout`.3823* **`CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS`** : définissez cette variable d'environnement en millisecondes pour remplacer explicitement le budget. La valeur que vous définissez devient également le délai d'expiration de chaque hook sans son propre `timeout`.

3798 3824 

3799Cet exemple définit le budget à 5 secondes :3825Cet exemple définit le budget à 5 secondes :


3808 Elicitation3834 Elicitation

3809</h3>3835</h3>

3810 3836 

3811S'exécute lorsqu'un serveur MCP demande une saisie de l'utilisateur en cours de tâche. Par défaut, Claude Code affiche une boîte de dialogue interactive pour que l'utilisateur réponde. Les hooks peuvent intercepter cette demande et y répondre de manière programmatique, en ignorant complètement la boîte de dialogue.3837S'exécute lorsqu'un serveur MCP demande une saisie à l'utilisateur en cours de tâche. Par défaut, Claude Code affiche une boîte de dialogue interactive permettant à l'utilisateur de répondre. Les hooks peuvent intercepter cette demande et y répondre par programmation, en ignorant entièrement la boîte de dialogue.

3812 3838 

3813Pour un hook complet avec son entrée de paramètres et son script, consultez [Répondre à une demande de formulaire depuis un script](#answer-a-form-request-from-a-script).3839Pour un hook complet avec son entrée de paramètres et son script, consultez [Répondre à une demande de formulaire depuis un script](#answer-a-form-request-from-a-script).

3814 3840 

3815Le champ matcher est comparé au nom du serveur MCP.3841Le champ matcher est comparé au nom du serveur MCP.

3816 3842 

3817<h4 id="elicitation-input">3843<h4 id="elicitation-input">

3818 Entrée d'Elicitation3844 Entrée Elicitation

3819</h4>3845</h4>

3820 3846 

3821En plus des [champs d'entrée communs](#common-input-fields), les hooks Elicitation reçoivent `mcp_server_name`, `message`, ainsi que les champs facultatifs `mode`, `url`, `elicitation_id` et `requested_schema`.3847En plus des [champs d'entrée communs](#common-input-fields), les hooks Elicitation reçoivent `mcp_server_name`, `message` et les champs facultatifs `mode`, `url`, `elicitation_id` et `requested_schema`.

3822 3848 

3823Pour une élicitation en mode formulaire, le cas le plus courant :3849Pour une élicitation en mode formulaire, le cas le plus courant :

3824 3850 


3856```3882```

3857 3883 

3858<h4 id="elicitation-output">3884<h4 id="elicitation-output">

3859 Sortie d'Elicitation3885 Sortie Elicitation

3860</h4>3886</h4>

3861 3887 

3862Un hook Elicitation peut répondre à la demande à la place de l'utilisateur, la refuser ou l'annuler, ou la laisser à la boîte de dialogue. Pour répondre, refuser ou annuler, terminez avec 0 et affichez un objet `hookSpecificOutput` avec une `action`. Le serveur reçoit votre réponse et aucune boîte de dialogue n'apparaît. Chaque ligne de ce tableau indique ce qu'il faut renvoyer pour un résultat donné et ce que reçoit le serveur MCP :3888Un hook Elicitation peut répondre à la demande à la place de l'utilisateur, la refuser ou l'annuler, ou la laisser à la boîte de dialogue. Pour répondre, refuser ou annuler, terminez avec le code 0 et affichez un objet `hookSpecificOutput` avec une `action`. Le serveur reçoit votre réponse et aucune boîte de dialogue n'apparaît. Chaque ligne de ce tableau indique ce qu'il faut renvoyer pour un résultat donné et ce que reçoit le serveur MCP :

3863 3889 

3864| Pour | Renvoyer | Le serveur reçoit |3890| Pour | Renvoyer | Le serveur reçoit |

3865| :- | :- | :- |3891| :- | :- | :- |


3868| Annuler la demande | `"action": "cancel"` | `cancel` |3894| Annuler la demande | `"action": "cancel"` | `cancel` |

3869| Laisser la demande à l'utilisateur | Aucune sortie, avec le code de sortie 0 | La réponse de l'utilisateur depuis la [boîte de dialogue](/docs/fr/mcp#respond-to-mcp-elicitation-requests) |3895| Laisser la demande à l'utilisateur | Aucune sortie, avec le code de sortie 0 | La réponse de l'utilisateur depuis la [boîte de dialogue](/docs/fr/mcp#respond-to-mcp-elicitation-requests) |

3870 3896 

3871Cette sortie répond à la demande en mode formulaire présentée dans [Entrée d'Elicitation](#elicitation-input). Les clés de `content` sont les noms de propriétés issus du `requested_schema` de cette demande :3897Cette sortie répond à la demande en mode formulaire présentée dans [Entrée Elicitation](#elicitation-input). Les clés de `content` sont les noms de propriétés du `requested_schema` de cette demande :

3872 3898 

3873```json theme={null}3899```json theme={null}

3874{3900{


3906Votre hook peut également refuser de ces façons. Le serveur reçoit le même `decline` que pour `"action": "decline"` :3932Votre hook peut également refuser de ces façons. Le serveur reçoit le même `decline` que pour `"action": "decline"` :

3907 3933 

3908* **Se terminer avec le code 2** : Claude Code ignore un `hookSpecificOutput` affiché par le même hook3934* **Se terminer avec le code 2** : Claude Code ignore un `hookSpecificOutput` affiché par le même hook

3909* **Afficher un `"decision": "block"` de premier niveau** : le blocage remplace une `action` dans la même sortie3935* **Afficher un `"decision": "block"` de premier niveau** : le blocage l'emporte sur une `action` dans la même sortie

3910 3936 

3911Lorsque plusieurs hooks correspondent à la même demande, un refus de l'un d'eux l'emporte sur un `accept` ou un `cancel` d'un autre.3937Lorsque plusieurs hooks correspondent à la même demande, un refus de l'un d'eux l'emporte sur un `accept` ou un `cancel` d'un autre.

3912 3938 


3921 3947 

3922Ni l'utilisateur ni le serveur ne voient pourquoi votre hook a refusé, car Claude Code n'affiche ni votre stderr ni votre `reason`.3948Ni l'utilisateur ni le serveur ne voient pourquoi votre hook a refusé, car Claude Code n'affiche ni votre stderr ni votre `reason`.

3923 3949 

3924Claude Code ignorait un `decision` de premier niveau provenant des hooks `Elicitation` et `ElicitationResult` de la v2.1.105 jusqu'à la correction dans la v2.1.284.3950Claude Code ignorait un `decision` de premier niveau provenant des hooks `Elicitation` et `ElicitationResult` de la v2.1.105 jusqu'au correctif de la v2.1.284.

3925 3951 

3926<h4 id="answer-a-form-request-from-a-script">3952<h4 id="answer-a-form-request-from-a-script">

3927 Répondre à une demande de formulaire depuis un script3953 Répondre à une demande de formulaire depuis un script

3928</h4>3954</h4>

3929 3955 

3930Cet exemple répond à une question récurrente à la place de l'utilisateur. Un serveur MCP nommé `issue-tracker` demande une clé de projet dans un formulaire, et le hook renseigne `DOCS`. Le script accepte lorsque `project_key` est l'unique champ du formulaire. Pour toute autre demande, il n'affiche rien, et la boîte de dialogue apparaît.3956Cet exemple répond à une question récurrente à la place de l'utilisateur. Un serveur MCP nommé `issue-tracker` demande une clé de projet dans un formulaire, et le hook renseigne `DOCS`. Le script accepte lorsque `project_key` est l'unique champ du formulaire. Pour toute autre demande, il n'affiche rien, de sorte que la boîte de dialogue apparaît.

3931 3957 

3932<Tabs>3958<Tabs>

3933 <Tab title="macOS/Linux">3959 <Tab title="macOS/Linux">


3952 }3978 }

3953 ```3979 ```

3954 3980 

3955 Enregistrez ce script dans `.claude/hooks/answer-project-key.sh` dans votre projet et rendez-le exécutable avec `chmod +x` :3981 Enregistrez ce script sous `.claude/hooks/answer-project-key.sh` dans votre projet et rendez-le exécutable avec `chmod +x` :

3956 3982 

3957 ```bash theme={null}3983 ```bash theme={null}

3958 #!/bin/bash3984 #!/bin/bash


3993 }4019 }

3994 ```4020 ```

3995 4021 

3996 Enregistrez ce script dans `.claude/hooks/answer-project-key.ps1` dans votre projet :4022 Enregistrez ce script sous `.claude/hooks/answer-project-key.ps1` dans votre projet :

3997 4023 

3998 ```powershell theme={null}4024 ```powershell theme={null}

3999 $request = [Console]::In.ReadToEnd() | ConvertFrom-Json4025 $request = [Console]::In.ReadToEnd() | ConvertFrom-Json


4012 </Tab>4038 </Tab>

4013</Tabs>4039</Tabs>

4014 4040 

4015Pour vérifier que le hook fonctionne, démarrez Claude Code avec `claude --debug` et donnez à Claude une tâche qui amène le serveur à demander la clé de projet. Aucune boîte de dialogue n'apparaît, et le [log de débogage](#debug-hooks) contient une ligne qui se termine par `Elicitation resolved by hook: {"action":"accept","content":{"project_key":"DOCS"}}`.4041Pour vérifier que le hook fonctionne, démarrez Claude Code avec `claude --debug` et confiez à Claude une tâche qui amène le serveur à demander la clé de projet. Aucune boîte de dialogue n'apparaît, et le [log de débogage](#debug-hooks) contient une ligne qui se termine par `Elicitation resolved by hook: {"action":"accept","content":{"project_key":"DOCS"}}`.

4016 4042 

4017<h3 id="elicitationresult">4043<h3 id="elicitationresult">

4018 ElicitationResult4044 ElicitationResult

4019</h3>4045</h3>

4020 4046 

4021S'exécute après qu'un utilisateur a répondu à une élicitation MCP. Les hooks peuvent observer, modifier ou bloquer la réponse avant qu'elle ne soit renvoyée au serveur MCP.4047S'exécute après qu'un utilisateur a répondu à une élicitation MCP. Les hooks peuvent observer, modifier ou bloquer la réponse avant qu'elle soit renvoyée au serveur MCP.

4022 4048 

4023Lorsqu'un hook [Elicitation](#elicitation) répond à une demande, Claude Code envoie cette réponse au serveur sans exécuter les hooks ElicitationResult.4049Lorsqu'un hook [Elicitation](#elicitation) répond à une demande, Claude Code envoie cette réponse au serveur sans exécuter les hooks ElicitationResult.

4024 4050 

4025Le champ matcher est comparé au nom du serveur MCP.4051Le champ matcher est comparé au nom du serveur MCP.

4026 4052 

4027<h4 id="elicitationresult-input">4053<h4 id="elicitationresult-input">

4028 Entrée d'ElicitationResult4054 Entrée ElicitationResult

4029</h4>4055</h4>

4030 4056 

4031En plus des [champs d'entrée communs](#common-input-fields), les hooks ElicitationResult reçoivent `mcp_server_name`, `action`, ainsi que les champs facultatifs `mode`, `elicitation_id` et `content`.4057En plus des [champs d'entrée communs](#common-input-fields), les hooks ElicitationResult reçoivent `mcp_server_name`, `action` et les champs facultatifs `mode`, `elicitation_id` et `content`.

4032 4058 

4033```json theme={null}4059```json theme={null}

4034{4060{


4044```4070```

4045 4071 

4046<h4 id="elicitationresult-output">4072<h4 id="elicitationresult-output">

4047 Sortie d'ElicitationResult4073 Sortie ElicitationResult

4048</h4>4074</h4>

4049 4075 

4050Un hook ElicitationResult peut laisser passer la réponse de l'utilisateur, en modifier les valeurs ou la bloquer. Pour modifier ou bloquer la réponse, terminez avec 0 et affichez un objet `hookSpecificOutput` avec une `action`. Chaque ligne de ce tableau indique ce qu'il faut renvoyer pour un résultat donné et ce que reçoit le serveur MCP :4076Un hook ElicitationResult peut laisser passer la réponse de l'utilisateur, en modifier les valeurs ou la bloquer. Pour modifier ou bloquer la réponse, terminez avec le code 0 et affichez un objet `hookSpecificOutput` avec une `action`. Chaque ligne de ce tableau indique ce qu'il faut renvoyer pour un résultat donné et ce que reçoit le serveur MCP :

4051 4077 

4052| Pour | Renvoyer | Le serveur reçoit |4078| Pour | Renvoyer | Le serveur reçoit |

4053| :- | :- | :- |4079| :- | :- | :- |


4056| Bloquer la réponse | `"action": "decline"` | `decline`, sans les valeurs de l'utilisateur |4082| Bloquer la réponse | `"action": "decline"` | `decline`, sans les valeurs de l'utilisateur |

4057| Annuler la demande | `"action": "cancel"` | `cancel`, accompagné des valeurs soumises par l'utilisateur. Pour les retenir, renvoyez `"decline"` |4083| Annuler la demande | `"action": "cancel"` | `cancel`, accompagné des valeurs soumises par l'utilisateur. Pour les retenir, renvoyez `"decline"` |

4058 4084 

4059Cette sortie modifie la réponse présentée dans [Entrée d'ElicitationResult](#elicitationresult-input), de sorte que le serveur reçoit `alice@example.com` là où l'utilisateur a soumis `alice` :4085Cette sortie modifie la réponse présentée dans [Entrée ElicitationResult](#elicitationresult-input), de sorte que le serveur reçoit `alice@example.com` là où l'utilisateur a soumis `alice` :

4060 4086 

4061```json theme={null}4087```json theme={null}

4062{4088{


4070}4096}

4071```4097```

4072 4098 

4073Votre `content` remplace l'intégralité de l'objet `content` de l'utilisateur ; incluez donc les champs que vous ne modifiez pas. Renvoyez `action` en même temps, car Claude Code ignore un `hookSpecificOutput` dépourvu d'`action`.4099Votre `content` remplace l'intégralité de l'objet `content` de l'utilisateur ; incluez donc les champs que vous ne modifiez pas. Renvoyez `action` avec lui, car Claude Code ignore un `hookSpecificOutput` dépourvu d'`action`.

4074 4100 

4075Les hooks ElicitationResult s'exécutent également lorsque l'utilisateur refuse ou annule, et votre `action` remplace la sienne. Vérifiez que l'`action` de l'entrée vaut `accept` avant de renvoyer `accept`, sinon votre hook transforme une demande refusée en demande acceptée. Ce script effectue la même modification lorsque l'utilisateur a accepté, conserve les autres champs et n'affiche rien dans les autres cas :4101Les hooks ElicitationResult s'exécutent également lorsque l'utilisateur refuse ou annule, et votre `action` remplace la sienne. Vérifiez que l'`action` de l'entrée vaut `accept` avant de renvoyer `accept`, sinon votre hook transforme une demande refusée en demande acceptée. Ce script effectue la même modification lorsque l'utilisateur a accepté, conserve les autres champs et n'affiche rien dans le cas contraire :

4076 4102 

4077```bash theme={null}4103```bash theme={null}

4078#!/bin/bash4104#!/bin/bash


4351* **Seule sur stdout** : lorsque la réponse est le seul texte sur stdout, elle peut s'étendre sur plusieurs lignes, comme une sortie `jq` formatée (pretty-printed). L'extension sur plusieurs lignes nécessite Claude Code v2.1.295 ou ultérieur.4377* **Seule sur stdout** : lorsque la réponse est le seul texte sur stdout, elle peut s'étendre sur plusieurs lignes, comme une sortie `jq` formatée (pretty-printed). L'extension sur plusieurs lignes nécessite Claude Code v2.1.295 ou ultérieur.

4352* **Sur une ligne à part** : un hook asynchrone peut afficher d'autre texte sur stdout lorsque la réponse tient seule sur une ligne, par exemple avec `jq -c`.4378* **Sur une ligne à part** : un hook asynchrone peut afficher d'autre texte sur stdout lorsque la réponse tient seule sur une ligne, par exemple avec `jq -c`.

4353 4379 

4354Claude Code valide que la réponse JSON respecte le même [schéma de sortie](#json-output) que les hooks synchrones, et supprime tout champ dont la valeur a le mauvais type, comme un `systemMessage` qui n'est pas une chaîne de caractères, au lieu de le livrer. Exécutez avec `--debug` pour voir un avertissement nommant chaque champ supprimé. Avant la v2.1.202, une sortie JSON malformée d'un hook asynchrone pouvait faire planter la session, et le plantage s'est reproduit chaque fois que la session a été reprise.4380Claude Code valide que la réponse JSON respecte le même [schéma de sortie](#json-output) que les hooks synchrones, et supprime tout champ dont la valeur a le mauvais type, comme un `systemMessage` qui n'est pas une chaîne de caractères, au lieu de le livrer. Exécutez avec `--debug` pour voir un avertissement nommant chaque champ supprimé.

4355 4381 

4356Les notifications d'achèvement des hooks asynchrones sont supprimées par défaut. Pour les voir, activez le mode verbeux avec `Ctrl+O` ou démarrez Claude Code avec `--verbose`.4382Les notifications d'achèvement des hooks asynchrones sont supprimées par défaut. Pour les voir, activez le mode verbeux avec `Ctrl+O` ou démarrez Claude Code avec `--verbose`.

4357 4383 

Details

491 491 

492Pour désactiver les suggestions de prompt dans toute une organisation, définissez `promptSuggestionEnabled` sur `false` dans les [paramètres gérés](/docs/fr/managed-settings). Définissez également `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` sur `false` sous la clé [`env`](/docs/fr/settings-reference#env) gérée afin que les utilisateurs ne puissent pas les réactiver avec leur propre variable d'environnement.492Pour désactiver les suggestions de prompt dans toute une organisation, définissez `promptSuggestionEnabled` sur `false` dans les [paramètres gérés](/docs/fr/managed-settings). Définissez également `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` sur `false` sous la clé [`env`](/docs/fr/settings-reference#env) gérée afin que les utilisateurs ne puissent pas les réactiver avec leur propre variable d'environnement.

493 493 

494<h2 id="you-should-know-suggestions">

495 Suggestions You should know

496</h2>

497 

498« You should know » recherche une chose que vous devriez savoir mais que vous avez peut-être manquée, comme un compromis que Claude a choisi sans le signaler ou un résultat qui pourrait être erroné. Lorsqu'il en trouve une, il affiche une courte note au-dessus de la zone de saisie du prompt :

499 

500```text theme={null}

501✦ Heads up · There was a change to how folder sharing starts in June, which may have bumped usage metrics artificially.

502 1: Learn more 2: Knew this already 0: Dismiss

503```

504 

505Il s'agit de l'un des [mods intégrés](/docs/fr/plugins/mods/overview#mods-built-into-claude-code) de Claude Code, un plugin intégré à Claude Code qui est désactivé par défaut. Nécessite Claude Code v2.1.287 ou une version ultérieure.

506 

507Lorsqu'il est activé, un agent secondaire relit la conversation de temps en temps pendant que Claude travaille sur une tâche plus longue. L'agent secondaire est une requête distincte adressée au même modèle et ne dispose d'aucun outil : il ne peut donc pas lire de fichiers, exécuter de commandes ni modifier ce que fait Claude.

508 

509Si le mod est disponible pour votre organisation, `/plugin` le liste lorsque vous vous connectez directement à l'API Claude avec un compte claude.ai ou une clé API de la Console. Ce n'est pas le cas lorsque vous vous connectez via une [passerelle LLM](/docs/fr/llm-gateway) ou une [passerelle Claude apps](/docs/fr/claude-apps-gateway), ou lorsque vous obtenez votre clé à partir d'un [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper). Même avec une connexion directe, ces sessions ne le listent pas :

510 

511* Une session qui [ne récupère pas les feature flags](/docs/fr/env-vars#features-that-need-feature-flag-fetching) dont dépend le mod, par exemple une session où `DISABLE_TELEMETRY` est défini

512* Une [première session après une installation ou une mise à niveau](/docs/fr/env-vars#first-session-after-an-install-or-upgrade) dont les flags ne sont pas encore arrivés

513 

514Pour l'activer, exécutez ceci dans le prompt de Claude Code :

515 

516```text theme={null}

517/plugin enable cc-plugin-you-should-know@builtin

518```

519 

520Lorsque `/plugin` ne liste pas le mod, la commande d'activation répond `Plugin "cc-plugin-you-should-know@builtin" is not installed in this project`.

521 

522<h3 id="cost-of-checks">

523 Coût des vérifications

524</h3>

525 

526Lorsque le mod est activé, les vérifications sont des requêtes en arrière-plan adressées au même modèle que celui utilisé par votre session, et elles sont décomptées de vos limites d'utilisation de votre forfait ou de vos coûts d'API. Chaque vérification envoie ce qui se trouve déjà dans le contexte de Claude, c'est-à-dire la conversation jusqu'à présent avec ses résultats d'outils, suivie des propres instructions du mod et du texte de vos notes récentes. La partie conversation est lue depuis le [prompt cache](/docs/fr/prompt-caching) de la session dans les mêmes conditions que la prochaine requête de Claude. Les instructions, qui représentent plusieurs milliers de tokens, et la réponse de l'agent secondaire sont facturées intégralement à chaque vérification.

527 

528Pour observer les vérifications, définissez [`CLAUDE_CODE_YOU_SHOULD_KNOW_DEBUG=1`](/docs/fr/env-vars) dans votre shell avant de démarrer Claude Code.

529 

530<h3 id="answer-a-note">

531 Répondre à une note

532</h3>

533 

534Saisissez uniquement le chiffre correspondant au choix dans une zone de saisie du prompt vide. Une note propose ces choix :

535 

536* **Learn more** : ouvre une courte explication sous la note, avec ses propres choix :

537 * **Understood** : la ferme et marque le sujet comme connu

538 * **Chat in main session** : cite la note dans votre zone de saisie du prompt afin que vous puissiez ajouter une question et l'envoyer à Claude

539 * **Dismiss** : la ferme sans marquer le sujet comme connu

540* **Knew this already** : ferme la note et marque le sujet comme connu.

541* **Dismiss** : ferme la note.

542 

543L'agent principal ne voit une note que si vous l'envoyez avec **Chat in main session**.

544 

545Claude Code conserve vos notes récentes et les sujets que vous avez marqués comme connus dans un fichier dont le nom commence par `cc-plugin-you-should-know` sous `~/.claude/plugins/store/`. Chaque vérification, dans cette session et les suivantes, les liste à l'agent secondaire comme des éléments à ne pas répéter. Claude Code supprime le fichier une fois que [`cleanupPeriodDays`](/docs/fr/settings-reference#cleanupperioddays) s'est écoulé sans qu'une session ne le lise ou ne l'écrive. Pour les effacer plus tôt, supprimez ce fichier lorsqu'aucune session n'est en cours d'exécution.

546 

547<h3 id="turn-off-you-should-know">

548 Désactiver You should know

549</h3>

550 

551Pour désactiver You should know, utilisez l'une des méthodes suivantes :

552 

553* Dans le prompt de Claude Code, exécutez `/plugin disable cc-plugin-you-should-know@builtin`, ou désactivez-le depuis l'onglet **Installed** de `/plugin`

554* Après avoir choisi **Dismiss** sur une note sans avoir d'abord ouvert **Learn more**, choisissez **Turn off suggestions** sur la ligne `Dismissed.`, qui disparaît au bout de 20 secondes

555 

494<h2 id="emoji-shortcodes">556<h2 id="emoji-shortcodes">

495 Codes courts d'emoji557 Codes courts d'emoji

496</h2>558</h2>

Details

257 257 

258Listez les répertoires dans `sparsePaths`, pas les fichiers individuels. Les fichiers au niveau racine comme `package.json`, `tsconfig.base.json` et les fichiers de verrouillage sont toujours vérifiés aux côtés des répertoires que vous listez. Les répertoires au niveau racine ne le sont pas, donc incluez `.claude` dans la liste si vous voulez que le `.claude/settings.json` de la racine du référentiel ou les fichiers `.claude/rules/` soient disponibles à l'intérieur du worktree. Pour les skills de projet, les agents et les commandes, voir [Ce que les worktrees partagent avec le checkout principal](/docs/fr/worktrees#what-worktrees-share-with-the-main-checkout).258Listez les répertoires dans `sparsePaths`, pas les fichiers individuels. Les fichiers au niveau racine comme `package.json`, `tsconfig.base.json` et les fichiers de verrouillage sont toujours vérifiés aux côtés des répertoires que vous listez. Les répertoires au niveau racine ne le sont pas, donc incluez `.claude` dans la liste si vous voulez que le `.claude/settings.json` de la racine du référentiel ou les fichiers `.claude/rules/` soient disponibles à l'intérieur du worktree. Pour les skills de projet, les agents et les commandes, voir [Ce que les worktrees partagent avec le checkout principal](/docs/fr/worktrees#what-worktrees-share-with-the-main-checkout).

259 259 

260Le sparse checkout nécessite que git active `extensions.worktreeConfig` dans le `.git/config` partagé du référentiel tandis qu'un worktree sparse existe. Claude Code supprime cette entrée après la suppression du dernier worktree, mais uniquement si Claude Code l'a ajoutée. Il ne supprime jamais une valeur que vous avez définie vous-même. Avant la v2.1.207, l'entrée restait après la suppression du dernier worktree, et les outils basés sur go-git comme `tea` ne pouvaient pas ouvrir le référentiel jusqu'à ce que vous exécutiez `git config --unset extensions.worktreeConfig`.260Le sparse checkout nécessite que git active `extensions.worktreeConfig` dans le `.git/config` partagé du dépôt tant qu'un worktree sparse existe. Claude Code supprime cette entrée après la suppression du dernier worktree, mais uniquement si Claude Code l'a ajoutée. Il ne supprime jamais une valeur que vous avez définie vous-même.

261 261 

262Pour éviter de dupliquer les grands répertoires comme `node_modules` entre les worktrees, associez `sparsePaths` avec `symlinkDirectories` dans le même `.claude/settings.json` :262Pour éviter de dupliquer les grands répertoires comme `node_modules` entre les worktrees, associez `sparsePaths` avec `symlinkDirectories` dans le même `.claude/settings.json` :

263 263 

Details

518 518 

519Mettez l'identifiant de la passerelle dans `ANTHROPIC_FOUNDRY_API_KEY` ; il est envoyé à la passerelle comme en-tête `x-api-key`. Une passerelle qui s'attend à un jeton porteur peut prendre [`ANTHROPIC_FOUNDRY_AUTH_TOKEN`](/docs/fr/env-vars) à la place. Claude Code envoie cette valeur comme en-tête `Authorization: Bearer`, et elle prend la priorité sur `ANTHROPIC_FOUNDRY_API_KEY` quand les deux sont définis. Nécessite Claude Code v2.1.203 ou ultérieur.519Mettez l'identifiant de la passerelle dans `ANTHROPIC_FOUNDRY_API_KEY` ; il est envoyé à la passerelle comme en-tête `x-api-key`. Une passerelle qui s'attend à un jeton porteur peut prendre [`ANTHROPIC_FOUNDRY_AUTH_TOKEN`](/docs/fr/env-vars) à la place. Claude Code envoie cette valeur comme en-tête `Authorization: Bearer`, et elle prend la priorité sur `ANTHROPIC_FOUNDRY_API_KEY` quand les deux sont définis. Nécessite Claude Code v2.1.203 ou ultérieur.

520 520 

521Pour une passerelle qui injecte son propre en-tête `Authorization`, définissez `CLAUDE_CODE_SKIP_FOUNDRY_AUTH=1` et laissez les deux variables d'identifiant non définies. Claude Code envoie alors les demandes sans identifiant Azure et préserve l'en-tête `Authorization` que vous fournissez, par exemple via `ANTHROPIC_CUSTOM_HEADERS`. Avant v2.1.203, `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` sans clé API laissait le client Microsoft Foundry incapable d'envoyer des demandes.521Pour une passerelle qui injecte son propre en-tête `Authorization`, définissez `CLAUDE_CODE_SKIP_FOUNDRY_AUTH=1` et laissez les deux variables d'identifiant non définies. Claude Code envoie alors les requêtes sans identifiant Azure et préserve l'en-tête `Authorization` que vous fournissez, par exemple via `ANTHROPIC_CUSTOM_HEADERS`.

522 522 

523<Tabs>523<Tabs>

524 <Tab title="Bash ou Zsh">524 <Tab title="Bash ou Zsh">

Details

168| :- | :- |168| :- | :- |

169| `x-claude-code-request-class` | Quel type de requête c'est : `main` pour un tour de la conversation principale, `subagent` pour un tour d'un [sous-agent](/docs/fr/sub-agents), `workflow` pour un agent s'exécutant dans un workflow, `compaction` pour la requête de résumé qui compacte une conversation, ou `auxiliary` pour les requêtes latérales telles que les titres de session, les classificateurs et les résumés. Envoyé sur chaque requête |169| `x-claude-code-request-class` | Quel type de requête c'est : `main` pour un tour de la conversation principale, `subagent` pour un tour d'un [sous-agent](/docs/fr/sub-agents), `workflow` pour un agent s'exécutant dans un workflow, `compaction` pour la requête de résumé qui compacte une conversation, ou `auxiliary` pour les requêtes latérales telles que les titres de session, les classificateurs et les résumés. Envoyé sur chaque requête |

170| `x-claude-code-agent-type` | Le type de sous-agent qui a émis la requête : un nom de type d'agent intégré tel que `Explore`, `Plan` ou `general-purpose`, ou `custom` pour un agent défini par l'utilisateur, `teammate` pour un membre d'une [équipe d'agents](/docs/fr/agent-teams) s'exécutant dans le processus du leader, ou `fork` pour un [fork](/docs/fr/sub-agents#fork-the-current-conversation). Présent uniquement sur les propres tours d'un sous-agent ; la compaction ou les requêtes latérales d'un sous-agent conservent l'ID d'agent mais ne portent aucun type. Un nom d'agent choisi par l'utilisateur n'est jamais envoyé |170| `x-claude-code-agent-type` | Le type de sous-agent qui a émis la requête : un nom de type d'agent intégré tel que `Explore`, `Plan` ou `general-purpose`, ou `custom` pour un agent défini par l'utilisateur, `teammate` pour un membre d'une [équipe d'agents](/docs/fr/agent-teams) s'exécutant dans le processus du leader, ou `fork` pour un [fork](/docs/fr/sub-agents#fork-the-current-conversation). Présent uniquement sur les propres tours d'un sous-agent ; la compaction ou les requêtes latérales d'un sous-agent conservent l'ID d'agent mais ne portent aucun type. Un nom d'agent choisi par l'utilisateur n'est jamais envoyé |

171| `x-claude-code-compaction` | Présent sur la requête qui résume la conversation lors d'une [compaction](/docs/fr/prompt-caching#compacting-the-conversation). La valeur indique ce qui l'a déclenchée : `auto` lorsque la fenêtre de contexte approchait de la capacité, `manual` pour `/compact`, ou `reactive` lorsque l'API a rejeté une requête comme trop longue. Absent sur chaque autre requête |171| `x-claude-code-compaction` | Présent sur la requête qui résume la conversation lors d'une [compaction](/docs/fr/prompt-caching#compacting-the-conversation). La valeur indique ce qui l'a déclenchée : `auto` lorsque la fenêtre de contexte approchait de la capacité, `manual` pour `/compact`, ou `reactive` lorsque l'API a rejeté une requête comme trop longue. La valeur est également `auto` pour la [compaction en période d'inactivité](/docs/fr/settings-reference#idlecompaction). Absent sur chaque autre requête |

172| `x-claude-code-context-compacted` | Présent une fois, sur la première requête de conversation principale après une compaction, avec les mêmes valeurs que `x-claude-code-compaction`. Le préfixe de conversation avant cette requête n'est plus utilisé, donc un cache basé sur celui-ci peut être supprimé |172| `x-claude-code-context-compacted` | Présent une fois, sur la première requête de conversation principale après une compaction, avec les mêmes valeurs que `x-claude-code-compaction`. Le préfixe de conversation avant cette requête n'est plus utilisé, donc un cache basé sur celui-ci peut être supprimé |

173| `x-claude-code-prev-tool-durations` | Temps d'exécution mesuré des appels d'outils dont cette requête porte les résultats, comme `<name>=<ms>;<name>=<ms>`, par exemple `Bash=742;Read=9`. Envoyé sur la requête suivante de la même conversation après un lot d'appels d'outils, depuis la session principale ou un sous-agent |173| `x-claude-code-prev-tool-durations` | Temps d'exécution mesuré des appels d'outils dont cette requête porte les résultats, comme `<name>=<ms>;<name>=<ms>`, par exemple `Bash=742;Read=9`. Envoyé sur la requête suivante de la même conversation après un lot d'appels d'outils, depuis la session principale ou un sous-agent |

174| `x-claude-code-prompt-id` | UUID aléatoire qui identifie l'invite utilisateur qu'une requête sert. Les requêtes servant une invite partagent la valeur, y compris les tours des sous-agents que l'invite a démarrés. Les requêtes non attribuées à une invite l'omettent. Utilisez-le pour regrouper les requêtes d'une session par invite. Nécessite Claude Code v2.1.283 ou ultérieur |174| `x-claude-code-prompt-id` | UUID aléatoire qui identifie l'invite utilisateur qu'une requête sert. Les requêtes servant une invite partagent la valeur, y compris les tours des sous-agents que l'invite a démarrés. Les requêtes non attribuées à une invite l'omettent. Utilisez-le pour regrouper les requêtes d'une session par invite. Nécessite Claude Code v2.1.283 ou ultérieur |


291 291 

292Sur Claude Code v2.1.227 ou ultérieur, votre organisation peut maintenir la [recherche d'outils MCP](/docs/fr/mcp#scale-with-mcp-tool-search) activée sous cette variable via les [paramètres gérés](/docs/fr/managed-settings). Ce que Claude Code envoie avec ce remplacement en place dépend de la façon dont vous vous connectez :292Sur Claude Code v2.1.227 ou ultérieur, votre organisation peut maintenir la [recherche d'outils MCP](/docs/fr/mcp#scale-with-mcp-tool-search) activée sous cette variable via les [paramètres gérés](/docs/fr/managed-settings). Ce que Claude Code envoie avec ce remplacement en place dépend de la façon dont vous vous connectez :

293 293 

294* Sur une connexion directe, ou via une passerelle définie avec `ANTHROPIC_BASE_URL`, Claude Code continue d'envoyer l'en-tête bêta de recherche d'outils, les champs d'outil `defer_loading`, et les blocs `tool_reference`, et supprime le reste294* Sur une connexion directe sans la configuration HIPAA, ou via une passerelle définie avec `ANTHROPIC_BASE_URL`, Claude Code continue d'envoyer l'en-tête bêta de recherche d'outils, les champs d'outil `defer_loading` et les blocs `tool_reference`

295* Sur un fournisseur de cloud, ou connecté via une [passerelle des applications Claude](/docs/fr/claude-apps-gateway), le remplacement n'a aucun effet295* Sur un fournisseur de cloud, ou connecté via une [passerelle des applications Claude](/docs/fr/claude-apps-gateway), le remplacement n'a aucun effet

296* Dans une session qui [reçoit la configuration HIPAA](/docs/fr/hipaa-setup#check-how-developers-sign-in-and-connect), le remplacement n'a aucun effet et la recherche d'outils reste désactivée

296 297 

297L'ensemble des capacités que Claude Code envoie augmente au fil des versions. Pour les chaînes d'en-tête bêta actuelles, consultez la [référence des en-têtes bêta](https://platform.claude.com/docs/en/api/beta-headers) ; testez votre passerelle contre les nouvelles versions de Claude Code plutôt que de vous épingler à une liste observée.298L'ensemble des capacités que Claude Code envoie augmente au fil des versions. Pour les chaînes d'en-tête bêta actuelles, consultez la [référence des en-têtes bêta](https://platform.claude.com/docs/en/api/beta-headers) ; testez votre passerelle contre les nouvelles versions de Claude Code plutôt que de vous épingler à une liste observée.

298 299 

mcp.md +66 −37

Details

90 90 

91Lors de la configuration des serveurs MCP via JSON dans `.mcp.json`, `~/.claude.json`, ou `claude mcp add-json`, le champ `type` accepte `streamable-http` comme alias pour `http`. La spécification MCP utilise le nom `streamable-http` pour ce transport, donc les configurations copiées à partir de la documentation du serveur fonctionnent sans modification.91Lors de la configuration des serveurs MCP via JSON dans `.mcp.json`, `~/.claude.json`, ou `claude mcp add-json`, le champ `type` accepte `streamable-http` comme alias pour `http`. La spécification MCP utilise le nom `streamable-http` pour ce transport, donc les configurations copiées à partir de la documentation du serveur fonctionnent sans modification.

92 92 

93Une entrée JSON qui a une `url` mais pas de `type` est une erreur de configuration, car Claude Code lit une entrée sans `type` comme un serveur stdio. Claude Code ignore ce serveur et signale `MCP server "<name>" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry`. Avant la v2.1.202, Claude Code signalait cette mauvaise configuration comme `command: expected string, received undefined`.93Une entrée JSON qui a une `url` mais pas de `type` est une erreur de configuration, car Claude Code lit une entrée sans `type` comme un serveur stdio. Claude Code ignore ce serveur et signale `MCP server "<name>" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry`.

94 94 

95Seule une application hôte du SDK, telle qu'une application [Agent SDK](/docs/fr/agent-sdk/mcp) ou l'[application de bureau](/docs/fr/desktop), peut enregistrer un serveur `"type": "sdk"` en processus. Claude Code ignore une entrée `"type": "sdk"` dans `.mcp.json`, `~/.claude.json`, ou les paramètres et signale `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`.95Seule une application hôte du SDK, telle qu'une application [Agent SDK](/docs/fr/agent-sdk/mcp) ou l'[application de bureau](/docs/fr/desktop), peut enregistrer un serveur `"type": "sdk"` en processus. Claude Code ignore une entrée `"type": "sdk"` dans `.mcp.json`, `~/.claude.json`, ou les paramètres et signale `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`.

96 96 


128 128 

129Claude Code définit `CLAUDE_PROJECT_DIR` dans l'environnement du serveur généré pour la racine du projet, afin que votre serveur puisse résoudre les chemins relatifs au projet sans dépendre du répertoire de travail. C'est le même répertoire que les hooks reçoivent dans leur variable `CLAUDE_PROJECT_DIR`. Lisez-le depuis l'intérieur de votre processus serveur, par exemple `process.env.CLAUDE_PROJECT_DIR` en Node ou `os.environ["CLAUDE_PROJECT_DIR"]` en Python.129Claude Code définit `CLAUDE_PROJECT_DIR` dans l'environnement du serveur généré pour la racine du projet, afin que votre serveur puisse résoudre les chemins relatifs au projet sans dépendre du répertoire de travail. C'est le même répertoire que les hooks reçoivent dans leur variable `CLAUDE_PROJECT_DIR`. Lisez-le depuis l'intérieur de votre processus serveur, par exemple `process.env.CLAUDE_PROJECT_DIR` en Node ou `os.environ["CLAUDE_PROJECT_DIR"]` en Python.

130 130 

131`CLAUDE_PROJECT_DIR` est la racine de projet stable et ne change pas lorsque vous ajoutez ou supprimez des répertoires de travail en cours de session. Un serveur qui limite son propre accès au système de fichiers à un ensemble de répertoires autorisés devrait implémenter la requête MCP `roots/list` à la place. Claude Code répond à `roots/list` avec le répertoire de lancement de la session plus chaque [répertoire de travail supplémentaire](/docs/fr/permissions#working-directories) que vous avez accordé avec `--add-dir`, `/add-dir`, ou le paramètre `additionalDirectories`. Claude Code envoie `notifications/roots/list_changed` lorsque cet ensemble change. Avant la v2.1.203, `roots/list` retournait uniquement le répertoire de lancement et Claude Code n'envoyait pas `notifications/roots/list_changed`.131`CLAUDE_PROJECT_DIR` est la racine de projet stable et ne change pas lorsque vous ajoutez ou supprimez des répertoires de travail en cours de session. Un serveur qui limite son propre accès au système de fichiers à un ensemble de répertoires autorisés devrait implémenter la requête MCP `roots/list` à la place. Claude Code répond à `roots/list` avec le répertoire de lancement de la session plus chaque [répertoire de travail supplémentaire](/docs/fr/permissions#working-directories) que vous avez accordé avec `--add-dir`, `/add-dir`, ou le paramètre `additionalDirectories`. Claude Code envoie `notifications/roots/list_changed` lorsque cet ensemble change.

132 132 

133Cette variable est définie dans l'environnement du serveur, pas dans l'environnement de Claude Code lui-même, donc la référencer via l'expansion `${VAR}` dans la `command` ou `args` d'une entrée `.mcp.json` de portée projet ou d'une entrée de serveur de portée locale ou utilisateur dans `~/.claude.json` nécessite une valeur par défaut telle que `${CLAUDE_PROJECT_DIR:-.}`. Les configurations MCP fournies par les plugins substituent `${CLAUDE_PROJECT_DIR}` directement et n'ont pas besoin de la valeur par défaut.133Cette variable est définie dans l'environnement du serveur, pas dans l'environnement de Claude Code lui-même, donc la référencer via l'expansion `${VAR}` dans la `command` ou `args` d'une entrée `.mcp.json` de portée projet ou d'une entrée de serveur de portée locale ou utilisateur dans `~/.claude.json` nécessite une valeur par défaut telle que `${CLAUDE_PROJECT_DIR:-.}`. Les configurations MCP fournies par les plugins substituent `${CLAUDE_PROJECT_DIR}` directement et n'ont pas besoin de la valeur par défaut.

134 134 


154 `--env` accepte plusieurs paires `KEY=value`. Si le nom du serveur vient directement après `--env`, la CLI lit le nom comme une autre paire et le rejette, donc placez au moins une autre option, telle que `--transport stdio`, entre `--env` et le nom du serveur.154 `--env` accepte plusieurs paires `KEY=value`. Si le nom du serveur vient directement après `--env`, la CLI lit le nom comme une autre paire et le rejette, donc placez au moins une autre option, telle que `--transport stdio`, entre `--env` et le nom du serveur.

155</Note>155</Note>

156 156 

157<h4 id="how-claude-code-stops-a-stdio-server">

158 Comment Claude Code arrête un serveur stdio

159</h4>

160 

161Lorsque Claude Code déconnecte un serveur stdio, par exemple à la fin de votre session, il envoie un signal au processus du serveur et attend brièvement qu'il se termine avant de le forcer à s'arrêter. Si votre serveur enregistre un état ou supprime des fichiers de verrouillage à l'arrêt, gérez le signal propre à votre plateforme et terminez dans ce délai :

162 

163* **Sur macOS et Linux** : Claude Code envoie `SIGINT`, puis `SIGTERM` si le processus s'exécute toujours 100 millisecondes plus tard, puis `SIGKILL` après 400 millisecondes supplémentaires.

164* **Sur Windows** : Claude Code ferme le stdin du serveur, puis met fin à l'arborescence de processus du serveur si le processus s'exécute toujours 300 millisecondes plus tard.

165 

166Avant la v2.1.296, Claude Code sous Windows mettait fin immédiatement à l'arborescence de processus du serveur, sans fermer d'abord stdin ni attendre.

167 

157<h3 id="option-4-add-a-remote-websocket-server">168<h3 id="option-4-add-a-remote-websocket-server">

158 Option 4 : Ajouter un serveur WebSocket distant169 Option 4 : Ajouter un serveur WebSocket distant

159</h3>170</h3>


415 Déconnexions en cours de session d'un serveur distant426 Déconnexions en cours de session d'un serveur distant

416</h4>427</h4>

417 428 

418Claude Code reconnecte un serveur distant déconnecté avec un backoff exponentiel : jusqu'à cinq tentatives, en commençant par un délai d'une seconde et en le doublant à chaque fois. Ce que vous voyez dépend de la façon dont vous exécutez Claude Code :429Claude Code tente d'abord de reconnecter un serveur distant déconnecté jusqu'à cinq fois avec un backoff exponentiel, en commençant par un délai d'une seconde et en le doublant à chaque fois :

419 430 

420* **Dans une session interactive** : `/mcp` affiche le serveur comme en attente pendant que Claude Code se reconnecte. Après cinq tentatives échouées, Claude Code marque le serveur comme défaillant, ou comme nécessitant une authentification lorsque le serveur doit être autorisé à nouveau. Lorsqu'il marque le serveur comme défaillant, vous voyez une notification `MCP server "<name>" disconnected · open /mcp to reconnect`. Vous pouvez réessayer manuellement à partir de `/mcp`.431* **Dans une session interactive** : `/mcp` affiche le serveur comme en attente pendant que Claude Code se reconnecte. Après cinq tentatives échouées, Claude Code marque le serveur comme défaillant, ou comme nécessitant une authentification lorsque le serveur doit être autorisé à nouveau. Lorsqu'il marque le serveur comme défaillant, vous voyez une notification `MCP server "<name>" disconnected · open /mcp to reconnect`. Vous pouvez réessayer manuellement à partir de `/mcp`.

421* **Dans les exécutions [`claude -p`](/docs/fr/headless) et les sessions [Agent SDK](/docs/fr/agent-sdk/overview)** : Claude Code se reconnecte selon le même calendrier, sans panneau `/mcp` pour afficher les tentatives.432* **Dans les exécutions [`claude -p`](/docs/fr/headless) et les sessions [Agent SDK](/docs/fr/agent-sdk/overview)** : Claude Code effectue les mêmes cinq tentatives, sans panneau `/mcp` pour les afficher. Lorsque les tentatives d'un serveur HTTP ou SSE échouent avec une erreur transitoire, il continue de réessayer en arrière-plan pendant environ une demi-heure au maximum, et le serveur et ses outils redeviennent disponibles lorsqu'une nouvelle tentative parvient à se connecter.

422 433 

423<h4 id="failed-first-connections">434<h4 id="failed-first-connections">

424 Échecs de première connexion435 Échecs de première connexion


479 490 

480Le `timeout` par serveur est une limite stricte en temps réel par appel d'outil, et les notifications de progression du serveur ne la prolongent pas. Les valeurs inférieures à 1000 sont ignorées et se rabattent sur `MCP_TOOL_TIMEOUT`, ou sur sa valeur par défaut d'environ 28 heures lorsque cette variable n'est pas définie. Pour un serveur HTTP, SSE, ou de [connecteur claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai), il existe également un second minuteur, par requête, qui couvre chaque requête jusqu'au premier octet de réponse du serveur. Claude Code définit ce minuteur à la plus grande de trois valeurs : 60 secondes, le délai d'expiration d'outil qui s'applique au serveur, et `MCP_TIMEOUT`. La valeur par défaut de 28 heures d'un `MCP_TOOL_TIMEOUT` non défini n'entre pas dans cette comparaison, et une valeur inférieure à 60 secondes ne raccourcit pas le minuteur. Les serveurs stdio et WebSocket n'ont pas de minuteur par requête.491Le `timeout` par serveur est une limite stricte en temps réel par appel d'outil, et les notifications de progression du serveur ne la prolongent pas. Les valeurs inférieures à 1000 sont ignorées et se rabattent sur `MCP_TOOL_TIMEOUT`, ou sur sa valeur par défaut d'environ 28 heures lorsque cette variable n'est pas définie. Pour un serveur HTTP, SSE, ou de [connecteur claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai), il existe également un second minuteur, par requête, qui couvre chaque requête jusqu'au premier octet de réponse du serveur. Claude Code définit ce minuteur à la plus grande de trois valeurs : 60 secondes, le délai d'expiration d'outil qui s'applique au serveur, et `MCP_TIMEOUT`. La valeur par défaut de 28 heures d'un `MCP_TOOL_TIMEOUT` non défini n'entre pas dans cette comparaison, et une valeur inférieure à 60 secondes ne raccourcit pas le minuteur. Les serveurs stdio et WebSocket n'ont pas de minuteur par requête.

481 492 

482Un `timeout` par serveur d'au moins 1000 agit également comme un plancher pour le délai d'inactivité décrit ci-dessous : Claude Code n'abandonne jamais les appels d'outils de ce serveur pour inactivité plus tôt que le `timeout` par serveur. Nécessite Claude Code v2.1.203 ou ultérieur.493Un `timeout` par serveur d'au moins 1000 agit également comme un plancher pour le délai d'inactivité décrit ci-dessous : Claude Code n'abandonne jamais les appels d'outils de ce serveur pour inactivité plus tôt que le `timeout` par serveur.

483 494 

484Un appel d'outil à un serveur MCP qui n'envoie aucune réponse et aucune notification de progression pendant la fenêtre d'inactivité est abandonné avec une erreur au lieu d'attendre la limite en temps réel. Le délai d'inactivité s'applique à tous les types de serveurs sauf les serveurs IDE et les serveurs en processus du SDK. La fenêtre d'inactivité par défaut est de cinq minutes pour les serveurs HTTP, SSE, WebSocket, et de [connecteur claude.ai](#use-mcp-servers-from-claude-ai), et de 30 minutes pour les serveurs stdio. Avant la v2.1.203, les serveurs stdio étaient exemptés du délai d'inactivité.495Un appel d'outil à un serveur MCP qui n'envoie aucune réponse et aucune notification de progression pendant la fenêtre d'inactivité est abandonné avec une erreur au lieu d'attendre la limite en temps réel. Le délai d'inactivité s'applique à tous les types de serveurs sauf les serveurs IDE et les serveurs en processus du SDK. La fenêtre d'inactivité par défaut est de cinq minutes pour les serveurs HTTP, SSE, WebSocket, et de [connecteur claude.ai](#use-mcp-servers-from-claude-ai), et de 30 minutes pour les serveurs stdio.

485 496 

486Définissez la variable d'environnement [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/fr/env-vars) en millisecondes pour changer la fenêtre d'inactivité, ou définissez-la à `0` pour désactiver la vérification.497Définissez la variable d'environnement [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/fr/env-vars) en millisecondes pour changer la fenêtre d'inactivité, ou définissez-la à `0` pour désactiver la vérification.

487 498 


493 504 

494Un appel d'outil MCP dans la conversation principale qui s'exécute toujours après deux minutes passe dans une tâche en arrière-plan au lieu de bloquer la session. Claude reçoit immédiatement l'ID de la tâche et continue de travailler, et le résultat arrive sous forme de notification de tâche lorsque l'appel se termine. La mise en arrière-plan automatique nécessite Claude Code v2.1.212 ou ultérieur.505Un appel d'outil MCP dans la conversation principale qui s'exécute toujours après deux minutes passe dans une tâche en arrière-plan au lieu de bloquer la session. Claude reçoit immédiatement l'ID de la tâche et continue de travailler, et le résultat arrive sous forme de notification de tâche lorsque l'appel se termine. La mise en arrière-plan automatique nécessite Claude Code v2.1.212 ou ultérieur.

495 506 

496La tâche apparaît dans [`/tasks`](/docs/fr/commands#all-commands), où vous pouvez également l'arrêter, et elle ne survit pas à la sortie de la session. L'entrée de la tâche affiche la dernière progression que le serveur a signalée.507La tâche apparaît dans [`/tasks`](/docs/fr/commands#all-commands), où vous pouvez également l'arrêter, et elle ne survit pas à la sortie de la session. L'entrée de la tâche affiche la dernière progression que le serveur a signalée. Si vous arrêtez la tâche, Claude Code annule l'appel et indique à Claude qu'aucun résultat n'arrivera. L'arrêt ne garantit pas que le serveur s'arrête : il a peut-être déjà effectué une partie du travail, ou peut encore le terminer.

497 508 

498Les limites par appel s'appliquent toujours pendant que l'appel s'exécute en arrière-plan : la limite en temps réel définie par le `timeout` par serveur ou [`MCP_TOOL_TIMEOUT`](/docs/fr/env-vars), et le délai d'inactivité défini par [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/fr/env-vars).509Les limites par appel s'appliquent toujours pendant que l'appel s'exécute en arrière-plan : la limite en temps réel définie par le `timeout` par serveur ou [`MCP_TOOL_TIMEOUT`](/docs/fr/env-vars), et le délai d'inactivité défini par [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/fr/env-vars).

499 510 


793 --header "Authorization: Bearer YOUR_GITHUB_PAT"804 --header "Authorization: Bearer YOUR_GITHUB_PAT"

794```805```

795 806 

796Remplacez `YOUR_GITHUB_PAT` par votre jeton d'accès personnel. La commande `claude mcp add` enregistre la configuration sans valider les identifiants, donc une valeur d'espace réservé est acceptée ici mais le serveur ne parvient pas à se connecter ultérieurement. Pour vérifier la connexion, exécutez `/mcp` et vérifiez que le serveur affiche `connected`. Un serveur avec de mauvais identifiants affiche `failed`, et le détail de l'échec inclut le statut HTTP que le serveur a renvoyé, comme un 401.807Remplacez `YOUR_GITHUB_PAT` par votre jeton d'accès personnel. La commande `claude mcp add` enregistre la configuration sans valider les identifiants, donc une valeur d'espace réservé est acceptée ici mais le serveur ne parvient pas à se connecter ultérieurement. Pour vérifier la connexion, exécutez `/mcp` et vérifiez que la ligne du serveur affiche une coche. Un serveur avec de mauvais identifiants affiche plutôt un ✘, et son [détail de l'échec](#server-status-detail) inclut le statut HTTP que le serveur a renvoyé, comme un 401.

797 808 

798Ensuite, travaillez avec GitHub :809Ensuite, travaillez avec GitHub :

799 810 


820 --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"831 --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"

821```832```

822 833 

823Pour confirmer que le serveur démarre, exécutez `/mcp` et vérifiez que `db` affiche `connected`.834Pour confirmer que le serveur démarre, exécutez `/mcp` et vérifiez que la ligne `db` affiche une coche.

824 835 

825Ensuite, interrogez votre base de données naturellement :836Ensuite, interrogez votre base de données naturellement :

826 837 


849* Pour un serveur dont vous avez configuré l'en-tête `Authorization`, dans `headers` ou via un [`headersHelper`](#use-dynamic-headers-for-custom-authentication), un `401` ou `403` lors de la connexion ne signale pas le serveur, car l'identifiant à corriger est celui que vous avez configuré. Claude Code signale plutôt la connexion comme échouée. Si vous avez défini cet en-tête à partir d'une référence `${VAR}`, vérifiez si cette variable est l'une que Claude Code [lit comme vide](#credential-variables-that-read-as-empty).860* Pour un serveur dont vous avez configuré l'en-tête `Authorization`, dans `headers` ou via un [`headersHelper`](#use-dynamic-headers-for-custom-authentication), un `401` ou `403` lors de la connexion ne signale pas le serveur, car l'identifiant à corriger est celui que vous avez configuré. Claude Code signale plutôt la connexion comme échouée. Si vous avez défini cet en-tête à partir d'une référence `${VAR}`, vérifiez si cette variable est l'une que Claude Code [lit comme vide](#credential-variables-that-read-as-empty).

850* Pour un connecteur [livré à une session cloud](#how-connectors-reach-claude-code), Claude Code n'exécute pas de flux de connexion, car le proxy de la session s'authentifie auprès du connecteur avec l'autorisation que vous avez accordée dans claude.ai. Lorsqu'un connecteur là-bas a besoin d'être autorisé à nouveau, reconnectez-le à [claude.ai/customize/connectors](https://claude.ai/customize/connectors) plutôt que depuis la session.861* Pour un connecteur [livré à une session cloud](#how-connectors-reach-claude-code), Claude Code n'exécute pas de flux de connexion, car le proxy de la session s'authentifie auprès du connecteur avec l'autorisation que vous avez accordée dans claude.ai. Lorsqu'un connecteur là-bas a besoin d'être autorisé à nouveau, reconnectez-le à [claude.ai/customize/connectors](https://claude.ai/customize/connectors) plutôt que depuis la session.

851 862 

852Lorsqu'une demande à un serveur OAuth auprès duquel vous vous êtes déjà connecté retourne `401 Unauthorized`, Claude Code actualise le jeton stocké, se reconnecte et réessaie la demande une fois. Il signale le serveur dans `/mcp` uniquement si cette nouvelle tentative échoue également. Avant la v2.1.206, une actualisation de jeton qui échouait pour une raison transitoire, comme une erreur réseau, signalait un serveur OAuth comme nécessitant une authentification pour le reste de la session même si son jeton d'actualisation était toujours valide.863Lorsqu'une requête à un serveur OAuth auprès duquel vous vous êtes déjà connecté retourne `401 Unauthorized`, Claude Code actualise le jeton stocké, se reconnecte et réessaie la requête une fois. Il signale le serveur dans `/mcp` uniquement si cette nouvelle tentative échoue également.

853 864 

854Lorsque le serveur rejette le jeton d'actualisation stocké, Claude Code affiche immédiatement un avis pointant vers `/mcp`. Ouvrez `/mcp` et sélectionnez **Re-authenticate** sur le serveur pour vous connecter à nouveau avant que le prochain appel d'outil échoue.865Lorsque le serveur rejette le jeton d'actualisation stocké, Claude Code affiche immédiatement un avis pointant vers `/mcp`. Ouvrez `/mcp` et sélectionnez **Re-authenticate** sur le serveur pour vous connecter à nouveau avant que le prochain appel d'outil échoue.

855 866 


859 870 

860L'avis annonce chaque serveur une fois et l'exclut du décompte aux lancements ultérieurs jusqu'à ce que ce serveur se soit connecté et ait besoin d'une connexion à nouveau. `/mcp` liste toujours chaque serveur qui nécessite une connexion.871L'avis annonce chaque serveur une fois et l'exclut du décompte aux lancements ultérieurs jusqu'à ce que ce serveur se soit connecté et ait besoin d'une connexion à nouveau. `/mcp` liste toujours chaque serveur qui nécessite une connexion.

861 872 

862En mode non interactif, il n'y a pas de panneau `/mcp`, donc Claude Code ne peut pas exécuter le flux OAuth pour vous. Lorsqu'un serveur configuré nécessite une authentification lors d'une exécution `claude -p` ou Agent SDK avec [recherche d'outils](#scale-with-mcp-tool-search) activée, ce qui est la valeur par défaut, Claude Code indique à Claude que les outils du serveur ne sont pas disponibles jusqu'à ce que vous l'autorisiez. Claude peut alors nommer le serveur qui nécessite une connexion. Complétez la connexion à partir d'une session interactive avec `/mcp` ou `claude mcp login <name>`.873Une exécution `claude -p` ou Agent SDK n'a pas de panneau `/mcp`, donc Claude Code ne peut pas y exécuter le flux OAuth. Pour utiliser un serveur qui nécessite une authentification, effectuez d'abord la connexion à partir d'une session interactive : exécutez `/mcp` dans la session, ou `claude mcp login <name>` dans votre shell. Lorsqu'un serveur configuré nécessite une authentification lors d'une exécution `claude -p` ou Agent SDK avec la [recherche d'outils](#scale-with-mcp-tool-search) activée, Claude Code indique à Claude que les outils du serveur ne sont pas disponibles jusqu'à ce que vous l'autorisiez.

863 874 

864Si vous avez configuré `headers.Authorization` pour le serveur et que le serveur rejette cet en-tête, Claude Code signale la connexion comme échouée au lieu de revenir à OAuth. Vérifiez que le jeton est valide pour le point de terminaison MCP, ou supprimez l'en-tête pour utiliser le flux OAuth.875Si vous avez configuré `headers.Authorization` pour le serveur et que le serveur rejette cet en-tête, Claude Code signale la connexion comme échouée au lieu de revenir à OAuth. Vérifiez que le jeton est valide pour l'endpoint MCP, ou supprimez l'en-tête pour utiliser le flux OAuth.

865 876 

866<Steps>877<Steps>

867 <Step title="Ajouter le serveur qui nécessite une authentification">878 <Step title="Ajouter le serveur qui nécessite une authentification">

868 Si vous avez déjà ajouté le serveur `sentry` dans le [démarrage rapide MCP](/docs/fr/mcp-quickstart#connect-a-server-that-requires-sign-in), ignorez cette étape : exécuter `claude mcp add` à nouveau avec le même nom de serveur au même scope échoue avec `MCP server sentry already exists in local config`. Sinon, exécutez :879 Si vous avez déjà ajouté le serveur `sentry` dans le [démarrage rapide MCP](/docs/fr/mcp-quickstart#connect-a-server-that-requires-sign-in), ignorez cette étape : exécuter `claude mcp add` à nouveau avec le même nom de serveur à la même portée échoue avec `MCP server sentry already exists in local config`. Sinon, exécutez :

869 880 

870 ```bash theme={null}881 ```bash theme={null}

871 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp882 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp


942 </Step>953 </Step>

943 954 

944 <Step title="Ajouter le serveur avec vos identifiants">955 <Step title="Ajouter le serveur avec vos identifiants">

945 Les onglets couvrent les deux commandes : `claude mcp add` prend votre ID client et votre port de rappel comme drapeaux, et `claude mcp add-json` les prend dans un objet `oauth`. Si vous avez enregistré un URI de redirection, définissez le port de rappel sur le port dans cet URI.956 Les onglets couvrent les deux commandes : `claude mcp add` prend votre ID client et votre port de rappel comme flags, et `claude mcp add-json` les prend dans un objet `oauth`. Si vous avez enregistré un URI de redirection, définissez le port de rappel sur le port dans cet URI.

946 957 

947 <Tabs>958 <Tabs>

948 <Tab title="claude mcp add">959 <Tab title="claude mcp add">

949 Utilisez `--client-id` pour passer l'ID client de votre application. Le drapeau `--client-secret` demande le secret avec une entrée masquée :960 Utilisez `--client-id` pour passer l'ID client de votre application. Le flag `--client-secret` demande le secret avec une entrée masquée :

950 961 

951 ```bash theme={null}962 ```bash theme={null}

952 claude mcp add --transport http \963 claude mcp add --transport http \


956 </Tab>967 </Tab>

957 968 

958 <Tab title="claude mcp add-json">969 <Tab title="claude mcp add-json">

959 Incluez l'objet `oauth` dans la configuration JSON et passez `--client-secret` comme drapeau séparé :970 Incluez l'objet `oauth` dans la configuration JSON et passez `--client-secret` comme flag séparé :

960 971 

961 ```bash theme={null}972 ```bash theme={null}

962 claude mcp add-json my-server \973 claude mcp add-json my-server \


998 * Vous pouvez définir le secret client uniquement lorsque vous ajoutez le serveur. Lorsque vous vous authentifiez avec `claude mcp login` ou à partir de `/mcp`, Claude Code utilise le secret stocké et ne demande pas de secret ou ne lit pas `MCP_CLIENT_SECRET`1009 * Vous pouvez définir le secret client uniquement lorsque vous ajoutez le serveur. Lorsque vous vous authentifiez avec `claude mcp login` ou à partir de `/mcp`, Claude Code utilise le secret stocké et ne demande pas de secret ou ne lit pas `MCP_CLIENT_SECRET`

999 * Pour ajouter ou modifier le secret ultérieurement, supprimez le serveur avec `claude mcp remove <name>`, puis ajoutez-le à nouveau avec `--client-secret` et le même `--scope`1010 * Pour ajouter ou modifier le secret ultérieurement, supprimez le serveur avec `claude mcp remove <name>`, puis ajoutez-le à nouveau avec `--client-secret` et le même `--scope`

1000 * Si le serveur utilise un client OAuth public sans secret, utilisez uniquement `--client-id` sans `--client-secret`1011 * Si le serveur utilise un client OAuth public sans secret, utilisez uniquement `--client-id` sans `--client-secret`

1001 * Ces drapeaux s'appliquent uniquement aux transports HTTP et SSE. Ils n'ont aucun effet sur les serveurs stdio1012 * Ces flags s'appliquent uniquement aux transports HTTP et SSE. Ils n'ont aucun effet sur les serveurs stdio

1002 * Utilisez `claude mcp get <name>` pour vérifier que les identifiants OAuth sont configurés pour un serveur1013 * Utilisez `claude mcp get <name>` pour vérifier que les identifiants OAuth sont configurés pour un serveur

1003</Tip>1014</Tip>

1004 1015 


1006 Remplacer la découverte des métadonnées OAuth1017 Remplacer la découverte des métadonnées OAuth

1007</h3>1018</h3>

1008 1019 

1009Pointez Claude Code vers une URL de métadonnées spécifique du serveur d'autorisation OAuth pour contourner la chaîne de découverte par défaut. Définissez `authServerMetadataUrl` lorsque les points de terminaison standard du serveur MCP génèrent des erreurs, ou lorsque vous souhaitez acheminer la découverte via un proxy interne. Par défaut, Claude Code vérifie d'abord les métadonnées de ressource protégée RFC 9728 à `/.well-known/oauth-protected-resource`, puis revient aux métadonnées du serveur d'autorisation RFC 8414 à `/.well-known/oauth-authorization-server`.1020Pointez Claude Code vers une URL de métadonnées spécifique du serveur d'autorisation OAuth pour contourner la chaîne de découverte par défaut. Définissez `authServerMetadataUrl` lorsque les endpoints standard du serveur MCP génèrent des erreurs, ou lorsque vous souhaitez acheminer la découverte via un proxy interne. Par défaut, Claude Code vérifie d'abord les métadonnées de ressource protégée RFC 9728 à `/.well-known/oauth-protected-resource`, puis revient aux métadonnées du serveur d'autorisation RFC 8414 à `/.well-known/oauth-authorization-server`.

1010 1021 

1011Définissez `authServerMetadataUrl` dans l'objet `oauth` de la configuration de votre serveur dans `.mcp.json` :1022Définissez `authServerMetadataUrl` dans l'objet `oauth` de la configuration de votre serveur dans `.mcp.json` :

1012 1023 


1024}1035}

1025```1036```

1026 1037 

1027L'URL doit utiliser `https://`. Les `scopes_supported` de l'URL des métadonnées remplacent les portées que le serveur en amont annonce.1038L'URL doit utiliser `https://`. Les `scopes_supported` de l'URL des métadonnées remplacent les scopes que le serveur en amont annonce.

1028 1039 

1029<h3 id="restrict-oauth-scopes">1040<h3 id="restrict-oauth-scopes">

1030 Restreindre les portées OAuth1041 Restreindre les scopes OAuth

1031</h3>1042</h3>

1032 1043 

1033Définissez `oauth.scopes` pour épingler les portées que Claude Code demande pendant le flux d'autorisation. C'est la façon supportée de restreindre un serveur MCP à un sous-ensemble approuvé par l'équipe de sécurité lorsque le serveur d'autorisation en amont annonce plus de portées que vous ne souhaitez accorder. La valeur est une seule chaîne séparée par des espaces, correspondant au format du paramètre `scope` dans RFC 6749 §3.3.1044Définissez `oauth.scopes` pour épingler les scopes que Claude Code demande pendant le flux d'autorisation. C'est la façon supportée de restreindre un serveur MCP à un sous-ensemble approuvé par l'équipe de sécurité lorsque le serveur d'autorisation en amont annonce plus de scopes que vous ne souhaitez accorder. La valeur est une seule chaîne séparée par des espaces, correspondant au format du paramètre `scope` dans RFC 6749 §3.3.

1034 1045 

1035```json theme={null}1046```json theme={null}

1036{1047{


1046}1057}

1047```1058```

1048 1059 

1049`oauth.scopes` a la priorité sur `authServerMetadataUrl` et les portées que le serveur découvre à `/.well-known`. Laissez-le non défini pour laisser le serveur MCP déterminer l'ensemble de portées demandées.1060`oauth.scopes` a la priorité sur `authServerMetadataUrl` et les scopes que le serveur découvre à `/.well-known`. Laissez-le non défini pour laisser le serveur MCP déterminer l'ensemble de scopes demandés.

1050 1061 

1051Lorsque `oauth.scopes` n'est pas défini, Claude Code ne demande pas le catalogue complet `scopes_supported` issu des métadonnées du serveur d'autorisation découvertes automatiquement. Les métadonnées récupérées à partir d'une `authServerMetadataUrl` configurée fournissent toujours leurs `scopes_supported` comme scopes demandés.1062Lorsque `oauth.scopes` n'est pas défini, Claude Code ne demande pas le catalogue complet `scopes_supported` issu des métadonnées du serveur d'autorisation découvertes automatiquement. Les métadonnées récupérées à partir d'une `authServerMetadataUrl` configurée fournissent toujours leurs `scopes_supported` comme scopes demandés.

1052 1063 

1053Si le serveur d'autorisation annonce `offline_access` dans `scopes_supported`, Claude Code l'ajoute aux portées épinglées afin que le jeton d'accès puisse être actualisé sans une nouvelle connexion au navigateur.1064Si le serveur d'autorisation annonce `offline_access` dans `scopes_supported`, Claude Code l'ajoute aux scopes épinglés afin que le jeton d'accès puisse être actualisé sans une nouvelle connexion au navigateur.

1054 1065 

1055Si le serveur retourne ultérieurement un 403 `insufficient_scope` pour un appel d'outil, l'appel échoue avec un message [`needs additional permissions`](/docs/fr/errors#mcp-server-needs-you-to-sign-in-again) qui nomme la portée que le serveur demande. Le serveur s'affiche comme nécessitant une authentification dans `/mcp`.1066Si le serveur retourne ultérieurement un 403 `insufficient_scope` pour un appel d'outil, l'appel échoue avec un message [`needs additional permissions`](/docs/fr/errors#mcp-server-needs-you-to-sign-in-again) qui nomme le scope que le serveur demande. Le serveur s'affiche comme nécessitant une authentification dans `/mcp`.

1056 1067 

1057Si cette portée ne figure pas dans votre `oauth.scopes` épinglé, ajoutez-la, puis exécutez `/mcp` et authentifiez le serveur à nouveau. Claude Code demande les portées épinglées plutôt que la portée que le serveur a nommée, donc si vous vous authentifiez à nouveau sans l'ajouter, le jeton que vous obtenez ne l'a toujours pas.1068Si ce scope ne figure pas dans votre `oauth.scopes` épinglé, ajoutez-le, puis exécutez `/mcp` et authentifiez le serveur à nouveau. Claude Code demande les scopes épinglés plutôt que le scope que le serveur a nommé, donc si vous vous authentifiez à nouveau sans l'ajouter, le jeton que vous obtenez ne l'a toujours pas.

1058 1069 

1059<h3 id="use-dynamic-headers-for-custom-authentication">1070<h3 id="use-dynamic-headers-for-custom-authentication">

1060 Utiliser des en-têtes dynamiques pour l'authentification personnalisée1071 Utiliser des en-têtes dynamiques pour l'authentification personnalisée


1134 Quelles variables un assistant peut lire1145 Quelles variables un assistant peut lire

1135</h4>1146</h4>

1136 1147 

1137Un `headersHelper` qu'un référentiel ou un plugin fournit est une commande que vous n'avez pas écrite, donc Claude Code l'exécute sans les variables d'identifiant de votre environnement, telles que `ANTHROPIC_API_KEY`. L'endroit où vous avez configuré le serveur détermine si cela s'applique :1148Un `headersHelper` qu'un dépôt ou un plugin fournit est une commande que vous n'avez pas écrite, donc Claude Code l'exécute sans les variables d'identifiant de votre environnement, telles que `ANTHROPIC_API_KEY`. L'endroit où vous avez configuré le serveur détermine si cela s'applique :

1138 1149 

1139* **Supprimées** : un serveur dans un `.mcp.json` de projet ou dans un plugin, et un serveur en ligne dans un fichier agent de votre projet ou d'un répertoire `--add-dir`1150* **Supprimées** : un serveur dans un `.mcp.json` de projet ou dans un plugin, et un serveur en ligne dans un fichier agent de votre projet ou d'un répertoire `--add-dir`

1140* **Non supprimées** : un serveur à [portée utilisateur](#user-scope) ou [portée locale](#local-scope), dans [MCP géré](/docs/fr/managed-mcp), à partir d'un [connecteur claude.ai](#use-mcp-servers-from-claude-ai), ou fourni par le SDK ou [`--mcp-config`](/docs/fr/cli-reference), et un serveur en ligne dans un fichier agent de `~/.claude/agents/`, à partir des paramètres gérés, ou passé avec `--agents`1151* **Non supprimées** : un serveur à [portée utilisateur](#user-scope) ou [portée locale](#local-scope), dans [MCP géré](/docs/fr/managed-mcp), à partir d'un [connecteur claude.ai](#use-mcp-servers-from-claude-ai), ou fourni par le SDK ou [`--mcp-config`](/docs/fr/cli-reference), et un serveur en ligne dans un fichier agent de `~/.claude/agents/`, à partir des paramètres gérés, ou passé avec `--agents`


1218 </Step>1229 </Step>

1219</Steps>1230</Steps>

1220 1231 

1221Les noms de serveurs ajoutés via les commandes `claude mcp` ne peuvent contenir que des lettres, des chiffres, des tirets et des traits de soulignement. Claude Desktop n'applique pas cette restriction, donc un serveur Claude Desktop dont le nom contient un autre caractère, comme un espace, ne peut pas être importé. L'importation signale chaque nom qu'elle rejette et importe toujours les autres serveurs que vous avez sélectionnés. Avant la v2.1.205, le premier nom invalide arrêtait l'importation et aucun des serveurs sélectionnés n'était ajouté.1232Les noms de serveurs ajoutés via les commandes `claude mcp` ne peuvent contenir que des lettres, des chiffres, des tirets et des traits de soulignement. Claude Desktop n'applique pas cette restriction, donc un serveur Claude Desktop dont le nom contient un autre caractère, comme un espace, ne peut pas être importé. L'importation signale chaque nom qu'elle rejette et importe toujours les autres serveurs que vous avez sélectionnés.

1222 1233 

1223<Tip>1234<Tip>

1224 Conseils :1235 Conseils :


1396 * Ce serveur MCP expose uniquement les outils de Claude Code à votre client MCP, donc votre propre client est responsable de l'implémentation de la confirmation de l'utilisateur pour les appels d'outils individuels.1407 * Ce serveur MCP expose uniquement les outils de Claude Code à votre client MCP, donc votre propre client est responsable de l'implémentation de la confirmation de l'utilisateur pour les appels d'outils individuels.

1397</Tip>1408</Tip>

1398 1409 

1410Lorsque le texte JSON du résultat d'un appel d'outil Bash ou PowerShell comprend un champ `backgroundOutputPath`, l'appel a laissé sa commande s'exécuter [en arrière-plan](/docs/fr/tools-reference#background-commands), par exemple lorsque l'appel a défini `run_in_background: true` ou que la commande a atteint son délai d'expiration. Ce champ indique le chemin du fichier de sortie de la commande. Rien ne notifie votre client lorsque la commande se termine, et le fichier ne reçoit aucune ligne de clôture à ce moment-là : la lecture du fichier affiche donc la sortie écrite jusqu'ici. Pour détecter la fin, ajoutez un marqueur à la commande, tel que `npm test; echo DONE`, et recherchez-le dans le fichier. Le champ `backgroundOutputPath` nécessite Claude Code v2.1.295 ou une version ultérieure.

1411 

1399<h2 id="mcp-output-limits-and-warnings">1412<h2 id="mcp-output-limits-and-warnings">

1400 Limites de sortie MCP et avertissements1413 Limites de sortie MCP et avertissements

1401</h2>1414</h2>


1407* **Limite par défaut** : le maximum par défaut est de 25 000 tokens1420* **Limite par défaut** : le maximum par défaut est de 25 000 tokens

1408* **Portée** : la variable d'environnement s'applique aux outils qui ne déclarent pas leur propre limite. Les outils qui définissent [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool) utilisent cette valeur à la place pour le contenu textuel, indépendamment de la valeur définie pour `MAX_MCP_OUTPUT_TOKENS`. Les outils qui retournent des données d'image restent soumis à `MAX_MCP_OUTPUT_TOKENS`1421* **Portée** : la variable d'environnement s'applique aux outils qui ne déclarent pas leur propre limite. Les outils qui définissent [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool) utilisent cette valeur à la place pour le contenu textuel, indépendamment de la valeur définie pour `MAX_MCP_OUTPUT_TOKENS`. Les outils qui retournent des données d'image restent soumis à `MAX_MCP_OUTPUT_TOKENS`

1409* **Au-delà de la limite** : lorsqu'un résultat réussi sans contenu d'image dépasse la limite de tokens, Claude Code l'enregistre dans un fichier et le remplace dans la conversation par un message qui indique le chemin du fichier, de sorte que Claude lit le fichier lorsqu'il a besoin du contenu. Le fichier se trouve dans le répertoire `tool-results` de la session sous [`~/.claude/projects/`](/docs/fr/claude-directory#cleaned-up-automatically).1422* **Au-delà de la limite** : lorsqu'un résultat réussi sans contenu d'image dépasse la limite de tokens, Claude Code l'enregistre dans un fichier et le remplace dans la conversation par un message qui indique le chemin du fichier, de sorte que Claude lit le fichier lorsqu'il a besoin du contenu. Le fichier se trouve dans le répertoire `tool-results` de la session sous [`~/.claude/projects/`](/docs/fr/claude-directory#cleaned-up-automatically).

1410* **Taille des réponses des serveurs HTTP et SSE** : Claude Code arrête de lire une réponse d'un serveur [HTTP](#option-1-add-a-remote-http-server) ou [SSE](#option-2-add-a-remote-sse-server) dès qu'un corps de réponse JSON, ou un événement d'un flux d'événements, dépasse 16 Mo après décompression. La requête à laquelle cette réponse répond échoue. Si vous maintenez le serveur, renvoyez moins de données par réponse pour rester sous la limite, par exemple en paginant les résultats1423* **Taille des réponses des serveurs HTTP et SSE** : lorsqu'une réponse d'un serveur [HTTP](#option-1-add-a-remote-http-server) ou [SSE](#option-2-add-a-remote-sse-server) dépasse 16 Mo, Claude Code arrête de la lire et la requête échoue. La limite s'applique après décompression à un corps de réponse JSON ou à un événement d'un flux d'événements. Si vous maintenez le serveur, renvoyez moins de données par réponse pour rester sous la limite, par exemple en paginant les résultats

1424* **Taille des messages des serveurs WebSocket** : lorsqu'un serveur [WebSocket](#option-4-add-a-remote-websocket-server) envoie un message de plus de 16 Mo, Claude Code [ferme la connexion](#mid-session-drops-of-a-remote-server), et les appels en cours sur ce serveur échouent. Si vous maintenez le serveur, renvoyez moins de données par message pour rester sous la limite

1411 1425 

1412Un appel que Claude Code a [déplacé vers une tâche en arrière-plan](#automatic-backgrounding-of-long-tool-calls) transmet son résultat via la notification de tâche. Deux limites supplémentaires s'appliquent à un appel qui se termine au premier plan :1426Un appel que Claude Code a [déplacé vers une tâche en arrière-plan](#automatic-backgrounding-of-long-tool-calls) transmet son résultat via la notification de tâche. Deux limites supplémentaires s'appliquent à un appel qui se termine au premier plan :

1413 1427 


1481 1495 

1482La [gestion du combinateur au niveau racine](#tool-input-schemas-with-a-root-level-combinator) est séparée et conserve son propre comportement lorsque la récupération de drapeaux est désactivée ou que les drapeaux n'ont jamais été reçus.1496La [gestion du combinateur au niveau racine](#tool-input-schemas-with-a-root-level-combinator) est séparée et conserve son propre comportement lorsque la récupération de drapeaux est désactivée ou que les drapeaux n'ont jamais été reçus.

1483 1497 

1498<h2 id="tools-with-names-longer-than-128-characters">

1499 Outils dont le nom dépasse 128 caractères

1500</h2>

1501 

1502Si `/mcp` répertorie un outil que Claude ne peut pas appeler, vérifiez si le nom complet de l'outil dépasse 128 caractères. Exécutez `/mcp` dans votre session et sélectionnez l'outil pour afficher son nom complet, par exemple `mcp__<server>__<tool>`. Claude Code exclut un outil MCP des outils qu'il envoie à Claude lorsque son nom complet dépasse 128 caractères. L'API Claude rejette toute requête qui inclut un tel outil ; exclure cet outil permet donc aux autres outils du serveur de continuer à fonctionner.

1503 

1504Pour le message qui nomme l'outil et les moyens de raccourcir son nom complet, consultez [Nom d'outil MCP de plus de 128 caractères](/docs/fr/errors#mcp-tool-name-over-128-characters).

1505 

1484<h2 id="require-approval-for-a-specific-tool">1506<h2 id="require-approval-for-a-specific-tool">

1485 Exiger une approbation pour un outil spécifique1507 Exiger une approbation pour un outil spécifique

1486</h2>1508</h2>


1599* Quand Claude doit rechercher vos outils1621* Quand Claude doit rechercher vos outils

1600* Les capacités clés que votre serveur fournit1622* Les capacités clés que votre serveur fournit

1601 1623 

1602Claude Code tronque chaque description d'outil et les instructions de chaque serveur à 2 048 caractères par défaut. Gardez-les concises, et placez les détails critiques près du début.1624Claude Code tronque une description d'outil ou des instructions de serveur qui dépassent ces limites par défaut, et Claude ne voit que le texte situé avant la coupure :

1625 

1626* **Instructions du serveur, et description d'un outil qui se charge en amont** : 4 096 caractères

1627* **Description d'un outil que Claude charge via la recherche d'outils** : 16 384 caractères

1628 

1629Gardez les descriptions et les instructions concises, et placez les détails critiques près du début. Lorsque la recherche d'outils compare la requête de Claude à la description d'un outil, elle ne lit que la partie comprise dans la limite la plus courte : placez donc aussi près du début les mots que Claude rechercherait. Un outil se charge en amont et conserve la limite la plus courte dès lors qu'il n'est pas reporté, par exemple lorsque [la recherche d'outils est désactivée](#configure-tool-search), lorsque l'outil est [marqué pour se charger en amont](#per-tool-alwaysload), ou lorsque son serveur est [exempté du report](#exempt-a-server-from-deferral).

1630 

1631Avant v2.1.296, la limite la plus courte était de 2 048 caractères, et avant v2.1.295, elle s'appliquait à chaque description d'outil, y compris celle d'un outil chargé via la recherche d'outils.

1603 1632 

1604Pour modifier la limite pour chaque serveur MCP dans votre session, définissez [`CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH`](/docs/fr/env-vars#variables) sur un nombre de caractères. Cette variable nécessite Claude Code v2.1.280 ou ultérieur.1633Pour modifier les limites pour chaque serveur MCP de votre session, définissez [`CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH`](/docs/fr/env-vars#variables) sur un nombre de caractères. Le nombre que vous définissez remplace les deux limites : `8192`, par exemple, augmente la limite la plus courte et abaisse la plus longue. Cette variable nécessite Claude Code v2.1.280 ou ultérieur.

1605 1634 

1606<h4 id="per-tool-alwaysload">1635<h4 id="per-tool-alwaysload">

1607 Marquer un outil pour qu'il se charge en amont ou reste reporté1636 Marquer un outil pour qu'il se charge en amont ou reste reporté


1630 Configurer la recherche d'outils1659 Configurer la recherche d'outils

1631</h3>1660</h3>

1632 1661 

1633La recherche d'outils est activée par défaut : les outils MCP sont reportés et découverts à la demande. Claude Code la désactive quand `ANTHROPIC_BASE_URL` pointe vers un hôte non-propriétaire, puisque la plupart des proxies ne transmettent pas les blocs `tool_reference`. Définissez `ENABLE_TOOL_SEARCH` explicitement pour contourner ce repli.1662La recherche d'outils est activée par défaut : les outils MCP sont reportés et découverts à la demande. Claude Code la désactive quand `ANTHROPIC_BASE_URL` pointe vers un hôte non-propriétaire, puisque la plupart des proxys ne transmettent pas les blocs `tool_reference`. Définissez `ENABLE_TOOL_SEARCH` explicitement pour contourner ce repli.

1634 1663 

1635Définir [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/fr/env-vars) maintient la recherche d'outils désactivée. Vous ne pouvez pas la contourner en définissant `ENABLE_TOOL_SEARCH` vous-même. Votre organisation peut maintenir la recherche d'outils activée via les [paramètres gérés](/docs/fr/managed-settings), sur Claude Code v2.1.227 ou ultérieur. [Désactiver les capacités de pré-version](/docs/fr/llm-gateway-protocol#disable-pre-release-capabilities) couvre où le remplacement s'applique et ce que la variable supprime.1664Définir [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/fr/env-vars) maintient la recherche d'outils désactivée. Vous ne pouvez pas la contourner en définissant `ENABLE_TOOL_SEARCH` vous-même. Sur Claude Code v2.1.227 ou ultérieur, votre organisation peut maintenir la recherche d'outils activée malgré cette variable via les [paramètres gérés](/docs/fr/managed-settings). Dans une session qui [reçoit la configuration HIPAA](/docs/fr/hipaa-setup#check-how-developers-sign-in-and-connect), la recherche d'outils est désactivée, et ni `ENABLE_TOOL_SEARCH` ni les paramètres gérés ne la réactivent. [Désactiver les capacités de pré-version](/docs/fr/llm-gateway-protocol#disable-pre-release-capabilities) couvre où le remplacement s'applique et ce que la variable supprime.

1636 1665 

1637La recherche d'outils nécessite un modèle qui prend en charge les blocs `tool_reference` : Claude Sonnet 4.5, Claude Haiku 4.5, Claude Opus 4.5, et les modèles ultérieurs. Consultez la [compatibilité des modèles dans la documentation de l'API](https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool#model-compatibility) pour la liste actuelle.1666Claude Code utilise la recherche d'outils sur Claude Opus 4, Claude Sonnet 4, Claude Haiku 4.5 et les modèles ultérieurs, ou sur Opus 4.5, Sonnet 4.5, Haiku 4.5 et les modèles ultérieurs sur la plateforme Agent de Google Cloud. Sur les modèles antérieurs, Claude Code charge tous les outils MCP en amont, et `ENABLE_TOOL_SEARCH=true` ne contourne pas cela.

1638 1667 

1639Sur la plateforme Agent de Google Cloud, Claude Code décide par génération de modèle :1668Sur la plateforme Agent de Google Cloud, Claude Code décide par génération de modèle :

1640 1669 


1647 1676 

1648| Valeur | Comportement |1677| Valeur | Comportement |

1649| :- | :- |1678| :- | :- |

1650| (non défini) | Tous les outils MCP reportés et chargés à la demande. Revient au chargement en amont sur les modèles de la plateforme Agent de Google Cloud antérieurs à la génération Claude 4.5, quand `ANTHROPIC_BASE_URL` est un hôte non-propriétaire, ou sur un déploiement Microsoft Foundry hébergé sur Azure |1679| (non défini) | Tous les outils MCP reportés et chargés à la demande. Revient au chargement en amont sur les modèles antérieurs à Opus 4 et Sonnet 4, sur les modèles de la plateforme Agent de Google Cloud antérieurs à Opus 4.5, Sonnet 4.5 et Haiku 4.5, quand `ANTHROPIC_BASE_URL` est un hôte non-propriétaire, ou sur un déploiement Microsoft Foundry hébergé sur Azure |

1651| `true` | Tous les outils MCP reportés, sauf sur un déploiement Microsoft Foundry hébergé sur Azure, où le rejet côté serveur force toujours le chargement en amont, et sur les modèles de la plateforme Agent de Google Cloud antérieurs à la génération Claude 4.5, où Claude Code continue de charger les outils en amont. Claude Code envoie l'en-tête bêta via les proxies, et les demandes échouent sur les proxies qui ne prennent pas en charge les blocs `tool_reference` |1680| `true` | Les outils MCP restent reportés quand `ANTHROPIC_BASE_URL` est un hôte non-propriétaire. Les autres solutions de repli du cas (non défini) s'appliquent toujours. Claude Code envoie l'en-tête bêta via les proxys, et les requêtes échouent sur les proxys qui ne prennent pas en charge les blocs `tool_reference` |

1652| `auto` | Mode seuil : Claude Code charge les outils qu'il reporterait autrement en amont tant que leurs définitions totalisent moins de 10 % de la fenêtre de contexte, et les reporte tous une fois que les définitions atteignent 10 % |1681| `auto` | Mode seuil : Claude Code charge les outils qu'il reporterait autrement en amont tant que leurs définitions totalisent moins de 10 % de la fenêtre de contexte, et les reporte tous une fois que les définitions atteignent 10 % |

1653| `auto:N` | Mode seuil avec un pourcentage personnalisé, où `N` est 0-100. Par exemple, `auto:5` pour 5 % |1682| `auto:N` | Mode seuil avec un pourcentage personnalisé, où `N` est 0-100. Par exemple, `auto:5` pour 5 % |

1654| `false` | Tous les outils MCP chargés en amont, pas de report |1683| `false` | Tous les outils MCP chargés en amont, pas de report |


1661ENABLE_TOOL_SEARCH=false claude1690ENABLE_TOOL_SEARCH=false claude

1662```1691```

1663 1692 

1664Ou définissez la valeur dans le champ `env` de votre [settings.json](/docs/fr/settings-reference#env).1693Ou définissez la valeur dans le [champ `env` de votre settings.json](/docs/fr/settings-reference#env).

1665 1694 

1666Vous pouvez également désactiver l'outil `ToolSearch` spécifiquement :1695Vous pouvez également désactiver l'outil `ToolSearch` spécifiquement :

1667 1696 


1695 1724 

1696Le champ `alwaysLoad` est disponible sur tous les types de serveurs.1725Le champ `alwaysLoad` est disponible sur tous les types de serveurs.

1697 1726 

1698Définir `alwaysLoad: true` fait également attendre le démarrage des outils du serveur, limité au délai d'expiration de connexion standard de 5 secondes, puisqu'ils doivent être présents lors de la construction de la première invite. Un serveur distant avec une entrée [`cached`](#server-status-detail) valide fournit ses outils à partir du cache sans se connecter, donc il ne retarde pas le démarrage. Les autres serveurs se connectent en arrière-plan par défaut ; définissez [`MCP_CONNECTION_NONBLOCKING=0`](/docs/fr/env-vars) pour faire attendre le démarrage pour eux aussi.1727Définir `alwaysLoad: true` fait également attendre le démarrage des outils du serveur, limité au délai d'expiration de connexion standard de 5 secondes, puisqu'ils doivent être présents lors de la construction du premier prompt. Un serveur distant avec une entrée [`cached`](#server-status-detail) valide fournit ses outils à partir du cache sans se connecter, donc il ne retarde pas le démarrage. Les autres serveurs se connectent en arrière-plan par défaut ; définissez [`MCP_CONNECTION_NONBLOCKING=0`](/docs/fr/env-vars) pour faire attendre le démarrage pour eux aussi.

1699 1728 

1700<h3 id="defer-a-servers-tools">1729<h3 id="defer-a-servers-tools">

1701 Reporter les outils d'un serveur1730 Reporter les outils d'un serveur

memory.md +3 −3

Details

258 258 

259Claude Code utilise tout modèle qui dépasserait le budget non développé, et ses accolades littérales ne correspondent à aucun fichier. Avant v2.1.217, une valeur `paths` avec de nombreux groupes entre accolades bloquait ou plantait le CLI au démarrage.259Claude Code utilise tout modèle qui dépasserait le budget non développé, et ses accolades littérales ne correspondent à aucun fichier. Avant v2.1.217, une valeur `paths` avec de nombreux groupes entre accolades bloquait ou plantait le CLI au démarrage.

260 260 

261La syntaxe Glob traite `[` comme le début d'une expression entre crochets telle que `[abc]`. Un modèle avec un `[` qui ne peut pas être lu comme une expression entre crochets, tel que `photos [2024/**`, est invalide : il ne correspond à rien, et les autres modèles de la règle continuent de fonctionner. Pour faire correspondre un `[` littéral dans un nom de fichier, échappez-le comme `photos \[2024/**`. Avant v2.1.207, un modèle invalide faisait échouer l'outil Read pour chaque fichier sur lequel la règle était évaluée, au lieu de ne correspondre à rien.261La syntaxe Glob traite `[` comme le début d'une expression entre crochets telle que `[abc]`. Un modèle avec un `[` qui ne peut pas être lu comme une expression entre crochets, tel que `photos [2024/**`, est invalide : il ne correspond à rien, et les autres modèles de la règle continuent de fonctionner. Pour faire correspondre un `[` littéral dans un nom de fichier, échappez-le comme `photos \[2024/**`.

262 262 

263<h4 id="rules-frontmatter-reference">263<h4 id="rules-frontmatter-reference">

264 Référence frontmatter des règles264 Référence frontmatter des règles


413 413 

414* **Au démarrage de la session** : tous les `AGENTS.md` et `.claude/AGENTS.md` dans votre répertoire de travail et les répertoires au-dessus. Dans une session interactive, vous voyez une ligne comme `no CLAUDE.md found; AGENTS.md loaded: /home/you/repo/AGENTS.md` dans la conversation414* **Au démarrage de la session** : tous les `AGENTS.md` et `.claude/AGENTS.md` dans votre répertoire de travail et les répertoires au-dessus. Dans une session interactive, vous voyez une ligne comme `no CLAUDE.md found; AGENTS.md loaded: /home/you/repo/AGENTS.md` dans la conversation

415* **Quand Claude travaille dans les sous-répertoires** : le `AGENTS.md` d'un sous-répertoire, quand Claude ouvre un fichier là avec l'outil Read et ce sous-répertoire n'a aucun des trois fichiers `CLAUDE.md` qui lui sont propres415* **Quand Claude travaille dans les sous-répertoires** : le `AGENTS.md` d'un sous-répertoire, quand Claude ouvre un fichier là avec l'outil Read et ce sous-répertoire n'a aucun des trois fichiers `CLAUDE.md` qui lui sont propres

416* **À l'intérieur de chaque `AGENTS.md`** : les importations [`@path`](#import-additional-files) sont développées, les motifs [`claudeMdExcludes`](#exclude-specific-claude-md-files) s'appliquent, et les sous-agents qui [ignorent les instructions du projet](/docs/fr/sub-agents#what-loads-at-startup) ignorent aussi ces fichiers416* **À l'intérieur de chaque `AGENTS.md`** : les importations [`@path`](#import-additional-files) sont développées, les motifs [`claudeMdExcludes`](#exclude-specific-claude-md-files) s'appliquent, et les sous-agents qui [démarrent sans les instructions du projet](/docs/fr/sub-agents#what-loads-at-startup) démarrent aussi sans ces fichiers

417* **Non lus** : `AGENTS.local.md`, `AGENTS.override.md`, ou n'importe quoi sous un répertoire `.agents/`417* **Non lus** : `AGENTS.local.md`, `AGENTS.override.md`, ou n'importe quoi sous un répertoire `.agents/`

418 418 

419<Note>419<Note>


692 692 

693Si l'un de vos fichiers d'instructions dépasse la longueur recommandée, vous voyez un avertissement au démarrage et lorsque vous exécutez `/status`. Vous voyez également un avertissement lorsque les fichiers qui sont chacun dans cette longueur s'ajoutent au-delà d'une limite combinée au démarrage de la session. Chaque CLAUDE.md, fichier de règles et import `@path` compte comme un fichier séparé.693Si l'un de vos fichiers d'instructions dépasse la longueur recommandée, vous voyez un avertissement au démarrage et lorsque vous exécutez `/status`. Vous voyez également un avertissement lorsque les fichiers qui sont chacun dans cette longueur s'ajoutent au-delà d'une limite combinée au démarrage de la session. Chaque CLAUDE.md, fichier de règles et import `@path` compte comme un fichier séparé.

694 694 

695La vérification [`/doctor`](/docs/fr/commands#all-commands) propose des réductions pour un CLAUDE.md enregistré : elle supprime le contenu que Claude peut dériver de la base de code, comme les dispositions de répertoires, les listes de dépendances et les aperçus d'architecture, et conserve les pièges, la justification et les conventions qui diffèrent des paramètres par défaut des outils. La vérification de réduction nécessite Claude Code v2.1.206 ou version ultérieure.695La vérification [`/doctor`](/docs/fr/commands#all-commands) propose des réductions pour un CLAUDE.md enregistré : elle supprime le contenu que Claude peut dériver de la base de code, comme les dispositions de répertoires, les listes de dépendances et les aperçus d'architecture, et conserve les pièges, la justification et les conventions qui diffèrent des paramètres par défaut des outils.

696 696 

697<h3 id="instructions-seem-lost-after-/compact">697<h3 id="instructions-seem-lost-after-/compact">

698 Les instructions semblent perdues après `/compact`698 Les instructions semblent perdues après `/compact`

Details

160 Utiliser un jeton porteur160 Utiliser un jeton porteur

161</h4>161</h4>

162 162 

163Claude Code envoie la valeur de `ANTHROPIC_FOUNDRY_AUTH_TOKEN` sur chaque requête en tant qu'en-tête `Authorization: Bearer`. Utilisez cette option lorsqu'un autre processus, tel qu'une application hôte ou un script de connexion, a déjà obtenu un jeton d'accès pour vous. Nécessite Claude Code v2.1.203 ou version ultérieure.163Claude Code envoie la valeur de `ANTHROPIC_FOUNDRY_AUTH_TOKEN` sur chaque requête en tant qu'en-tête `Authorization: Bearer`. Utilisez cette option lorsqu'un autre processus, tel qu'une application hôte ou un script de connexion, a déjà obtenu un jeton d'accès pour vous.

164 164 

165Définissez la variable sur un jeton porteur émis par Microsoft Entra ID pour votre ressource :165Définissez la variable sur un jeton porteur émis par Microsoft Entra ID pour votre ressource :

166 166 

model-config.md +3 −0

Details

867* **Pour tous les modèles** : définissez [`autoCompactWindow`](/docs/fr/settings-reference#autocompactwindow) dans un fichier de paramètres, comme `"autoCompactWindow": 200000` dans `~/.claude/settings.json`. Une fenêtre que vous avez enregistrée pour un modèle avec `/autocompact` a priorité sur cette clé dans le même fichier pour ce modèle.867* **Pour tous les modèles** : définissez [`autoCompactWindow`](/docs/fr/settings-reference#autocompactwindow) dans un fichier de paramètres, comme `"autoCompactWindow": 200000` dans `~/.claude/settings.json`. Une fenêtre que vous avez enregistrée pour un modèle avec `/autocompact` a priorité sur cette clé dans le même fichier pour ce modèle.

868* **Pour un lancement** : passez [`--autocompact`](/docs/fr/cli-reference#cli-flags) au démarrage de Claude Code. Le flag remplace votre paramètre enregistré pour ce lancement sans le modifier, et `claude --autocompact auto` exécute la session à la fenêtre optimisée même si votre paramètre enregistré a une valeur. Contrairement à `/autocompact`, le flag n'est pas préempté par une portée de paramètres de priorité plus élevée, comme les paramètres gérés.868* **Pour un lancement** : passez [`--autocompact`](/docs/fr/cli-reference#cli-flags) au démarrage de Claude Code. Le flag remplace votre paramètre enregistré pour ce lancement sans le modifier, et `claude --autocompact auto` exécute la session à la fenêtre optimisée même si votre paramètre enregistré a une valeur. Contrairement à `/autocompact`, le flag n'est pas préempté par une portée de paramètres de priorité plus élevée, comme les paramètres gérés.

869* **Dans les scripts et les environnements cloud** : définissez [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/fr/env-vars). Tant qu'il est défini, il a la priorité sur la commande, le flag et le paramètre, et `/autocompact` signale le remplacement au lieu de modifier la fenêtre.869* **Dans les scripts et les environnements cloud** : définissez [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/fr/env-vars). Tant qu'il est défini, il a la priorité sur la commande, le flag et le paramètre, et `/autocompact` signale le remplacement au lieu de modifier la fenêtre.

870* **Pour un sous-agent** : consultez [Définir la fenêtre de compaction automatique pour un sous-agent](/docs/fr/sub-agents#subagent-auto-compact-window).

870 871 

871La commande et le flag acceptent une taille de fenêtre de 100 K à 1 M de tokens, sous l'une de ces formes :872La commande et le flag acceptent une taille de fenêtre de 100 K à 1 M de tokens, sous l'une de ces formes :

872 873 


888* Les modèles s'exécutant avec une fenêtre native de 1 M se compactent avant que la fenêtre ne se remplisse, à environ 967 K tokens par défaut. Ceux-ci incluent les modèles Fable, Sonnet 5 et versions ultérieures, Haiku 5.5, et Opus 4.7 et versions ultérieures. Derrière une `ANTHROPIC_BASE_URL` personnalisée, consultez [la fenêtre de contexte derrière une passerelle](#context-window-behind-a-gateway)889* Les modèles s'exécutant avec une fenêtre native de 1 M se compactent avant que la fenêtre ne se remplisse, à environ 967 K tokens par défaut. Ceux-ci incluent les modèles Fable, Sonnet 5 et versions ultérieures, Haiku 5.5, et Opus 4.7 et versions ultérieures. Derrière une `ANTHROPIC_BASE_URL` personnalisée, consultez [la fenêtre de contexte derrière une passerelle](#context-window-behind-a-gateway)

889* Les sessions sur un ID de modèle que Claude Code ne reconnaît pas, comme un alias de [passerelle LLM](/docs/fr/llm-gateway), se compactent à la fenêtre de contexte que Claude Code suppose pour l'ID ; consultez [Corriger la fenêtre pour une passerelle ou un ID de modèle personnalisé](#correct-the-window-for-a-gateway-or-custom-model-id)890* Les sessions sur un ID de modèle que Claude Code ne reconnaît pas, comme un alias de [passerelle LLM](/docs/fr/llm-gateway), se compactent à la fenêtre de contexte que Claude Code suppose pour l'ID ; consultez [Corriger la fenêtre pour une passerelle ou un ID de modèle personnalisé](#correct-the-window-for-a-gateway-or-custom-model-id)

890 891 

892Consultez le paramètre [`idleCompaction`](/docs/fr/settings-reference#idlecompaction) pour savoir quand Claude Code compacte également une conversation que vous laissez inactive.

893 

891<h3 id="correct-the-window-for-a-gateway-or-custom-model-id">894<h3 id="correct-the-window-for-a-gateway-or-custom-model-id">

892 Corriger la fenêtre pour une passerelle ou un ID de modèle personnalisé895 Corriger la fenêtre pour une passerelle ou un ID de modèle personnalisé

893</h3>896</h3>

Details

641 641 

642* `prompt.id` : UUID corrélant un prompt utilisateur avec tous les événements suivants jusqu'au prompt suivant. Consultez [Attributs de corrélation des événements](#event-correlation-attributes).642* `prompt.id` : UUID corrélant un prompt utilisateur avec tous les événements suivants jusqu'au prompt suivant. Consultez [Attributs de corrélation des événements](#event-correlation-attributes).

643* `workspace.host_paths` : répertoires de l'espace de travail hôte sélectionnés dans l'application de bureau, sous forme de tableau de chaînes643* `workspace.host_paths` : répertoires de l'espace de travail hôte sélectionnés dans l'application de bureau, sous forme de tableau de chaînes

644* `workflow.run_id` : identifiant d'exécution, préfixé par `wf_`, présent sur les événements d'API et d'outil émis par les agents appartenant à une exécution de l'outil [Workflow](/docs/fr/workflows). Filtrer les événements sur un `workflow.run_id` permet de reconstituer les requêtes API et les résultats d'outils de cette exécution. L'identifiant couvre les agents lancés par le script du workflow ainsi que tous les agents que ceux-ci lancent à leur tour, comme les invocations de skills. Il correspond à l'identifiant d'exécution indiqué dans le résultat de l'outil Workflow. Absent de tous les autres événements. Nécessite Claude Code v2.1.202 ou ultérieur644* `workflow.run_id` : identifiant d'exécution, préfixé par `wf_`, sur les événements d'API et d'outil émis par les agents appartenant à une exécution de l'outil [Workflow](/docs/fr/workflows). Filtrer les événements par un `workflow.run_id` permet de reconstituer les requêtes API et les résultats d'outils de cette exécution. L'identifiant couvre les agents que le script du workflow lance ainsi que tous les agents que ceux-ci lancent à leur tour, comme les invocations de skills. Il correspond à l'identifiant d'exécution indiqué dans le résultat de l'outil Workflow. Absent sur tous les autres événements.

645* `workflow.name` : nom du workflow, c'est-à-dire le `meta.name` de son script, émis avec `workflow.run_id`. Les noms des workflows intégrés apparaissent tels quels lorsque l'exécution utilise le script intégré non modifié. Les noms définis par l'utilisateur, y compris les copies modifiées de scripts intégrés, sont remplacés par `custom` sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini. Nécessite Claude Code v2.1.202 ou ultérieur645* `workflow.name` : nom du workflow, le `meta.name` de son script, émis avec `workflow.run_id`. Les noms des workflows intégrés apparaissent tels quels lorsque l'exécution utilise le script intégré non modifié. Les noms définis par l'utilisateur, y compris les copies modifiées de scripts intégrés, sont remplacés par `custom`, sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini.

646 646 

647<h4 id="repository-attributes">647<h4 id="repository-attributes">

648 Attributs de dépôt648 Attributs de dépôt


1374* `pre_tokens` : nombre approximatif de tokens avant la compaction1374* `pre_tokens` : nombre approximatif de tokens avant la compaction

1375* `post_tokens` : nombre approximatif de tokens après la compaction1375* `post_tokens` : nombre approximatif de tokens après la compaction

1376* `error` : message d'erreur lorsque la compaction a échoué1376* `error` : message d'erreur lorsque la compaction a échoué

1377* `precompute_reuse` : défini uniquement lorsque `trigger` vaut `"manual"`. La compaction automatique peut préparer un résumé en arrière-plan avant que la fenêtre de contexte ne soit pleine, et cet attribut indique si `/compact` a réutilisé ce résumé préparé. `"hit"` signifie qu'il a été réutilisé ; `"miss_custom_instructions"`, `"miss_hook"` et `"miss_not_ready"` indiquent la raison pour laquelle un nouveau résumé a été calculé à la place1377* `precompute_reuse` : Défini uniquement lorsque `trigger` vaut `"manual"` ou pour une [compaction en période d'inactivité](/docs/fr/settings-reference#idlecompaction), qui rapporte `trigger` comme `"auto"`. La compaction automatique peut préparer un résumé en arrière-plan avant que la fenêtre de contexte ne soit pleine, et cet attribut indique si la compaction a réutilisé ce résumé préparé. `"hit"` signifie qu'il a été réutilisé ; `"miss_custom_instructions"`, `"miss_hook"` et `"miss_not_ready"` indiquent la raison pour laquelle un nouveau résumé a été calculé à la place

1378 1378 

1379<h4 id="subagent-completed-event">1379<h4 id="subagent-completed-event">

1380 Événement de sous-agent terminé1380 Événement de sous-agent terminé

Details

209| :- | :- | :- | :- |209| :- | :- | :- | :- |

210| Limite du premier octet | Aucun en-tête de réponse n'arrive après que Claude Code envoie la demande | API Anthropic directe et [Claude Platform on AWS](/docs/fr/claude-platform-on-aws), y compris via un proxy HTTPS, mais pas quand `ANTHROPIC_BASE_URL` ou `ANTHROPIC_AWS_BASE_URL` les acheminent via une [passerelle](/docs/fr/gateways). Opt-in sur Amazon Bedrock avec `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` ; ne s'exécute pas sur Google Cloud's Agent Platform ou Microsoft Foundry | 180 secondes sur l'API Anthropic directe, 300 secondes ailleurs, plus une seconde par 32 Ko de corps de demande |210| Limite du premier octet | Aucun en-tête de réponse n'arrive après que Claude Code envoie la demande | API Anthropic directe et [Claude Platform on AWS](/docs/fr/claude-platform-on-aws), y compris via un proxy HTTPS, mais pas quand `ANTHROPIC_BASE_URL` ou `ANTHROPIC_AWS_BASE_URL` les acheminent via une [passerelle](/docs/fr/gateways). Opt-in sur Amazon Bedrock avec `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` ; ne s'exécute pas sur Google Cloud's Agent Platform ou Microsoft Foundry | 180 secondes sur l'API Anthropic directe, 300 secondes ailleurs, plus une seconde par 32 Ko de corps de demande |

211| Chien de garde au niveau des événements | Aucun événement de réponse ne s'analyse. Sur les connexions où le chien de garde au niveau des octets s'exécute, les octets arrivants, y compris les pings de maintien de connexion, réinitialisent également ce chien de garde, pendant environ cinq minutes sans événement analysé | Tous les fournisseurs | 300 secondes |211| Chien de garde au niveau des événements | Aucun événement de réponse ne s'analyse. Sur les connexions où le chien de garde au niveau des octets s'exécute, les octets arrivants, y compris les pings de maintien de connexion, réinitialisent également ce chien de garde, pendant environ cinq minutes sans événement analysé | Tous les fournisseurs | 300 secondes |

212| Chien de garde au niveau des octets | Aucun octet n'arrive sur le fil, y compris les pings de maintien de connexion SSE | API Anthropic directe, [Claude Platform on AWS](/docs/fr/claude-platform-on-aws), et [passerelle](/docs/fr/gateways) connexions, y compris un `ANTHROPIC_BASE_URL` personnalisé. Opt-in sur les réponses Amazon Bedrock `vnd.amazon.eventstream` avec `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` ; ne s'exécute pas sur Google Cloud's Agent Platform ou Microsoft Foundry | 180 secondes sur l'API Anthropic directe. Via un `ANTHROPIC_BASE_URL` personnalisé, 180 secondes lorsque Claude Code a [récupéré les feature flags](/docs/fr/env-vars#features-that-need-feature-flag-fetching) et 300 secondes dans le cas contraire. 300 secondes ailleurs |212| Chien de garde au niveau des octets | Aucun octet n'arrive sur le fil, y compris les pings de maintien de connexion SSE | API Anthropic directe, [Claude Platform on AWS](/docs/fr/claude-platform-on-aws), et connexions via une [passerelle](/docs/fr/gateways), y compris un `ANTHROPIC_BASE_URL` personnalisé. Opt-in sur les réponses Amazon Bedrock `vnd.amazon.eventstream` avec `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` ; ne s'exécute pas sur Google Cloud's Agent Platform ou Microsoft Foundry | 180 secondes sur l'API Anthropic directe. 300 secondes sur Claude Platform on AWS, sur Amazon Bedrock, dans une session de [passerelle Claude apps](/docs/fr/claude-apps-gateway), et via un `ANTHROPIC_BASE_URL` personnalisé |

213| Délai d'inactivité du corps | Aucun octet n'arrive pendant 5 minutes | Fournisseurs autres que l'API Anthropic directe, Claude Platform on AWS, et Amazon Bedrock avec `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` défini, sauf si [`API_FORCE_IDLE_TIMEOUT`](/docs/fr/env-vars) change cela | 5 minutes |213| Délai d'inactivité du corps | Aucun octet n'arrive pendant 5 minutes | Fournisseurs autres que l'API Anthropic directe, Claude Platform on AWS, et Amazon Bedrock avec `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` défini, sauf si [`API_FORCE_IDLE_TIMEOUT`](/docs/fr/env-vars) change cela | 5 minutes |

214 214 

215Si vous définissez `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`, le chien de garde au niveau des octets remplace le délai d'inactivité du corps sur Bedrock plutôt que de s'exécuter à côté de celui-ci. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` gouverne alors également la durée pendant laquelle un flux Bedrock peut rester silencieux avant que Claude Code ne traite la connexion comme morte, dans les limites énumérées ci-dessous. Les octets arrivants ne réinitialisent toujours pas le chien de garde au niveau des événements sur Bedrock. Avec la journalisation de débogage activée, chaque flux Bedrock enregistre alors un message de débogage qui commence par `wire-heartbeat: _chunkTimes absent`.215Si vous définissez `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`, le chien de garde au niveau des octets remplace le délai d'inactivité du corps sur Bedrock plutôt que de s'exécuter à côté de celui-ci. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` gouverne alors également la durée pendant laquelle un flux Bedrock peut rester silencieux avant que Claude Code ne traite la connexion comme morte, dans les limites énumérées ci-dessous. Les octets arrivants ne réinitialisent toujours pas le chien de garde au niveau des événements sur Bedrock. Avec la journalisation de débogage activée, chaque flux Bedrock enregistre alors un message de débogage qui commence par `wire-heartbeat: _chunkTimes absent`.

Details

239 * **[Sessions Remote Control](/docs/fr/remote-control)** sur votre machine locale : Manual, Accept edits, Plan et Auto pour une session que vous avez démarrée vous-même, et vous ne pouvez pas sélectionner Bypass permissions à partir de l'application. Pour utiliser Auto, la session doit satisfaire les [conditions de disponibilité](#eliminate-prompts-with-auto-mode) du mode auto. Pour un fil de projet s'exécutant sur votre ordinateur, voir [Exécuter un fil sur votre propre ordinateur](/docs/fr/claude-projects#run-a-thread-on-your-own-computer).239 * **[Sessions Remote Control](/docs/fr/remote-control)** sur votre machine locale : Manual, Accept edits, Plan et Auto pour une session que vous avez démarrée vous-même, et vous ne pouvez pas sélectionner Bypass permissions à partir de l'application. Pour utiliser Auto, la session doit satisfaire les [conditions de disponibilité](#eliminate-prompts-with-auto-mode) du mode auto. Pour un fil de projet s'exécutant sur votre ordinateur, voir [Exécuter un fil sur votre propre ordinateur](/docs/fr/claude-projects#run-a-thread-on-your-own-computer).

240 * Sauf pour Bypass permissions, la liste déroulante affiche le mode de permission dans lequel se trouve la session locale, y compris un mode défini à partir du terminal. Elle se met à jour quand le mode de permission change dans l'application ou dans le terminal.240 * Sauf pour Bypass permissions, la liste déroulante affiche le mode de permission dans lequel se trouve la session locale, y compris un mode défini à partir du terminal. Elle se met à jour quand le mode de permission change dans l'application ou dans le terminal.

241 * Les sessions hébergées par l'[application de bureau](/docs/fr/desktop) ou l'[extension VS Code](/docs/fr/vs-code) signalent les changements de mode de permission à claude.ai au fur et à mesure qu'ils se produisent, de la même manière que les sessions hébergées dans un terminal.241 * Les sessions hébergées par l'[application de bureau](/docs/fr/desktop) ou l'[extension VS Code](/docs/fr/vs-code) signalent les changements de mode de permission à claude.ai au fur et à mesure qu'ils se produisent, de la même manière que les sessions hébergées dans un terminal.

242 * Avant v2.1.202, les sessions connectées avec `/remote-control` ou `claude --remote-control` ne signalaient pas du tout leur mode de permission, donc claude.ai et l'application mobile pouvaient afficher un mode de permission dans lequel la session n'était pas. L'inadéquation affectait uniquement l'étiquette. Claude Code générait des demandes de permission à partir du mode de permission réel de la session, et elles apparaissaient toujours dans l'application pour approbation.

243 242 

244 Pour Remote Control, la machine locale exécutant la session doit être connectée avec votre compte claude.ai ; les clés API ne sont pas supportées. Vous pouvez également définir le mode de permission de démarrage lors du lancement de cette session locale :243 Pour Remote Control, la machine locale exécutant la session doit être connectée avec votre compte claude.ai ; les clés API ne sont pas supportées. Vous pouvez également définir le mode de permission de démarrage lors du lancement de cette session locale :

245 244 


352 351 

353Pour empêcher les développeurs d'utiliser le mode auto, définissez `disableAutoMode` sur `"disable"` dans les [paramètres gérés](/docs/fr/managed-settings). Cela supprime `auto` du cycle `Shift+Tab`, et une session démarrée avec `--permission-mode auto` démarre en Manual à la place. Une session déjà en cours d'exécution en mode auto le quitte quand le paramètre l'atteint à partir d'une [source déployée par l'administrateur](/docs/fr/managed-settings#which-managed-source-claude-code-uses), et affiche `auto mode disabled by settings`. Avant v2.1.251, une session en cours d'exécution gardait le mode auto jusqu'à la fin.352Pour empêcher les développeurs d'utiliser le mode auto, définissez `disableAutoMode` sur `"disable"` dans les [paramètres gérés](/docs/fr/managed-settings). Cela supprime `auto` du cycle `Shift+Tab`, et une session démarrée avec `--permission-mode auto` démarre en Manual à la place. Une session déjà en cours d'exécution en mode auto le quitte quand le paramètre l'atteint à partir d'une [source déployée par l'administrateur](/docs/fr/managed-settings#which-managed-source-claude-code-uses), et affiche `auto mode disabled by settings`. Avant v2.1.251, une session en cours d'exécution gardait le mode auto jusqu'à la fin.

354 353 

355Dans v2.1.158 à v2.1.206, le mode auto était désactivé sur ces fournisseurs jusqu'à ce que vous définissiez `CLAUDE_CODE_ENABLE_AUTO_MODE=1`, et Claude Code ignorait `defaultMode: "auto"` sur ces fournisseurs à moins que la variable ne soit également définie. La variable est toujours acceptée pour la compatibilité et n'a aucun effet à partir de v2.1.207.

356 

357<h3 id="server-side-classifier-review">354<h3 id="server-side-classifier-review">

358 Examen du classificateur côté serveur355 Examen du classificateur côté serveur

359</h3>356</h3>


408* Lancement d'une boucle d'agent autonome qui s'exécute sans approbation humaine ni sandbox, comme une boucle lancée avec `--dangerously-skip-permissions` ou `--no-sandbox`. Cela inclut l'exécution d'un agent tiers ou d'un harnais d'évaluation avec l'isolation et l'approbation par action désactivées, comme un runner lancé avec `--yes-always`405* Lancement d'une boucle d'agent autonome qui s'exécute sans approbation humaine ni sandbox, comme une boucle lancée avec `--dangerously-skip-permissions` ou `--no-sandbox`. Cela inclut l'exécution d'un agent tiers ou d'un harnais d'évaluation avec l'isolation et l'approbation par action désactivées, comme un runner lancé avec `--yes-always`

409* Actions du navigateur [Claude dans Chrome](/docs/fr/chrome) qui pourraient envoyer le contenu de la page, les cookies ou les identifiants hors origine406* Actions du navigateur [Claude dans Chrome](/docs/fr/chrome) qui pourraient envoyer le contenu de la page, les cookies ou les identifiants hors origine

410* Suppression de fichiers dans `/tmp`, `$TMPDIR` ou un autre répertoire temporaire ou de cache partagé par caractère générique, glob ou filtre d'âge plutôt que par un chemin nommé spécifique407* Suppression de fichiers dans `/tmp`, `$TMPDIR` ou un autre répertoire temporaire ou de cache partagé par caractère générique, glob ou filtre d'âge plutôt que par un chemin nommé spécifique

411* Inclusion de détails sensibles dans du contenu envoyé, téléversé, publié ou écrit à d'autres personnes ou dans des systèmes partagés, quand votre propre message n'a pas autorisé ces détails pour ce destinataire. Les corps de PR et d'issue, les messages de commit et les commentaires comptent comme ce type de contenu sortant quand le dépôt est en dehors de la limite de confiance ou public, y compris les dépôts publics de votre propre organisation ; les chemins de fichiers internes, les noms de code, les données de réponse API en direct comme les e-mails ou les identifiants de compte, et les identifiants d'infrastructure comptent comme des détails sensibles. Les données personnelles en direct issues d'une réponse API dans un corps de PR ou d'issue, comme une adresse e-mail, un identifiant de compte ou d'organisation, ou une métrique d'utilisation, vous obligent à nommer ces détails et le destinataire indépendamment de la visibilité ou de la limite de confiance du dépôt. Cette vérification nécessite Claude Code v2.1.203 ou ultérieur408* Inclusion de détails sensibles dans du contenu envoyé, téléversé, publié ou écrit à d'autres personnes ou dans des systèmes partagés, quand votre propre message n'a pas autorisé ces détails pour ce destinataire. Les corps de PR et d'issue, les messages de commit et les commentaires comptent comme ce type de contenu sortant quand le dépôt est en dehors de la limite de confiance ou public, y compris les dépôts publics de votre propre organisation ; les chemins de fichiers internes, les noms de code, les données de réponse API en direct comme les e-mails ou les identifiants de compte, et les identifiants d'infrastructure comptent comme des détails sensibles. Les données personnelles en direct issues d'une réponse API dans un corps de PR ou d'issue, comme une adresse e-mail, un identifiant de compte ou d'organisation, ou une métrique d'utilisation, vous obligent à nommer ces détails et le destinataire indépendamment de la visibilité ou de la limite de confiance du dépôt

412* Envoi de frappes au clavier au propre volet tmux de Claude Code pour piloter sa propre interface, ce que le classificateur traite comme Claude modifiant ses propres permissions ou sa propre supervision409* Envoi de frappes au clavier au propre volet tmux de Claude Code pour piloter sa propre interface, ce que le classificateur traite comme Claude modifiant ses propres permissions ou sa propre supervision

413* Mise en commentaire, suppression ou forçage de la réussite d'un test ou d'une assertion qui protège un comportement de sécurité, comme l'authentification, le contrôle d'accès, la validation des entrées ou le sandboxing410* Mise en commentaire, suppression ou forçage de la réussite d'un test ou d'une assertion qui protège un comportement de sécurité, comme l'authentification, le contrôle d'accès, la validation des entrées ou le sandboxing

414* Suppression ou démantèlement d'une ressource avec état que Claude n'a pas créée dans la session, quand aucune règle de suppression plus spécifique ne s'applique et que vous n'avez pas nommé cette ressource411* Suppression ou démantèlement d'une ressource avec état que Claude n'a pas créée dans la session, quand aucune règle de suppression plus spécifique ne s'applique et que vous n'avez pas nommé cette ressource

415* Réorientation d'une URL de base d'API, d'un endpoint de proxy, d'un récepteur de webhook ou d'un miroir de registre vers un hôte tiers qui ne correspond pas à la tâche, y compris dans les fichiers d'exemple comme `.env.example`412* Réorientation d'une URL de base d'API, d'un endpoint de proxy, d'un récepteur de webhook ou d'un miroir de registre vers un hôte tiers qui ne correspond pas à la tâche, y compris dans les fichiers d'exemple comme `.env.example`

416* Modification de la destination des push avec `git remote set-url` ou `git remote add`, à moins que vous n'ayez nommé le nouveau remote413* Modification de la destination des push avec `git remote set-url` ou `git remote add`, à moins que vous n'ayez nommé le nouveau remote

417* Push de secrets ou de données personnelles ou confiées vers un dépôt connu pour être public, ou push de contenu confidentiel qui ne fait pas partie du travail propre de ce dépôt. Le sujet propre d'un dépôt de dotfiles est la seule exception pour les données personnelles ou confiées, et le contenu d'un dépôt privé atteignant n'importe quelle surface publique est bloqué de la même manière ; ces deux précisions nécessitent Claude Code v2.1.203 ou ultérieur. Avant v2.1.203, les données personnelles étaient regroupées avec le contenu confidentiel et bloquées uniquement quand elles ne faisaient pas partie du travail propre de ce dépôt. Quand la visibilité d'un dépôt n'est pas établie, le classificateur ne bloque pas sur ce seul critère ; il juge plutôt le contenu par rapport aux autres règles414* Push de secrets ou de données personnelles ou confiées vers un dépôt connu pour être public, ou push de contenu confidentiel qui ne fait pas partie du travail propre de ce dépôt. Le sujet propre d'un dépôt de dotfiles est la seule exception pour les données personnelles ou confiées, et le contenu d'un dépôt privé atteignant n'importe quelle surface publique est bloqué de la même manière. Quand la visibilité d'un dépôt n'est pas établie, le classificateur ne bloque pas sur ce seul critère ; il juge plutôt le contenu par rapport aux autres règles

418* Ouverture d'une pull request vers un dépôt ou une organisation différents, fork avec `gh repo fork` ou push vers un dépôt tiers, à moins que vous n'ayez nommé cette cible externe415* Ouverture d'une pull request vers un dépôt ou une organisation différents, fork avec `gh repo fork` ou push vers un dépôt tiers, à moins que vous n'ayez nommé cette cible externe

419 

420Plusieurs de ces catégories dépendent d'entrées [d'environnement](/docs/fr/auto-mode-config#define-trusted-infrastructure), comme les cibles distantes sensibles et les portées IaC protégées, que vous pouvez restreindre à des noms concrets.

421 

422Claude Code v2.1.203 et ultérieur bloquent également par défaut :

423 

424* Contenu issu d'un magasin local sensible, ou d'un fichier dont le nom, le chemin ou le type le marque comme sensible, entrant dans un commit, un push, un texte de PR ou d'issue, un gist ou un paste, ou une publication de paquet, à moins que vous n'ayez nommé à la fois la source et la destination. Les transcriptions de session et les journaux de conversation, les dossiers cachés d'identifiants et de configuration comme les clés SSH, les identifiants cloud, les profils de navigateur et l'historique du shell, ainsi que les exportations de données utilisateur comptent tous, et le fait que le dépôt soit privé ne lève pas le blocage416* Contenu issu d'un magasin local sensible, ou d'un fichier dont le nom, le chemin ou le type le marque comme sensible, entrant dans un commit, un push, un texte de PR ou d'issue, un gist ou un paste, ou une publication de paquet, à moins que vous n'ayez nommé à la fois la source et la destination. Les transcriptions de session et les journaux de conversation, les dossiers cachés d'identifiants et de configuration comme les clés SSH, les identifiants cloud, les profils de navigateur et l'historique du shell, ainsi que les exportations de données utilisateur comptent tous, et le fait que le dépôt soit privé ne lève pas le blocage

425 

426Claude Code v2.1.205 et ultérieur bloquent également par défaut :

427 

428* Écriture dans les transcriptions de session Claude Code, les fichiers d'historique `.jsonl` sous `~/.claude/projects/` ou votre répertoire de configuration configuré, directement ou via une commande shell. La règle couvre également les lignes de métadonnées que Claude Code ajoute à chaque entrée de transcription pour ses propres vérifications. La lecture d'une transcription n'est pas bloquée417* Écriture dans les transcriptions de session Claude Code, les fichiers d'historique `.jsonl` sous `~/.claude/projects/` ou votre répertoire de configuration configuré, directement ou via une commande shell. La règle couvre également les lignes de métadonnées que Claude Code ajoute à chaque entrée de transcription pour ses propres vérifications. La lecture d'une transcription n'est pas bloquée

429* Une suppression forcée récursive comme `rm -rf "$VAR"` ou `Remove-Item -Recurse -Force $dir` dont la cible est une variable shell qui n'est assignée nulle part dans la conversation que le classificateur voit, ou un glob enraciné dans une telle variable. La valeur provenait uniquement d'une sortie de commande antérieure, que le classificateur ne reçoit jamais, donc le classificateur ne peut pas vérifier la cible de suppression par rapport aux autres règles de suppression. Le blocage est levé quand vous nommez le chemin exact en cours de suppression, ou quand Claude réexécute la suppression avec le chemin littéral résolu écrit dans la commande. Les suppressions dont le classificateur peut résoudre la cible ne sont pas affectées.418* Une suppression forcée récursive comme `rm -rf "$VAR"` ou `Remove-Item -Recurse -Force $dir` dont la cible est une variable shell qui n'est assignée nulle part dans la conversation que le classificateur voit, ou un glob enraciné dans une telle variable. La valeur provenait uniquement d'une sortie de commande antérieure, que le classificateur ne reçoit jamais, donc le classificateur ne peut pas vérifier la cible de suppression par rapport aux autres règles de suppression. Le blocage est levé quand vous nommez le chemin exact en cours de suppression, ou quand Claude réexécute la suppression avec le chemin littéral résolu écrit dans la commande. Les suppressions dont le classificateur peut résoudre la cible ne sont pas affectées.

430 419 

431 Un glob directement sous la variable, comme dans `rm -rf "$VAR"/*`, est plutôt un [chemin critique](#critical-paths). Les cibles `Remove-Item` qui sont un `*` seul ou se terminent par `/*` ou `\*` n'atteignent jamais le classificateur : Claude Code les [refuse directement](#remove-item-in-powershell).420 Un glob directement sous la variable, comme dans `rm -rf "$VAR"/*`, est plutôt un [chemin critique](#critical-paths). Les cibles `Remove-Item` qui sont un `*` seul ou se terminent par `/*` ou `\*` n'atteignent jamais le classificateur : Claude Code les [refuse directement](#remove-item-in-powershell).

432 421 

422Plusieurs de ces catégories dépendent d'entrées [d'environnement](/docs/fr/auto-mode-config#define-trusted-infrastructure), comme les cibles distantes sensibles et les portées IaC protégées, que vous pouvez restreindre à des noms concrets.

423 

433Claude Code v2.1.257 et ultérieur bloquent également par défaut :424Claude Code v2.1.257 et ultérieur bloquent également par défaut :

434 425 

435* Demande d'identifiants à l'endpoint de métadonnées d'instance cloud, comme `169.254.169.254`, ou authentification explicite d'un appel cloud, cluster ou registre avec l'identité de compte de service ou de nœud de la machine426* Demande d'identifiants à l'endpoint de métadonnées d'instance cloud, comme `169.254.169.254`, ou authentification explicite d'un appel cloud, cluster ou registre avec l'identité de compte de service ou de nœud de la machine


449* Installation de dépendances déclarées dans vos fichiers de verrouillage ou manifestes440* Installation de dépendances déclarées dans vos fichiers de verrouillage ou manifestes

450* Lecture de `.env` et envoi d'identifiants à leur API correspondante441* Lecture de `.env` et envoi d'identifiants à leur API correspondante

451* Requêtes HTTP en lecture seule442* Requêtes HTTP en lecture seule

452* Push vers n'importe quelle branche du dépôt sur lequel vous travaillez, y compris la branche par défaut. Une branche autre que celle par défaut dont le nom la désigne comme cible de déploiement ou de publication, comme `production` ou `gh-pages`, n'est pas couverte : le classificateur juge un push vers celle-ci selon ses propres critères. Le contenu du push est toujours vérifié par rapport aux autres règles, les [règles `permissions.deny`](/docs/fr/permissions#manage-permissions) peuvent toujours bloquer les commandes de push [telles qu'écrites](/docs/fr/permissions#bash-rule-limits) dans chaque mode, et la protection de branche propre au remote s'applique toujours. Avant v2.1.211, seuls les push vers la branche sur laquelle vous aviez démarré, vers les branches que Claude avait créées, et les push habituels vers la branche par défaut étaient autorisés par défaut, et avant v2.1.203 tout push direct vers la branche par défaut était bloqué443* Push vers n'importe quelle branche du dépôt sur lequel vous travaillez, y compris la branche par défaut. Une branche autre que celle par défaut dont le nom la désigne comme cible de déploiement ou de publication, comme `production` ou `gh-pages`, n'est pas couverte : le classificateur juge un push vers celle-ci selon ses propres critères. Le contenu du push est toujours vérifié par rapport aux autres règles, les [règles `permissions.deny`](/docs/fr/permissions#manage-permissions) peuvent toujours bloquer les commandes de push [telles qu'écrites](/docs/fr/permissions#bash-rule-limits) dans chaque mode, et la protection de branche propre au remote s'applique toujours. Avant v2.1.211, seuls les push vers la branche sur laquelle vous aviez démarré, vers les branches que Claude avait créées, et les push habituels vers la branche par défaut étaient autorisés par défaut

453* Suppression des tâches exactes que Claude a créées plus tôt dans la même session444* Suppression des tâches exactes que Claude a créées plus tôt dans la même session

454* Lecture, examen ou écriture de code, de configurations et de modèles de menace liés à la sécurité dans le cadre de votre tâche445* Lecture, examen ou écriture de code, de configurations et de modèles de menace liés à la sécurité dans le cadre de votre tâche

455* Messages entre agents travaillant ensemble dans la même session multi-agents446* Messages entre agents travaillant ensemble dans la même session multi-agents

permissions.md +8 −3

Details

384 384 

385Les règles `Edit` s'appliquent à tous les outils intégrés qui modifient des fichiers. Claude s'efforce d'appliquer les règles `Read` à tous les outils intégrés qui lisent des fichiers, comme Grep et Glob, aux mentions `@file` dans vos prompts, ainsi qu'à la sélection et au contexte des fichiers ouverts qu'un [IDE](/docs/fr/vs-code#the-built-in-ide-mcp-server) connecté partage avec Claude.385Les règles `Edit` s'appliquent à tous les outils intégrés qui modifient des fichiers. Claude s'efforce d'appliquer les règles `Read` à tous les outils intégrés qui lisent des fichiers, comme Grep et Glob, aux mentions `@file` dans vos prompts, ainsi qu'à la sélection et au contexte des fichiers ouverts qu'un [IDE](/docs/fr/vs-code#the-built-in-ide-mcp-server) connecté partage avec Claude.

386 386 

387Une règle `Read(path)` deny s'applique également aux chemins d'images que vous collez dans un prompt et aux répertoires que vous mentionnez avec @ :

388 

389* **Chemin d'image** : lorsque vous collez le chemin d'une image ou faites glisser un fichier image dans votre prompt dans le terminal et que la règle correspond à ce chemin, Claude Code n'attache pas l'image. Si le collage ne contient aucune autre image, le chemin reste dans votre prompt sous forme de texte.

390* **Répertoire** : la [liste que Claude reçoit](/docs/fr/common-workflows#reference-files-and-directories) omet les noms de fichiers et de répertoires auxquels la règle correspond.

391 

392Claude Code vérifie les chemins d'images collés et les listes de répertoires à partir de la v2.1.290.

393 

387Une règle `Read` deny bloque également les [outils Edit et Write](/docs/fr/errors#file-is-covered-by-a-read-deny-rule) sur le même chemin, y compris la création d'un nouveau fichier à cet emplacement. NotebookEdit n'est pas couvert ; ajoutez donc une règle `Edit` deny pour les chemins qu'aucun outil ne doit modifier. La vérification nécessite Claude Code v2.1.208 ou ultérieur pour les modifications, et v2.1.228 ou ultérieur pour les écritures.394Une règle `Read` deny bloque également les [outils Edit et Write](/docs/fr/errors#file-is-covered-by-a-read-deny-rule) sur le même chemin, y compris la création d'un nouveau fichier à cet emplacement. NotebookEdit n'est pas couvert ; ajoutez donc une règle `Edit` deny pour les chemins qu'aucun outil ne doit modifier. La vérification nécessite Claude Code v2.1.208 ou ultérieur pour les modifications, et v2.1.228 ou ultérieur pour les écritures.

388 395 

389Claude Code vérifie les permissions de fichiers uniquement par rapport aux règles `Edit(path)` et `Read(path)`. Si vous écrivez plutôt une règle de chemin pour `Write`, `NotebookEdit`, `Glob` ou l'ancien outil `MultiEdit`, Claude Code accepte la règle mais ne la consulte jamais, et [affiche un avertissement au démarrage](/docs/fr/errors#is-not-matched-by-file-permission-checks), sauf pour une règle `Glob` passée dans `--allowedTools`. Utilisez `Edit(docs/**)` à la place de `Write(docs/**)`, `NotebookEdit(docs/**)` ou `MultiEdit(docs/**)`, et `Read(docs/**)` à la place de `Glob(docs/**)`. Claude Code n'affiche pas d'avertissement pour une règle portant sur un nom d'outil sans chemin, comme une règle deny pour `Write` ; il applique cette règle au niveau de l'outil partout. Nécessite Claude Code v2.1.210 ou ultérieur.396Claude Code vérifie les permissions de fichiers uniquement par rapport aux règles `Edit(path)` et `Read(path)`. Si vous écrivez plutôt une règle de chemin pour `Write`, `NotebookEdit`, `Glob` ou l'ancien outil `MultiEdit`, Claude Code accepte la règle mais ne la consulte jamais, et [affiche un avertissement au démarrage](/docs/fr/errors#is-not-matched-by-file-permission-checks), sauf pour une règle `Glob` passée dans `--allowedTools`. Utilisez `Edit(docs/**)` à la place de `Write(docs/**)`, `NotebookEdit(docs/**)` ou `MultiEdit(docs/**)`, et `Read(docs/**)` à la place de `Glob(docs/**)`. Claude Code n'affiche pas d'avertissement pour une règle portant sur un nom d'outil sans chemin, comme une règle deny pour `Write` ; il applique cette règle au niveau de l'outil partout. Nécessite Claude Code v2.1.210 ou ultérieur.


467 Dans les motifs gitignore, `*` correspond à l'intérieur d'un seul segment de chemin et peut apparaître à n'importe quelle position du motif, tandis que `**` correspond à travers les répertoires.474 Dans les motifs gitignore, `*` correspond à l'intérieur d'un seul segment de chemin et peut apparaître à n'importe quelle position du motif, tandis que `**` correspond à travers les répertoires.

468</Note>475</Note>

469 476 

470Lorsque vous approuvez un chemin de fichier avec « Yes, and don't ask again », Claude Code échappe les caractères de motif gitignore présents dans ce chemin, comme `[`, `]` et `*`, de sorte que la règle générée ne correspond qu'au chemin littéral que vous avez approuvé. Les règles que vous écrivez vous-même ne sont pas échappées. Avant la v2.1.202, Claude Code enregistrait le chemin sans échappement, si bien qu'une règle générée pour un répertoire nommé `[2024-06] Reports` pouvait ne pas correspondre à son propre chemin ou correspondre à des répertoires frères non souhaités.477Lorsque vous approuvez un chemin de fichier avec « Yes, and don't ask again », Claude Code échappe les caractères de motif gitignore présents dans ce chemin, comme `[`, `]` et `*`, de sorte que la règle générée ne correspond qu'au chemin littéral que vous avez approuvé. Les règles que vous écrivez vous-même ne sont pas échappées.

471 478 

472Vous n'avez pas besoin d'échapper les parenthèses dans un chemin : `Edit(./Finance (2024)/**)` correspond au dossier `Finance (2024)` tel qu'il est écrit.479Vous n'avez pas besoin d'échapper les parenthèses dans un chemin : `Edit(./Finance (2024)/**)` correspond au dossier `Finance (2024)` tel qu'il est écrit.

473 480 


805 L'exception du répertoire de configuration ignore uniquement l'étape de confiance. `~/.claude/settings.local.json` est toujours une [portée locale](/docs/fr/settings#compare-the-scope-of-each-settings-file), donc Claude Code ne le lit que dans les sessions que vous démarrez dans votre répertoire personnel lui-même, pas dans chaque projet. Pour appliquer les règles de permission dans tous vos projets, ajoutez-les à vos paramètres utilisateur à la place : `~/.claude/settings.json`, ou `$CLAUDE_CONFIG_DIR/settings.json` lorsque `CLAUDE_CONFIG_DIR` est défini.812 L'exception du répertoire de configuration ignore uniquement l'étape de confiance. `~/.claude/settings.local.json` est toujours une [portée locale](/docs/fr/settings#compare-the-scope-of-each-settings-file), donc Claude Code ne le lit que dans les sessions que vous démarrez dans votre répertoire personnel lui-même, pas dans chaque projet. Pour appliquer les règles de permission dans tous vos projets, ajoutez-les à vos paramètres utilisateur à la place : `~/.claude/settings.json`, ou `$CLAUDE_CONFIG_DIR/settings.json` lorsque `CLAUDE_CONFIG_DIR` est défini.

806</Note>813</Note>

807 814 

808Avant la v2.1.207, Claude Code appliquait les règles d'un fichier non suivi avant que vous acceptiez la boîte de dialogue.

809 

810<h3 id="what-runs-before-you-trust-a-folder">815<h3 id="what-runs-before-you-trust-a-folder">

811 Ce qui s'exécute avant que vous fassiez confiance à un dossier816 Ce qui s'exécute avant que vous fassiez confiance à un dossier

812</h3>817</h3>

plugin-evals.md +37 −6

Details

443 443 

444| Code de sortie | Signification |444| Code de sortie | Signification |

445| :- | :- |445| :- | :- |

446| 0 | Chaque cas a marqué au ou au-dessus de `--threshold` et chaque fichier de cas a chargé |446| 0 | La suite a réussi : chaque cas a obtenu un score égal ou supérieur à `--threshold` et rien d'autre n'a fait échouer l'exécution |

447| 1 | Un cas a marqué en dessous du seuil, un fichier de cas n'a pas pu charger, aucun cas n'a été trouvé, une exécution n'a pas pu être démarrée, le répertoire du plugin n'est pas approuvé et `--trust-plugin` n'a pas été passé, ou une option était invalide |447| 1 | Un cas a marqué en dessous du seuil, un fichier de cas n'a pas pu charger, aucun cas n'a été trouvé, une exécution n'a pas pu être démarrée, ou une exécution [s'est terminée sur une erreur d'API](#runs-ended-on-an-api-error). Également renvoyé lorsque le répertoire du plugin n'est pas approuvé et que `--trust-plugin` n'a pas été passé, qu'une option était invalide, ou que le résultat `--json` n'a pas pu être écrit |

448| 2 | Exécution partielle : le plafond `--max-cost-usd` a été atteint, ou votre identifiant a été rejeté avant ou à la première exécution. `results.json` est toujours écrit avec `partial: true` et la raison |448| 2 | Exécution partielle : le plafond `--max-cost-usd` a été atteint, ou votre identifiant a été rejeté avant ou à la première exécution. `results.json` est toujours écrit avec `partial: true` et la raison |

449| 130 | Interrompu. Les résultats partiels sont écrits |449| 130 | Interrompu. Les résultats partiels sont écrits |

450| 143 | Terminé, comme par un délai d'expiration CI |450| 143 | Terminé, comme par un délai d'expiration CI |


503| `cases[].name` | Nom du cas |503| `cases[].name` | Nom du cas |

504| `cases[].aggregates.score` | Score d'exécution du bras with moyen pour le cas |504| `cases[].aggregates.score` | Score d'exécution du bras with moyen pour le cas |

505| `cases[].aggregates.delta` | Score du bras with moins score du bras without. Omis lorsque les bras ne sont pas comparables |505| `cases[].aggregates.delta` | Score du bras with moins score du bras without. Omis lorsque les bras ne sont pas comparables |

506| `cases[].arms.with[].error` | `null`, ou pourquoi une exécution s'est terminée anormalement, comme `timed out after 300s`. Une exécution qui a démarré mais s'est terminée mal est toujours notée sur ce qu'elle a produit, donc une erreur non-null n'implique pas un score de 0 |506| `cases[].arms.with[].error` | `null`, ou pourquoi une exécution s'est terminée anormalement, comme `timed out after 300s`. Certaines de ces exécutions sont tout de même notées sur ce qu'elles ont produit, donc une erreur non-null n'implique pas un score de 0. Une exécution qui [s'est terminée sur une erreur d'API](#runs-ended-on-an-api-error) obtient un score de 0 sans évaluation |

507| `cases[].arms.with[].aborted` | Présent lorsqu'un [mock](#mock-mcp-servers) a arrêté l'exécution via `expect:`, `abort_when`, ou le [budget d'appels de l'agent-mock](#mock-call-budget-exceeded), avec `server`, `tool`, et `reason`. L'exécution marque 0 et `error` reste `null` |507| `cases[].arms.with[].aborted` | Présent lorsqu'un [mock](#mock-mcp-servers) a arrêté l'exécution via `expect:`, `abort_when`, ou le [budget d'appels de l'agent-mock](#mock-call-budget-exceeded), avec `server`, `tool`, et `reason`. L'exécution marque 0 et `error` reste `null` |

508| `cases[].arms.with[].skippedPaidGraders` | `true` lorsque le plafond de coût a ignoré les évaluateurs de juge de cette exécution, donc son score n'est pas comparable |508| `cases[].arms.with[].skippedPaidGraders` | `true` lorsque le plafond de coût a ignoré les évaluateurs de juge de cette exécution, donc son score n'est pas comparable |

509| `costUsd`, `durationSeconds`, `claudeVersion` | Coût estimé au prix catalogue incluant les appels de juge, secondes de temps mural, et la version de Claude Code qui a exécuté la suite |509| `costUsd`, `durationSeconds`, `claudeVersion` | Coût estimé au prix catalogue incluant les appels de juge, secondes de temps mural, et la version de Claude Code qui a exécuté la suite |


724 724 

725Avant v2.1.283, `claude plugin eval` ne vérifiait pas la version de git, et sur un git plus ancien la suite s'exécutait avec ces programmes laissés activés.725Avant v2.1.283, `claude plugin eval` ne vérifiait pas la version de git, et sur un git plus ancien la suite s'exécutait avec ces programmes laissés activés.

726 726 

727<h3 id="cannot-be-evaluated-where-sessions-load-it">

728 "cannot be evaluated where sessions load it"

729</h3>

730 

731Vous avez exécuté `claude plugin eval` dans votre shell avec le nom d'un plugin installé depuis une marketplace que vous avez [ajoutée à partir d'un chemin local](/docs/fr/plugins/loading#in-place-and-copied-plugins). Aucune session ne pourrait actuellement charger le plugin depuis cette marketplace, donc la commande refuse avec ce message et se termine avec le code 1.

732 

733```text theme={null}

734Error: formatter@my-marketplace cannot be evaluated where sessions load it: no session could load it now. Its marketplace is a folder whose catalog could not be read, or lists it no more. Check the marketplace with `claude plugin marketplace list`, or pass ./<dir> to evaluate a directory.

735```

736 

737La phrase qui suit `no session could load it now.` indique ce qui a échoué.

738 

739Exécutez `claude plugin marketplace list` dans votre shell et corrigez ce que le message indique. Par exemple, restaurez le répertoire de la marketplace ou remettez l'entrée du plugin dans son catalogue. Pour évaluer la source du plugin sans la marketplace, passez son répertoire comme cible, par exemple `claude plugin eval ./plugins/formatter`.

740 

727<h3 id="no-eval-cases-found">741<h3 id="no-eval-cases-found">

728 « No eval cases found »742 « No eval cases found »

729</h3>743</h3>


774 L'exécution quitte 1 mais les résultats semblent bien788 L'exécution quitte 1 mais les résultats semblent bien

775</h3>789</h3>

776 790 

777La `--threshold` par défaut est 1.0, donc la commande quitte 1 lorsqu'un cas marque en dessous de parfait. Définissez un seuil qui correspond à votre barre. La sortie 1 couvre également un fichier de cas qui n'a pas pu charger, qui est rapporté sur stderr au-dessus du tableau.791Lorsque chaque cas a obtenu un score égal ou supérieur à `--threshold` et que la commande quitte quand même avec 1, une ligne sur stderr en indique la cause, même avec `--json`. Par exemple, un fichier de cas n'a pas pu être chargé, ou des exécutions [se sont terminées sur une erreur d'API](#runs-ended-on-an-api-error). Pour les autres causes, consultez les [codes de sortie](#run-evals-in-ci).

792 

793Le `--threshold` par défaut est 1.0, donc la commande quitte avec 1 lorsqu'un cas obtient un score inférieur au score parfait. Définissez un seuil qui correspond au score que vous exigez.

778 794 

779<h3 id="json-output-path-must-end-in-json">795<h3 id="json-output-path-must-end-in-json">

780 « --json output path must end in .json »796 `--json output path must end in .json`

781</h3>797</h3>

782 798 

783Vous avez mis la cible après `--json`, donc elle a été lue comme le chemin de sortie. Mettez la cible en premier, comme dans `claude plugin eval . --json`, ou donnez à `--json` un chemin `.json` explicite.799Vous avez mis la cible après `--json`, donc elle a été lue comme le chemin de sortie. Mettez la cible en premier, comme dans `claude plugin eval . --json`, ou donnez à `--json` un chemin `.json` explicite.


788 804 

789Cet évaluateur est exclu du score par conception dans une exécution à deux bras, et son champ `scored` est `false`. Voir [Comparer avec une base de référence sans plugin](#compare-against-a-no-plugin-baseline).805Cet évaluateur est exclu du score par conception dans une exécution à deux bras, et son champ `scored` est `false`. Voir [Comparer avec une base de référence sans plugin](#compare-against-a-no-plugin-baseline).

790 806 

807<h3 id="runs-ended-on-an-api-error">

808 "ended on an API error and scored 0 without grading"

809</h3>

810 

811Cet avertissement sur stderr signifie que l'API a répondu à la dernière requête d'au moins une exécution par une erreur HTTP, comme une limite de débit ou une limite d'utilisation du plan. Une telle exécution obtient un score de 0 sans résultats d'évaluateurs, et la commande se termine avec un code non nul quels que soient les scores et `--threshold`.

812 

813Pour corriger cela, trouvez l'erreur de chaque exécution concernée et résolvez la cause qu'elle signale, puis exécutez à nouveau la suite :

814 

815* **Sans `--json`** : l'erreur se trouve à la fin de la ligne de progression de l'exécution, après `error:`

816* **Avec `--json`** : l'erreur se trouve dans le [résultat JSON](#json-result), à `cases[].arms.with[].error` ou `cases[].arms.without[].error`

817 

818Le décompte inclut aussi les exécutions de [base de référence](#the-no-plugin-baseline). Leurs scores ne décident jamais si un cas réussit, donc chaque cas peut réussir alors que la commande échoue quand même. Dans une exécution à deux bras, les valeurs `W/OUT` et `Δ` du cas concerné s'affichent sous la forme `—`. Pour une limite d'utilisation ou une limite de débit, consultez [Les exécutions échouent avec une erreur de limite d'utilisation ou de limite de débit à mi-chemin](#runs-fail-with-a-usage-limit-or-rate-limit-error-partway-through).

819 

820Avant v2.1.299, une telle exécution était évaluée sur ce qu'elle avait produit.

821 

791<h3 id="runs-fail-with-a-usage-limit-or-rate-limit-error-partway-through">822<h3 id="runs-fail-with-a-usage-limit-or-rate-limit-error-partway-through">

792 Les exécutions échouent avec une erreur de limite d'utilisation ou de limite de débit à mi-chemin823 Les exécutions échouent avec une erreur de limite d'utilisation ou de limite de débit à mi-chemin

793</h3>824</h3>

794 825 

795Si votre compte atteint la limite d'utilisation de son plan ou une limite de débit API pendant qu'une suite s'exécute, chaque exécution ultérieure se termine avec cette erreur, est notée sur ce qu'elle a produit, et marque généralement 0. La suite se termine toujours et n'est pas marquée `partial`, donc le résultat peut ressembler à une régression. Vérifiez la colonne `NOTES` ou `cases[].arms.with[].error` dans le JSON pour le message de limite avant de faire confiance aux scores, puis réexécutez après que la limite se réinitialise, avec `--runs 1` ou un filtre `--case` si vous avez besoin de rester en dessous.826Les exécutions qui se terminent par une erreur de limite d'utilisation ou de limite de débit [obtiennent un score de 0 sans évaluation](#runs-ended-on-an-api-error), et la commande se termine avec un code non nul. La suite se termine toujours et n'est pas marquée `partial`. Réexécutez après la réinitialisation de la limite, avec `--runs 1` ou un filtre `--case` si vous avez besoin de rester en dessous.

796 827 

797<h3 id="mock-call-budget-exceeded">828<h3 id="mock-call-budget-exceeded">

798 « mock call budget exceeded »829 « mock call budget exceeded »

Details

523 523 

524| Code de sortie | Signification |524| Code de sortie | Signification |

525| :- | :- |525| :- | :- |

526| `0` | Chaque cas respecte le seuil |526| `0` | La suite a réussi : chaque cas respecte le seuil et rien d'autre n'a fait échouer l'exécution |

527| `1` | Un cas défaillant, une erreur de chargement, ou un répertoire de plugin non approuvé |527| `1` | Un cas défaillant, une erreur de chargement, un répertoire de plugin non approuvé, une exécution qui [s'est terminée sur une erreur d'API](/docs/fr/plugin-evals#runs-ended-on-an-api-error), ou une autre cause listée dans [Exécuter les évaluations en CI](/docs/fr/plugin-evals#run-evals-in-ci) |

528| `2` | Une exécution partielle |528| `2` | Une exécution partielle |

529| `130` | Interrompu |529| `130` | Interrompu |

530| `143` | Terminé |530| `143` | Terminé |

Details

752 752 

753Le frontmatter d'un agent du plugin suit ces règles :753Le frontmatter d'un agent du plugin suit ces règles :

754 754 

755* **Champs supportés** : `name`, `description`, `model`, `effort`, `maxTurns`, `tools`, `disallowedTools`, `skills`, `memory`, `background`, `omitClaudeMd`, `isolation`, `color`, et la clé `cacheTtl` de `experimental`. La seule valeur `isolation` valide est `"worktree"`. Consultez [champs de frontmatter supportés](/docs/fr/sub-agents#supported-frontmatter-fields) pour ce que chacun fait755* **Champs supportés** : `name`, `description`, `model`, `effort`, `maxTurns`, `autoCompactWindow`, `tools`, `disallowedTools`, `skills`, `memory`, `background`, `omitClaudeMd`, `isolation`, `color`, et la clé `cacheTtl` de `experimental`. La seule valeur `isolation` valide est `"worktree"`. Consultez [champs de frontmatter supportés](/docs/fr/sub-agents#supported-frontmatter-fields) pour ce que chacun fait

756* **Champs ignorés** : `permissionMode`, `hooks`, `mcpServers`, et `initialPrompt`. Un fichier d'agent ne peut pas ajouter des hooks ou des serveurs MCP par lui-même, donc ajoutez-les comme plugin [hooks](#hooks) et [serveurs MCP](#mcp-servers) à la place756* **Champs ignorés** : `permissionMode`, `hooks`, `mcpServers`, et `initialPrompt`. Un fichier d'agent ne peut pas ajouter des hooks ou des serveurs MCP par lui-même, donc ajoutez-les comme plugin [hooks](#hooks) et [serveurs MCP](#mcp-servers) à la place

757* **Frontmatter qui ne s'analyse pas** : l'agent charge quand même avec chaque champ ignoré. Il est nommé d'après le fichier, et sa description lit `Agent from my-plugin plugin`. Exécutez [`claude plugin validate`](/docs/fr/plugins/cli-reference#plugin-validate) dans votre shell pour trouver ces fichiers757* **Frontmatter qui ne s'analyse pas** : l'agent charge quand même avec chaque champ ignoré. Il est nommé d'après le fichier, et sa description lit `Agent from my-plugin plugin`. Exécutez [`claude plugin validate`](/docs/fr/plugins/cli-reference#plugin-validate) dans votre shell pour trouver ces fichiers

758 758 

Details

237 237 

238Lorsqu'un utilisateur désinstalle le dernier plugin qui contraint une dépendance, la dépendance n'est plus contrainte à une plage de version et reprend le suivi de son entrée de place de marché à la prochaine mise à jour.238Lorsqu'un utilisateur désinstalle le dernier plugin qui contraint une dépendance, la dépendance n'est plus contrainte à une plage de version et reprend le suivi de son entrée de place de marché à la prochaine mise à jour.

239 239 

240<h3 id="dependencies-when-your-plugin-loads-from-claude-ai">

241 Dépendances lorsque votre plugin se charge depuis claude.ai

242</h3>

243 

244Lorsqu'un utilisateur active votre plugin pour son compte claude.ai, Claude Code le charge en tant que `<name>@synced`, [sans marketplace](/docs/fr/plugins/loading#synced-plugins). Pour cette copie de votre plugin, Claude Code considère une entrée de dépendance qui nomme une marketplace comme satisfaite lorsque l'utilisateur dispose de l'un ou l'autre des éléments suivants :

245 

246* **La dépendance depuis sa marketplace** : installée depuis la marketplace que nomme votre entrée, et activée. Claude Code vérifie une plage `version` de votre entrée par rapport à la version de la copie installée.

247* **Un plugin claude.ai du même nom** : activé depuis son compte claude.ai. Claude Code vérifie une plage `version` de votre entrée par rapport à la `version` de ce plugin, et un plugin qui n'indique aucune `version` passe la vérification.

248 

249Si vous demandez aux utilisateurs d'activer votre plugin depuis claude.ai, demandez-leur d'y activer également la dépendance, ou de l'installer depuis sa marketplace.

250 

251Un plugin claude.ai ne satisfait l'entrée que lorsque votre plugin se charge également depuis claude.ai.

252 

240<h2 id="see-also">253<h2 id="see-also">

241 Voir aussi254 Voir aussi

242</h2>255</h2>

Details

48* **Noms de marketplace communautaire** : `claude-community`, `claude-plugins-community` et `healthcare`. Réservés selon la même règle que les noms officiels.48* **Noms de marketplace communautaire** : `claude-community`, `claude-plugins-community` et `healthcare`. Réservés selon la même règle que les noms officiels.

49* **Noms de répertoire de plugin** : `anthropic-plugin-directory` et `claude-plugin-directory`. Réservés selon la même règle que les noms officiels.49* **Noms de répertoire de plugin** : `anthropic-plugin-directory` et `claude-plugin-directory`. Réservés selon la même règle que les noms officiels.

50* **Noms qui usurpent l'identité d'une marketplace officielle** : des noms tels que `official-claude-plugins` ou `claude-plugins-v2`, et tout nom contenant un caractère non-ASCII. L'erreur est `Marketplace name impersonates an official Anthropic/Claude marketplace`. Un caractère de contrôle ou de formatage bidirectionnel dans un nom signale également `Marketplace name cannot contain control or bidirectional-formatting characters`. Une marketplace déjà enregistrée sous un tel nom cesse de se charger, ainsi que ses plugins.50* **Noms qui usurpent l'identité d'une marketplace officielle** : des noms tels que `official-claude-plugins` ou `claude-plugins-v2`, et tout nom contenant un caractère non-ASCII. L'erreur est `Marketplace name impersonates an official Anthropic/Claude marketplace`. Un caractère de contrôle ou de formatage bidirectionnel dans un nom signale également `Marketplace name cannot contain control or bidirectional-formatting characters`. Une marketplace déjà enregistrée sous un tel nom cesse de se charger, ainsi que ses plugins.

51* <span id="reserved-name-spellings" />**Une autre orthographe d'un nom réservé** : un nom qui diffère d'un nom réservé uniquement par un point final, ou par un symbole autre qu'un trait d'union à la place d'un trait d'union, donc `claude.code.plugins` compte comme `claude-code-plugins`. L'ajout de la marketplace échoue avec [`is another spelling of "<reserved>", a reserved marketplace name`](/docs/fr/errors#marketplace-name-is-another-spelling-of-a-reserved-name), et une marketplace déjà enregistrée sous l'une d'elles cesse de se charger. Cette vérification nécessite Claude Code v2.1.280 ou ultérieure.51* <span id="reserved-name-spellings" />**Une autre orthographe d'un nom réservé** : un nom qui diffère d'un nom réservé uniquement par un point final, ou par un symbole autre qu'un trait de soulignement à la place d'un trait d'union, donc `claude.code.plugins` compte comme `claude-code-plugins`. L'ajout de la marketplace échoue avec [`is another spelling of "<reserved>", a reserved marketplace name`](/docs/fr/errors#marketplace-name-is-another-spelling-of-a-reserved-name), et une marketplace déjà enregistrée sous l'une d'elles cesse de se charger. Cette vérification nécessite Claude Code v2.1.280 ou ultérieure.

52* **Noms que Claude Code utilise pour les plugins qui ne proviennent pas d'une marketplace** : `inline` pour les plugins chargés avec [`--plugin-dir`](/docs/fr/cli-reference), `builtin` pour les plugins intégrés, `skills-dir` pour les plugins chargés automatiquement à partir de [`.claude/skills/`](/docs/fr/skills) et `synced` pour les plugins synchronisés à partir de votre compte claude.ai. `claude-plugin-test` est également réservé. `skills-dir` apparaît également comme `{"source": "skills-dir"}` dans `strictKnownMarketplaces` et `blockedMarketplaces`, décrits sous [Valeurs source valides uniquement dans les listes de politique](#source-values-valid-only-in-policy-lists).52* **Noms que Claude Code utilise pour les plugins qui ne proviennent pas d'une marketplace** : `inline` pour les plugins chargés avec [`--plugin-dir`](/docs/fr/cli-reference), `builtin` pour les plugins intégrés, `skills-dir` pour les plugins chargés automatiquement à partir de [`.claude/skills/`](/docs/fr/skills) et `synced` pour les plugins synchronisés à partir de votre compte claude.ai. `claude-plugin-test` est également réservé. `skills-dir` apparaît également comme `{"source": "skills-dir"}` dans `strictKnownMarketplaces` et `blockedMarketplaces`, décrits sous [Valeurs source valides uniquement dans les listes de politique](#source-values-valid-only-in-policy-lists).

53* **`npm`, `pip`, `uv`, `cargo`, `github` et `gh`** : réservés dans n'importe quelle casse. Cette vérification nécessite Claude Code v2.1.275 ou ultérieure.53* **`npm`, `pip`, `uv`, `cargo`, `github` et `gh`** : réservés dans n'importe quelle casse. Cette vérification nécessite Claude Code v2.1.275 ou ultérieure.

54* **Noms de membres que possède tout objet JavaScript** : `constructor`, `hasOwnProperty`, `isPrototypeOf`, `propertyIsEnumerable`, `toLocaleString`, `toString` et `valueOf`. `claude plugin marketplace add` refuse une marketplace qui en utilise un avec [`Claude Code reserves this name and cannot register a marketplace under it`](/docs/fr/plugins/troubleshooting#claude-code-reserves-this-name). Cette vérification nécessite Claude Code v2.1.296 ou ultérieure.54* **Noms de membres que possède tout objet JavaScript** : `constructor`, `hasOwnProperty`, `isPrototypeOf`, `propertyIsEnumerable`, `toLocaleString`, `toString` et `valueOf`. `claude plugin marketplace add` refuse une marketplace qui en utilise un avec [`Claude Code reserves this name and cannot register a marketplace under it`](/docs/fr/plugins/troubleshooting#claude-code-reserves-this-name). Cette vérification nécessite Claude Code v2.1.296 ou ultérieure.

Details

252 252 

253Pour arrêter un prompt, renvoyez `{ drop: 'the reason' }` sans appeler `next`. Le texte revient dans la zone de saisie du prompt de l'utilisateur, qui voit `Prompt dropped by a hook:` suivi de votre motif ; adressez donc ce motif à l'utilisateur. Si votre hook renvoie un `drop` après que son appel `next(e)` a laissé passer le prompt, le tour s'exécute quand même, et le hook [échoue](#handle-a-hook-that-fails) avec un message qui inclut `a drop after its next() was answered`.253Pour arrêter un prompt, renvoyez `{ drop: 'the reason' }` sans appeler `next`. Le texte revient dans la zone de saisie du prompt de l'utilisateur, qui voit `Prompt dropped by a hook:` suivi de votre motif ; adressez donc ce motif à l'utilisateur. Si votre hook renvoie un `drop` après que son appel `next(e)` a laissé passer le prompt, le tour s'exécute quand même, et le hook [échoue](#handle-a-hook-that-fails) avec un message qui inclut `a drop after its next() was answered`.

254 254 

255[D'autres événements](/docs/fr/plugins/mods/reference#prompts-and-what-claude-reads) couvrent le reste de ce que lit Claude : `prompt.section` pour chaque section du prompt système, `prompt.context` pour le contexte envoyé avec le premier message, et `skill.prompt` pour le texte d'un skill. Un texte issu de ces hooks qui change d'une requête à l'autre [invalide le cache des prompts](/docs/fr/prompt-caching).255[D'autres événements](/docs/fr/plugins/mods/reference#prompts-and-what-claude-reads) couvrent le reste de ce que lit Claude : `prompt.section` pour chaque section du prompt système, `prompt.context` pour le contexte envoyé avec le premier message, et `skill.prompt` pour le texte d'un skill. Un texte issu de ces hooks qui change d'une requête à l'autre [invalide le cache des prompts](/docs/fr/prompt-caching). Dans un hook `skill.prompt`, vous pouvez également lire [le plugin ou le fichier dont provient le skill](/docs/fr/plugins/mods/reference#skill-prompt-fields).

256 256 

257<h3 id="follow-a-turn">257<h3 id="follow-a-turn">

258 Suivre un tour258 Suivre un tour

Details

212 Où les mods s'exécutent212 Où les mods s'exécutent

213</h3>213</h3>

214 214 

215Les hooks d'un mod s'exécutent dans chaque type de session qui charge le plugin. Le dessin est plus étroit : seuls le terminal et l'application Desktop affichent les volets, les bandes et les lignes remplacées d'un mod. Ce tableau énumère chaque endroit où vous pourriez exécuter Claude Code :215Les hooks d'un mod s'exécutent dans chaque type de session qui charge le plugin, quel que soit le fournisseur qui sert le modèle, y compris Amazon Bedrock, Agent Platform de Google Cloud et Microsoft Foundry. Le dessin est plus étroit : seuls le terminal et l'application Desktop affichent les volets, les bandes et les lignes remplacées d'un mod. Ce tableau énumère chaque endroit où vous pourriez exécuter Claude Code :

216 216 

217| Où vous exécutez Claude Code | Les hooks s'exécutent | Ce que le mod dessine apparaît |217| Où vous exécutez Claude Code | Les hooks s'exécutent | Ce que le mod dessine apparaît |

218| :- | :- | :- |218| :- | :- | :- |


263| `cc-plugin-plugin-authoring` | Donne à Claude le [skill `plugin-authoring`](/docs/fr/plugins/mods/create#ask-claude-for-a-mod) pour écrire des mods. Il contient un skill et aucun code de mod. | Sauf si Anthropic a désactivé les mods installés à distance | Désactivez-le dans `/plugin` |263| `cc-plugin-plugin-authoring` | Donne à Claude le [skill `plugin-authoring`](/docs/fr/plugins/mods/create#ask-claude-for-a-mod) pour écrire des mods. Il contient un skill et aucun code de mod. | Sauf si Anthropic a désactivé les mods installés à distance | Désactivez-le dans `/plugin` |

264| `cc-plugin-sec-default` | Protège ce que votre organisation gère des mods qu'un utilisateur installe | [Où la protection se charge](/docs/fr/plugins/mods/admin#know-what-happens-by-default) | Vous ne pouvez pas. Un administrateur [définit l'ordre](/docs/fr/plugins/mods/admin#install-your-organizations-mods) dans les paramètres gérés |264| `cc-plugin-sec-default` | Protège ce que votre organisation gère des mods qu'un utilisateur installe | [Où la protection se charge](/docs/fr/plugins/mods/admin#know-what-happens-by-default) | Vous ne pouvez pas. Un administrateur [définit l'ordre](/docs/fr/plugins/mods/admin#install-your-organizations-mods) dans les paramètres gérés |

265| `cc-plugin-telemetry` | Envoie les enregistrements d'analyse que Claude Code et ses mods intégrés journalisent | Partout où les analyses propres à Claude Code sont activées | Désactivez-le dans `/plugin`, ou désactivez les analyses, par exemple avec [`DISABLE_TELEMETRY`](/docs/fr/env-vars) |265| `cc-plugin-telemetry` | Envoie les enregistrements d'analyse que Claude Code et ses mods intégrés journalisent | Partout où les analyses propres à Claude Code sont activées | Désactivez-le dans `/plugin`, ou désactivez les analyses, par exemple avec [`DISABLE_TELEMETRY`](/docs/fr/env-vars) |

266| `cc-plugin-you-should-know` | Exécute un agent auxiliaire qui vous protège pendant que Claude travaille sur des tâches plus longues. Quand il trouve quelque chose qui vaut la peine de savoir et que vous pourriez manquer, il vous affiche une note au-dessus de l'invite. | Désactivé par défaut. Répertorié dans `/plugin` -> **Installed** -> **Show disabled** s'il est disponible pour votre organisation. Activez avec [`/plugin enable cc-plugin-you-should-know@builtin`](/docs/fr/plugins/cli-reference#plugin-in-a-session). | Désactivez-le dans `/plugin` |266| `cc-plugin-you-should-know` | [You should know](/docs/fr/interactive-mode#you-should-know-suggestions) : un agent auxiliaire affiche une note au-dessus de l'invite lorsqu'il trouve quelque chose que vous avez pu manquer | Désactivé jusqu'à ce que vous [l'activiez](/docs/fr/interactive-mode#you-should-know-suggestions) | Désactivez-le dans `/plugin` |

267 267 

268Les paramètres et les flags qui arrêtent les mods installés, tels que `disableAllHooks`, `--bare` et `--safe-mode`, n'arrêtent pas les mods intégrés.268Les paramètres et les flags qui arrêtent les mods installés, tels que `disableAllHooks`, `--bare` et `--safe-mode`, n'arrêtent pas les mods intégrés.

269 269 

Details

43| `next.origin` | `{ plugin, tier }` de l'émetteur de l'événement. Claude Code lui-même est `{ plugin: 'engine', tier: 'core' }`. Le `tier` d'un mod est son groupe de priorité dans [l'ordre d'exécution des mods](/docs/fr/plugins/mods/events#the-order-mods-run-in) : `prepend`, `user`, `append` ou `builtin`. |43| `next.origin` | `{ plugin, tier }` de l'émetteur de l'événement. Claude Code lui-même est `{ plugin: 'engine', tier: 'core' }`. Le `tier` d'un mod est son groupe de priorité dans [l'ordre d'exécution des mods](/docs/fr/plugins/mods/events#the-order-mods-run-in) : `prepend`, `user`, `append` ou `builtin`. |

44| `next.budget` | La limite de temps du hook en millisecondes : `next.budget.ms` est la limite totale, et `next.budget.remainingMs` est ce qui reste à cet instant |44| `next.budget` | La limite de temps du hook en millisecondes : `next.budget.ms` est la limite totale, et `next.budget.remainingMs` est ce qui reste à cet instant |

45| `next.to(e, tier)` | Passe directement à un tier ultérieur, qui est `append`, `builtin` ou `core`. `next.to(e, 'append')` ignore les mods installés par un utilisateur. Seul un mod présent dans `prependPlugins` ou `appendPlugins` peut l'appeler. |45| `next.to(e, tier)` | Passe directement à un tier ultérieur, qui est `append`, `builtin` ou `core`. `next.to(e, 'append')` ignore les mods installés par un utilisateur. Seul un mod présent dans `prependPlugins` ou `appendPlugins` peut l'appeler. |

46| `next.error` | Dans un gestionnaire `.catch` uniquement. `kind` vaut `throw` ou `timeout` lorsque le hook a échoué, et `message` est le texte de l'erreur. `kind` vaut `re-entry` lorsque le hook a été ignoré parce que l'événement provenait de l'un de ses propres appels à l'API des mods, et `cause` vaut `lent` si une méthode qu'un autre mod ajoute à l'API des mods a déclenché cet événement. `re-entry` et `cause` nécessitent Claude Code v2.1.292 ou une version ultérieure. |46| `next.error` | Dans un gestionnaire `.catch` uniquement. `kind` vaut `throw` ou `timeout` lorsque le hook a échoué, et `message` est le texte de l'erreur. `kind` vaut `re-entry` lorsque le hook a été ignoré parce que l'événement provenait d'un appel à l'API des mods effectué par ce hook ou par le code de votre mod en dehors de ses hooks. `re-entry` nécessite Claude Code v2.1.292 ou une version ultérieure. |

47| `next.error.cause` | Défini uniquement lorsque `kind` vaut `re-entry`. `rewritten` si un hook `tool.call` ou [`PreToolUse`](/docs/fr/hooks#pretooluse) a modifié l'appel à l'API des mods dont provenait l'événement, ou si un hook `agent.spawn` a modifié un agent démarré par cet appel. `lent` lorsqu'une méthode qu'un autre mod ajoute à l'API des mods a déclenché cet événement, sauf si `rewritten` s'applique également. `lent` nécessite Claude Code v2.1.292 ou une version ultérieure, et `rewritten` la v2.1.300 ou une version ultérieure. |

47| `next.called` | Dans un gestionnaire `.catch` uniquement. `true` lorsque le hook avait appelé `next`. |48| `next.called` | Dans un gestionnaire `.catch` uniquement. `true` lorsque le hook avait appelé `next`. |

48 49 

49<h2 id="events">50<h2 id="events">


97| [`skill.prompt`](/docs/fr/plugins/mods/events#rewrite-or-add-to-a-prompt) | Le texte d'un skill est développé pour Claude | `{ text }` |98| [`skill.prompt`](/docs/fr/plugins/mods/events#rewrite-or-add-to-a-prompt) | Le texte d'un skill est développé pour Claude | `{ text }` |

98| `attribution.text` | Claude Code compose le texte d'attribution d'un commit ou d'une pull request | `{ text }` |99| `attribution.text` | Claude Code compose le texte d'attribution d'un commit ou d'une pull request | `{ text }` |

99 100 

101<h4 id="skill-prompt-fields">

102 Champs de source et de frontmatter sur `skill.prompt`

103</h4>

104 

105Dans un hook `skill.prompt`, vous pouvez lire ces champs, en plus du nom du skill dans `e.skill` et du texte que Claude lit dans `e.text` :

106 

107| Champ | Type | Contenu |

108| :- | :- | :- |

109| `e.source` | string | Qui fournit le skill : `policySettings`, `userSettings` ou `projectSettings` pour un skill situé respectivement à l'[emplacement](/docs/fr/skills#where-skills-live) entreprise, personnel ou projet. Les autres sources donnent un mot tel que `plugin`, `mcp`, `syncedSkills` ou `built-in`. |

110| `e.pluginName` | string | Le nom du plugin, pour un skill dont `e.source` vaut `plugin` |

111| `e.path` | string | Le chemin absolu du fichier `SKILL.md` du skill, ou de son fichier `.md` pour un skill écrit sous forme de [fichier de commande](/docs/fr/skills#where-skills-live). Absent lorsque le skill n'a aucun fichier sur cette machine, comme c'est le cas pour un skill intégré. |

112| `e.frontmatter` | object | Le frontmatter du fichier du skill, sous forme de données simples |

113| `e.frontmatterProblem` | string | La raison pour laquelle il manque à `e.frontmatter` le frontmatter du fichier ou l'une de ses clés, comme dans `is a list or a single value, not a table`. Absent lorsque `e.frontmatter` contient l'intégralité du frontmatter ou que le skill n'en a pas. |

114 

115Un hook peut transmettre un `text` ou un `frontmatter` modifié à `next` : les hooks qui le suivent lisent les deux, et Claude lit le `text` final. Un hook qui modifie tout autre champ [échoue](/docs/fr/plugins/mods/events#handle-a-hook-that-fails).

116 

117Sur `skill.prompt`, `e.source`, `e.pluginName`, `e.path`, `e.frontmatter` et `e.frontmatterProblem` nécessitent Claude Code v2.1.299 ou une version ultérieure.

118 

100<h3 id="commands-and-configuration">119<h3 id="commands-and-configuration">

101 Commandes et configuration120 Commandes et configuration

102</h3>121</h3>

Details

31* [**Skills**](/docs/fr/plugins/components#skills) : instructions `SKILL.md` que Claude charge quand c'est pertinent, et que vous pouvez également exécuter en tant que commande31* [**Skills**](/docs/fr/plugins/components#skills) : instructions `SKILL.md` que Claude charge quand c'est pertinent, et que vous pouvez également exécuter en tant que commande

32* [**Agents**](/docs/fr/plugins/components#agents) : définitions de sous-agents que Claude peut déléguer32* [**Agents**](/docs/fr/plugins/components#agents) : définitions de sous-agents que Claude peut déléguer

33* [**Hooks**](/docs/fr/plugins/components#hooks) : commandes que Claude Code exécute à des points de son cycle de vie, comme après chaque modification33* [**Hooks**](/docs/fr/plugins/components#hooks) : commandes que Claude Code exécute à des points de son cycle de vie, comme après chaque modification

34* [**Un module hooks**](/docs/fr/plugins/mods/overview) : hooks écrits en tant que fonctions JavaScript, qui peuvent également dessiner des volets et ajouter des commandes. Un plugin qui en a un s'appelle un mod34* [**Un module de hooks**](/docs/fr/plugins/mods/overview) : hooks écrits en tant que fonctions JavaScript, qui peuvent également dessiner des volets et ajouter des commandes. Un plugin qui en a un s'appelle un mod. Certains mods sont [intégrés à Claude Code](/docs/fr/plugins/mods/overview#mods-built-into-claude-code).

35* [**Serveurs MCP**](/docs/fr/plugins/components#mcp-servers) : serveurs d'outils auxquels Claude Code se connecte pendant que le plugin est activé35* [**Serveurs MCP**](/docs/fr/plugins/components#mcp-servers) : serveurs d'outils auxquels Claude Code se connecte pendant que le plugin est activé

36 36 

37Ce diagramme montre un plugin nommé `my-plugin` qui contient une skill, un agent, des hooks et un serveur MCP, et ce que vous obtenez de chaque fichier une fois que le plugin se charge.37Ce diagramme montre un plugin nommé `my-plugin` qui contient une skill, un agent, des hooks et un serveur MCP, et ce que vous obtenez de chaque fichier une fois que le plugin se charge.

Details

693| Message | Signification | Comment résoudre |693| Message | Signification | Comment résoudre |

694| :- | :- | :- |694| :- | :- | :- |

695| `Dependency "<dep>" is not installed` | Une dépendance déclarée n'est pas installée. | Installez-la dans votre shell avec `claude plugin install <dep>@<marketplace>`, ou désinstallez le plugin. Si la marketplace de la dépendance n'est pas encore enregistrée, ajoutez-la et exécutez `/reload-plugins` dans votre session, qui installe les dépendances manquantes qu'elle peut résoudre. |695| `Dependency "<dep>" is not installed` | Une dépendance déclarée n'est pas installée. | Installez-la dans votre shell avec `claude plugin install <dep>@<marketplace>`, ou désinstallez le plugin. Si la marketplace de la dépendance n'est pas encore enregistrée, ajoutez-la et exécutez `/reload-plugins` dans votre session, qui installe les dépendances manquantes qu'elle peut résoudre. |

696| `"<name>@synced" is loaded from your claude.ai account but meets a marketplace dependency only for other claude.ai plugins`, dans le message `is not installed` | La dépendance nomme une marketplace, et un plugin de ce nom est chargé depuis votre compte claude.ai. Le plugin qui déclare la dépendance ne se charge pas depuis claude.ai, donc le plugin claude.ai ne la satisfait pas. | Dans votre shell, exécutez `claude plugin install <dep>@<marketplace>` pour installer la dépendance depuis sa marketplace. La copie de la marketplace se charge alors à la place de celle de claude.ai. |

696| `Dependency "<dep>" is disabled` | La dépendance est installée mais désactivée. | Activez la dépendance, ou désinstallez le plugin qui en a besoin. |697| `Dependency "<dep>" is disabled` | La dépendance est installée mais désactivée. | Activez la dépendance, ou désinstallez le plugin qui en a besoin. |

697| `Requires "<dep>" <range>, installed <version>` | La version de la dépendance installée est en dehors de la plage déclarée du plugin. | Mettez à jour la dépendance vers une version dans la plage, ou désinstallez le plugin. |698| `Requires "<dep>" <range>, installed <version>` | La version de la dépendance installée est en dehors de la plage déclarée du plugin. | Mettez à jour la dépendance vers une version dans la plage, ou désinstallez le plugin. |

698| `<Plugin or Dependency> "<name>" has conflicting version requirements` | Aucune version ne satisfait chaque plage qui l'épingle. Le message répertorie les plages. | Désinstallez ou mettez à jour l'un des plugins en conflit, ou demandez à l'auteur en amont d'élargir sa contrainte. |699| `<Plugin or Dependency> "<name>" has conflicting version requirements` | Aucune version ne satisfait chaque plage qui l'épingle. Le message répertorie les plages. | Désinstallez ou mettez à jour l'un des plugins en conflit, ou demandez à l'auteur en amont d'élargir sa contrainte. |


700| `... has no git tag satisfying <range>` | Le dépôt de la dépendance n'a pas de balise `<name>--v*` dans la plage. | Vérifiez que le projet en amont balise ses versions selon cette convention, ou assouplissez la plage. |701| `... has no git tag satisfying <range>` | Le dépôt de la dépendance n'a pas de balise `<name>--v*` dans la plage. | Vérifiez que le projet en amont balise ses versions selon cette convention, ou assouplissez la plage. |

701| `Dependency "<dep>" (required by <plugin>) is in <marketplace>, which is not in the allowlist` | La dépendance se trouve dans une marketplace différente, et la résolution inter-marketplace est désactivée par défaut. | Installez la dépendance vous-même à la même portée, dans votre shell avec `claude plugin install <dep>@<marketplace>` plus le `--scope` auquel vous installez le plugin, puis réessayez. |702| `Dependency "<dep>" (required by <plugin>) is in <marketplace>, which is not in the allowlist` | La dépendance se trouve dans une marketplace différente, et la résolution inter-marketplace est désactivée par défaut. | Installez la dépendance vous-même à la même portée, dans votre shell avec `claude plugin install <dep>@<marketplace>` plus le `--scope` auquel vous installez le plugin, puis réessayez. |

702 703 

703Pour voir ces par programmation, exécutez `claude plugin list --json` dans votre shell. Les plugins avec des problèmes portent un champ `errors` avec les messages et un champ `errorDetails` avec un `type` pour chacun : les deux premières lignes sont `dependency-unsatisfied` et la troisième est `dependency-version-unsatisfied`.704Pour voir ces par programmation, exécutez `claude plugin list --json` dans votre shell. Les plugins avec des problèmes portent un champ `errors` avec les messages et un champ `errorDetails` avec un `type` pour chacun : les trois premières lignes sont `dependency-unsatisfied` et la quatrième est `dependency-version-unsatisfied`.

704 705 

705<h2 id="plugin-installed-but-not-working">706<h2 id="plugin-installed-but-not-working">

706 Plugin installé mais ne fonctionne pas707 Plugin installé mais ne fonctionne pas

Details

211 La compaction joue en votre faveur lorsque le contexte que vous rejetez est du contenu dont vous n'avez plus besoin. Pour choisir quand son surcoût se produit, exécutez `/compact` à une pause naturelle dans votre travail, par exemple entre les tâches, au lieu d'attendre que la compaction automatique se déclenche en cours de tâche. Si vous avez suivi un chemin que vous voulez abandonner entièrement, utilisez plutôt [`/rewind`](#rewinding-the-conversation) pour revenir à un tour antérieur. Le rembobinage tronque jusqu'à un préfixe qui est déjà mis en cache, plutôt que d'en construire un nouveau comme le fait la compaction.211 La compaction joue en votre faveur lorsque le contexte que vous rejetez est du contenu dont vous n'avez plus besoin. Pour choisir quand son surcoût se produit, exécutez `/compact` à une pause naturelle dans votre travail, par exemple entre les tâches, au lieu d'attendre que la compaction automatique se déclenche en cours de tâche. Si vous avez suivi un chemin que vous voulez abandonner entièrement, utilisez plutôt [`/rewind`](#rewinding-the-conversation) pour revenir à un tour antérieur. Le rembobinage tronque jusqu'à un préfixe qui est déjà mis en cache, plutôt que d'en construire un nouveau comme le fait la compaction.

212</Tip>212</Tip>

213 213 

214Si vous laissez une longue conversation inactive dans une session de terminal alors qu'elle utilise le [TTL d'une heure](#which-ttl-each-request-gets), Claude Code peut la compacter peu avant l'expiration du cache. Pour désactiver la compaction en période d'inactivité, définissez [`idleCompaction`](/docs/fr/settings-reference#idlecompaction) sur `false`, ce qui nécessite Claude Code v2.1.290 ou ultérieur.

215 

214<h3 id="accumulating-many-images">216<h3 id="accumulating-many-images">

215 Accumulation de nombreuses images217 Accumulation de nombreuses images

216</h3>218</h3>

Details

261 261 

262Les vérifications biométriques s'exécutent sur l'appareil via le système d'exploitation ou le navigateur, le même mécanisme que la connexion par clé d'accès. Anthropic ne reçoit ni ne stocke jamais les empreintes digitales, les données faciales ou toute autre information biométrique. Seule la clé publique de l'appareil et les métadonnées de base telles que le nom d'affichage, la plateforme et l'heure d'inscription sont stockées.262Les vérifications biométriques s'exécutent sur l'appareil via le système d'exploitation ou le navigateur, le même mécanisme que la connexion par clé d'accès. Anthropic ne reçoit ni ne stocke jamais les empreintes digitales, les données faciales ou toute autre information biométrique. Seule la clé publique de l'appareil et les métadonnées de base telles que le nom d'affichage, la plateforme et l'heure d'inscription sont stockées.

263 263 

264Le paramètre s'applique à Remote Control dans Claude Code et dans [Cowork](https://claude.com/docs/cowork/overview). Cette page couvre la partie Claude Code. Le chat Claude régulier, Claude Code dans le terminal et l'utilisation de l'API ne sont pas affectés.264Le paramètre s'applique à Remote Control dans Claude Code et à l'accès Computer dans [Cowork](https://claude.com/docs/cowork/overview). Cette page couvre la partie Claude Code. Le chat Claude régulier, Claude Code dans le terminal et l'utilisation de l'API ne sont pas affectés.

265 265 

266<h3 id="enable-trusted-devices-for-your-organization">266<h3 id="enable-trusted-devices-for-your-organization">

267 Activer Trusted Devices pour une organisation Team ou Enterprise267 Activer Trusted Devices pour une organisation Team ou Enterprise

routines.md +28 −15

Details

52 52 

53Le formulaire de création configure l'invite de la routine, les référentiels, l'environnement, les connecteurs et les déclencheurs.53Le formulaire de création configure l'invite de la routine, les référentiels, l'environnement, les connecteurs et les déclencheurs.

54 54 

55Les routines s'exécutent de manière autonome en tant que sessions cloud Claude Code complètes : il n'y a pas de sélecteur de mode de permission, et la session exécute des commandes shell, utilise des [skills](/docs/fr/skills) validées dans le référentiel cloné, et appelle tous les connecteurs que vous incluez, le tout sans s'arrêter pour approbation en dehors de certaines actions d'[artifact](/docs/fr/artifacts).55Les routines s'exécutent de manière autonome en tant que sessions cloud Claude Code complètes : il n'y a pas de sélecteur de mode de permission, et la session exécute des commandes shell, utilise des [skills](/docs/fr/skills) commités dans le dépôt cloné, et appelle tous les connecteurs que vous incluez, le tout sans s'arrêter pour approbation en dehors de certaines [actions sur les artefacts](#when-a-run-publishes-an-artifact-without-asking).

56 56 

57Ce qu'une routine peut atteindre est déterminé par les référentiels que vous sélectionnez, l'accès réseau et les variables de l'[environnement](/docs/fr/cloud-environments), et les connecteurs que vous incluez. Limitez chacun de ces éléments à ce dont la routine a réellement besoin.57Ce qu'une routine peut atteindre est déterminé par les référentiels que vous sélectionnez, l'accès réseau et les variables de l'[environnement](/docs/fr/cloud-environments), et les connecteurs que vous incluez. Limitez chacun de ces éléments à ce dont la routine a réellement besoin.

58 58 

59Quand l'horaire de la routine ou **Run now** démarre une exécution, Claude republish un artifact existant sans demander seulement quand tous ces éléments sont vrais :

60 

61* Vous pouvez modifier l'artifact et il appartient à votre propre organisation

62* L'artifact n'est pas partagé publiquement

63* Si l'artifact est partagé avec des personnes spécifiques ou votre organisation, ses spectateurs ne voient pas automatiquement chaque nouvelle version

64* La publication porte uniquement sur la page, sans fichiers de support ou autre chose ajoutée, et ne force pas une version plus récente

65* La page ne contient aucune autorisation qui s'étend au-delà de la page, comme les [appels de connecteur](/docs/fr/artifacts#pull-live-data-with-mcp-connectors)

66 

67Dans tous les autres cas, y compris la publication d'un nouvel artifact, Claude demande d'abord. Quand le travail d'une routine est de maintenir une page à jour, donnez-lui un artifact que vous avez déjà publié.

68 

69Les routines appartiennent à votre compte claude.ai individuel. Elles ne sont pas partagées avec les coéquipiers, et leurs exécutions comptent dans l'[utilisation et les limites](#usage-and-limits) de votre compte. Tout ce qu'une routine fait via votre identité GitHub connectée ou les connecteurs apparaît comme vous : les commits et les demandes de tirage portent votre utilisateur GitHub, et les messages Slack, les tickets Linear ou d'autres actions de connecteur utilisent vos comptes liés pour ces services.59Les routines appartiennent à votre compte claude.ai individuel. Elles ne sont pas partagées avec les coéquipiers, et leurs exécutions comptent dans l'[utilisation et les limites](#usage-and-limits) de votre compte. Tout ce qu'une routine fait via votre identité GitHub connectée ou les connecteurs apparaît comme vous : les commits et les demandes de tirage portent votre utilisateur GitHub, et les messages Slack, les tickets Linear ou d'autres actions de connecteur utilisent vos comptes liés pour ces services.

70 60 

71<h3 id="create-from-the-web">61<h3 id="create-from-the-web">


93 Choisissez un [environnement cloud](/docs/fr/cloud-environments) pour la routine. Les environnements contrôlent ce à quoi la session cloud a accès :83 Choisissez un [environnement cloud](/docs/fr/cloud-environments) pour la routine. Les environnements contrôlent ce à quoi la session cloud a accès :

94 84 

95 * **Network access** : définissez le niveau d'accès à Internet disponible pendant chaque exécution85 * **Network access** : définissez le niveau d'accès à Internet disponible pendant chaque exécution

96 * **Environment variables** : fournissez des valeurs que Claude peut utiliser pendant chaque exécution. Elles sont [visibles à quiconque utilise l'environnement](/docs/fr/cloud-environments#what-carries-over-from-your-setup), donc sur les plans Pro et Max, stockez plutôt les clés pour les API que Claude appelle pendant une exécution en tant que [secrets réseau](/docs/fr/cloud-environments#add-network-secrets). Cette section liste également les requêtes qui ne reçoivent jamais de secret86 * **Environment variables** : fournissez des valeurs que Claude peut utiliser pendant chaque exécution. Elles sont [visibles à quiconque utilise l'environnement](/docs/fr/cloud-environments#what-carries-over-from-your-setup), donc dans un environnement hébergé par Anthropic, stockez plutôt les clés pour les API que Claude appelle pendant une exécution en tant que [secrets réseau](/docs/fr/cloud-environments#add-network-secrets). Cette section liste également les requêtes qui ne reçoivent jamais de secret

97 * **Setup script** : installez les dépendances et les outils dont la routine a besoin. Le résultat est [mis en cache](/docs/fr/cloud-environments#environment-caching), de sorte que le script ne se réexécute pas à chaque session87 * **Setup script** : installez les dépendances et les outils dont la routine a besoin. Le résultat est [mis en cache](/docs/fr/cloud-environments#environment-caching), de sorte que le script ne se réexécute pas à chaque session

98 88 

99 Un environnement **Default** est fourni avec un accès réseau **Trusted**, qui permet uniquement la [liste d'autorisation par défaut](/docs/fr/cloud-environments#default-allowed-domains) des registres de paquets, des API de fournisseurs cloud, des registres de conteneurs et des domaines de développement courants à travers le réseau de la session. Les connecteurs que vous ajoutez à la routine atteignent leurs services via les serveurs d'Anthropic, donc ils n'ont pas besoin de modifications de liste d'autorisation. Si votre routine doit atteindre vos propres services directement, ou un domaine en dehors de cette liste, modifiez l'[accès réseau](/docs/fr/cloud-environments#network-access) de l'environnement avant d'exécuter. Pour utiliser un environnement séparé, [créez-en un](/docs/fr/cloud-environments#configure-your-environment) d'abord.89 Un environnement **Default** est fourni avec un accès réseau **Trusted**, qui permet uniquement la [liste d'autorisation par défaut](/docs/fr/cloud-environments#default-allowed-domains) des registres de paquets, des API de fournisseurs cloud, des registres de conteneurs et des domaines de développement courants à travers le réseau de la session. Les connecteurs que vous ajoutez à la routine atteignent leurs services via les serveurs d'Anthropic, donc ils n'ont pas besoin de modifications de liste d'autorisation. Si votre routine doit atteindre vos propres services directement, ou un domaine en dehors de cette liste, modifiez l'[accès réseau](/docs/fr/cloud-environments#network-access) de l'environnement avant d'exécuter. Pour utiliser un environnement séparé, [créez-en un](/docs/fr/cloud-environments#configure-your-environment) d'abord.


182 172 

183Un déclencheur API donne à une routine un point de terminaison HTTP dédié. POSTer sur le point de terminaison avec le jeton porteur de la routine démarre une nouvelle session et retourne une URL de session. Utilisez ceci pour intégrer Claude Code dans les systèmes d'alerte, les pipelines de déploiement, les outils internes ou n'importe où vous pouvez faire une requête HTTP authentifiée.173Un déclencheur API donne à une routine un point de terminaison HTTP dédié. POSTer sur le point de terminaison avec le jeton porteur de la routine démarre une nouvelle session et retourne une URL de session. Utilisez ceci pour intégrer Claude Code dans les systèmes d'alerte, les pipelines de déploiement, les outils internes ou n'importe où vous pouvez faire une requête HTTP authentifiée.

184 174 

185Les déclencheurs API sont ajoutés à une routine existante à partir du web. La CLI ne peut actuellement pas créer ou révoquer des jetons.175Les déclencheurs API sont ajoutés à une routine existante à partir du web. La CLI ne peut actuellement pas créer, régénérer ou supprimer des jetons.

186 176 

187<Steps>177<Steps>

188 <Step title="Ouvrir la routine pour l'édition">178 <Step title="Ouvrir la routine pour l'édition">


202 </Step>192 </Step>

203</Steps>193</Steps>

204 194 

205Chaque routine a son propre jeton, limité au déclenchement de cette routine uniquement. Pour le faire tourner ou le révoquer, retournez à la même fenêtre modale et cliquez sur **Regenerate** ou **Revoke**.195Chaque routine a son propre jeton, limité au déclenchement de cette routine uniquement. Pour désactiver l'accès API ou faire tourner le jeton, retournez à la même fenêtre modale :

196 

197* **Désactiver l'accès API** : cliquez sur **Delete token**, l'icône de corbeille à côté de **Regenerate**

198* **Faire tourner le jeton** : cliquez sur **Regenerate**

206 199 

207<h4 id="trigger-a-routine">200<h4 id="trigger-a-routine">

208 Déclencher une routine201 Déclencher une routine


379 372 

380Pour gérer ou ajouter des connecteurs en dehors du formulaire de routine, visitez [claude.ai/customize/connectors](https://claude.ai/customize/connectors) ou utilisez `/schedule update` dans la CLI.373Pour gérer ou ajouter des connecteurs en dehors du formulaire de routine, visitez [claude.ai/customize/connectors](https://claude.ai/customize/connectors) ou utilisez `/schedule update` dans la CLI.

381 374 

375<h3 id="when-a-run-publishes-an-artifact-without-asking">

376 Quand une exécution publie un artefact sans demander

377</h3>

378 

379Lorsque le calendrier d'une routine ou **Run now** démarre une exécution, Claude peut publier un nouvel [artefact](/docs/fr/artifacts) sans demander. Le nouvel artefact n'est visible que par vous jusqu'à ce que vous [le partagiez](/docs/fr/artifacts#share-an-artifact). Si la publication déclare des capacités d'exécution pour la page, telles que des [appels de connecteurs](/docs/fr/artifacts#pull-live-data-with-mcp-connectors) ou des [téléchargements de fichiers](/docs/fr/artifacts#offer-a-file-download), Claude demande d'abord.

380 

381Dans ces exécutions, Claude republie un artefact existant sans demander uniquement lorsque toutes ces conditions sont remplies :

382 

383* Vous pouvez modifier l'artefact et il appartient à votre propre organisation

384* Si la publication contient plus que la page, comme des fichiers annexes, vous êtes le propriétaire de l'artefact

385* L'artefact n'est pas partagé publiquement

386* Si l'artefact est partagé avec des personnes spécifiques ou avec votre organisation, ses lecteurs ne voient pas automatiquement chaque nouvelle version

387* La publication n'écrase pas de force une version plus récente

388* La publication ne déclare pas de capacités d'exécution pour la page

389* La page existante ne détient aucune autorisation qui s'étend au-delà de la page, comme des [appels de connecteurs](/docs/fr/artifacts#pull-live-data-with-mcp-connectors)

390 

391Dans tous les autres cas, y compris une exécution démarrée par un déclencheur API ou GitHub, Claude demande d'abord.

392 

393Lorsque le rôle d'une routine est de maintenir une page à jour, fournissez-lui un artefact que vous avez déjà publié.

394 

382<h3 id="environments-and-network-access">395<h3 id="environments-and-network-access">

383 Environnements et accès réseau396 Environnements et accès réseau

384</h3>397</h3>


403 </Step>416 </Step>

404 417 

405 <Step title="Modifier le niveau d'accès réseau">418 <Step title="Modifier le niveau d'accès réseau">

406 Dans la boîte de dialogue **Edit environment**, modifiez **Network access** en **Custom** et entrez vos domaines dans **Allowed domains**. Cochez **Also include default list of common package managers** pour conserver la [liste d'autorisation par défaut](/docs/fr/cloud-environments#default-allowed-domains) aux côtés de vos domaines personnalisés. Sélectionnez **Full** à la place pour un accès sans restriction.419 Dans la boîte de dialogue **Edit cloud environment**, modifiez **Network access** en **Custom** et entrez vos domaines dans **Allowed domains**. Cochez **Also include default list of common package managers** pour conserver la [liste d'autorisation par défaut](/docs/fr/cloud-environments#default-allowed-domains) aux côtés de vos domaines personnalisés. Sélectionnez **Full** à la place pour un accès sans restriction.

407 </Step>420 </Step>

408 421 

409 <Step title="Enregistrer">422 <Step title="Enregistrer">

Details

79 79 

80Dans une session où l'[outil Monitor est disponible](/docs/fr/tools-reference#monitor-tool), Claude peut l'utiliser directement lorsque vous demandez un calendrier `/loop` dynamique. Monitor exécute un script en arrière-plan et diffuse chaque ligne de sortie, ce qui évite complètement l'interrogation et est souvent plus efficace en termes de jetons et plus réactif que de réexécuter un prompt à intervalles réguliers.80Dans une session où l'[outil Monitor est disponible](/docs/fr/tools-reference#monitor-tool), Claude peut l'utiliser directement lorsque vous demandez un calendrier `/loop` dynamique. Monitor exécute un script en arrière-plan et diffuse chaque ligne de sortie, ce qui évite complètement l'interrogation et est souvent plus efficace en termes de jetons et plus réactif que de réexécuter un prompt à intervalles réguliers.

81 81 

82Une boucle planifiée dynamiquement apparaît dans votre [liste de tâches planifiées](#manage-scheduled-tasks) comme n'importe quelle autre tâche, vous pouvez donc la lister ou l'annuler de la même manière. Les [règles de gigue](#jitter) ne s'appliquent pas à elle, mais l'[expiration de sept jours](#seven-day-expiry) s'applique.82Une boucle planifiée dynamiquement apparaît dans votre [liste de tâches planifiées](#manage-scheduled-tasks) comme n'importe quelle autre tâche, vous pouvez donc la lister ou l'annuler de la même manière. La liste affiche son réveil en attente sous forme de tâche ponctuelle, de sorte qu'un réveil planifié pour `:00` ou `:30` peut [s'exécuter un peu en avance](#when-a-one-shot-task-runs-early). L'[expiration de sept jours](#seven-day-expiry) s'applique également à la boucle.

83 83 

84<span id="loop-provider-differences" />84<span id="loop-provider-differences" />

85 85 


133 Arrêter une boucle133 Arrêter une boucle

134</h3>134</h3>

135 135 

136Pour arrêter un [/loop autonome](#let-claude-choose-the-interval) pendant qu'il attend la prochaine itération, appuyez sur `Esc`. Cela efface le réveil en attente afin que la boucle ne se déclenche pas à nouveau. Les tâches que vous avez planifiées en [demandant directement à Claude](#manage-scheduled-tasks) ne sont pas affectées par `Esc` et restent en place jusqu'à ce que vous les supprimiez.136Pour arrêter un [`/loop` autonome](#let-claude-choose-the-interval) pendant qu'il attend la prochaine itération, appuyez sur `Esc`. Cela efface le réveil en attente afin que la boucle ne se déclenche pas à nouveau. Les tâches que vous avez planifiées en [demandant directement à Claude](#manage-scheduled-tasks) ne sont pas affectées par `Esc` et restent en place jusqu'à ce que vous les supprimiez.

137 137 

138En [mode autonome](#let-claude-choose-the-interval), Claude peut également terminer la boucle de lui-même une fois que la tâche est terminée. Claude appelle l'[outil `ScheduleWakeup`](/docs/fr/tools-reference) avec `stop: true`, ce qui annule le réveil en attente immédiatement. Si une itération se termine sans reprogrammer ni arrêter, Claude Code planifie un réveil de secours environ 20 minutes plus tard et termine la boucle quand cette itération ne reprogramme pas non plus.138En [mode autonome](#let-claude-choose-the-interval), Claude peut également terminer la boucle de lui-même une fois que la tâche est terminée. Claude appelle l'[outil `ScheduleWakeup`](/docs/fr/tools-reference) avec `stop: true`, ce qui annule le réveil en attente immédiatement. Si une itération se termine sans reprogrammer ni arrêter, Claude Code planifie un réveil de secours environ 20 minutes plus tard et termine la boucle quand cette itération ne reprogramme pas non plus.

139 139 


174| Outil | Objectif |174| Outil | Objectif |

175| :- | :- |175| :- | :- |

176| `CronCreate` | Planifier une nouvelle tâche. Accepte une expression cron à 5 champs, le prompt à exécuter et si elle est récurrente ou s'exécute une seule fois. |176| `CronCreate` | Planifier une nouvelle tâche. Accepte une expression cron à 5 champs, le prompt à exécuter et si elle est récurrente ou s'exécute une seule fois. |

177| `CronList` | Lister toutes les tâches planifiées avec leurs ID, leurs calendriers et leurs prompts. |177| `CronList` | Lister les tâches planifiées avec leurs ID, leurs calendriers, leurs [prochaines heures d'exécution](#jitter) et leurs prompts. |

178| `CronDelete` | Annuler une tâche par ID. |178| `CronDelete` | Annuler une tâche par ID. |

179 179 

180Chaque tâche planifiée a un ID de 8 caractères que vous pouvez passer à `CronDelete`. Une session peut contenir jusqu'à 50 tâches planifiées à la fois.180Chaque tâche planifiée a un ID de 8 caractères que vous pouvez passer à `CronDelete`. Une session peut contenir jusqu'à 50 tâches planifiées à la fois.


193 193 

194Une tâche planifiée peut s'exécuter à un moment différent de celui indiqué par sa planification. Si les tâches de chaque session s'exécutaient exactement à l'heure prévue, beaucoup d'entre elles appelleraient l'API au même moment. Claude Code décale donc l'heure d'exécution de chaque tâche. Les tâches récurrentes s'exécutent en retard, sauf une tâche qui s'exécute toutes les cinq minutes, écrite `*/5 * * * *`. Les tâches ponctuelles planifiées à l'heure pile ou à la demie s'exécutent un peu en avance.194Une tâche planifiée peut s'exécuter à un moment différent de celui indiqué par sa planification. Si les tâches de chaque session s'exécutaient exactement à l'heure prévue, beaucoup d'entre elles appelleraient l'API au même moment. Claude Code décale donc l'heure d'exécution de chaque tâche. Les tâches récurrentes s'exécutent en retard, sauf une tâche qui s'exécute toutes les cinq minutes, écrite `*/5 * * * *`. Les tâches ponctuelles planifiées à l'heure pile ou à la demie s'exécutent un peu en avance.

195 195 

196Pour savoir quand une tâche arrive à sa prochaine échéance, lisez la ligne sous l'appel `CronCreate` de Claude dans votre terminal. La ligne affiche cette heure après la planification, par exemple `next run 10:21 AM`. Pour vérifier de nouveau plus tard, [demandez à Claude de lister vos tâches](#manage-scheduled-tasks) et recherchez `next run` dans les lignes sous l'appel `CronList`. L'affichage des prochaines heures d'exécution dans ces lignes nécessite Claude Code v2.1.299 ou une version ultérieure.

197 

196<h4 id="how-late-a-recurring-task-runs">198<h4 id="how-late-a-recurring-task-runs">

197 Quel retard pour une tâche récurrente199 Quel retard pour une tâche récurrente

198</h4>200</h4>

Details

1001. Un runner avec une capacité libre réclame la session et maintient un bail sur celle-ci.1001. Un runner avec une capacité libre réclame la session et maintient un bail sur celle-ci.

1012. Le runner clone le référentiel dans son répertoire de travail et génère un processus Claude Code enfant.1012. Le runner clone le référentiel dans son répertoire de travail et génère un processus Claude Code enfant.

1023. L'enfant diffuse les événements en continu sur HTTPS tandis que le runner continue d'interroger ; chaque interrogation actualise le bail et sert également de battement cardiaque.1023. L'enfant diffuse les événements en continu sur HTTPS tandis que le runner continue d'interroger ; chaque interrogation actualise le bail et sert également de battement cardiaque.

1034. Si le runner cesse d'interroger, son bail expire après environ 60 secondes, et le serveur remet la session en file d'attente pour un autre runner en quelques minutes.1034. Si le runner cesse d'interroger, son bail expire après environ 60 secondes. Le serveur peut ensuite mettre quelques minutes, et parfois davantage, pour remettre la session en file d'attente pour un autre runner.

104 104 

105Le runner donne à chaque demande d'interrogation 10 secondes. Quand une demande expire, est perdue, ou reçoit une réponse que le runner ne peut pas analyser, le runner continue de servir ses sessions actives et réessaie après une seconde ou deux au lieu d'attendre l'interrogation suivante programmée. Par exemple, un proxy d'interception qui répond à l'interrogation avec sa propre page produit une réponse que le runner ne peut pas analyser. Chaque fois qu'une autre demande échoue de l'une de ces manières, le runner double l'écart avant la prochaine tentative, jusqu'à 20 secondes, et raccourcit l'écart chaque fois que le bail est proche de l'expiration.105Le runner donne à chaque demande d'interrogation 10 secondes. Quand une demande expire, est perdue, ou reçoit une réponse que le runner ne peut pas analyser, le runner continue de servir ses sessions actives et réessaie après une seconde ou deux au lieu d'attendre l'interrogation suivante programmée. Par exemple, un proxy d'interception qui répond à l'interrogation avec sa propre page produit une réponse que le runner ne peut pas analyser. Chaque fois qu'une autre demande échoue de l'une de ces manières, le runner double l'écart avant la prochaine tentative, jusqu'à 20 secondes, et raccourcit l'écart chaque fois que le bail est proche de l'expiration.

106 106 

Details

40| `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` | Pour une session Claude Tag qui appartient à un fil Slack, l'horodatage Slack de ce fil, comme `1700000000.000100`. Peut être non défini, et peut être défini lorsque `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` ne l'est pas, donc vérifiez chaque variable séparément. |40| `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` | Pour une session Claude Tag qui appartient à un fil Slack, l'horodatage Slack de ce fil, comme `1700000000.000100`. Peut être non défini, et peut être défini lorsque `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` ne l'est pas, donc vérifiez chaque variable séparément. |

41| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | Chemin absolu vers un fichier par session contenant le JWT de session actuel, maintenu à jour lors des actualisations de token. Les sous-processus shell le lisent pour leur en-tête `Authorization` lors du téléchargement des pièces jointes que l'utilisateur a ajoutées à la session. `exec` préserve la variable automatiquement ; un wrapper qui reconstruit l'environnement de l'enfant doit transporter la variable, ou les téléchargements de pièces jointes s'arrêtent silencieusement. |41| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | Chemin absolu vers un fichier par session contenant le JWT de session actuel, maintenu à jour lors des actualisations de token. Les sous-processus shell le lisent pour leur en-tête `Authorization` lors du téléchargement des pièces jointes que l'utilisateur a ajoutées à la session. `exec` préserve la variable automatiquement ; un wrapper qui reconstruit l'environnement de l'enfant doit transporter la variable, ou les téléchargements de pièces jointes s'arrêtent silencieusement. |

42| `CLAUDE_CONFIG_DIR` | Répertoire de configuration Claude par session, écrit au démarrage de la session à partir de l'instantané de la configuration de l'hôte runner que le runner capture au démarrage ; voir [Permissions et approbation d'outils](#permissions-and-tool-approval). Les écritures ici sont isolées à cette session. Le répertoire reste sous `<base-dir>/_sessions/` après la fin de la session sauf si vous démarrez le runner avec [`--remove-session-state`](/docs/fr/self-hosted-environments-reference#runner-cli-flags) ; voir [Réutiliser un checkout pré-chauffé](/docs/fr/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout). |42| `CLAUDE_CONFIG_DIR` | Répertoire de configuration Claude par session, écrit au démarrage de la session à partir de l'instantané de la configuration de l'hôte runner que le runner capture au démarrage ; voir [Permissions et approbation d'outils](#permissions-and-tool-approval). Les écritures ici sont isolées à cette session. Le répertoire reste sous `<base-dir>/_sessions/` après la fin de la session sauf si vous démarrez le runner avec [`--remove-session-state`](/docs/fr/self-hosted-environments-reference#runner-cli-flags) ; voir [Réutiliser un checkout pré-chauffé](/docs/fr/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout). |

43| `CLAUDE_CODE_REMOTE_MCP_CONFIG` | Chemin vers un fichier de `CLAUDE_CONFIG_DIR` contenant les définitions de serveurs MCP que le plan de contrôle d'Anthropic a livrées pour cette session. Si votre wrapper reconstruit l'environnement de l'enfant, transmettez cette variable. Sans elle, lorsque le plan de contrôle met à jour les serveurs livrés, l'enfant arrête tout serveur stdio, HTTP ou SSE que votre wrapper ajoute avec [`--mcp-config`](/docs/fr/cli-reference#cli-flags) et qui ne figure pas dans la mise à jour. Nécessite Claude Code v2.1.299 ou ultérieur. |

43| `ANTHROPIC_BASE_URL` | L'URL de base de l'API que l'enfant utilisera, livrée par le plan de contrôle par session et normalement `https://api.anthropic.com`. Ne la remplacez pas : l'identifiant d'inférence de la session est un token OAuth émis par Anthropic que les autres fournisseurs n'acceptent pas. |44| `ANTHROPIC_BASE_URL` | L'URL de base de l'API que l'enfant utilisera, livrée par le plan de contrôle par session et normalement `https://api.anthropic.com`. Ne la remplacez pas : l'identifiant d'inférence de la session est un token OAuth émis par Anthropic que les autres fournisseurs n'acceptent pas. |

44| `CLAUDE_CODE_OAUTH_TOKEN` | Le token d'accès OAuth de courte durée que l'enfant utilise pour l'inférence du modèle, limité à l'inférence du modèle et au téléchargement de fichiers uniquement, avec une durée de vie d'environ 30 minutes. Le runner le rémet avant l'expiration et livre la rotation sur stdin de l'enfant, donc un wrapper qui ne [garde pas stdin attaché](#keep-stdin-and-file-descriptor-3-attached) ne voit que la valeur initiale. Ne vous fiez pas à la liste d'adresses IP autorisées de votre organisation pour limiter l'utilisation de ce token : traitez-le comme un identifiant bearer qui reste utilisable pendant environ 30 minutes s'il fuit, et ne le consignez pas, ne l'écrivez pas sur le disque et ne le transmettez pas en dehors du conteneur de session. |45| `CLAUDE_CODE_OAUTH_TOKEN` | Le token d'accès OAuth de courte durée que l'enfant utilise pour l'inférence du modèle, limité à l'inférence du modèle et au téléchargement de fichiers uniquement, avec une durée de vie d'environ 30 minutes. Le runner le rémet avant l'expiration et livre la rotation sur stdin de l'enfant, donc un wrapper qui ne [garde pas stdin attaché](#keep-stdin-and-file-descriptor-3-attached) ne voit que la valeur initiale. Ne vous fiez pas à la liste d'adresses IP autorisées de votre organisation pour limiter l'utilisation de ce token : traitez-le comme un identifiant bearer qui reste utilisable pendant environ 30 minutes s'il fuit, et ne le consignez pas, ne l'écrivez pas sur le disque et ne le transmettez pas en dehors du conteneur de session. |

45 46 


51 Donner une valeur par défaut aux variables qui peuvent être non définies52 Donner une valeur par défaut aux variables qui peuvent être non définies

52</h3>53</h3>

53 54 

54`CCR_SESSION_ACCOUNT_EMAIL`, `CLAUDE_RUNNER_CLIENT_PLATFORM`, `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` et `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` peuvent chacune être non définies. Si votre script utilise `set -u`, Bash s'arrête avec `unbound variable` lorsqu'il développe l'une d'elles qui n'est pas définie ; développez-les donc avec une valeur par défaut, comme `${CCR_SESSION_ACCOUNT_EMAIL:-}`.55`CCR_SESSION_ACCOUNT_EMAIL`, `CLAUDE_RUNNER_CLIENT_PLATFORM`, `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` et `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` peuvent chacune être non définies. Si votre script utilise `set -u`, Bash s'arrête avec `unbound variable` lorsqu'il développe l'une d'elles qui n'est pas définie ; développez-les donc avec une valeur par défaut, comme `"${CCR_SESSION_ACCOUNT_EMAIL:-}"`.

55 56 

56Partout où un shell développe le lien du fil Slack, prenez ces précautions :57<h3 id="quote-the-arguments-and-variables-your-script-expands">

58 Mettre entre guillemets les arguments et les variables que votre script développe

59</h3>

60 

61Mettez entre guillemets chaque argument et chaque variable que le runner transmet à votre wrapper ou à votre [hook `command`](#command). Certaines valeurs contiennent des caractères qu'un shell interprète, car elles contiennent du JSON, des phrases entières ou une [règle de permission](/docs/fr/permissions#permission-rule-syntax) comme `Bash(npm run test *)`.

57 62 

58* **Mettez-le entre guillemets** : le lien peut contenir des caractères qu'un shell interprète, comme `?` et `&`, donc mettez la variable entre guillemets, comme dans `"${CLAUDE_CODE_REMOTE_SLACK_THREAD_URL:-}"`.63* **Arguments** : transmettez-les sous la forme `"$@"`

59* **Gardez sa valeur hors des chaînes `eval` et `sh -c`** : ne substituez pas sa valeur dans une chaîne que `eval` ou `sh -c` exécute, même entre guillemets. Faites plutôt référencer la variable par cette chaîne.64* **Variables** : mettez chacune d'elles entre guillemets, comme dans `"${CLAUDE_CODE_REMOTE_SLACK_THREAD_URL:-}"`. Le lien du fil Slack, par exemple, peut contenir `?` et `&`.

65* **Chaînes `eval` et `sh -c`** : ne substituez pas une valeur dans une chaîne que `eval` ou `sh -c` exécute, même entre guillemets. Faites plutôt référencer la variable par cette chaîne.

60 66 

61<h3 id="keep-stdin-and-file-descriptor-3-attached">67<h3 id="keep-stdin-and-file-descriptor-3-attached">

62 Garder stdin et le descripteur de fichier 3 attachés68 Garder stdin et le descripteur de fichier 3 attachés


136| `CLAUDE_RUNNER_SESSION_ID` | ID de session sous la forme balisée `session_...`, pour la journalisation et la corrélation |142| `CLAUDE_RUNNER_SESSION_ID` | ID de session sous la forme balisée `session_...`, pour la journalisation et la corrélation |

137| `CLAUDE_RUNNER_SESSION_UUID` | Le même ID de session sous la forme UUID canonique |143| `CLAUDE_RUNNER_SESSION_UUID` | Le même ID de session sous la forme UUID canonique |

138| `CLAUDE_RUNNER_API_BASE_URL` | URL de base de l'API Anthropic pour les appels limités à la session |144| `CLAUDE_RUNNER_API_BASE_URL` | URL de base de l'API Anthropic pour les appels limités à la session |

139| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La surface client qui a créé la session, comme `web_claude_ai`, `desktop_app` ou `ios`. Non défini quand la session n'a pas de surface enregistrée ou reconnue, donc référencez-la sous la forme `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}` sous `set -u`. Nécessite Claude Code v2.1.229 ou ultérieur. |145| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La surface client qui a créé la session, comme `web_claude_ai`, `desktop_app` ou `ios`. Non défini quand la session n'a pas de surface enregistrée ou reconnue, donc référencez-la sous la forme `"${CLAUDE_RUNNER_CLIENT_PLATFORM:-}"` sous `set -u`. Nécessite Claude Code v2.1.229 ou ultérieur. |

140| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Le token d'accès de session, pour les appels API limités à la session |146| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Le token d'accès de session, pour les appels API limités à la session |

141| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Paramètres git que le runner fixe pour le git que votre hook exécute. [Configuration git dans les hooks de cycle de vie](#git-configuration-inside-lifecycle-hooks) les décrit. Nécessite Claude Code v2.1.280 ou ultérieur. |147| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Paramètres git que le runner fixe pour le git que votre hook exécute. [Configuration git dans les hooks de cycle de vie](#git-configuration-inside-lifecycle-hooks) les décrit. Nécessite Claude Code v2.1.280 ou ultérieur. |

142 148 


159 165 

160Le hook échoue lorsqu'il se termine avec un code non nul, ou se termine avec 0 sans laisser de checkout utilisable :166Le hook échoue lorsqu'il se termine avec un code non nul, ou se termine avec 0 sans laisser de checkout utilisable :

161 167 

162* **Un référentiel vers lequel la session envoie les résultats** : le runner échoue la session, et sur une sortie non-zéro affiche la queue du stderr du script à l'utilisateur.168* **Un dépôt vers lequel la session envoie les résultats** : le runner fait échouer la session et, en cas de sortie non nulle, affiche à l'utilisateur la fin du stderr du script. Écrivez la raison dans stderr sur une seule ligne courte, écrivez-la en dernier, puis terminez avec un code non nul. N'affichez pas de secrets dans stderr, et supprimez `set -x` avant de déployer le hook.

163* **Un dépôt que la session lit uniquement**, comme un dépôt ajouté à une session en cours d'exécution : le runner consigne une ligne `[runner:warn]` avec le détail de l'échec, publie une étape `Skipped` dans la session, supprime ce que le hook a laissé au chemin de checkout et continue avec les dépôts restants. Si l'omission laisse la session sans aucun dépôt, le runner fait quand même échouer la session.169* **Un dépôt que la session lit uniquement**, comme un dépôt ajouté à une session en cours d'exécution : le runner consigne une ligne `[runner:warn]` avec le détail de l'échec, publie une étape `Skipped` dans la session, supprime ce que le hook a laissé au chemin de checkout et continue avec les dépôts restants. Si l'omission laisse la session sans aucun dépôt, le runner fait quand même échouer la session.

164 170 

165Lorsque le hook réussit, le runner supprime le chemin de checkout après la fin de la session.171Lorsque le hook réussit, le runner supprime le chemin de checkout après la fin de la session.


180| `CLAUDE_RUNNER_WORKSPACE_PATHS` | Chemins absolus séparés par des deux-points des arbres de travail de la session. Vide pour les sessions sans référentiel. |186| `CLAUDE_RUNNER_WORKSPACE_PATHS` | Chemins absolus séparés par des deux-points des arbres de travail de la session. Vide pour les sessions sans référentiel. |

181| `CLAUDE_RUNNER_DEBUG_LOG_PATH` | Chemin vers le journal de débogage de la session, toujours sur le disque pendant que le hook s'exécute |187| `CLAUDE_RUNNER_DEBUG_LOG_PATH` | Chemin vers le journal de débogage de la session, toujours sur le disque pendant que le hook s'exécute |

182| `CLAUDE_RUNNER_API_BASE_URL` | URL de base de l'API Anthropic pour les appels limités à la session |188| `CLAUDE_RUNNER_API_BASE_URL` | URL de base de l'API Anthropic pour les appels limités à la session |

183| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La surface client qui a créé la session, comme `web_claude_ai`, `desktop_app` ou `ios`. Non défini quand la session n'a pas de surface enregistrée ou reconnue, donc référencez-la sous la forme `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}` sous `set -u`. Nécessite Claude Code v2.1.229 ou ultérieur. |189| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La surface client qui a créé la session, comme `web_claude_ai`, `desktop_app` ou `ios`. Non défini quand la session n'a pas de surface enregistrée ou reconnue, donc référencez-la sous la forme `"${CLAUDE_RUNNER_CLIENT_PLATFORM:-}"` sous `set -u`. Nécessite Claude Code v2.1.229 ou ultérieur. |

184| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Le token d'accès de session, pour les appels API limités à la session |190| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Le token d'accès de session, pour les appels API limités à la session |

185| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Paramètres git que le runner fixe pour le git que votre hook exécute. [Configuration git dans les hooks de cycle de vie](#git-configuration-inside-lifecycle-hooks) les décrit. Nécessite Claude Code v2.1.280 ou ultérieur. |191| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Paramètres git que le runner fixe pour le git que votre hook exécute. [Configuration git dans les hooks de cycle de vie](#git-configuration-inside-lifecycle-hooks) les décrit. Nécessite Claude Code v2.1.280 ou ultérieur. |

186 192 


3293. **Utilisez le contrat du code de sortie.** Sortez avec le statut qui correspond au résultat :3353. **Utilisez le contrat du code de sortie.** Sortez avec le statut qui correspond au résultat :

330 336 

331 * **Sortie 0** : soumis.337 * **Sortie 0** : soumis.

332 * **Sortie 1** : échec pouvant être réessayé. La session recule et est re-proposée.338 * **Sortie 1, ou hook toujours en cours d'exécution à l'expiration de `--hook-timeout`** : échec pouvant être réessayé. La session recule et est re-proposée.

333 * **Sortie 2 ou supérieure** : échec ne pouvant pas être réessayé. La session est empêchée de générer un nouveau spawn jusqu'à ce qu'un utilisateur lui envoie un nouveau message ou qu'un [Owner](/docs/fr/cloud-environments#organization-shared-environments) sélectionne **Retry** sur elle dans l'onglet **Activity** de l'environnement.339 * **Sortie 2 ou supérieure** : échec ne pouvant pas être réessayé. La session est empêchée de générer un nouveau spawn jusqu'à ce qu'un utilisateur lui envoie un nouveau message ou qu'un [Owner](/docs/fr/cloud-environments#organization-shared-environments) sélectionne **Retry** sur elle dans l'onglet **Activity** de l'environnement.

334 340 

335 Sur une sortie non nulle, la fin du stderr du hook apparaît dans l'onglet **Activity** comme raison de l'échec, donc écrivez l'erreur exploitable sur stderr et n'y écrivez jamais de secrets. Dans un hook shell, [gardez les échecs transitoires réessayables](#keep-transient-failures-retryable-in-a-shell-hook).341 Sur une sortie non nulle, la fin du stderr du hook apparaît dans l'onglet **Activity** comme raison de l'échec, donc écrivez l'erreur exploitable sur stderr et n'y écrivez jamais de secrets. Dans un hook shell, [gardez les échecs transitoires réessayables](#keep-transient-failures-retryable-in-a-shell-hook).


341 347 

342Une session qui reste en attente sans erreur de spawn dans l'onglet **Activity** peut signifier que le hook est clé sur l'ID de session. Pour confirmer, vérifiez si votre plateforme a une charge de travail pour la première demande de spawn de cette session et aucune pour les re-demandes. Si c'est le cas, clé la charge de travail sur `CLAUDE_RUNNER_ORDER_ID` à la place.348Une session qui reste en attente sans erreur de spawn dans l'onglet **Activity** peut signifier que le hook est clé sur l'ID de session. Pour confirmer, vérifiez si votre plateforme a une charge de travail pour la première demande de spawn de cette session et aucune pour les re-demandes. Si c'est le cas, clé la charge de travail sur `CLAUDE_RUNNER_ORDER_ID` à la place.

343 349 

350<h4 id="make-on-demand-runners-exit-when-idle">

351 Faire quitter les runners à la demande lorsqu'ils sont inactifs

352</h4>

353 

354Par défaut, un runner que votre hook démarre ne se termine pas lorsque le tour de sa session s'achève, donc la charge de travail que vous avez soumise continue de s'exécuter. Pour que les runners se terminent, faites passer par votre hook ces [flags du runner](/docs/fr/self-hosted-environments-reference#runner-cli-flags) :

355 

356| Flag, avec un exemple de valeur | À passer à | Effet |

357| :- | :- | :- |

358| `--release-idle-session-min 30` | Chaque runner que votre hook démarre | Le runner libère sa session après ce nombre de minutes d'inactivité, puis se termine avec le code 0. La session reprend lorsque son utilisateur envoie son message suivant, mais [le travail qu'elle n'avait pas poussé est perdu](/docs/fr/self-hosted-environments-deploy#additional-limitations). |

359| `--kill-session-after-min 480` | Chaque runner que votre hook démarre | Limite chaque session à ce nombre de minutes, comme filet de sécurité pour les [sessions qui ne comptent pas comme inactives](/docs/fr/self-hosted-environments-deploy#some-sessions-don’t-count-as-idle), donc définissez-le au-dessus de votre session attendue la plus longue |

360| `--exit-if-unused-min 60` | Les runners de secours, que votre hook démarre pour les demandes de pré-réchauffage | Un runner de secours qui ne prend jamais de session se termine après ce nombre de minutes. Si vous définissez [`--min-idle`](/docs/fr/self-hosted-environments-reference#orchestrator-cli-flags), vous obtenez un remplaçant, sauf si le runner de secours était excédentaire, donc utilisez une valeur bien supérieure à votre temps de démarrage. |

361 

362Supprimez la charge de travail lorsque le runner se termine, par exemple en définissant `ttlSecondsAfterFinished` sur un Kubernetes Job ou en faisant supprimer la VM par son script de démarrage une fois terminé.

363 

344<h4 id="keep-transient-failures-retryable-in-a-shell-hook">364<h4 id="keep-transient-failures-retryable-in-a-shell-hook">

345 Garder les échecs transitoires réessayables dans un hook shell365 Garder les échecs transitoires réessayables dans un hook shell

346</h4>366</h4>


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

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

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

507* Un fichier [`--mcp-config`](/docs/fr/cli-reference#cli-flags) passé par votre script wrapper : ajoutez le flag après `"$@"`, comme dans `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@" --mcp-config /etc/claude/mcp.json`. Pour que les serveurs de ce fichier continuent de fonctionner lorsque les serveurs fournis à la session sont mis à jour en cours de session, faites en sorte que votre wrapper transmette l'[environnement complet](#wrapper-scripts) au processus enfant, comme le fait `exec`. Avant la v2.1.299, les serveurs stdio, HTTP et SSE de ce fichier s'arrêtaient à la première mise à jour de ce type qui ne les nommait pas.

487 508 

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

489 510 

Details

182* Un `credential.helper` qui retourne un jeton à portée minimale182* Un `credential.helper` qui retourne un jeton à portée minimale

183* `GIT_SSH_COMMAND` pointant vers une clé à portée étroite183* `GIT_SSH_COMMAND` pointant vers une clé à portée étroite

184 184 

185Quel que soit le mécanisme que vous configurez, il doit fonctionner sans invite, car le clone intégré du runner et la récupération désactivent les invites que git, SSH, et Git Credential Manager afficheraient autrement :185<span id="git-must-work-without-a-prompt" />Quel que soit le mécanisme que vous configurez, il doit fonctionner sans invite, car le clone intégré du runner et la récupération désactivent les invites que git, SSH, et Git Credential Manager afficheraient autrement :

186 186 

187* Le runner définit `GIT_TERMINAL_PROMPT=0`, donc git ne demande pas de nom d'utilisateur ou de mot de passe.187* Le runner définit `GIT_TERMINAL_PROMPT=0`, donc git ne demande pas de nom d'utilisateur ou de mot de passe.

188* Le runner exécute SSH avec `BatchMode=yes`, ajouté à votre `GIT_SSH_COMMAND` si vous en définissez un, donc SSH ne demande pas de phrase de passe ou de confirmation d'hôte.188* Le runner exécute SSH avec `BatchMode=yes`, ajouté à votre `GIT_SSH_COMMAND` si vous en définissez un, donc SSH ne demande pas de phrase de passe ou de confirmation d'hôte.


212* **github.com uniquement** : Anthropic ne sert une session que lorsque tous ses dépôts sont sur github.com, et le proxy git ne prend pas encore en charge GitHub Enterprise Server. Sur un runner avec le proxy git, une session ayant un dépôt sur un autre hôte git [ne démarre pas](#when-anthropic-doesnt-serve-a-session).212* **github.com uniquement** : Anthropic ne sert une session que lorsque tous ses dépôts sont sur github.com, et le proxy git ne prend pas encore en charge GitHub Enterprise Server. Sur un runner avec le proxy git, une session ayant un dépôt sur un autre hôte git [ne démarre pas](#when-anthropic-doesnt-serve-a-session).

213* **Identifiants pour les dépôts de la session uniquement** : Anthropic fournit des identifiants git pour les dépôts qui font partie de la session, et non pour les autres dépôts du même hôte git. Un sous-module privé, une dépendance que votre gestionnaire de paquets récupère avec git, ou une marketplace de plugins dans un autre dépôt n'obtient aucun identifiant d'Anthropic. Demandez aux personnes qui créent des sessions d'[ajouter chaque dépôt](/docs/fr/web-quickstart#start-a-task) dont une session a besoin lors de sa création.213* **Identifiants pour les dépôts de la session uniquement** : Anthropic fournit des identifiants git pour les dépôts qui font partie de la session, et non pour les autres dépôts du même hôte git. Un sous-module privé, une dépendance que votre gestionnaire de paquets récupère avec git, ou une marketplace de plugins dans un autre dépôt n'obtient aucun identifiant d'Anthropic. Demandez aux personnes qui créent des sessions d'[ajouter chaque dépôt](/docs/fr/web-quickstart#start-a-task) dont une session a besoin lors de sa création.

214* **Pushs de branches uniquement** : un push qui supprime une branche échoue, tout comme un push vers tout autre type de ref, comme un tag. Pour savoir quelles branches un push peut mettre à jour, consultez [Proxy GitHub](/docs/fr/cloud-environments#github-proxy).214* **Pushs de branches uniquement** : un push qui supprime une branche échoue, tout comme un push vers tout autre type de ref, comme un tag. Pour savoir quelles branches un push peut mettre à jour, consultez [Proxy GitHub](/docs/fr/cloud-environments#github-proxy).

215* **Comptes GitHub connectés** : la personne qui a créé une session utilisateur doit avoir connecté GitHub sur claude.ai, sinon la session [ne démarre pas](#creator-has-no-github-connection).215* **Comptes GitHub connectés** : demandez à chaque personne qui crée des sessions utilisateur avec un dépôt de [connecter GitHub](/docs/fr/web-quickstart#connect-github). Sans leur propre connexion, ces sessions [ne démarrent pas](#creator-has-no-github-connection).

216* **`--capacity 1`** : le proxy git nécessite une session par processus runner, donc exécutez plus de répliques pour le parallélisme. [Activer le proxy git Anthropic](#turn-the-anthropic-git-proxy-on) liste les exigences.216* **`--capacity 1`** : le proxy git nécessite une session par processus runner, donc exécutez plus de répliques pour le parallélisme. [Activer le proxy git Anthropic](#turn-the-anthropic-git-proxy-on) liste les exigences.

217* **Configuration git globale remplacée** : le runner [supprime et remplace la configuration git globale](#git-proxy-replaces-global-git-config) de l'utilisateur sous lequel il s'exécute. Exécutez-le en tant qu'utilisateur dédié ou dans un conteneur.217* **Configuration git globale remplacée** : le runner [supprime et remplace la configuration git globale](#git-proxy-replaces-global-git-config) de l'utilisateur sous lequel il s'exécute. Exécutez-le en tant qu'utilisateur dédié ou dans un conteneur.

218* **Identifiants de l'hôte pour les pushs de l'hôte** : le push [`--push-outcome-on-release`](/docs/fr/self-hosted-environments-reference#runner-cli-flags) du runner et tout push effectué par votre [hook `post-session`](/docs/fr/self-hosted-environments-configuration#post-session) utilisent toujours les propres identifiants git de l'hôte runner et son [chemin réseau vers `github.com`](#github-com-egress-with-the-anthropic-git-proxy). Pour ces identifiants, consultez [Livrer la configuration git dans votre image](#ship-git-config-in-your-image).218* **Identifiants de l'hôte pour les pushs de l'hôte** : le push [`--push-outcome-on-release`](/docs/fr/self-hosted-environments-reference#runner-cli-flags) du runner et tout push effectué par votre [hook `post-session`](/docs/fr/self-hosted-environments-configuration#post-session) utilisent toujours les propres identifiants git de l'hôte runner et son [chemin réseau vers `github.com`](#github-com-egress-with-the-anthropic-git-proxy). Gardez ces identifiants hors de la [configuration git globale](#git-proxy-replaces-global-git-config), et consultez [Livrer la configuration git dans votre image](#ship-git-config-in-your-image) pour les façons de les fournir.

219* **Décision par session** : Anthropic décide pour chaque session du runner s'il sert son git, et une session qu'il ne sert pas ne démarre pas. [Quand des sessions ne démarrent pas sur un runner avec le proxy git](#when-anthropic-doesnt-serve-a-session) couvre les causes.219* **Décision par session** : Anthropic décide pour chaque session du runner s'il sert son git, et une session qu'il ne sert pas ne démarre pas. [Quand des sessions ne démarrent pas sur un runner avec le proxy git](#when-anthropic-doesnt-serve-a-session) couvre les causes.

220 220 

221<span id="git-proxy-replaces-global-git-config" />221<span id="git-proxy-replaces-global-git-config" />


356Les URL de dépôt arrivent du plan de contrôle en HTTPS, avec le nom d'hôte de votre hôte git ; pour GitHub Enterprise, c'est le nom d'hôte que vous avez configuré pour l'[intégration GitHub Enterprise](/docs/fr/github-enterprise-server) sur claude.ai. Deux flags répétables réécrivent ces URL avant le clone :356Les URL de dépôt arrivent du plan de contrôle en HTTPS, avec le nom d'hôte de votre hôte git ; pour GitHub Enterprise, c'est le nom d'hôte que vous avez configuré pour l'[intégration GitHub Enterprise](/docs/fr/github-enterprise-server) sur claude.ai. Deux flags répétables réécrivent ces URL avant le clone :

357 357 

358* `--git-host-rewrite <from>=<to>` : pour le DNS à horizon divisé, où Anthropic atteint votre hôte git via un nom d'hôte externe mais les runners doivent utiliser un interne358* `--git-host-rewrite <from>=<to>` : pour le DNS à horizon divisé, où Anthropic atteint votre hôte git via un nom d'hôte externe mais les runners doivent utiliser un interne

359* `--git-ssh-rewrite <host>` : pour les hôtes git qui n'acceptent que SSH, réécrivant `https://<host>/owner/repo` en `git@<host>:owner/repo`359* `--git-ssh-rewrite <host>` : pour les hôtes git qui n'acceptent que SSH, ou un hôte runner qui ne dispose que d'une clé SSH. Par exemple, pour cloner des dépôts github.com via SSH, ajoutez `--git-ssh-rewrite github.com` à la commande du runner. Le runner réécrit alors `https://github.com/owner/repo` en `git@github.com:owner/repo`. SSH doit [se connecter sans invite](#git-must-work-without-a-prompt).

360 360 

361La réécriture d'hôte s'exécute en premier, donc listez le nom d'hôte interne dans `--git-ssh-rewrite` si vous avez besoin des deux. Pour un contrôle complet du checkout, utilisez un [hook de cycle de vie `checkout`](/docs/fr/self-hosted-environments-configuration#checkout).361La réécriture d'hôte s'exécute en premier, donc listez le nom d'hôte interne dans `--git-ssh-rewrite` si vous avez besoin des deux. Pour un contrôle complet du checkout, utilisez un [hook de cycle de vie `checkout`](/docs/fr/self-hosted-environments-configuration#checkout).

362 362 


578 578 

579Donnez à votre délai d'arrêt de l'hôte au moins la somme de trois parties : les `n` minutes que vous configurez, la grâce post-libération, et le drainage que [Délai d'arrêt](#shutdown-timing) décrit. Avec les paramètres par défaut, la grâce post-libération est de 75 secondes et le drainage prend jusqu'à 80 secondes, donc autorisez `n` minutes plus 155 secondes. Le runner imprime cette somme au démarrage chaque fois que `--defer-shutdown-max-min` est défini.579Donnez à votre délai d'arrêt de l'hôte au moins la somme de trois parties : les `n` minutes que vous configurez, la grâce post-libération, et le drainage que [Délai d'arrêt](#shutdown-timing) décrit. Avec les paramètres par défaut, la grâce post-libération est de 75 secondes et le drainage prend jusqu'à 80 secondes, donc autorisez `n` minutes plus 155 secondes. Le runner imprime cette somme au démarrage chaque fois que `--defer-shutdown-max-min` est défini.

580 580 

581Si le délai d'arrêt s'écoule avant que le runner ne termine, l'hôte tue le runner. Les sessions qu'il détient toujours ne reçoivent aucun hook `post-session`. Le runner ne se désenregistre pas, et le plan de contrôle remet les sessions en file d'attente en quelques minutes. Si vous ne pouvez pas donner au délai d'arrêt cette somme, laissez `--defer-shutdown-max-min` non défini pour que le runner draine au premier signal à la place.581Si le délai d'arrêt s'écoule avant que le runner ne termine, les sessions qu'il détient toujours ne reçoivent aucun hook `post-session`. Le runner ne se désenregistre pas, donc le plan de contrôle peut mettre quelques minutes, et parfois plus, à remettre ces sessions en file d'attente. Si vous ne pouvez pas donner au délai d'arrêt cette somme, laissez `--defer-shutdown-max-min` non défini pour que le runner draine au premier signal à la place.

582 582 

583<h3 id="what-reaches-a-running-post-session-hook">583<h3 id="what-reaches-a-running-post-session-hook">

584 Ce qui atteint un hook post-session en cours d'exécution584 Ce qui atteint un hook post-session en cours d'exécution


720 720 

721* **Le runner n'apparaît pas dans l'environnement** : confirmez que l'hôte peut atteindre `api.anthropic.com` sur HTTPS, que le secret de l'environnement est actuel, et que l'horloge de l'hôte est à moins de cinq minutes de l'heure réelle ; un décalage plus grand cause l'échec de l'authentification. Le runner enregistre `[runner:fatal]` avec la raison du rejet en cas d'échec d'authentification.721* **Le runner n'apparaît pas dans l'environnement** : confirmez que l'hôte peut atteindre `api.anthropic.com` sur HTTPS, que le secret de l'environnement est actuel, et que l'horloge de l'hôte est à moins de cinq minutes de l'heure réelle ; un décalage plus grand cause l'échec de l'authentification. Le runner enregistre `[runner:fatal]` avec la raison du rejet en cas d'échec d'authentification.

722* **Le runner quitte au démarrage avec `cannot create or write to base directory`** : le runner ne peut pas créer ou écrire à `--base-dir`, qui par défaut est `/workspace`. Corrigez la propriété du répertoire ou pointez `--base-dir` vers un chemin inscriptible, comme décrit dans [Garder le répertoire de base et la capacité identiques sur tous les runners](#keep-the-base-directory-and-capacity-identical-across-runners). Si le runner enregistre à la place `[runner:fatal]` disant que la vérification du répertoire de base a expiré, le répertoire est sur un montage NFS ou CSI suspendu. Vérifiez la santé du montage plutôt que les permissions. Le runner imprime ces deux échecs de démarrage à stderr avant d'ouvrir `--log-file`, donc cherchez-les dans le terminal ou les journaux de conteneur de votre plateforme plutôt que dans le fichier journal. Avant v2.1.225, le runner ne vérifiait pas le répertoire de base au démarrage, et cette mauvaise configuration échouait les sessions après la récupération à la place.722* **Le runner quitte au démarrage avec `cannot create or write to base directory`** : le runner ne peut pas créer ou écrire à `--base-dir`, qui par défaut est `/workspace`. Corrigez la propriété du répertoire ou pointez `--base-dir` vers un chemin inscriptible, comme décrit dans [Garder le répertoire de base et la capacité identiques sur tous les runners](#keep-the-base-directory-and-capacity-identical-across-runners). Si le runner enregistre à la place `[runner:fatal]` disant que la vérification du répertoire de base a expiré, le répertoire est sur un montage NFS ou CSI suspendu. Vérifiez la santé du montage plutôt que les permissions. Le runner imprime ces deux échecs de démarrage à stderr avant d'ouvrir `--log-file`, donc cherchez-les dans le terminal ou les journaux de conteneur de votre plateforme plutôt que dans le fichier journal. Avant v2.1.225, le runner ne vérifiait pas le répertoire de base au démarrage, et cette mauvaise configuration échouait les sessions après la récupération à la place.

723* **Le runner quitte au démarrage avec `RegisterRunner failed:` et une erreur de certificat TLS** : l'erreur peut être `self signed certificate in certificate chain`, par exemple. Le runner ne fait pas confiance à l'autorité de certification (CA) derrière le certificat qu'il a reçu, comme c'est le cas derrière un proxy d'inspection TLS. Définissez [`NODE_EXTRA_CA_CERTS`](/docs/fr/network-config#custom-ca-certificates) dans l'environnement du runner sur un fichier PEM contenant la CA racine du proxy.

724 

725 Vous n'avez pas à la redéfinir pour les sessions, qui en héritent. Git ne la lit pas : pour les clones via ce proxy, définissez aussi [`GIT_SSL_CAINFO`](#trust-a-private-certificate-authority-with-anthropic-managed-git).

726* **L'orchestrateur journalise `poll failed:` avec une erreur de certificat TLS et continue de réessayer** : l'orchestrateur ne fait pas confiance à la CA derrière le certificat qu'il a reçu, comme c'est le cas derrière un proxy d'inspection TLS. Définissez [`NODE_EXTRA_CA_CERTS`](/docs/fr/network-config#custom-ca-certificates) dans l'environnement de l'orchestrateur sur un fichier PEM contenant la CA racine du proxy. Définissez-la aussi pour les runners que votre hook `spawn-runner` démarre.

727 

728 Par exemple, une ligne peut se terminer par `poll failed: self signed certificate in certificate chain — retrying in 1s`, avec les mots de la bibliothèque TLS entre les deux-points et le tiret. Pour confirmer la correction, vérifiez que `connected` vaut `true` dans le corps de [`/healthz`](/docs/fr/self-hosted-environments-reference#health-endpoint) de l'orchestrateur.

723* **Les sessions restent en attente** : chaque runner en ligne peut être verrouillé à un propriétaire différent. Vérifiez la métrique `claude_code_self_hosted_runner_locked_account` de chaque runner [métrique](/docs/fr/self-hosted-environments-reference#prometheus-metrics) ou le champ `locked_account` de sa ligne de journal `[runner:health]` pour voir qui la détient. Les deux affichent l'email du propriétaire uniquement après que le runner ait reçu un jeton de session portant une réclamation `act.email`, ce qu'une session d'agent Claude Tag ne fait jamais. Sans la réclamation, le runner n'émet aucune série `locked_account` et enregistre `locked_account=yes`, ce qui vous dit que le runner est verrouillé mais pas à quel propriétaire. Ajoutez des répliques, ou attendez qu'un runner existant se draine et redémarre. Si l'environnement utilise des runners à la demande, vérifiez l'orchestrateur à la place ; consultez [Runners à la demande](/docs/fr/self-hosted-environments-configuration#on-demand-runners).729* **Les sessions restent en attente** : chaque runner en ligne peut être verrouillé à un propriétaire différent. Vérifiez la métrique `claude_code_self_hosted_runner_locked_account` de chaque runner [métrique](/docs/fr/self-hosted-environments-reference#prometheus-metrics) ou le champ `locked_account` de sa ligne de journal `[runner:health]` pour voir qui la détient. Les deux affichent l'email du propriétaire uniquement après que le runner ait reçu un jeton de session portant une réclamation `act.email`, ce qu'une session d'agent Claude Tag ne fait jamais. Sans la réclamation, le runner n'émet aucune série `locked_account` et enregistre `locked_account=yes`, ce qui vous dit que le runner est verrouillé mais pas à quel propriétaire. Ajoutez des répliques, ou attendez qu'un runner existant se draine et redémarre. Si l'environnement utilise des runners à la demande, vérifiez l'orchestrateur à la place ; consultez [Runners à la demande](/docs/fr/self-hosted-environments-configuration#on-demand-runners).

724* **Les sessions échouent immédiatement après la récupération** : ouvrez la session dans claude.ai/code pour voir l'erreur. Les causes les plus courantes sont des [identifiants git](#configure-git) manquants dans l'image runner et les outils de build qui ne sont pas installés. Sur un runner démarré avec `--use-anthropic-git-proxy`, consultez [Quand les sessions ne démarrent pas sur un runner avec le proxy git](#when-anthropic-doesnt-serve-a-session). Un répertoire de base non inscriptible arrête le runner au démarrage au lieu d'échouer les sessions. Consultez l'entrée **Le runner quitte au démarrage avec `cannot create or write to base directory`** dans cette liste.730* **Les sessions échouent immédiatement après la récupération** : ouvrez la session dans claude.ai/code pour voir l'erreur. Les causes les plus courantes sont des [identifiants git](#configure-git) manquants dans l'image runner et les outils de build qui ne sont pas installés. Sur un runner démarré avec `--use-anthropic-git-proxy`, consultez [Quand les sessions ne démarrent pas sur un runner avec le proxy git](#when-anthropic-doesnt-serve-a-session). Un répertoire de base non inscriptible arrête le runner au démarrage au lieu d'échouer les sessions. Consultez l'entrée **Le runner quitte au démarrage avec `cannot create or write to base directory`** dans cette liste.

725* **Les sessions ne démarrent pas sur un runner qui a défini `--use-anthropic-git-proxy`** : cherchez dans le journal du runner `access denied by the git proxy`, ou une erreur git qui nomme une adresse `api.anthropic.com` contenant `/git_proxy/`. Pour déterminer si Anthropic a servi la session et corriger la cause, consultez [Quand les sessions ne démarrent pas sur un runner avec le proxy git](#when-anthropic-doesnt-serve-a-session).731* **Les sessions ne démarrent pas sur un runner qui a défini `--use-anthropic-git-proxy`** : cherchez dans le journal du runner `access denied by the git proxy`, ou une erreur git qui nomme une adresse `api.anthropic.com` contenant `/git_proxy/`. Pour déterminer si Anthropic a servi la session et corriger la cause, consultez [Quand les sessions ne démarrent pas sur un runner avec le proxy git](#when-anthropic-doesnt-serve-a-session).


741 Avant v2.1.274, le runner arrêtait de réessayer une récupération échouée après quelques tentatives et attendait la prochaine programmée. Un tour échoué n'a pas déclenché une récupération, donc chaque tour échouait avec un 401 jusqu'à la prochaine récupération programmée.747 Avant v2.1.274, le runner arrêtait de réessayer une récupération échouée après quelques tentatives et attendait la prochaine programmée. Un tour échoué n'a pas déclenché une récupération, donc chaque tour échouait avec un 401 jusqu'à la prochaine récupération programmée.

742* **Le pod est tué en milieu de drainage** : augmentez `terminationGracePeriodSeconds` à au moins la valeur que le runner enregistre au démarrage. Consultez [Timing d'arrêt](#shutdown-timing).748* **Le pod est tué en milieu de drainage** : augmentez `terminationGracePeriodSeconds` à au moins la valeur que le runner enregistre au démarrage. Consultez [Timing d'arrêt](#shutdown-timing).

743 749 

744Une fois que la journalisation est initialisée, le runner écrit son journal de cycle de vie, y compris les lignes `[runner:fatal]`, à stdout, et la sortie de débogage à stderr, tout comme des lignes en texte brut plutôt que JSON. Les échecs de démarrage décrits dans les entrées de dépannage ci-dessus s'impriment à stderr avant ce point. Capturez les deux flux avec `--log-file`, ce qui permet également à `self-hosted-runner doctor` de les suivre, ou avec la collecte de journaux de votre plateforme.750Une fois que la journalisation est initialisée, le runner écrit son journal de cycle de vie, y compris les lignes `[runner:fatal]`, sur stdout, et la sortie de débogage sur stderr, le tout sous forme de lignes en texte brut plutôt qu'en JSON. Les échecs liés au répertoire de base décrits dans les entrées de dépannage ci-dessus s'impriment sur stderr avant ce point. Capturez les deux flux avec `--log-file`, ce qui permet également à `self-hosted-runner doctor` de les suivre, ou avec la collecte de journaux de votre plateforme.

745 751 

746Le processus enfant de chaque session écrit un journal de débogage séparé. En cas d'échec, le runner affiche la queue du journal aux côtés de la session dans claude.ai/code. À moins que vous n'ayez démarré le runner avec [`--remove-session-state`](/docs/fr/self-hosted-environments-reference#runner-cli-flags), il conserve également le journal d'une session échouée sur le disque et imprime son chemin dans le journal du runner.752Le processus enfant de chaque session écrit un journal de débogage séparé. En cas d'échec, le runner affiche la queue du journal aux côtés de la session dans claude.ai/code. À moins que vous n'ayez démarré le runner avec [`--remove-session-state`](/docs/fr/self-hosted-environments-reference#runner-cli-flags), il conserve également le journal d'une session échouée sur le disque et imprime son chemin dans le journal du runner.

747 753 

Details

25Le côté claude.ai a besoin de :25Le côté claude.ai a besoin de :

26 26 

27* **Autoriser les environnements auto-hébergés** activé par un [Propriétaire](/docs/fr/cloud-environments#organization-shared-environments) sur la [page d'administration **Environnements cloud**](https://claude.ai/admin-settings/cloud-environments) ; le bouton **Nouveau** n'apparaît pas tant qu'il ne l'est pas. Si vous ne tenez pas le rôle, quelqu'un qui le tient peut créer l'environnement et vous remettre son secret ; les étapes du runner et du terminal sur cette page ne nécessitent aucun rôle claude.ai, et où une étape vérifie le statut dans l'interface d'administration, les propres lignes de journal du runner vous donnent le même signal.27* **Autoriser les environnements auto-hébergés** activé par un [Propriétaire](/docs/fr/cloud-environments#organization-shared-environments) sur la [page d'administration **Environnements cloud**](https://claude.ai/admin-settings/cloud-environments) ; le bouton **Nouveau** n'apparaît pas tant qu'il ne l'est pas. Si vous ne tenez pas le rôle, quelqu'un qui le tient peut créer l'environnement et vous remettre son secret ; les étapes du runner et du terminal sur cette page ne nécessitent aucun rôle claude.ai, et où une étape vérifie le statut dans l'interface d'administration, les propres lignes de journal du runner vous donnent le même signal.

28* Une [connexion GitHub](/docs/fr/claude-code-on-the-web#github-authentication-options) pour votre organisation, afin que les développeurs puissent sélectionner des référentiels lorsqu'ils démarrent des sessions.28* Le [connecteur GitHub](https://claude.ai/admin-settings/connectors) activé par un Propriétaire, et la propre [connexion GitHub](/docs/fr/web-quickstart#connect-github) de chaque développeur, afin qu'ils puissent sélectionner des dépôts github.com lorsqu'ils démarrent des sessions.

29 29 

30<h3 id="host-and-network">30<h3 id="host-and-network">

31 Hôte et réseau31 Hôte et réseau


34L'hôte du runner a besoin de :34L'hôte du runner a besoin de :

35 35 

36* Un hôte ou conteneur Linux ou macOS avec HTTPS sortant vers `api.anthropic.com`, vers `claude.ai` et les hôtes de téléchargement vers lesquels il redirige pour l'étape d'installation ci-dessous, et vers votre hôte git pour le clone ; le [tableau des exigences réseau](/docs/fr/self-hosted-environments-deploy#network-requirements) a la liste complète. Windows n'est pas pris en charge en tant qu'hôte runner ; exécutez le runner dans un conteneur Linux à la place. Les postes de travail des développeurs ne sont pas affectés, car les sessions démarrent à partir de claude.ai dans un navigateur.36* Un hôte ou conteneur Linux ou macOS avec HTTPS sortant vers `api.anthropic.com`, vers `claude.ai` et les hôtes de téléchargement vers lesquels il redirige pour l'étape d'installation ci-dessous, et vers votre hôte git pour le clone ; le [tableau des exigences réseau](/docs/fr/self-hosted-environments-deploy#network-requirements) a la liste complète. Windows n'est pas pris en charge en tant qu'hôte runner ; exécutez le runner dans un conteneur Linux à la place. Les postes de travail des développeurs ne sont pas affectés, car les sessions démarrent à partir de claude.ai dans un navigateur.

37* Un dépôt pour la session de test : un dépôt public, ou un dépôt que cet hôte peut déjà cloner via son URL HTTPS sans que des identifiants lui soient demandés.37* Un dépôt pour la session de test : un dépôt public, ou un dépôt que cet hôte peut déjà cloner via son URL HTTPS sans que des identifiants lui soient demandés. Une clé SSH seule ne suffit pas, car le runner clone l'URL `https://` du dépôt. Pour cloner via SSH à la place, consultez [Réécrire les URL git pour les réseaux privés](/docs/fr/self-hosted-environments-deploy#rewrite-git-urls-for-private-networks).

38* Une horloge synchronisée à l'heure réelle, par exemple avec NTP. L'authentification échoue lorsque l'horloge est décalée de plus de cinq minutes ; consultez [Dépannage](/docs/fr/self-hosted-environments-deploy#troubleshooting).38* Une horloge synchronisée à l'heure réelle, par exemple avec NTP. L'authentification échoue lorsque l'horloge est décalée de plus de cinq minutes ; consultez [Dépannage](/docs/fr/self-hosted-environments-deploy#troubleshooting).

39 39 

40<h3 id="software-on-the-runner-host">40<h3 id="software-on-the-runner-host">


105 105 

106 Choisissez un répertoire de base, en remplaçant `<writable-dir>` dans la commande du runner ci-dessous par un chemin absolu que le runner peut écrire ou créer. Le runner crée le répertoire au démarrage, puis extrait les référentiels et crée des répertoires par session sous celui-ci. Sans `--base-dir`, il utilise `/workspace`, qui ne fonctionne que si ce répertoire existe déjà et est accessible en écriture ou si vous démarrez le runner en tant que root.106 Choisissez un répertoire de base, en remplaçant `<writable-dir>` dans la commande du runner ci-dessous par un chemin absolu que le runner peut écrire ou créer. Le runner crée le répertoire au démarrage, puis extrait les référentiels et crée des répertoires par session sous celui-ci. Sans `--base-dir`, il utilise `/workspace`, qui ne fonctionne que si ce répertoire existe déjà et est accessible en écriture ou si vous démarrez le runner en tant que root.

107 107 

108 Si le runner ne peut pas créer ou écrire dans le chemin, il se termine au démarrage avec une erreur nommant le répertoire au lieu de s'enregistrer. Consultez [Dépannage](/docs/fr/self-hosted-environments-deploy#troubleshooting).108 <Warning>

109 Utilisez un répertoire dédié au runner, et non votre répertoire personnel ou un répertoire contenant vos propres clones. Le runner considère tout ce qu'il trouve dans `<writable-dir>/<repo-owner>/<repo>` comme son propre clone, et peut le réinitialiser ainsi qu'écraser ou supprimer des fichiers qu'il contient.

110 </Warning>

111 

112 Si le runner ne peut pas créer ou écrire dans le répertoire de base, il se termine au démarrage avec une erreur nommant le répertoire au lieu de s'enregistrer. Consultez [Dépannage](/docs/fr/self-hosted-environments-deploy#troubleshooting).

109 113 

110 Ensuite, démarrez le runner avec `--environment-secret-file` et `--base-dir` :114 Ensuite, démarrez le runner avec `--environment-secret-file` et `--base-dir` :

111 115 


113 claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'117 claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'

114 ```118 ```

115 119 

116 Le runner consigne `Registered: runner_id=<runner-id>` une fois qu'il s'est enregistré auprès de votre environnement, puis commence à interroger pour obtenir du travail. Si le runner se termine plus tard, redémarrez-le vous-même. Consultez [Si le runner se termine](#if-the-runner-exits) pour savoir quand cela se produit.120 Le runner consigne `Registered: runner_id=<runner-id>` une fois qu'il s'est enregistré auprès de votre environnement, puis commence à interroger pour obtenir du travail. Démarré avec cette commande, il se termine par conception après avoir servi une session, et non après chaque tour. Pour servir davantage de sessions, redémarrez le runner chaque fois qu'il se termine. Consultez [Si le runner se termine](#if-the-runner-exits) pour savoir quand cela se produit et ce que le runner consigne.

117 </Step>121 </Step>

118 122 

119 <Step title="Vérifier que le runner apparaît">123 <Step title="Vérifier que le runner apparaît">


121 </Step>125 </Step>

122 126 

123 <Step title="Router une session vers l'environnement">127 <Step title="Router une session vers l'environnement">

124 <span id="route-a-session" />Démarrez une session sur claude.ai/code et sélectionnez votre environnement dans le sélecteur d'environnement, où les environnements auto-hébergés apparaissent aux côtés des environnements hébergés par Anthropic. Pour le dépôt, choisissez celui des [prérequis](#host-and-network) : un dépôt public, ou un dépôt que cet hôte peut déjà cloner. Le runner clone avec les identifiants git dont l'hôte dispose déjà.128 <span id="route-a-session" />Démarrez une session sur claude.ai/code et sélectionnez votre environnement dans le sélecteur d'environnement, où les environnements auto-hébergés apparaissent aux côtés des environnements hébergés par Anthropic. Pour le dépôt, choisissez celui des [prérequis](#host-and-network) : un dépôt public, ou un dépôt que cet hôte peut déjà cloner via son URL HTTPS sans qu'on lui demande d'identifiants.

125 129 

126 Le prochain runner disponible récupère la session en attente et consigne `Picked up session <session-id>` ainsi que son nombre de sessions actives et sa capacité, afin que vous puissiez confirmer à partir de la propre sortie du runner quel hôte a pris la session. Regardez la session travailler et lisez les réponses de Claude sur [claude.ai/code](https://claude.ai/code).130 Le prochain runner disponible récupère la session en attente et consigne `Picked up session <session-id>` ainsi que son nombre de sessions actives et sa capacité, afin que vous puissiez confirmer à partir de la propre sortie du runner quel hôte a pris la session. Regardez la session travailler et lisez les réponses de Claude sur [claude.ai/code](https://claude.ai/code).

127 131 

128 Si la session ne commence pas à travailler, identifiez ce que vous observez :132 <span id="session-doesnt-start" />Si la session ne commence pas à travailler, identifiez ce que vous observez :

129 133 

130 * **La session reste en attente** : consultez [Dépannage](/docs/fr/self-hosted-environments-deploy#troubleshooting).134 * **La session reste en attente** : consultez [Dépannage](/docs/fr/self-hosted-environments-deploy#troubleshooting).

131 * **La session ne démarre pas en raison d'une erreur git** : l'erreur apparaît dans la session et dans le log du runner. Si elle contient le message git `could not read Username for` suivi de l'URL de votre hôte git, le runner ne disposait d'aucun identifiant HTTPS pour cet hôte. Consultez [Configurer git](/docs/fr/self-hosted-environments-deploy#configure-git), qui couvre également les options d'identifiants pour les dépôts privés en production.135 * **La session ne démarre pas en raison d'une erreur git** : si l'erreur contient le message git `could not read Username for` suivi de l'URL de votre hôte git, le runner ne disposait d'aucun identifiant HTTPS pour cet hôte.

136 * **Fournir des identifiants HTTPS** : consultez [Configurer git](/docs/fr/self-hosted-environments-deploy#configure-git)

137 * **Cloner plutôt via SSH** : si l'hôte du runner dispose déjà d'une clé SSH, consultez [Réécrire les URL git pour les réseaux privés](/docs/fr/self-hosted-environments-deploy#rewrite-git-urls-for-private-networks)

132 </Step>138 </Step>

133</Steps>139</Steps>

134 140 


136 Si le runner se termine142 Si le runner se termine

137</h3>143</h3>

138 144 

139Si le runner se termine pendant ce démarrage rapide, redémarrez-le avec la même commande. Le runner peut se terminer de lui-même :145Si le runner se termine pendant ce démarrage rapide, redémarrez-le. Le runner peut se terminer de lui-même :

140 146 

141* **Sessions terminées** : le log affiche `[runner:exit] account workload drained — exiting`. Le runner se termine par conception une fois que ses sessions actives se terminent. Consultez [Cycle de vie du runner](/docs/fr/self-hosted-environments#runner-lifecycle).147* **Plus rien en cours d'exécution** : le log affiche `[runner:exit] account workload drained — exiting`. Le runner [se termine par conception](/docs/fr/self-hosted-environments#runner-lifecycle) dès qu'il n'exécute plus aucune session, par exemple :

148 * **Vous avez archivé ou supprimé la session** : redémarrez le runner

149 * **La session n'a pas pu démarrer** : [corrigez la cause](#session-doesnt-start), puis redémarrez le runner

142* **Contact perdu** : le log affiche une ligne `[runner:fatal]` avec `runner record gone server-side` ou avec `poll auth failed`. Si le runner perd le contact avec Anthropic pendant un certain temps, par exemple parce que l'hôte se met en veille, il peut se terminer lorsqu'il joint à nouveau Anthropic.150* **Contact perdu** : le log affiche une ligne `[runner:fatal]` avec `runner record gone server-side` ou avec `poll auth failed`. Si le runner perd le contact avec Anthropic pendant un certain temps, par exemple parce que l'hôte se met en veille, il peut se terminer lorsqu'il joint à nouveau Anthropic.

143 151 

144Un tour terminé ne met pas fin à votre session de test. Après le premier tour, la session est toujours attachée et le runner est toujours actif, vous pouvez donc [envoyer un message de suivi à la session](#send-a-follow-up-message-to-a-running-session) sans redémarrer le runner au préalable.152Un tour terminé ne met pas fin à votre session de test. Après le premier tour, la session est toujours attachée et le runner est toujours actif, vous pouvez donc [envoyer un message de suivi à la session](#send-a-follow-up-message-to-a-running-session) sans redémarrer le runner au préalable.

Details

54| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | non défini | Retirer le runner à un timestamp Unix absolu en secondes, pour l'infrastructure qui tue le runner à un moment connu ; [Cycle de vie du runner](/docs/fr/self-hosted-environments#runner-lifecycle) décrit la séquence de libération et comment dimensionner la marge. Les valeurs avant 2001 ou après l'année 5138 sont rejetées par le drapeau et ignorées par la variable d'environnement. |54| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | non défini | Retirer le runner à un timestamp Unix absolu en secondes, pour l'infrastructure qui tue le runner à un moment connu ; [Cycle de vie du runner](/docs/fr/self-hosted-environments#runner-lifecycle) décrit la séquence de libération et comment dimensionner la marge. Les valeurs avant 2001 ou après l'année 5138 sont rejetées par le drapeau et ignorées par la variable d'environnement. |

55| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Lesquelles des listes de règles du classifieur du [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) que le plan de contrôle envoie avec une session peuvent atteindre cette session : `all`, `no-allow` ou `none`. Voir [Listes de règles du mode auto](#auto-mode-rule-lists) pour ce que chaque valeur applique. Une valeur invalide arrête le runner au démarrage. Nécessite Claude Code v2.1.295 ou ultérieur. |55| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Lesquelles des listes de règles du classifieur du [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) que le plan de contrôle envoie avec une session peuvent atteindre cette session : `all`, `no-allow` ou `none`. Voir [Listes de règles du mode auto](#auto-mode-rule-lists) pour ce que chaque valeur applique. Une valeur invalide arrête le runner au démarrage. Nécessite Claude Code v2.1.295 ou ultérieur. |

56| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | Combien de temps attendre que le processus Claude se termine proprement après la fin d'une session, avant de le tuer de force. Augmentez la valeur si les hooks `SessionEnd` propres de l'enfant ont besoin de plus de temps. |56| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | Combien de temps attendre que le processus Claude se termine proprement après la fin d'une session, avant de le tuer de force. Augmentez la valeur si les hooks `SessionEnd` propres de l'enfant ont besoin de plus de temps. |

57| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Libérer un créneau de session si l'enfant n'a pas signalé qu'il s'était initialisé dans N minutes après le lancement. Le clonage a lieu avant le lancement, donc le temps de clonage n'est pas compté. Effacé par le signal d'init de l'enfant sur le [canal d'activité](/docs/fr/self-hosted-environments-configuration#keep-stdin-and-file-descriptor-3-attached), pas par la sortie ordinaire, après quoi `--release-idle-session-min` prend le relais. `0` désactive. |57| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Libérer un créneau de session si l'enfant n'a pas signalé sur le [canal d'activité](/docs/fr/self-hosted-environments-configuration#keep-stdin-and-file-descriptor-3-attached) qu'il s'était initialisé dans les N minutes. Les N minutes commencent au lancement, après le clonage, et repartent de zéro à chaque message `user` ou `assistant` que l'enfant émet avant de s'être initialisé ou d'avoir signalé son état. Avant v2.1.299, ce délai d'expiration cessait de s'appliquer au premier message de ce type de la session. Pour la libération après le signal d'init, voir `--release-idle-session-min`. `0` désactive. |

58| `--trust-workspace [bool]` | `SELF_HOSTED_RUNNER_TRUST_WORKSPACE` | activé | Amorcer la confiance persistante pour les chemins de dépôt de chaque session afin que les `permissions.allow` et `additionalDirectories` validés par le dépôt soient honorés. Définir `false` pour supprimer les subventions de permission validées par le dépôt et configurer les règles d'autorisation dans le `settings.json` de la configuration d'hôte à la place ; les paramètres `sandbox.*` validés par le dépôt s'appliquent toujours de toute façon, c'est pourquoi la [garde de paramètres de dépôt](/docs/fr/self-hosted-environments-deploy#harden-your-deployment) les analyse indépendamment de ce drapeau. |58| `--trust-workspace [bool]` | `SELF_HOSTED_RUNNER_TRUST_WORKSPACE` | activé | Amorcer la confiance persistante pour les chemins de dépôt de chaque session afin que les `permissions.allow` et `additionalDirectories` validés par le dépôt soient honorés. Définir `false` pour supprimer les subventions de permission validées par le dépôt et configurer les règles d'autorisation dans le `settings.json` de la configuration d'hôte à la place ; les paramètres `sandbox.*` validés par le dépôt s'appliquent toujours de toute façon, c'est pourquoi la [garde de paramètres de dépôt](/docs/fr/self-hosted-environments-deploy#harden-your-deployment) les analyse indépendamment de ce drapeau. |

59| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | désactivé | Cloner les dépôts hébergés sur github.com via le [proxy git Anthropic](/docs/fr/self-hosted-environments-deploy#use-the-anthropic-git-proxy) au lieu de l'authentification git gérée par le client. Nécessite `--capacity 1` et git 2.32 ou plus récent ; le runner refuse de démarrer sinon. Remplace les flags de réécriture. |59| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | désactivé | Cloner les dépôts hébergés sur github.com via le [proxy git Anthropic](/docs/fr/self-hosted-environments-deploy#use-the-anthropic-git-proxy) au lieu de l'authentification git gérée par le client. Nécessite `--capacity 1` et git 2.32 ou plus récent ; le runner refuse de démarrer sinon. Remplace les flags de réécriture. |

60 60 


160 160 

161Utilisez `last_poll_age_ms` comme signal de vivacité dans les sondes personnalisées ; une valeur qui croît sans limite indique que la boucle d'interrogation est bloquée. À la fois `last_poll_at` et `last_poll_age_ms` sont `null` jusqu'à la fin de la première interrogation.161Utilisez `last_poll_age_ms` comme signal de vivacité dans les sondes personnalisées ; une valeur qui croît sans limite indique que la boucle d'interrogation est bloquée. À la fois `last_poll_at` et `last_poll_age_ms` sont `null` jusqu'à la fin de la première interrogation.

162 162 

163L'orchestrateur sert son propre `/healthz` sur son port de santé. Son point de terminaison retourne toujours `200`, et le corps porte un champ `connected` signalant si l'interrogation la plus récente a réussi, plus les comptes de file d'attente de génération par état dans `queue_counts`. Gater la disponibilité et les alertes sur `connected` plutôt que sur le code de statut.163Le `/healthz` propre à l'orchestrateur, sur son port de santé, retourne toujours `200`. Le corps porte un champ `connected` signalant si l'interrogation la plus récente a réussi, plus les comptes de file d'attente de génération par état dans `queue_counts`. Pour savoir pourquoi `connected` vaut `false`, lisez le champ de premier niveau `last_error`, que chaque interrogation réussie réinitialise à `null`. Gater la disponibilité et les alertes sur `connected` plutôt que sur le code de statut.

164 164 

165Quand le [connecteur SCM](#scm-connector-flags) est configuré, le corps `/healthz` de l'orchestrateur porte également `scm_connector_connected` et un objet `scm_connector` avec `connected`, `last_connected_at`, `last_error`, `reconnects` et `requests_forwarded`. Les deux champs sont `null` quand `--scm-connector-host` n'est pas défini.165Quand le [connecteur SCM](#scm-connector-flags) est configuré, le corps `/healthz` de l'orchestrateur porte également `scm_connector_connected` et un objet `scm_connector` avec `connected`, `last_connected_at`, `last_error`, `reconnects` et `requests_forwarded`. Les deux champs sont `null` quand `--scm-connector-host` n'est pas défini.

166 166 

Details

692| [`gcpAuthRefresh`](#gcpauthrefresh) | Actualisez les [identifiants Google Cloud](/docs/fr/google-vertex-ai#advanced-credential-configuration) avec votre propre commande | Authentication and providers | Any file |692| [`gcpAuthRefresh`](#gcpauthrefresh) | Actualisez les [identifiants Google Cloud](/docs/fr/google-vertex-ai#advanced-credential-configuration) avec votre propre commande | Authentication and providers | Any file |

693| [`hooks`](#hooks) | Exécutez vos propres commandes en tant que [hooks](/docs/fr/hooks) à des points du cycle de vie de Claude Code | Hooks and automation | Any file |693| [`hooks`](#hooks) | Exécutez vos propres commandes en tant que [hooks](/docs/fr/hooks) à des points du cycle de vie de Claude Code | Hooks and automation | Any file |

694| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Limitez les variables d'environnement que les [hooks HTTP](/docs/fr/hooks) peuvent mettre dans les en-têtes | Hooks and automation | Any file |694| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Limitez les variables d'environnement que les [hooks HTTP](/docs/fr/hooks) peuvent mettre dans les en-têtes | Hooks and automation | Any file |

695| [`idleCompaction`](#idlecompaction) | Empêchez Claude Code de compacter une longue conversation pendant que votre session de terminal est inactive | Memory and context | Any file |

695| [`includeCoAuthoredBy`](#includecoauthoredby) | Déprécié ; utilisez `attribution` pour masquer ou modifier l'attribution de commit et de PR | Git and attribution | Any file |696| [`includeCoAuthoredBy`](#includecoauthoredby) | Déprécié ; utilisez `attribution` pour masquer ou modifier l'attribution de commit et de PR | Git and attribution | Any file |

696| [`includeGitInstructions`](#includegitinstructions) | Supprimez les instructions de commit et de PR intégrées du contexte de Claude | Git and attribution | Any file |697| [`includeGitInstructions`](#includegitinstructions) | Supprimez les instructions de commit et de PR intégrées du contexte de Claude | Git and attribution | Any file |

697| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | Recevez une [notification push](/docs/fr/remote-control#mobile-push-notifications) quand Claude vous attend | Remote, desktop, and notifications | Any file |698| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | Recevez une [notification push](/docs/fr/remote-control#mobile-push-notifications) quand Claude vous attend | Remote, desktop, and notifications | Any file |


1425 * `true` : les sessions commencent avec ultracode activé quand les workflows dynamiques sont activés pour vous et votre modèle supporte `xhigh`1426 * `true` : les sessions commencent avec ultracode activé quand les workflows dynamiques sont activés pour vous et votre modèle supporte `xhigh`

1426 * `false` : les sessions commencent avec ultracode désactivé1427 * `false` : les sessions commencent avec ultracode désactivé

1427* **Par défaut** : non défini, donc ultracode est désactivé1428* **Par défaut** : non défini, donc ultracode est désactivé

1428* **Remplacements par session** : `/effort ultracode` active ultracode pour une session sans cette clé, et `/effort ultracode off` le désactive pour une session quand cette clé est `true`. L'indicateur `--effort ultracode` l'active également pour une session, à l'effort `xhigh`, et nécessite Claude Code v2.1.203 ou ultérieur1429* **Remplacements par session** : `/effort ultracode` active ultracode pour une session sans cette clé, et `/effort ultracode off` le désactive pour une session quand cette clé est `true`. Le flag `--effort ultracode` l'active également pour une session, à l'effort `xhigh`

1429 1430 

1430```json settings.json theme={null}1431```json settings.json theme={null}

1431{1432{


2952}2953}

2953```2954```

2954 2955 

2955La commande manuelle `/compact` continue de fonctionner tandis que le compactage automatique est désactivé.2956La commande manuelle `/compact` continue de fonctionner tandis que la compaction automatique est désactivée. Si vous désactivez la compaction automatique, la [compaction en cas d'inactivité](#idlecompaction) est également désactivée.

2956 2957 

2957<h3 id="autocompactwindow">2958<h3 id="autocompactwindow">

2958 `autoCompactWindow`2959 `autoCompactWindow`


3133 * Les variables qui changent la façon dont Claude Code démarre ou se synchronise, telles que `CLAUDE_CODE_PROCESS_WRAPPER`, `CLAUDE_CODE_SYNC_SKILLS`, `CLAUDE_CODE_SYNC_PLUGINS`, `CLAUDE_CODE_PLUGIN_CACHE_DIR` et `CLAUDE_CODE_PLUGIN_SEED_DIR`.3134 * Les variables qui changent la façon dont Claude Code démarre ou se synchronise, telles que `CLAUDE_CODE_PROCESS_WRAPPER`, `CLAUDE_CODE_SYNC_SKILLS`, `CLAUDE_CODE_SYNC_PLUGINS`, `CLAUDE_CODE_PLUGIN_CACHE_DIR` et `CLAUDE_CODE_PLUGIN_SEED_DIR`.

3134 * Les variables qui définissent les minuteurs d'une boîte de dialogue sans réponse : [`CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS`, `CLAUDE_AFK_TIMEOUT_MS` et `CLAUDE_AFK_COUNTDOWN_MS`](/docs/fr/env-vars#variables).3135 * Les variables qui définissent les minuteurs d'une boîte de dialogue sans réponse : [`CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS`, `CLAUDE_AFK_TIMEOUT_MS` et `CLAUDE_AFK_COUNTDOWN_MS`](/docs/fr/env-vars#variables).

3135 * [`CLAUDE_CODE_DISABLE_ATTACHMENTS`](/docs/fr/env-vars#variables), qui désactive le traitement des pièces jointes.3136 * [`CLAUDE_CODE_DISABLE_ATTACHMENTS`](/docs/fr/env-vars#variables), qui désactive le traitement des pièces jointes.

3137 * [`CLAUDE_CODE_DISABLE_FILE_MENTIONS`](/docs/fr/env-vars#variables), qui empêche Claude Code de développer les mentions `@` de fichiers et de répertoires.

3136 3138 

3137 Avant v2.1.251, les paramètres de projet et locaux pouvaient également définir les variables de cette liste qui choisissent où Claude Code écrit ses fichiers ou qui exportent le contenu de la session, sauf `HOME` et `XDG_CONFIG_HOME`. Avant v2.1.290, ils pouvaient également définir les variables de minuteur de boîte de dialogue et `CLAUDE_CODE_DISABLE_ATTACHMENTS`.3139 Avant v2.1.251, les paramètres de projet et locaux pouvaient également définir les variables de cette liste qui choisissent où Claude Code écrit ses fichiers ou qui exportent le contenu de la session, sauf `HOME` et `XDG_CONFIG_HOME`. Avant v2.1.290, ils pouvaient également définir les variables de minuteur de boîte de dialogue et `CLAUDE_CODE_DISABLE_ATTACHMENTS`.

3138* Les variables d'identité que les environnements d'hébergement de Claude Code possèdent, telles que `CLAUDE_CODE_REMOTE` et `CLAUDE_CODE_ACCOUNT_UUID`, sont ignorées de chaque fichier.3140* Les variables d'identité que les environnements d'hébergement de Claude Code possèdent, telles que `CLAUDE_CODE_REMOTE` et `CLAUDE_CODE_ACCOUNT_UUID`, sont ignorées de chaque fichier.


3163 3165 

3164Dans une exécution `-p` ou une session Agent SDK, Claude Code ignore cette clé. Le SDK active les points de contrôle avec son option `enableFileCheckpointing`, et une exécution `-p` nue a besoin de `CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING=true`. Voir [File checkpointing in the Agent SDK](/docs/fr/agent-sdk/file-checkpointing).3166Dans une exécution `-p` ou une session Agent SDK, Claude Code ignore cette clé. Le SDK active les points de contrôle avec son option `enableFileCheckpointing`, et une exécution `-p` nue a besoin de `CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING=true`. Voir [File checkpointing in the Agent SDK](/docs/fr/agent-sdk/file-checkpointing).

3165 3167 

3168<h3 id="idlecompaction">

3169 `idleCompaction`

3170</h3>

3171 

3172La compaction en cas d'inactivité [compacte](/docs/fr/context-window#what-survives-compaction) une longue conversation que vous avez laissée de côté, peu avant l'expiration de son cache de prompt. Votre prochain message envoie alors un résumé au lieu de la conversation entière. À votre retour, la conversation affiche `Compacted while idle, before the prompt cache expired`.

3173 

3174La compaction en cas d'inactivité est activée par défaut pour les conversations qui remplissent toutes ces conditions :

3175 

3176* **Session** : vous êtes dans une session de terminal interactive

3177* **Cache de prompt** : la conversation utilise le [TTL d'une heure du cache de prompt](/docs/fr/prompt-caching#which-ttl-each-request-gets)

3178* **Feature flags** : Claude Code peut [récupérer les feature flags auprès d'Anthropic](/docs/fr/env-vars#features-that-need-feature-flag-fetching)

3179* **Taille** : le contexte de la conversation a atteint le seuil de tokens, que vous pouvez [modifier](#change-the-idle-compaction-threshold) par rapport à sa valeur par défaut de 200 000

3180* **Temps d'inactivité** : environ 54 minutes se sont écoulées depuis la dernière requête, et votre ordinateur est en éveil à ce moment-là

3181 

3182Pour désactiver la compaction en cas d'inactivité, définissez cette clé sur `false`.

3183 

3184* **Scope** : [`Any file`](#scopes)

3185* **Type** : Boolean

3186 * `true` : Claude Code compacte les conversations inactives qui remplissent les conditions

3187 * `false` : Claude Code ne compacte pas pendant que votre session est inactive

3188* **Default** : `true`

3189* **Per-session overrides** : [`DISABLE_AUTO_COMPACT`](/docs/fr/env-vars) désactive la compaction en cas d'inactivité en même temps que la compaction automatique

3190 

3191```json settings.json theme={null}

3192{

3193 "idleCompaction": false

3194}

3195```

3196 

3197La clé nécessite Claude Code v2.1.290 ou ultérieur. Sur une version antérieure, qui ignore cette clé, désactivez [`autoCompactEnabled`](#autocompactenabled) pour arrêter la compaction en cas d'inactivité.

3198 

3199<h4 id="change-the-idle-compaction-threshold">

3200 Modifier le seuil de compaction en cas d'inactivité

3201</h4>

3202 

3203Définissez [`CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS`](/docs/fr/env-vars) sur le nombre de tokens que le contexte d'une conversation doit atteindre avant que la compaction en cas d'inactivité ne s'y applique. Utilisez un nombre entier positif. Les valeurs inférieures à `100000` sont relevées à `100000`, le seuil le plus bas.

3204 

3205Avec la valeur par défaut, une conversation sur une fenêtre de contexte de 200K se compacte automatiquement avant d'atteindre 200 000 tokens. Cet exemple abaisse le seuil à 150 000 afin que ces conversations soient éligibles :

3206 

3207```json settings.json theme={null}

3208{

3209 "env": {

3210 "CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS": "150000"

3211 }

3212}

3213```

3214 

3166<h3 id="plansdirectory">3215<h3 id="plansdirectory">

3167 `plansDirectory`3216 `plansDirectory`

3168</h3>3217</h3>


4209}4258}

4210```4259```

4211 4260 

4261Si vous remplacez le prompt système en [mode non interactif](/docs/fr/headless) ou dans l'Agent SDK, la session démarre sans le snapshot même lorsque cette clé est `true` :

4262 

4263* **Exécutions `-p`** : vous remplacez le prompt lorsque vous passez [`--system-prompt`](/docs/fr/cli-reference#system-prompt-flags) ou `--system-prompt-file`. Vous le remplacez également lorsque vous exécutez un agent personnalisé avec son propre prompt, sélectionné avec [`--agent`](/docs/fr/sub-agents#invoke-subagents-explicitly) ou le paramètre [`agent`](#agent). En dehors du [mode bare](/docs/fr/headless#start-faster-with-bare-mode), pour conserver le snapshot, exécutez sans agent personnalisé et ajoutez vos instructions avec [`--append-system-prompt`](/docs/fr/cli-reference#system-prompt-flags) au lieu de remplacer le prompt.

4264* **[Agent SDK](/docs/fr/agent-sdk/modifying-system-prompts)** : vous remplacez le prompt par un prompt système personnalisé ou par un agent de thread principal personnalisé. Si vous ne définissez aucun prompt système, le SDK utilise son prompt par défaut minimal et la session démarre également sans le snapshot. En dehors du [mode bare](/docs/fr/headless#start-faster-with-bare-mode), pour conserver le snapshot, utilisez le preset `claude_code` sans `agent` personnalisé.

4265 

4212<h3 id="prurltemplate">4266<h3 id="prurltemplate">

4213 `prUrlTemplate`4267 `prUrlTemplate`

4214</h3>4268</h3>


5175 5229 

5176Les plugins intégrés stockent leurs options sous la même clé avec un suffixe `@builtin`. Par exemple, le paramètre [**Project instructions**](/docs/fr/memory#choose-which-instruction-files-load) qui contrôle si Claude Code lit les fichiers `AGENTS.md` est `pluginConfigs["cc-plugin-agents-md@builtin"].options.instructionFiles`. Avant v2.1.285, l'ID du plugin était `agents-md@builtin`. Les versions ultérieures lisent une entrée sous l'un ou l'autre ID.5230Les plugins intégrés stockent leurs options sous la même clé avec un suffixe `@builtin`. Par exemple, le paramètre [**Project instructions**](/docs/fr/memory#choose-which-instruction-files-load) qui contrôle si Claude Code lit les fichiers `AGENTS.md` est `pluginConfigs["cc-plugin-agents-md@builtin"].options.instructionFiles`. Avant v2.1.285, l'ID du plugin était `agents-md@builtin`. Les versions ultérieures lisent une entrée sous l'un ou l'autre ID.

5177 5231 

5178Claude Code ignore les entrées de projet et locales car il substitue ces valeurs dans les configurations de hook, MCP et LSP du plugin, et un dépôt cloné ne doit pas pouvoir les fournir. Avant v2.1.207, les paramètres de projet et locaux étaient également lus.5232Claude Code ignore les entrées de projet et locales car il substitue ces valeurs dans les configurations de hook, MCP et LSP du plugin, et un dépôt cloné ne doit pas pouvoir les fournir.

5179 5233 

5180<h3 id="prependplugins">5234<h3 id="prependplugins">

5181 `prependPlugins`5235 `prependPlugins`


5680}5734}

5681```5735```

5682 5736 

5683En dehors d'un dépôt git, un [hook `WorktreeCreate`](/docs/fr/worktrees#non-git-version-control) qui échoue lève le blocage de sorte que la session puisse modifier le répertoire de travail sur place ; cette levée nécessite Claude Code v2.1.203 ou ultérieur.5737En dehors d'un dépôt git, un [hook `WorktreeCreate`](/docs/fr/worktrees#non-git-version-control) qui échoue lève le blocage de sorte que la session puisse modifier le répertoire de travail sur place.

5684 5738 

5685<h3 id="worktree-location">5739<h3 id="worktree-location">

5686 `worktree.location`5740 `worktree.location`

setup.md +1 −1

Details

226 226 

227Exécutez `claude doctor` pour voir le résultat de la tentative de mise à jour la plus récente.227Exécutez `claude doctor` pour voir le résultat de la tentative de mise à jour la plus récente.

228 228 

229Sur macOS et Linux, le programme d'installation natif gère le lanceur à `~/.local/bin/claude` en tant que lien symbolique vers `~/.local/share/claude/versions/`. Si vous remplacez ce lanceur par votre propre script ou lien symbolique, la mise à jour automatique et `claude update` le laissent en place : les nouvelles versions s'installent toujours sous le répertoire `versions/`, et votre lanceur décide quelle version s'exécute. Avant la v2.1.207, le programme de mise à jour automatique remplaçait un lanceur personnalisé à ce chemin par son propre lien symbolique à chaque mise à jour.229Sur macOS et Linux, le programme d'installation natif gère le lanceur à `~/.local/bin/claude` en tant que lien symbolique vers `~/.local/share/claude/versions/`. Si vous remplacez ce lanceur par votre propre script ou lien symbolique, la mise à jour automatique et `claude update` le laissent en place : les nouvelles versions s'installent toujours sous le répertoire `versions/`, et votre lanceur décide quelle version s'exécute.

230 230 

231Avec un lanceur personnalisé, Claude Code conserve également chaque version installée sur le disque car il ne peut pas déterminer quelle version le lanceur nécessite. `claude doctor` signale un lanceur que le programme d'installation natif n'a pas créé.231Avec un lanceur personnalisé, Claude Code conserve également chaque version installée sur le disque car il ne peut pas déterminer quelle version le lanceur nécessite. `claude doctor` signale un lanceur que le programme d'installation natif n'a pas créé.

232 232 

skills.md +26 −3

Details

31Pour désactiver les compétences groupées, utilisez le paramètre [`disableBundledSkills`](/docs/fr/settings-reference#disablebundledskills).31Pour désactiver les compétences groupées, utilisez le paramètre [`disableBundledSkills`](/docs/fr/settings-reference#disablebundledskills).

32 32 

33<Note>33<Note>

34 La vérification de configuration [`/doctor`](/docs/fr/commands#all-commands) reste saisissable lorsque `disableBundledSkills` est activé, dans Claude Code v2.1.205 et versions ultérieures. Pour la masquer, définissez la variable d'environnement `DISABLE_DOCTOR_COMMAND` ou une entrée [`skillOverrides`](#override-skill-visibility-from-settings) de `"doctor": "off"`. Avant v2.1.205, `/doctor` était une commande intégrée plutôt qu'une compétence groupée.34 La vérification de configuration [`/doctor`](/docs/fr/commands#all-commands) reste saisissable lorsque `disableBundledSkills` est activé. Pour la masquer, définissez la variable d'environnement `DISABLE_DOCTOR_COMMAND` ou une entrée [`skillOverrides`](#override-skill-visibility-from-settings) de `"doctor": "off"`.

35</Note>35</Note>

36 36 

37Les compétences groupées sont listées aux côtés des commandes intégrées dans la [référence des commandes](/docs/fr/commands), marquées **Skill** dans la colonne Purpose.37Les compétences groupées sont listées aux côtés des commandes intégrées dans la [référence des commandes](/docs/fr/commands), marquées **Skill** dans la colonne Purpose.


69 69 

70`/verify` peut également enregistrer sa propre recette. Lorsqu'il doit compiler et piloter votre application sans recette enregistrée, il écrit ce qui a fonctionné dans `.claude/skills/verify/SKILL.md` à la racine du référentiel, ou dans le répertoire du package touché dans un monorepo, afin que les exécutions ultérieures et les autres agents suivent les mêmes étapes. À la racine du référentiel, le skill enregistré remplace le skill fourni `/verify`.70`/verify` peut également enregistrer sa propre recette. Lorsqu'il doit compiler et piloter votre application sans recette enregistrée, il écrit ce qui a fonctionné dans `.claude/skills/verify/SKILL.md` à la racine du référentiel, ou dans le répertoire du package touché dans un monorepo, afin que les exécutions ultérieures et les autres agents suivent les mêmes étapes. À la racine du référentiel, le skill enregistré remplace le skill fourni `/verify`.

71 71 

72Claude modifie le fichier enregistré uniquement lorsqu'il a mal dirigé une exécution, comme une commande qui a échoué ou une étape manquante, afin que vous puissiez valider le fichier sans diffs par session. Avant v2.1.205, la compétence groupée a dit à Claude de plier tout ce qu'une exécution a appris, ce qui a causé des conflits de fusion fréquents.72Claude modifie le fichier enregistré uniquement lorsqu'il a mal dirigé une exécution, comme une commande qui a échoué ou une étape manquante, afin que vous puissiez faire un commit du fichier sans diffs par session.

73 73 

74<h3 id="run-your-checks-before-each-commit">74<h3 id="run-your-checks-before-each-commit">

75 Exécuter vos vérifications avant chaque commit75 Exécuter vos vérifications avant chaque commit


183* **Dossiers liés par symlink** : une entrée `<skill-name>` à l'emplacement entreprise, personnel ou projet peut être un symlink vers un répertoire ailleurs sur le disque. Claude Code lit `SKILL.md` depuis la cible et charge la skill une seule fois même si plusieurs emplacements pointent vers la même cible. Les skills de plugin [gèrent les symlinks différemment](/docs/fr/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks).183* **Dossiers liés par symlink** : une entrée `<skill-name>` à l'emplacement entreprise, personnel ou projet peut être un symlink vers un répertoire ailleurs sur le disque. Claude Code lit `SKILL.md` depuis la cible et charge la skill une seule fois même si plusieurs emplacements pointent vers la même cible. Les skills de plugin [gèrent les symlinks différemment](/docs/fr/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks).

184* **Nom réservé `synced`** : ne nommez pas un dossier de skill `synced`, quelle que soit la casse. Claude Code utilise `~/.claude/skills/synced/` pour les [skills téléchargées depuis claude.ai](#where-synced-skills-load) et ignore une skill que vous créez à ce nom aux emplacements entreprise, personnel et projet.184* **Nom réservé `synced`** : ne nommez pas un dossier de skill `synced`, quelle que soit la casse. Claude Code utilise `~/.claude/skills/synced/` pour les [skills téléchargées depuis claude.ai](#where-synced-skills-load) et ignore une skill que vous créez à ce nom aux emplacements entreprise, personnel et projet.

185* **Nom réservé `anthropic-skills`** : en dehors d'un plugin, un dossier de skill ou un fichier de commande dont le nom est `anthropic-skills` ou commence par `anthropic-skills:` ne se charge pas. Voir [Noms réservés pour les skills synchronisées](#names-reserved-for-synced-skills).185* **Nom réservé `anthropic-skills`** : en dehors d'un plugin, un dossier de skill ou un fichier de commande dont le nom est `anthropic-skills` ou commence par `anthropic-skills:` ne se charge pas. Voir [Noms réservés pour les skills synchronisées](#names-reserved-for-synced-skills).

186* **Caractères dans le nom** : en dehors d'un plugin, un dossier de skill ne se charge pas quand son nom contient un caractère tel qu'une espace de largeur nulle ou `<`. Voir [Caractères qu'un nom de skill ne peut pas contenir](#characters-a-skill-name-cant-hold).

186* **Fichiers de commande** : un fichier Markdown dans `.claude/commands/` est le format plus ancien et fonctionne toujours. Il supporte le même [frontmatter](#frontmatter-reference) sauf `name` et `paths`. Pour trouver le nom que vous tapez pour l'invoquer, voir [Comment une skill obtient son nom de commande](#how-a-skill-gets-its-command-name). Préférez une skill pour les nouveaux travaux, car les skills supportent aussi les [fichiers de support](#add-supporting-files).187* **Fichiers de commande** : un fichier Markdown dans `.claude/commands/` est le format plus ancien et fonctionne toujours. Il supporte le même [frontmatter](#frontmatter-reference) sauf `name` et `paths`. Pour trouver le nom que vous tapez pour l'invoquer, voir [Comment une skill obtient son nom de commande](#how-a-skill-gets-its-command-name). Préférez une skill pour les nouveaux travaux, car les skills supportent aussi les [fichiers de support](#add-supporting-files).

187* **Dossier de skill en tant que plugin** : ajoutez un `.claude-plugin/plugin.json` à un dossier de skill et il se charge en tant que [plugin](/docs/fr/plugins/loading#plugins-shared-through-a-repository) nommé `<name>@skills-dir`, pour qu'il puisse regrouper des agents, des hooks et des serveurs MCP. Dans un `.claude/skills/` de projet, cela nécessite d'accepter d'abord la boîte de dialogue de confiance de l'espace de travail.188* **Dossier de skill en tant que plugin** : ajoutez un `.claude-plugin/plugin.json` à un dossier de skill et il se charge en tant que [plugin](/docs/fr/plugins/loading#plugins-shared-through-a-repository) nommé `<name>@skills-dir`, pour qu'il puisse regrouper des agents, des hooks et des serveurs MCP. Dans un `.claude/skills/` de projet, cela nécessite d'accepter d'abord la boîte de dialogue de confiance de l'espace de travail.

188 189 


495 496 

496Pour un `SKILL.md` racine de plugin, il n'y a pas de répertoire de compétence d'où prendre le nom, donc `name` fournit le segment final entier. Sans un champ `name`, Claude Code revient au nom du répertoire du plugin.497Pour un `SKILL.md` racine de plugin, il n'y a pas de répertoire de compétence d'où prendre le nom, donc `name` fournit le segment final entier. Sans un champ `name`, Claude Code revient au nom du répertoire du plugin.

497 498 

499<h4 id="characters-a-skill-name-cant-hold">

500 Caractères qu'un nom de skill ne peut pas contenir

501</h4>

502 

503Si un skill ou une commande personnalisée est absent du menu `/`, ou si le menu n'affiche pas le `name` du frontmatter d'un skill, vérifiez le nom. Claude Code refuse un nom de commande ou un `name` de frontmatter qui contient des caractères tels que les suivants :

504 

505* Un espace sans chasse ou un caractère de contrôle

506* Un caractère à usage privé ou non attribué, comme un glyphe provenant d'une police d'icônes

507* Un caractère qui modifie la direction du texte qui l'entoure

508* Un blanc autre qu'un simple espace entre les mots, comme un espace insécable, deux espaces consécutifs, ou un espace au début ou à la fin

509* `<` ou `>`

510 

511Une commande personnalisée ou un skill ne se charge pas lorsque Claude Code refuse le nom de son répertoire ou de son fichier. Renommez ce dossier ou ce fichier pour supprimer les caractères. Un skill se charge quand même lorsque ces caractères figurent uniquement dans le nom d'un dossier de skill de plugin ou dans son `name` de frontmatter :

512 

513* **Dossier dans le répertoire `skills/` d'un plugin ou dans les [chemins `skills`](/docs/fr/plugins/components#skills) de son manifeste** : vous n'avez pas besoin de renommer le dossier. Ces caractères deviennent des tirets dans le nom de commande du skill, tapez donc la commande avec les tirets.

514* **`name` du frontmatter** : le menu `/` n'affiche pas la valeur de `name` et la taper n'invoque pas le skill. Modifiez la ligne `name:` pour supprimer les caractères.

515 

516Pour savoir quel nom Claude Code a refusé, lancez-le avec [`claude --debug`](/docs/fr/cli-reference#cli-flags) depuis votre shell et recherchez `[names]` dans le [log de débogage](/docs/fr/debug-your-config). Dans une session interactive, un [avis au démarrage](/docs/fr/errors#skill-or-command-name-refused) vous indique également que des noms ont été refusés. Après un renommage ou une modification de `name:`, redémarrez la session, sauf si le fichier se trouve dans un répertoire dont Claude Code [surveille les modifications](#live-change-detection).

517 

498<h4 id="available-string-substitutions">518<h4 id="available-string-substitutions">

499 Substitutions de chaîne disponibles519 Substitutions de chaîne disponibles

500</h4>520</h4>


858| Compétence avec `context: fork` | Du type d'agent | Contenu SKILL.md | CLAUDE.md, selon le [contexte de démarrage](/docs/fr/sub-agents#what-loads-at-startup) de l'agent |878| Compétence avec `context: fork` | Du type d'agent | Contenu SKILL.md | CLAUDE.md, selon le [contexte de démarrage](/docs/fr/sub-agents#what-loads-at-startup) de l'agent |

859| Sous-agent avec champ `skills` | Corps markdown du sous-agent | Message de délégation de Claude | Compétences préchargées + CLAUDE.md, selon le [contexte de démarrage](/docs/fr/sub-agents#what-loads-at-startup) du sous-agent |879| Sous-agent avec champ `skills` | Corps markdown du sous-agent | Message de délégation de Claude | Compétences préchargées + CLAUDE.md, selon le [contexte de démarrage](/docs/fr/sub-agents#what-loads-at-startup) du sous-agent |

860 880 

861Avec `context: fork`, vous écrivez la tâche dans votre compétence et choisissez un type d'agent pour l'exécuter. Les agents Explore et Plan intégrés [ignorent CLAUDE.md et l'état git](/docs/fr/sub-agents#what-loads-at-startup) pour garder leur contexte petit, de sorte qu'une compétence forkée utilisant `agent: Explore` ne voit que le contenu SKILL.md et l'invite système propre de l'agent. Pour l'inverse, où vous définissez un sous-agent personnalisé qui utilise les compétences comme matériel de référence, voir [Subagents](/docs/fr/sub-agents#preload-skills-into-subagents).881Avec `context: fork`, vous écrivez la tâche dans votre skill et choisissez un type d'agent pour l'exécuter. Les agents Explore et Plan intégrés [démarrent sans CLAUDE.md ni l'état git](/docs/fr/sub-agents#what-loads-at-startup) pour garder leur contexte réduit. Placez tout ce dont la tâche a besoin dans votre SKILL.md. Un skill forké utilisant `agent: Explore` démarre avec ce contenu et le prompt système propre de l'agent, sans aucun de vos fichiers CLAUDE.md.

882 

883Pour l'inverse, où vous définissez un sous-agent personnalisé qui utilise les skills comme matériel de référence, voir [Subagents](/docs/fr/sub-agents#preload-skills-into-subagents).

862 884 

863<h4 id="example-research-skill-using-explore-agent">885<h4 id="example-research-skill-using-explore-agent">

864 Exemple : Compétence de recherche utilisant l'agent Explore886 Exemple : Compétence de recherche utilisant l'agent Explore


12472. Vérifiez que la compétence apparaît dans `What skills are available?`12692. Vérifiez que la compétence apparaît dans `What skills are available?`

12483. Essayez de reformuler votre demande pour correspondre plus étroitement à la description12703. Essayez de reformuler votre demande pour correspondre plus étroitement à la description

12494. Invoquez-la directement avec `/skill-name` si la compétence est invocable par l'utilisateur12714. Invoquez-la directement avec `/skill-name` si la compétence est invocable par l'utilisateur

12725. Si `/skill-name` n'est pas reconnu non plus, vérifiez si Claude Code [a refusé le nom du skill](#characters-a-skill-name-cant-hold)

1250 1273 

1251Si le YAML du frontmatter est malformé, Claude Code charge le corps de la compétence avec des métadonnées vides, donc `/skill-name` fonctionne toujours mais Claude ne peut pas faire correspondre votre `description`. Exécutez avec `--debug` pour voir l'erreur d'analyse.1274Si le YAML du frontmatter est malformé, Claude Code charge le corps de la compétence avec des métadonnées vides, donc `/skill-name` fonctionne toujours mais Claude ne peut pas faire correspondre votre `description`. Exécutez avec `--debug` pour voir l'erreur d'analyse.

1252 1275 

statusline.md +2 −2

Details

1198| `description` | string | Courte description de la tâche, comme celle que Claude a donnée lors du lancement du sous-agent |1198| `description` | string | Courte description de la tâche, comme celle que Claude a donnée lors du lancement du sous-agent |

1199| `label` | string | Court résumé de la progression de la tâche lorsque Claude Code en dispose, sinon le même texte que `description` |1199| `label` | string | Court résumé de la progression de la tâche lorsque Claude Code en dispose, sinon le même texte que `description` |

1200| `startTime` | number | Moment où la tâche a démarré, en millisecondes depuis l'epoch Unix |1200| `startTime` | number | Moment où la tâche a démarré, en millisecondes depuis l'epoch Unix |

1201| `model` | string, facultatif | ID du modèle résolu sur lequel la tâche s'exécute. Omis jusqu'à ce que le modèle soit résolu. Nécessite Claude Code v2.1.205 ou une version ultérieure |1201| `model` | string, facultatif | ID du modèle résolu sur lequel la tâche s'exécute. Omis jusqu'à ce que le modèle soit résolu |

1202| `effort` | string ou number, facultatif | Effort de raisonnement défini pour le sous-agent dans son [frontmatter de définition](/docs/fr/sub-agents#supported-frontmatter-fields) ou lors de l'invocation individuelle : `low`, `medium`, `high`, `xhigh`, `max`, ou un budget de tokens numérique. Il s'agit de la valeur configurée, et l'effort que Claude Code applique peut différer lorsque le modèle ne supporte pas ce niveau. Omis lorsqu'aucun effort n'est défini. Nécessite Claude Code v2.1.213 ou une version ultérieure |1202| `effort` | string ou number, facultatif | Effort de raisonnement défini pour le sous-agent dans son [frontmatter de définition](/docs/fr/sub-agents#supported-frontmatter-fields) ou lors de l'invocation individuelle : `low`, `medium`, `high`, `xhigh`, `max`, ou un budget de tokens numérique. Il s'agit de la valeur configurée, et l'effort que Claude Code applique peut différer lorsque le modèle ne supporte pas ce niveau. Omis lorsqu'aucun effort n'est défini. Nécessite Claude Code v2.1.213 ou une version ultérieure |

1203| `contextWindowSize` | number, facultatif | Fenêtre de contexte de `model` en tokens, calculée de la même manière que [`context_window.context_window_size`](#context-window-fields) de la barre de statut principale, vous pouvez donc rendre un pourcentage par ligne à partir de `tokenCount`. Omis lorsque `model` l'est. Nécessite Claude Code v2.1.205 ou une version ultérieure |1203| `contextWindowSize` | number, facultatif | Fenêtre de contexte de `model` en tokens, calculée de la même manière que [`context_window.context_window_size`](#context-window-fields) de la barre de statut principale, vous pouvez donc rendre un pourcentage par ligne à partir de `tokenCount`. Omis lorsque `model` l'est |

1204| `tokenCount` | number | Nombre de tokens courant du sous-agent, la valeur affichée par la ligne par défaut |1204| `tokenCount` | number | Nombre de tokens courant du sous-agent, la valeur affichée par la ligne par défaut |

1205| `tokenSamples` | array of numbers | Jusqu'aux 16 dernières lectures de `tokenCount`, une par cycle d'actualisation, de la plus ancienne à la plus récente et se terminant par la valeur actuelle |1205| `tokenSamples` | array of numbers | Jusqu'aux 16 dernières lectures de `tokenCount`, une par cycle d'actualisation, de la plus ancienne à la plus récente et se terminant par la valeur actuelle |

1206| `cwd` | string | Répertoire de travail du sous-agent : son propre répertoire lorsqu'il s'exécute dans l'un d'eux, comme un worktree isolé, sinon le répertoire de travail de la session |1206| `cwd` | string | Répertoire de travail du sous-agent : son propre répertoire lorsqu'il s'exécute dans l'un d'eux, comme un worktree isolé, sinon le répertoire de travail de la session |

sub-agents.md +63 −34

Details

30 Sous-agents intégrés30 Sous-agents intégrés

31</h2>31</h2>

32 32 

33Claude Code inclut des sous-agents intégrés que Claude utilise automatiquement le cas échéant. Chacun hérite des permissions de la conversation parent ; la plupart s'exécutent avec un ensemble d'outils restreint.33Claude Code inclut des sous-agents intégrés que Claude utilise automatiquement lorsque c'est approprié. Chacun hérite des règles de permission de la conversation parente ; la plupart s'exécutent avec un ensemble d'outils restreint.

34 34 

35Explore et Plan ignorent vos fichiers CLAUDE.md et l'instantané de l'état git pour maintenir la recherche rapide et économique. Tous les autres sous-agents intégrés et [sous-agents personnalisés](#configure-subagents) chargent les deux, sauf si sa définition définit le champ [`omitClaudeMd`](#supported-frontmatter-fields) pour ignorer les fichiers CLAUDE.md utilisateur, projet et local. Pour la ventilation complète de ce qui atteint un sous-agent, consultez [ce qui se charge au démarrage](#what-loads-at-startup).35Explore et Plan démarrent sans vos fichiers CLAUDE.md ni l'instantané du statut git afin que la recherche reste rapide et peu coûteuse. Les autres sous-agents intégrés et les [sous-agents personnalisés](#configure-subagents) chargent les deux, sauf si vous définissez [`omitClaudeMd`](#supported-frontmatter-fields) dans la définition d'un sous-agent personnalisé pour le démarrer sans les fichiers CLAUDE.md utilisateur, projet et locaux. Pour le détail complet de ce qui parvient à un sous-agent, consultez [ce qui est chargé au démarrage](#what-loads-at-startup).

36 36 

37<Tabs>37<Tabs>

38 <Tab title="Explore">38 <Tab title="Explore">

39 Un agent rapide et en lecture seule optimisé pour la recherche et l'analyse de bases de code.39 Un agent rapide, en lecture seule, optimisé pour rechercher et analyser des bases de code.

40 40 

41 * **Modèle** : le modèle de la conversation principale. Lorsque la conversation principale s'exécute sur Fable, le modèle d'Explore dépend de votre mode de connexion :41 * **Modèle** : le modèle de la conversation principale. Lorsque la conversation principale s'exécute sur Fable, le modèle d'Explore dépend de votre mode de connexion :

42 * Avec un abonnement Claude, un compte Anthropic Console ou une [passerelle LLM](/docs/fr/llm-gateway) atteinte via `ANTHROPIC_BASE_URL`, Explore s'exécute sur le modèle Opus vers lequel l'[alias `opus`](/docs/fr/model-config#model-aliases) est résolu.42 * Avec un abonnement Claude, un compte Anthropic Console ou une [passerelle LLM](/docs/fr/llm-gateway) atteinte via `ANTHROPIC_BASE_URL`, Explore s'exécute sur le modèle Opus vers lequel l'[alias `opus`](/docs/fr/model-config#model-aliases) est résolu.

43 * Sur Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, [Claude Platform on AWS](/docs/fr/claude-platform-on-aws) ou une [passerelle Claude apps](/docs/fr/claude-apps-gateway), Explore reste sur le modèle de la conversation principale.43 * Sur Amazon Bedrock, Agent Platform de Google Cloud, Microsoft Foundry, [Claude Platform on AWS](/docs/fr/claude-platform-on-aws) ou une [passerelle Claude apps](/docs/fr/claude-apps-gateway), Explore reste sur le modèle de la conversation principale.

44 * **Outils** : outils en lecture seule ; Write et Edit sont refusés44 * **Outils** : outils en lecture seule ; Write et Edit sont refusés

45 * **Objectif** : découverte de fichiers, recherche de code, exploration de base de code45 * **Objectif** : découverte de fichiers, recherche de code, exploration de la base de code

46 46 

47 Un [sous-agent utilisateur ou projet](#choose-the-subagent-scope) nommé `Explore` remplace le sous-agent intégré et conserve son propre champ `model`, donc définissez-en un avec `model: haiku` pour exécuter l'exploration sur un modèle moins coûteux. Pour forcer un seul modèle sur chaque sous-agent, Explore compris, consultez [Exécuter chaque sous-agent sur un modèle](#run-every-subagent-on-one-model).47 Un [sous-agent utilisateur ou projet](#choose-the-subagent-scope) nommé `Explore` remplace le sous-agent intégré et conserve son propre champ `model` : définissez-en donc un avec `model: haiku` pour exécuter l'exploration sur un modèle moins coûteux. Pour imposer un même modèle à tous les sous-agents, Explore compris, consultez [Exécuter tous les sous-agents sur un seul modèle](#run-every-subagent-on-one-model).

48 48 

49 Claude délègue à Explore lorsqu'il doit rechercher ou comprendre une base de code sans apporter de modifications. Cela garde les résultats d'exploration en dehors du contexte de votre conversation principale.49 Claude délègue à Explore lorsqu'il doit rechercher ou comprendre une base de code sans apporter de modifications. Cela permet de garder les résultats d'exploration hors du contexte de votre conversation principale.

50 50 

51 Lors de l'invocation d'Explore, Claude spécifie un niveau de minutie : **quick** pour les recherches ciblées, **medium** pour l'exploration équilibrée, ou **very thorough** pour l'analyse complète.51 Lorsqu'il invoque Explore, Claude spécifie un niveau de minutie : **quick** pour des recherches ciblées, **medium** pour une exploration équilibrée, ou **very thorough** pour une analyse exhaustive.

52 </Tab>52 </Tab>

53 53 

54 <Tab title="Plan">54 <Tab title="Plan">

55 Un agent de recherche utilisé pendant le [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) pour rassembler le contexte avant de présenter un plan.55 Un agent de recherche utilisé pendant le [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) pour rassembler du contexte avant de présenter un plan.

56 56 

57 * **Modèle** : hérité de la conversation principale, sauf si vous définissez `CLAUDE_CODE_SUBAGENT_MODEL` et [le forcez sur chaque sous-agent](#run-every-subagent-on-one-model)57 * **Modèle** : hérite de la conversation principale, sauf si vous définissez `CLAUDE_CODE_SUBAGENT_MODEL` et [l'imposez à tous les sous-agents](#run-every-subagent-on-one-model)

58 * **Outils** : outils en lecture seule ; Write et Edit sont refusés58 * **Outils** : outils en lecture seule ; Write et Edit sont refusés

59 * **Objectif** : recherche de base de code pour la planification59 * **Objectif** : recherche dans la base de code pour la planification

60 60 

61 Lorsque vous êtes en mode plan et que Claude doit comprendre votre base de code, il délègue la recherche au sous-agent Plan afin que la sortie d'exploration reste dans une fenêtre de contexte séparée tandis que la conversation principale reste en lecture seule.61 Lorsque vous êtes en mode plan et que Claude doit comprendre votre base de code, il délègue la recherche au sous-agent Plan afin que le résultat de l'exploration reste dans une fenêtre de contexte distincte tandis que la conversation principale reste en lecture seule.

62 </Tab>62 </Tab>

63 63 

64 <Tab title="General-purpose">64 <Tab title="General-purpose">

65 Un agent capable pour les tâches complexes et multi-étapes qui nécessitent à la fois l'exploration et l'action.65 Un agent performant pour les tâches complexes en plusieurs étapes qui nécessitent à la fois exploration et action.

66 66 

67 * **Modèle** : le modèle [`CLAUDE_CODE_SUBAGENT_MODEL`](#choose-a-model) si vous en définissez un et que rien d'autre n'assigne un modèle d'une autre manière, sinon le modèle de la conversation principale ; [Choisir un modèle](#choose-a-model) indique l'ordre complet, et [Exécuter chaque sous-agent sur un modèle](#run-every-subagent-on-one-model) montre comment faire en sorte que la variable remplace ces sources67 * **Modèle** : le modèle [`CLAUDE_CODE_SUBAGENT_MODEL`](#choose-a-model) si vous en définissez un et qu'aucun autre mécanisme n'attribue de modèle, sinon le modèle de la conversation principale ; [Choisir un modèle](#choose-a-model) indique l'ordre complet, et [Exécuter tous les sous-agents sur un seul modèle](#run-every-subagent-on-one-model) montre comment faire en sorte que la variable remplace ces sources

68 * **Outils** : tous les outils [disponibles pour les sous-agents](#available-tools)68 * **Outils** : tous les outils [disponibles pour les sous-agents](#available-tools)

69 * **Objectif** : recherche complexe, opérations multi-étapes, modifications de code69 * **Objectif** : recherche complexe, opérations en plusieurs étapes, modifications de code

70 70 

71 Claude délègue à general-purpose lorsque la tâche nécessite à la fois l'exploration et la modification, un raisonnement complexe pour interpréter les résultats, ou plusieurs étapes dépendantes.71 Claude délègue à general-purpose lorsque la tâche nécessite à la fois exploration et modification, un raisonnement complexe pour interpréter les résultats, ou plusieurs étapes dépendantes.

72 </Tab>72 </Tab>

73 73 

74 <Tab title="Other">74 <Tab title="Other">

75 Claude Code inclut des agents d'assistance supplémentaires pour des tâches spécifiques. Ceux-ci sont généralement invoqués automatiquement, vous n'avez donc pas besoin de les utiliser directement.75 Claude Code inclut des agents auxiliaires supplémentaires pour des tâches spécifiques. Ceux-ci sont généralement invoqués automatiquement, vous n'avez donc pas besoin de les utiliser directement.

76 76 

77 | Agent | Modèle | Quand Claude l'utilise |77 | Agent | Modèle | Quand Claude l'utilise |

78 | :- | :- | :- |78 | :- | :- | :- |

79 | claude | Aucun qui lui soit propre ; suit l'[ordre des modèles](#choose-a-model) lorsque Claude le génère en tant que sous-agent | Lorsqu'une tâche ne correspond pas à un agent plus spécialisé. Un agent fourre-tout avec tous les outils [disponibles pour les sous-agents](#available-tools). Également l'agent par défaut pour une [session en arrière-plan](/docs/fr/agent-view) distribuée ; [le mode de permission dans lequel il démarre](/docs/fr/agent-view#permission-mode-model-and-effort) dépend de la façon dont la session a été lancée |79 | claude | Aucun qui lui soit propre ; suit l'[ordre des modèles](#choose-a-model) lorsque Claude le lance en tant que sous-agent | Lorsqu'une tâche ne correspond à aucun agent plus spécialisé. Un agent polyvalent disposant de tous les outils [disponibles pour les sous-agents](#available-tools). C'est aussi l'agent par défaut d'une [session en arrière-plan](/docs/fr/agent-view) lancée ; [le mode de permission dans lequel il démarre](/docs/fr/agent-view#permission-mode-model-and-effort) dépend de la manière dont la session a été démarrée |

80 | statusline-setup | Sonnet | Lorsque vous exécutez `/statusline` pour configurer votre ligne d'état |80 | statusline-setup | Sonnet | Lorsque vous exécutez `/statusline` pour configurer votre barre de statut |

81 | claude-code-guide | Haiku | Lorsque vous posez des questions sur les fonctionnalités de Claude Code |81 | claude-code-guide | Haiku | Lorsque vous posez des questions sur les fonctionnalités de Claude Code |

82 </Tab>82 </Tab>

83</Tabs>83</Tabs>


85Les sous-agents intégrés sont enregistrés par défaut dans les sessions interactives. Pour les restreindre :85Les sous-agents intégrés sont enregistrés par défaut dans les sessions interactives. Pour les restreindre :

86 86 

87* Pour bloquer un type intégré spécifique, ajoutez-le à `permissions.deny` comme indiqué dans [Désactiver des sous-agents spécifiques](#disable-specific-subagents).87* Pour bloquer un type intégré spécifique, ajoutez-le à `permissions.deny` comme indiqué dans [Désactiver des sous-agents spécifiques](#disable-specific-subagents).

88* Pour empêcher Claude de déléguer à un sous-agent, refusez l'outil `Agent` lui-même avec [`permissions.deny`](/docs/fr/permissions#tool-specific-permission-rules).88* Pour empêcher Claude de déléguer à quelque sous-agent que ce soit, refusez l'outil `Agent` lui-même avec [`permissions.deny`](/docs/fr/permissions#tool-specific-permission-rules).

89* Pour supprimer uniquement les sous-agents intégrés `Explore` et `Plan`, définissez [`CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS=1`](/docs/fr/env-vars). Claude lit et explore les fichiers directement au lieu de déléguer à ces sous-agents. Nécessite Claude Code v2.1.198 ou version ultérieure.89* Pour supprimer uniquement les sous-agents intégrés `Explore` et `Plan`, définissez [`CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS=1`](/docs/fr/env-vars). Claude lit et explore alors les fichiers directement au lieu de leur déléguer ces tâches. Nécessite Claude Code v2.1.198 ou une version ultérieure.

90* En [mode non-interactif](/docs/fr/headless) et le [SDK Agent](/docs/fr/agent-sdk/overview), définissez [`CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS=1`](/docs/fr/env-vars) pour supprimer tous les types intégrés et fournir uniquement les vôtres.90* En [mode non interactif](/docs/fr/headless) et dans l'[Agent SDK](/docs/fr/agent-sdk/overview), définissez [`CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS=1`](/docs/fr/env-vars) pour supprimer tous les types intégrés et ne fournir que les vôtres.

91 91 

92Un appel d'outil Agent qui omet `subagent_type` échoue avec [`subagent_type is required`](/docs/fr/errors#subagent-type-is-required) lorsque la session n'a pas de sous-agent `general-purpose` sur lequel se replier.92Un appel d'outil Agent qui omet `subagent_type` échoue avec [`subagent_type is required`](/docs/fr/errors#subagent-type-is-required) lorsque la session ne dispose d'aucun sous-agent `general-purpose` auquel se rabattre.

93 93 

94Au-delà de ces sous-agents intégrés, vous pouvez créer les vôtres avec des invites personnalisées, des restrictions d'outils, des modes de permission, des hooks et des skills. Les sections suivantes montrent comment commencer et personnaliser les sous-agents.94Au-delà de ces sous-agents intégrés, vous pouvez créer les vôtres avec des prompts personnalisés, des restrictions d'outils, des modes de permission, des hooks et des skills. Les sections suivantes montrent comment démarrer et personnaliser les sous-agents.

95 95 

96<h2 id="quickstart-create-your-first-subagent">96<h2 id="quickstart-create-your-first-subagent">

97 Démarrage rapide : créer votre premier sous-agent97 Démarrage rapide : créer votre premier sous-agent


185 185 

186Claude Code analyse `.claude/agents/` et `~/.claude/agents/` de manière récursive, vous pouvez donc organiser les définitions dans des sous-dossiers tels que `agents/review/` ou `agents/research/`. Le chemin du sous-répertoire n'affecte pas la façon dont un sous-agent est identifié ou invoqué, car l'identité provient uniquement du champ frontmatter `name`.186Claude Code analyse `.claude/agents/` et `~/.claude/agents/` de manière récursive, vous pouvez donc organiser les définitions dans des sous-dossiers tels que `agents/review/` ou `agents/research/`. Le chemin du sous-répertoire n'affecte pas la façon dont un sous-agent est identifié ou invoqué, car l'identité provient uniquement du champ frontmatter `name`.

187 187 

188Gardez les valeurs `name` uniques dans toute l'arborescence : si deux fichiers dans le même répertoire `.claude/agents/`, y compris ses sous-dossiers, déclarent le même nom, Claude Code en charge un seul, choisi par l'ordre de lecture du système de fichiers plutôt que par une priorité documentée. Entre les répertoires de projet imbriqués, la définition la plus proche du répertoire de travail l'emporte, comme décrit ci-dessus. La vérification de configuration [`/doctor`](/docs/fr/commands#all-commands) signale les fichiers dans le même répertoire qui partagent un nom et propose de renommer ou de supprimer tous sauf un. Avant la v2.1.205, `/doctor` ouvrait un écran de diagnostics qui listait les doublons et montrait quelle définition était active.188Gardez les valeurs `name` uniques dans toute l'arborescence : si deux fichiers dans le même répertoire `.claude/agents/`, y compris ses sous-dossiers, déclarent le même nom, Claude Code en charge un seul, choisi par l'ordre de lecture du système de fichiers plutôt que par une priorité documentée. Entre les répertoires de projet imbriqués, la définition la plus proche du répertoire de travail l'emporte, comme décrit ci-dessus. La vérification de configuration [`/doctor`](/docs/fr/commands#all-commands) signale les fichiers dans le même répertoire qui partagent un nom et propose de renommer ou de supprimer tous sauf un.

189 189 

190Les répertoires `agents/` des plugins sont également analysés de manière récursive. Contrairement aux portées de projet et utilisateur, un sous-dossier à l'intérieur du répertoire `agents/` d'un plugin devient partie de l'[identifiant limité](#invoke-subagents-explicitly) : un fichier à `agents/review/security.md` dans le plugin `my-plugin` s'enregistre comme `my-plugin:review:security`.190Les répertoires `agents/` des plugins sont également analysés de manière récursive. Contrairement aux portées de projet et utilisateur, un sous-dossier à l'intérieur du répertoire `agents/` d'un plugin devient partie de l'[identifiant limité](#invoke-subagents-explicitly) : un fichier à `agents/review/security.md` dans le plugin `my-plugin` s'enregistre comme `my-plugin:review:security`.

191 191 


234Chaque clé de niveau supérieur dans le JSON est le nom d'un agent, et sa valeur est la définition de cet agent. Ne commencez pas un nom par `-`. Une définition prend ces champs :234Chaque clé de niveau supérieur dans le JSON est le nom d'un agent, et sa valeur est la définition de cet agent. Ne commencez pas un nom par `-`. Une définition prend ces champs :

235 235 

236* **`prompt`** : le prompt système de l'agent, équivalent au corps markdown dans les sous-agents basés sur fichier. `prompt` peut être vide. Si vous sélectionnez un agent avec un `prompt` vide et aucun champ `memory` comme agent de la session avec `--agent`, le prompt système de la session reste inchangé. Un `prompt` vide nécessite Claude Code v2.1.281 ou ultérieur.236* **`prompt`** : le prompt système de l'agent, équivalent au corps markdown dans les sous-agents basés sur fichier. `prompt` peut être vide. Si vous sélectionnez un agent avec un `prompt` vide et aucun champ `memory` comme agent de la session avec `--agent`, le prompt système de la session reste inchangé. Un `prompt` vide nécessite Claude Code v2.1.281 ou ultérieur.

237* **[Champs de frontmatter](#supported-frontmatter-fields)** : `description`, `tools`, `disallowedTools`, `model`, `permissionMode`, `mcpServers`, `hooks`, `maxTurns`, `skills`, `initialPrompt`, `memory`, `effort`, `background`, `omitClaudeMd` et `isolation`.237* **[Champs de frontmatter](#supported-frontmatter-fields)** : `description`, `tools`, `disallowedTools`, `model`, `permissionMode`, `mcpServers`, `hooks`, `maxTurns`, `autoCompactWindow`, `skills`, `initialPrompt`, `memory`, `effort`, `background`, `omitClaudeMd` et `isolation`.

238* **Champs ignorés** : `color` et `experimental` ne sont pas acceptés ici et sont ignorés plutôt que rejetés.238* **Champs ignorés** : `color` et `experimental` ne sont pas acceptés ici et sont ignorés plutôt que rejetés.

239 239 

240Pour savoir ce que Claude Code fait avec une valeur qu'il ne peut pas charger, et les flags et variables d'environnement qui ignorent cette vérification, consultez [`Invalid --agents configuration`](/docs/fr/errors#invalid-agents-configuration).240Pour savoir ce que Claude Code fait avec une valeur qu'il ne peut pas charger, et les flags et variables d'environnement qui ignorent cette vérification, consultez [`Invalid --agents configuration`](/docs/fr/errors#invalid-agents-configuration).


285 285 

286Un sous-agent démarre dans le répertoire de travail actuel de la conversation principale. Au sein d'un sous-agent, les commandes `cd` ne persistent pas entre les appels d'outils Bash ou PowerShell et n'affectent pas le répertoire de travail de la conversation principale. Pour donner au sous-agent une copie isolée du dépôt à la place, définissez [`isolation: worktree`](#supported-frontmatter-fields).286Un sous-agent démarre dans le répertoire de travail actuel de la conversation principale. Au sein d'un sous-agent, les commandes `cd` ne persistent pas entre les appels d'outils Bash ou PowerShell et n'affectent pas le répertoire de travail de la conversation principale. Pour donner au sous-agent une copie isolée du dépôt à la place, définissez [`isolation: worktree`](#supported-frontmatter-fields).

287 287 

288Un sous-agent avec `isolation: worktree` exécute ses commandes Bash et PowerShell à l'intérieur de son worktree. Une commande dont le répertoire de travail se résout à votre extraction principale à la place, par exemple parce que le répertoire worktree a été supprimé pendant que le sous-agent s'exécutait, échoue avec une erreur. Avant la v2.1.203, une telle commande pouvait s'exécuter dans l'extraction principale.288Un sous-agent avec `isolation: worktree` exécute ses commandes Bash et PowerShell à l'intérieur de son worktree. Une commande dont le répertoire de travail se résout à votre extraction principale à la place, par exemple parce que le répertoire worktree a été supprimé pendant que le sous-agent s'exécutait, échoue avec une erreur.

289 289 

290Cette vérification du répertoire de travail couvre l'ensemble du dépôt contenant le répertoire à partir duquel vous avez lancé Claude Code. Lorsque votre session s'exécute dans son propre [worktree](/docs/fr/worktrees) lié, la vérification couvre également l'extraction principale à partir de laquelle ce worktree est lié. Avant la v2.1.210, la vérification couvrait uniquement le répertoire de lancement lui-même. Une commande dont le répertoire de travail se résolvait ailleurs dans le même dépôt, comme la racine du dépôt lorsque vous avez lancé Claude Code à partir d'un sous-répertoire monorepo, s'y exécutait au lieu d'échouer.290Cette vérification du répertoire de travail couvre l'ensemble du dépôt contenant le répertoire à partir duquel vous avez lancé Claude Code. Lorsque votre session s'exécute dans son propre [worktree](/docs/fr/worktrees) lié, la vérification couvre également l'extraction principale à partir de laquelle ce worktree est lié. Avant la v2.1.210, la vérification couvrait uniquement le répertoire de lancement lui-même. Une commande dont le répertoire de travail se résolvait ailleurs dans le même dépôt, comme la racine du dépôt lorsque vous avez lancé Claude Code à partir d'un sous-répertoire monorepo, s'y exécutait au lieu d'échouer.

291 291 


306 306 

307Configurez un sous-agent avec du [frontmatter](/docs/fr/glossary#frontmatter) YAML entre les marqueurs `---` en haut de son fichier, et écrivez son prompt système en Markdown après le `---` de fermeture. Seuls `name` et `description` sont obligatoires.307Configurez un sous-agent avec du [frontmatter](/docs/fr/glossary#frontmatter) YAML entre les marqueurs `---` en haut de son fichier, et écrivez son prompt système en Markdown après le `---` de fermeture. Seuls `name` et `description` sont obligatoires.

308 308 

309Les noms de champs multi-mots utilisent camelCase, tels que `maxTurns` et `disallowedTools`, et doivent correspondre exactement au tableau : Claude Code ignore un champ qu'il ne reconnaît pas sans signaler une erreur. Pour savoir pourquoi un fichier de sous-agent ne s'est pas chargé, consultez [Fichiers de sous-agent que Claude Code ignore](#subagent-files-claude-code-skips).309Les noms de champs multi-mots utilisent camelCase, tels que `maxTurns` et `disallowedTools`, et doivent correspondre exactement au tableau : Claude Code ignore un champ qu'il ne reconnaît pas sans signaler une erreur.

310 

311* Pour trouver un champ mal orthographié dans un sous-agent qui s'est chargé, exécutez [`claude --debug`](/docs/fr/cli-reference#cli-flags) dans votre shell et recherchez `does not recognize or apply` dans le journal de débogage à `~/.claude/debug/<session-id>.txt`. Le journal de débogage nomme jusqu'à cinq champs de niveau supérieur du fichier du sous-agent que Claude Code ne reconnaît pas, avec le nom probablement voulu lorsqu'un champ pris en charge est proche. Nécessite Claude Code v2.1.296 ou ultérieur.

312* Pour savoir pourquoi un fichier de sous-agent ne s'est pas chargé, consultez [Fichiers de sous-agent que Claude Code ignore](#subagent-files-claude-code-skips).

310 313 

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

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


317| `model` | Non | [Modèle](#choose-a-model) à utiliser : `sonnet`, `opus`, `haiku`, `fable`, un ID de modèle complet tel que `claude-opus-5-5`, ou `inherit`. Lorsque vous l'omettez, Claude Code choisit le modèle dans l'[ordre du modèle de sous-agent](#choose-a-model) |320| `model` | Non | [Modèle](#choose-a-model) à utiliser : `sonnet`, `opus`, `haiku`, `fable`, un ID de modèle complet tel que `claude-opus-5-5`, ou `inherit`. Lorsque vous l'omettez, Claude Code choisit le modèle dans l'[ordre du modèle de sous-agent](#choose-a-model) |

318| `permissionMode` | Non | [Mode de permission](#permission-modes) : `default`, `acceptEdits`, `auto`, `dontAsk`, `bypassPermissions`, `plan`, ou `manual` comme alias pour `default`. Ignoré pour les [sous-agents de plugin](#choose-the-subagent-scope) |321| `permissionMode` | Non | [Mode de permission](#permission-modes) : `default`, `acceptEdits`, `auto`, `dontAsk`, `bypassPermissions`, `plan`, ou `manual` comme alias pour `default`. Ignoré pour les [sous-agents de plugin](#choose-the-subagent-scope) |

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

323| `autoCompactWindow` | Non | Abaisser la [fenêtre de compaction automatique](#subagent-auto-compact-window) pour ce sous-agent à un nombre de tokens compris entre `100000` et `1000000`. Nécessite Claude Code v2.1.296 ou ultérieur |

320| `skills` | Non | [Skills](/docs/fr/skills) à précharger dans le contexte du sous-agent au démarrage. Le contenu complet du skill est injecté, pas seulement la description. Les sous-agents peuvent toujours invoquer les skills de projet, utilisateur et plugin non listés via l'outil Skill |324| `skills` | Non | [Skills](/docs/fr/skills) à précharger dans le contexte du sous-agent au démarrage. Le contenu complet du skill est injecté, pas seulement la description. Les sous-agents peuvent toujours invoquer les skills de projet, utilisateur et plugin non listés via l'outil Skill |

321| `mcpServers` | Non | [Serveurs MCP](/docs/fr/mcp) disponibles pour ce sous-agent. Chaque entrée est soit un nom de serveur référençant un serveur déjà configuré (par exemple, `"slack"`) soit une définition en ligne avec le nom du serveur comme clé et une [configuration de serveur MCP](/docs/fr/mcp#installing-mcp-servers) complète comme valeur. Ignoré pour les [sous-agents de plugin](#choose-the-subagent-scope) |325| `mcpServers` | Non | [Serveurs MCP](/docs/fr/mcp) disponibles pour ce sous-agent. Chaque entrée est soit un nom de serveur référençant un serveur déjà configuré (par exemple, `"slack"`) soit une définition en ligne avec le nom du serveur comme clé et une [configuration de serveur MCP](/docs/fr/mcp#installing-mcp-servers) complète comme valeur. Ignoré pour les [sous-agents de plugin](#choose-the-subagent-scope) |

322| `hooks` | Non | [Hooks de cycle de vie](#define-hooks-for-subagents) limités à ce sous-agent. Ignoré pour les [sous-agents de plugin](#choose-the-subagent-scope) |326| `hooks` | Non | [Hooks de cycle de vie](#define-hooks-for-subagents) limités à ce sous-agent. Ignoré pour les [sous-agents de plugin](#choose-the-subagent-scope) |

323| `memory` | Non | [Portée de la mémoire persistante](#enable-persistent-memory) : `user`, `project` ou `local`. Active l'apprentissage entre sessions |327| `memory` | Non | [Portée de la mémoire persistante](#enable-persistent-memory) : `user`, `project` ou `local`. Active l'apprentissage entre sessions |

324| `background` | Non | Définir sur `true` pour garder ce sous-agent en arrière-plan même lorsque Claude demande de l'exécuter au premier plan. Lorsque le [mode fork](#turn-fork-mode-on-or-off) est activé, Claude Code exécute déjà les sous-agents que Claude génère [en arrière-plan](#run-subagents-in-foreground-or-background) |328| `background` | Non | Définir sur `true` pour garder ce sous-agent en arrière-plan même lorsque Claude demande de l'exécuter au premier plan. Lorsque le [mode fork](#turn-fork-mode-on-or-off) est activé, Claude Code exécute déjà les sous-agents que Claude génère [en arrière-plan](#run-subagents-in-foreground-or-background) |

325| `omitClaudeMd` | Non | Définir sur `true` pour lancer ce sous-agent sans les fichiers CLAUDE.md utilisateur, projet et local ; les [fichiers de politique gérée](/docs/fr/memory#how-claude-md-files-load) se chargent toujours, sauf pour les [sous-agents gérés](#choose-the-subagent-scope). Utilisez-le pour les sous-agents qui prennent tout ce dont ils ont besoin du [prompt de délégation](#what-loads-at-startup). Ignoré lorsque l'agent s'exécute en tant qu'agent de session principal via `--agent` ou le paramètre `agent`. Nécessite Claude Code v2.1.271 ou ultérieur |329| `omitClaudeMd` | Non | Définir sur `true` pour lancer ce sous-agent sans les fichiers CLAUDE.md utilisateur, projet et local dans son [contexte initial](#what-loads-at-startup) ; les [fichiers de politique gérée](/docs/fr/memory#how-claude-md-files-load) se chargent toujours, sauf pour les [sous-agents gérés](#choose-the-subagent-scope). Utilisez-le pour les sous-agents qui prennent tout ce dont ils ont besoin du prompt de délégation. Ignoré lorsque l'agent s'exécute en tant qu'agent de session principal via `--agent` ou le paramètre `agent`. Nécessite Claude Code v2.1.271 ou ultérieur |

326| `effort` | Non | Niveau d'effort lorsque ce sous-agent est actif. Remplace le niveau d'effort de la session, mais pas la variable d'environnement [`CLAUDE_CODE_EFFORT_LEVEL`](/docs/fr/env-vars#variables). Options : `low`, `medium`, `high`, `xhigh`, `max` ; les niveaux disponibles dépendent du modèle. Consultez [Choisir un niveau d'effort](#choose-an-effort-level) |330| `effort` | Non | Niveau d'effort lorsque ce sous-agent est actif. Remplace le niveau d'effort de la session, mais pas la variable d'environnement [`CLAUDE_CODE_EFFORT_LEVEL`](/docs/fr/env-vars#variables). Options : `low`, `medium`, `high`, `xhigh`, `max` ; les niveaux disponibles dépendent du modèle. Consultez [Choisir un niveau d'effort](#choose-an-effort-level) |

327| `isolation` | Non | Définir sur `worktree` pour exécuter le sous-agent dans un [git worktree](/docs/fr/worktrees) temporaire, ce qui lui donne une copie isolée du dépôt dont la branche est créée par défaut à partir de votre [branche par défaut](/docs/fr/worktrees#choose-the-base-branch) plutôt que du `HEAD` de la session parent. Le worktree est automatiquement nettoyé si le sous-agent n'apporte aucune modification |331| `isolation` | Non | Définir sur `worktree` pour exécuter le sous-agent dans un [git worktree](/docs/fr/worktrees) temporaire, ce qui lui donne une copie isolée du dépôt dont la branche est créée par défaut à partir de votre [branche par défaut](/docs/fr/worktrees#choose-the-base-branch) plutôt que du `HEAD` de la session parent. Le worktree est automatiquement nettoyé si le sous-agent n'apporte aucune modification |

328| `color` | Non | Couleur d'affichage pour le sous-agent dans la liste des tâches et la transcription. Accepte `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink` ou `cyan` |332| `color` | Non | Couleur d'affichage pour le sous-agent dans la liste des tâches et la transcription. Accepte `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink` ou `cyan` |


914claude --agent code-reviewer918claude --agent code-reviewer

915```919```

916 920 

917À moins que le [prompt de l'agent soit vide](#choose-the-subagent-scope), le prompt système d'un sous-agent personnalisé remplace entièrement le prompt système par défaut de Claude Code, de la même manière que [`--system-prompt`](/docs/fr/cli-reference) le fait. Les fichiers `CLAUDE.md` et la mémoire du projet se chargent toujours via le flux de messages normal, même lorsque la définition de l'agent définit [`omitClaudeMd`](#supported-frontmatter-fields).921À moins que le [prompt de l'agent soit vide](#choose-the-subagent-scope), le prompt système d'un sous-agent personnalisé remplace entièrement le prompt système par défaut de Claude Code, de la même manière que [`--system-prompt`](/docs/fr/cli-reference) le fait. Les fichiers `CLAUDE.md` et la mémoire du projet se chargent toujours via le flux de messages normal, même lorsque la définition de l'agent définit [`omitClaudeMd`](#supported-frontmatter-fields). Si vous exécutez la session avec `-p` en tant qu'agent personnalisé qui a son propre prompt, elle démarre également sans l'[instantané du statut git](/docs/fr/settings-reference#includegitinstructions).

918 922 

919Le nom de l'agent apparaît comme `@<name>` dans l'en-tête de démarrage pour que vous puissiez confirmer qu'il est actif.923Le nom de l'agent apparaît comme `@<name>` dans l'en-tête de démarrage pour que vous puissiez confirmer qu'il est actif.

920 924 


1150* **Fichiers CLAUDE.md** : chaque niveau de la [hiérarchie CLAUDE.md](/docs/fr/memory#how-claude-md-files-load) que la conversation principale charge, y compris `~/.claude/CLAUDE.md`, les règles du projet, `CLAUDE.local.md`, les fichiers de politique gérés, et tous les fichiers [`AGENTS.md`](/docs/fr/memory#agents-md) chargés en tant qu'instructions du projet. Les agents Explore et Plan intégrés ignorent cela. Un sous-agent dont la définition définit [`omitClaudeMd`](#supported-frontmatter-fields) charge uniquement les fichiers de politique gérés, ou aucun lorsque la définition provient des [paramètres gérés](#choose-the-subagent-scope).1154* **Fichiers CLAUDE.md** : chaque niveau de la [hiérarchie CLAUDE.md](/docs/fr/memory#how-claude-md-files-load) que la conversation principale charge, y compris `~/.claude/CLAUDE.md`, les règles du projet, `CLAUDE.local.md`, les fichiers de politique gérés, et tous les fichiers [`AGENTS.md`](/docs/fr/memory#agents-md) chargés en tant qu'instructions du projet. Les agents Explore et Plan intégrés ignorent cela. Un sous-agent dont la définition définit [`omitClaudeMd`](#supported-frontmatter-fields) charge uniquement les fichiers de politique gérés, ou aucun lorsque la définition provient des [paramètres gérés](#choose-the-subagent-scope).

1151* **Statut Git** : un instantané que Claude Code lit de votre dépôt lorsque le sous-agent démarre. Pour un sous-agent dans [son propre worktree](/docs/fr/worktrees#isolate-subagents-with-worktrees) de ce dépôt, l'instantané affiche la branche, le statut et les commits récents du worktree. Absent en dehors d'un dépôt Git ou chaque fois que l'instantané est désactivé ; voir [`includeGitInstructions`](/docs/fr/settings-reference#includegitinstructions). Explore et Plan l'ignorent indépendamment.1155* **Statut Git** : un instantané que Claude Code lit de votre dépôt lorsque le sous-agent démarre. Pour un sous-agent dans [son propre worktree](/docs/fr/worktrees#isolate-subagents-with-worktrees) de ce dépôt, l'instantané affiche la branche, le statut et les commits récents du worktree. Absent en dehors d'un dépôt Git ou chaque fois que l'instantané est désactivé ; voir [`includeGitInstructions`](/docs/fr/settings-reference#includegitinstructions). Explore et Plan l'ignorent indépendamment.

1152* **Skills préchargés** : contenu complet de tout skill nommé dans le champ [`skills`](#preload-skills-into-subagents) de l'agent. Les agents intégrés ne préchargent pas les skills.1156* **Skills préchargés** : contenu complet de tout skill nommé dans le champ [`skills`](#preload-skills-into-subagents) de l'agent. Les agents intégrés ne préchargent pas les skills.

1153* **Roster des frères et sœurs** : un [rappel système](/docs/fr/glossary#system-reminder) listant `main` et tous les autres agents nommés dans la session, chacun une valeur `to` valide pour [`SendMessage`](#resume-subagents). Nécessite Claude Code v2.1.206 ou ultérieure. Le roster n'apparaît que lorsque les outils du sous-agent incluent `SendMessage` et qu'au moins un autre agent a un nom, que Claude l'ait nommé lors de sa génération ou qu'il s'exécute en tant que coéquipier [équipe d'agents](/docs/fr/agent-teams). C'est un instantané pris lorsque le sous-agent démarre, de sorte que les agents nommés plus tard n'apparaissent pas.1157* **Roster des frères et sœurs** : un [rappel système](/docs/fr/glossary#system-reminder) listant `main` et tous les autres agents nommés dans la session, chacun une valeur `to` valide pour [`SendMessage`](#resume-subagents). Le roster n'apparaît que lorsque les outils du sous-agent incluent `SendMessage` et qu'au moins un autre agent a un nom, que Claude l'ait nommé lors de sa génération ou qu'il s'exécute en tant que coéquipier [équipe d'agents](/docs/fr/agent-teams). C'est un instantané pris lorsque le sous-agent démarre, de sorte que les agents nommés plus tard n'apparaissent pas.

1154 1158 

1155Pour lancer l'un de vos propres sous-agents sans les fichiers CLAUDE.md utilisateur, projet et local, définissez [`omitClaudeMd: true`](#supported-frontmatter-fields) dans son frontmatter ou `--agents` JSON.1159Pour lancer l'un de vos propres sous-agents sans les fichiers CLAUDE.md utilisateur, projet et local, définissez [`omitClaudeMd: true`](#supported-frontmatter-fields) dans son frontmatter ou `--agents` JSON. Pour Explore, Plan et les sous-agents avec `omitClaudeMd`, le `CLAUDE.md` d'un sous-répertoire et les [règles limitées à un chemin](/docs/fr/memory#path-specific-rules) correspondantes se [chargent](/docs/fr/memory#how-claude-md-files-load) toujours lorsque le sous-agent travaille avec des fichiers qui s'y trouvent.

1156 1160 

1157La conversation principale a toujours votre CLAUDE.md complet lorsqu'elle lit les résultats de ces sous-agents, de sorte que la plupart des règles n'ont pas besoin d'atteindre le sous-agent lui-même. Si une règle doit, comme « ignorer le répertoire `vendor/` », reformulez-la dans le prompt que vous donnez à Claude lors de la délégation.1161La conversation principale a toujours votre CLAUDE.md complet lorsqu'elle lit les résultats de ces sous-agents, de sorte que la plupart des règles n'ont pas besoin d'atteindre le sous-agent lui-même. Si une règle doit, comme « ignorer le répertoire `vendor/` », reformulez-la dans le prompt que vous donnez à Claude lors de la délégation.

1158 1162 


1196 1200 

1197Pendant que [la ligne de ce sous-agent est toujours dans le panneau des sous-agents](#run-subagents-in-foreground-or-background), tapez dans sa transcription pour le reprendre vous-même. Après cela, un message de Claude peut le reprendre automatiquement à nouveau.1201Pendant que [la ligne de ce sous-agent est toujours dans le panneau des sous-agents](#run-subagents-in-foreground-or-background), tapez dans sa transcription pour le reprendre vous-même. Après cela, un message de Claude peut le reprendre automatiquement à nouveau.

1198 1202 

1199La reprise démarre une nouvelle exécution de l'agent sous le même ID, de sorte qu'un sous-agent qui avait déjà échoué ou s'était terminé s'affiche à nouveau comme en cours d'exécution dans la liste des tâches et dans les événements de tâche du SDK Agent. Avant la v2.1.205, il gardait son statut antérieur échoué ou terminé pendant que l'exécution reprise travaillait.1203La reprise démarre une nouvelle exécution de l'agent sous le même ID, de sorte qu'un sous-agent qui avait déjà échoué ou s'était terminé s'affiche à nouveau comme en cours d'exécution dans la liste des tâches et dans les événements de tâche du SDK Agent.

1200 1204 

1201`SendMessage` vérifie qu'un nom fait toujours référence au même agent qu'il a atteint plus tôt dans la conversation. Si un agent plus récent a pris le nom, comme un agent en arrière-plan re-généré qui l'a réutilisé, Claude Code refuse l'envoi plutôt que de le livrer au mauvais agent, et l'erreur signale quel agent le nom atteint maintenant pour que Claude puisse le rediriger. Pour atteindre l'agent antérieur pendant qu'il s'exécute toujours, Claude l'adresse par l'ID d'agent qu'il a reçu lorsqu'il a généré cet agent. La vérification est limitée à la conversation actuelle et se réinitialise sur `/clear`.1205`SendMessage` vérifie qu'un nom fait toujours référence au même agent qu'il a atteint plus tôt dans la conversation. Si un agent plus récent a pris le nom, comme un agent en arrière-plan re-généré qui l'a réutilisé, Claude Code refuse l'envoi plutôt que de le livrer au mauvais agent, et l'erreur signale quel agent le nom atteint maintenant pour que Claude puisse le rediriger. Pour atteindre l'agent antérieur pendant qu'il s'exécute toujours, Claude l'adresse par l'ID d'agent qu'il a reçu lorsqu'il a généré cet agent. La vérification est limitée à la conversation actuelle et se réinitialise sur `/clear`.

1202 1206 


1214 Compaction automatique1218 Compaction automatique

1215</h4>1219</h4>

1216 1220 

1217Les sous-agents prennent en charge la compaction automatique en utilisant la même logique que la conversation principale. La compaction se déclenche dans les mêmes conditions, et `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` s'applique également aux sous-agents. Voir [variables d'environnement](/docs/fr/env-vars) pour savoir quand le remplacement prend effet.1221Les sous-agents prennent en charge la compaction automatique. La compaction se déclenche à mesure que la propre fenêtre de contexte du sous-agent se remplit, et `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` s'applique également aux sous-agents. Voir [variables d'environnement](/docs/fr/env-vars) pour savoir quand le remplacement prend effet.

1218 1222 

1219Les événements de compaction sont consignés dans les fichiers de transcription des sous-agents :1223Les événements de compaction sont consignés dans les fichiers de transcription des sous-agents :

1220 1224 


1231 1235 

1232La valeur `preTokens` indique le nombre de tokens utilisés avant la compaction.1236La valeur `preTokens` indique le nombre de tokens utilisés avant la compaction.

1233 1237 

1238<a id="subagent-auto-compact-window" />

1239 

1240<h5 id="set-the-auto-compact-window-for-one-subagent">

1241 Définir la fenêtre de compaction automatique pour un sous-agent

1242</h5>

1243 

1244Pour qu'un sous-agent se compacte plus tôt qu'il ne le ferait autrement, définissez `autoCompactWindow` dans son [frontmatter](#supported-frontmatter-fields) sur un nombre de tokens compris entre `100000` et `1000000`. Si vous définissez [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/fr/env-vars#variables) sur un entier positif, le sous-agent utilise la fenêtre de cette variable à la place et le champ n'a aucun effet. Nécessite Claude Code v2.1.296 ou ultérieure.

1245 

1246Ce frontmatter définit `autoCompactWindow` sur 200 000 tokens pour un sous-agent qui lit de longs fichiers de logs :

1247 

1248```yaml theme={null}

1249---

1250name: log-reader

1251description: Reads long log files and reports the errors it finds

1252autoCompactWindow: 200000

1253---

1254```

1255 

1256Écrivez la valeur sous forme d'entier simple comme `200000`, car dans le frontmatter, Claude Code lit `200k` comme 200, ce qui est en dehors de la plage autorisée. Le sous-agent se charge et se compacte alors quand même comme si le champ était absent. Pour vérifier si Claude Code a ignoré votre valeur, exécutez `claude --debug` dans votre shell et recherchez `invalid autoCompactWindow` dans le [log de débogage](#supported-frontmatter-fields).

1257 

1258Si la valeur est dans la plage et que vous ne constatez toujours aucun changement, vérifiez les causes suivantes :

1259 

1260* **La valeur n'est pas inférieure à la [fenêtre de compaction automatique](/docs/fr/model-config#context-window-and-auto-compaction) dont le sous-agent hériterait autrement** : pour compacter plus tôt, définissez une valeur inférieure à cette fenêtre.

1261* **Vous exécutez toute la session en tant que ce sous-agent avec `--agent` ou le paramètre `agent`** : le champ n'a aucun effet dans ce cas. Pour définir la fenêtre de la session, voir [Définir la fenêtre de compaction automatique](/docs/fr/model-config#set-the-auto-compact-window).

1262 

1234<h2 id="fork-the-current-conversation">1263<h2 id="fork-the-current-conversation">

1235 Dupliquer la conversation actuelle1264 Dupliquer la conversation actuelle

1236</h2>1265</h2>

Details

44| `ReadMcpResourceTool` | Lit une ressource MCP spécifique par URI | Non |44| `ReadMcpResourceTool` | Lit une ressource MCP spécifique par URI | Non |

45| `RemoteTrigger` | Crée, met à jour, exécute et liste les [Routines](/docs/fr/routines) sur claude.ai. Soutient la commande `/schedule`. La [référence d'entrée `RemoteTrigger`](/docs/fr/agent-sdk/typescript#remotetrigger) documente chaque action et les politiques organisationnelles qui suppriment l'outil. Les routines vivent sur claude.ai et nécessitent un plan Pro, Max, Team ou Enterprise, donc cet outil n'est pas accessible depuis Amazon Bedrock, Claude Platform sur AWS, Google Cloud's Agent Platform, ou Microsoft Foundry | Non |45| `RemoteTrigger` | Crée, met à jour, exécute et liste les [Routines](/docs/fr/routines) sur claude.ai. Soutient la commande `/schedule`. La [référence d'entrée `RemoteTrigger`](/docs/fr/agent-sdk/typescript#remotetrigger) documente chaque action et les politiques organisationnelles qui suppriment l'outil. Les routines vivent sur claude.ai et nécessitent un plan Pro, Max, Team ou Enterprise, donc cet outil n'est pas accessible depuis Amazon Bedrock, Claude Platform sur AWS, Google Cloud's Agent Platform, ou Microsoft Foundry | Non |

46| `ReportFindings` | Signale les résultats de la revue de code sous forme de liste structurée, avec un fichier, un résumé et un scénario d'échec par résultat, afin que Claude Code puisse les rendre au lieu de les imprimer en tant que texte. Claude l'appelle quand les instructions actives de revue de code le lui demandent. Un résultat peut également porter un slug `category` optionnel, tel que `correctness` ou `test-coverage`, affiché à côté de l'emplacement du fichier dans la liste rendue | Non |46| `ReportFindings` | Signale les résultats de la revue de code sous forme de liste structurée, avec un fichier, un résumé et un scénario d'échec par résultat, afin que Claude Code puisse les rendre au lieu de les imprimer en tant que texte. Claude l'appelle quand les instructions actives de revue de code le lui demandent. Un résultat peut également porter un slug `category` optionnel, tel que `correctness` ou `test-coverage`, affiché à côté de l'emplacement du fichier dans la liste rendue | Non |

47| `ScheduleWakeup` | Reprogramme la prochaine itération d'une [`/loop` auto-rythmée](/docs/fr/scheduled-tasks#let-claude-choose-the-interval). Claude l'appelle à la fin de chaque itération pour choisir quand la prochaine s'exécute, entre une minute et une heure ; vous ne l'appelez pas directement. Pour terminer la boucle à la place, Claude l'appelle avec `stop: true`, ce qui annule le réveil en attente. Le champ `stop` nécessite Claude Code v2.1.202 ou ultérieur. Le réveil en attente apparaît dans `session_crons` dans [Entrée du hook Stop](/docs/fr/hooks#stop-input) | Non |47| `ScheduleWakeup` | Reprogramme la prochaine itération d'une [`/loop` auto-rythmée](/docs/fr/scheduled-tasks#let-claude-choose-the-interval). Claude l'appelle à la fin de chaque itération pour choisir quand la prochaine s'exécute, entre une minute et une heure ; vous ne l'appelez pas directement. Pour terminer la boucle à la place, Claude l'appelle avec `stop: true`, ce qui annule le réveil en attente. Le réveil en attente apparaît dans `session_crons` dans [Entrée du hook Stop](/docs/fr/hooks#stop-input) | Non |

48| `SendFeedback` | Rédige un rapport de rétroaction sur Claude Code, couvrant un problème de produit ou le comportement de Claude lui-même dans la session, et le met en file d'attente sur votre machine pour que vous le révisiez. Claude Code n'envoie rien jusqu'à ce que vous choisissiez d'envoyer le brouillon. Consultez [Comportement de l'outil SendFeedback](#sendfeedback-tool-behavior). Nécessite Claude Code v2.1.238 ou ultérieur | Non |48| `SendFeedback` | Rédige un rapport de rétroaction sur Claude Code, couvrant un problème de produit ou le comportement de Claude lui-même dans la session, et le met en file d'attente sur votre machine pour que vous le révisiez. Claude Code n'envoie rien jusqu'à ce que vous choisissiez d'envoyer le brouillon. Consultez [Comportement de l'outil SendFeedback](#sendfeedback-tool-behavior). Nécessite Claude Code v2.1.238 ou ultérieur | Non |

49| `SendMessage` | Envoie un message à un autre agent : un [coéquipier d'équipe d'agents](/docs/fr/agent-teams), un [sous-agent qu'il reprend](/docs/fr/sub-agents#resume-subagents) par ID ou nom d'agent, ou l'une de vos autres sessions Claude Code, sur cette machine ou au-delà. La messagerie d'autres sessions nécessite Claude Code v2.1.224 ou ultérieur. La [messagerie inter-sessions](/docs/fr/cross-session-messaging) couvre les sessions que Claude peut atteindre, [à quoi ressemble un message quand il arrive](/docs/fr/cross-session-messaging#what-a-message-looks-like), et [comment Claude reçoit un avis quand une autre session devient inactive](/docs/fr/cross-session-messaging#get-a-notice-when-another-session-goes-idle). Claude peut inclure une entrée `summary` optionnelle, généralement 5-10 mots, que Claude Code affiche comme un aperçu d'une ligne. Quand Claude l'omet sur un [message en texte brut](/docs/fr/cross-session-messaging#limitations), Claude Code utilise la première ligne du message comme résumé. Claude Code tronque un résumé plus long que 200 caractères avec des points de suspension | Non |49| `SendMessage` | Envoie un message à un autre agent : un [coéquipier d'équipe d'agents](/docs/fr/agent-teams), un [sous-agent qu'il reprend](/docs/fr/sub-agents#resume-subagents) par ID ou nom d'agent, ou l'une de vos autres sessions Claude Code, sur cette machine ou au-delà. La messagerie d'autres sessions nécessite Claude Code v2.1.224 ou ultérieur. La [messagerie inter-sessions](/docs/fr/cross-session-messaging) couvre les sessions que Claude peut atteindre, [à quoi ressemble un message quand il arrive](/docs/fr/cross-session-messaging#what-a-message-looks-like), et [comment Claude reçoit un avis quand une autre session devient inactive](/docs/fr/cross-session-messaging#get-a-notice-when-another-session-goes-idle). Claude peut inclure une entrée `summary` optionnelle, généralement 5-10 mots, que Claude Code affiche comme un aperçu d'une ligne. Quand Claude l'omet sur un [message en texte brut](/docs/fr/cross-session-messaging#limitations), Claude Code utilise la première ligne du message comme résumé. Claude Code tronque un résumé plus long que 200 caractères avec des points de suspension | Non |

50| `SendUserFile` | Envoie les fichiers de la session vers vous avec une légende optionnelle, afin qu'un rapport généré, un diagramme, une capture d'écran ou un artefact construit atteigne votre appareil au lieu d'être seulement mentionné dans la transcription. L'entrée `display` optionnelle contrôle la présentation : `render` ouvre le fichier en ligne dans le client, `attach` affiche une carte de téléchargement uniquement, et quand elle n'est pas définie, le client décide par type de fichier. Disponible quand un client [Remote Control](/docs/fr/remote-control) est connecté ou dans une [session cloud](/docs/fr/claude-code-on-the-web). La livraison s'effectue via l'infrastructure hébergée par Anthropic, donc l'outil n'est pas disponible sur Amazon Bedrock, Google Cloud's Agent Platform, ou Microsoft Foundry | Non |50| `SendUserFile` | Envoie les fichiers de la session vers vous avec une légende optionnelle, afin qu'un rapport généré, un diagramme, une capture d'écran ou un artefact construit atteigne votre appareil au lieu d'être seulement mentionné dans la transcription. L'entrée `display` optionnelle contrôle la présentation : `render` ouvre le fichier en ligne dans le client, `attach` affiche une carte de téléchargement uniquement, et quand elle n'est pas définie, le client décide par type de fichier. Disponible quand un client [Remote Control](/docs/fr/remote-control) est connecté ou dans une [session cloud](/docs/fr/claude-code-on-the-web). La livraison s'effectue via l'infrastructure hébergée par Anthropic, donc l'outil n'est pas disponible sur Amazon Bedrock, Google Cloud's Agent Platform, ou Microsoft Foundry | Non |


54| `TaskCreate` | Crée une nouvelle tâche dans la liste des tâches. Fourni par défaut uniquement sur les modèles listés sous [Disponibilité de l'outil Task](#task-tool-availability), et sur d'autres modèles quand vous acceptez | Non |54| `TaskCreate` | Crée une nouvelle tâche dans la liste des tâches. Fourni par défaut uniquement sur les modèles listés sous [Disponibilité de l'outil Task](#task-tool-availability), et sur d'autres modèles quand vous acceptez | Non |

55| `TaskGet` | Récupère les détails complets d'une tâche spécifique. Fourni par défaut uniquement sur les modèles listés sous [Disponibilité de l'outil Task](#task-tool-availability), et sur d'autres modèles quand vous acceptez | Non |55| `TaskGet` | Récupère les détails complets d'une tâche spécifique. Fourni par défaut uniquement sur les modèles listés sous [Disponibilité de l'outil Task](#task-tool-availability), et sur d'autres modèles quand vous acceptez | Non |

56| `TaskList` | Liste toutes les tâches avec leur statut actuel. Fourni par défaut uniquement sur les modèles listés sous [Disponibilité de l'outil Task](#task-tool-availability), et sur d'autres modèles quand vous acceptez | Non |56| `TaskList` | Liste toutes les tâches avec leur statut actuel. Fourni par défaut uniquement sur les modèles listés sous [Disponibilité de l'outil Task](#task-tool-availability), et sur d'autres modèles quand vous acceptez | Non |

57| `TaskOutput` | Récupère la sortie d'une tâche en arrière-plan. Déprécié en faveur de `Read` sur le chemin du fichier de sortie de la tâche. Quand aucune tâche ne correspond à l'ID, l'erreur liste les agents d'arrière-plan en cours d'exécution par ID et description. Avant v2.1.203, l'erreur nommait seulement l'ID manquant | Non |57| `TaskOutput` | Supprimé dans v2.1.277. Récupérait auparavant la sortie d'une tâche en arrière-plan ; Claude lit désormais le [fichier de sortie](/docs/fr/interactive-mode#how-backgrounding-works) d'une tâche en arrière-plan avec `Read` à la place | Non |

58| `TaskStop` | Arrête une tâche en arrière-plan en cours d'exécution par ID. Il accepte également un [coéquipier d'équipe d'agents](/docs/fr/agent-teams) ou un agent en arrière-plan nommé par ID ou nom d'agent. Quand aucune tâche ne correspond à l'ID, l'erreur liste les agents en arrière-plan en cours d'exécution par ID et description, y compris les agents qu'un autre agent a créés. Avant v2.1.203, l'erreur listait les coéquipiers et agents nommés en cours d'exécution mais pas les agents en arrière-plan qu'un autre agent a créés, donc ceux-ci ne pouvaient pas être identifiés ou arrêtés à partir de la conversation principale | Non |58| `TaskStop` | Arrête une tâche en arrière-plan en cours d'exécution par ID. Il accepte également un [coéquipier d'équipe d'agents](/docs/fr/agent-teams) ou un agent en arrière-plan nommé par ID ou nom d'agent. Quand aucune tâche ne correspond à l'ID, l'erreur liste les agents en arrière-plan en cours d'exécution par ID et description, y compris les agents qu'un autre agent a créés | Non |

59| `TaskUpdate` | Met à jour le statut de la tâche, les dépendances, les détails, ou supprime les tâches. Fourni par défaut uniquement sur les modèles listés sous [Disponibilité de l'outil Task](#task-tool-availability), et sur d'autres modèles quand vous acceptez | Non |59| `TaskUpdate` | Met à jour le statut de la tâche, les dépendances, les détails, ou supprime les tâches. Fourni par défaut uniquement sur les modèles listés sous [Disponibilité de l'outil Task](#task-tool-availability), et sur d'autres modèles quand vous acceptez | Non |

60| `TodoWrite` | Gère la liste de contrôle des tâches de la session. Désactivé par défaut en faveur de `TaskCreate`, `TaskGet`, `TaskList` et `TaskUpdate`. Définissez `CLAUDE_CODE_ENABLE_TASKS=0` pour le réactiver dans les [sessions qui ont les outils de suivi des tâches](#task-tool-availability) | Non |60| `TodoWrite` | Gère la liste de contrôle des tâches de la session. Désactivé par défaut en faveur de `TaskCreate`, `TaskGet`, `TaskList` et `TaskUpdate`. Définissez `CLAUDE_CODE_ENABLE_TASKS=0` pour le réactiver dans les [sessions qui ont les outils de suivi des tâches](#task-tool-availability) | Non |

61| `ToolSearch` | Recherche et charge les outils différés quand la [recherche d'outils](/docs/fr/mcp#scale-with-mcp-tool-search) est activée | Non |61| `ToolSearch` | Recherche et charge les outils différés quand la [recherche d'outils](/docs/fr/mcp#scale-with-mcp-tool-search) est activée | Non |

ultrareview.md +2 −2

Details

149 Suivre une révision en cours149 Suivre une révision en cours

150</h2>150</h2>

151 151 

152Une révision prend généralement 5 à 10 minutes. La révision s'exécute en tant que tâche en arrière-plan, de sorte que vous pouvez continuer à travailler dans votre session ou démarrer d'autres commandes. Si vous avez choisi de [publier les constatations sur la pull request](#post-findings-to-the-pull-request), gardez la session ouverte jusqu'à ce que la révision se termine ; si la session se termine en premier, Claude Code ne publie rien.152Une révision prend généralement 15 à 25 minutes. La révision s'exécute en tant que tâche en arrière-plan, de sorte que vous pouvez continuer à travailler dans votre session ou démarrer d'autres commandes. Si vous avez choisi de [publier les constatations sur la pull request](#post-findings-to-the-pull-request), gardez la session ouverte jusqu'à ce que la révision se termine ; si la session se termine en premier, Claude Code ne publie rien.

153 153 

154Utilisez `/tasks` pour voir les révisions en cours et terminées, ouvrir la vue détaillée d'une révision ou arrêter une révision en cours. Si vous arrêtez une révision, Claude Code archive la session cloud et ne retourne pas les constatations partielles.154Utilisez `/tasks` pour voir les révisions en cours et terminées, ouvrir la vue détaillée d'une révision ou arrêter une révision en cours. Si vous arrêtez une révision, Claude Code archive la session cloud et ne retourne pas les constatations partielles.

155 155 


216| Cible | votre diff de travail, une pull request, une branche ou un chemin | votre diff de travail ou une pull request |216| Cible | votre diff de travail, une pull request, une branche ou un chemin | votre diff de travail ou une pull request |

217| S'exécute | localement dans votre session | dans un sandbox cloud |217| S'exécute | localement dans votre session | dans un sandbox cloud |

218| Profondeur | s'adapte à l'argument effort | flotte multi-agents avec vérification indépendante |218| Profondeur | s'adapte à l'argument effort | flotte multi-agents avec vérification indépendante |

219| Durée | secondes à quelques minutes | environ 5 à 10 minutes |219| Durée | secondes à quelques minutes | environ 15 à 25 minutes |

220| Coût | compte vers l'utilisation normale | exécutions gratuites, puis environ 5 à 25 dollars par révision en tant que crédits d'utilisation |220| Coût | compte vers l'utilisation normale | exécutions gratuites, puis environ 5 à 25 dollars par révision en tant que crédits d'utilisation |

221| Idéal pour | retours rapides lors de l'itération | confiance pré-fusion sur les changements substantiels |221| Idéal pour | retours rapides lors de l'itération | confiance pré-fusion sur les changements substantiels |

222 222 

Details

146 146 

147<Steps>147<Steps>

148 <Step title="Sélectionnez un dépôt et une branche">148 <Step title="Sélectionnez un dépôt et une branche">

149 Depuis [claude.ai/code](https://claude.ai/code) ou l'onglet Code dans l'application mobile Claude, cliquez sur le sélecteur de dépôt sous la zone de saisie et choisissez un dépôt dans lequel Claude doit travailler. Chaque dépôt affiche un sélecteur de branche. Changez-le pour démarrer Claude à partir d'une branche de fonctionnalité au lieu de la branche par défaut. Vous pouvez ajouter plusieurs dépôts pour travailler sur plusieurs dans une seule session.149 Depuis [claude.ai/code](https://claude.ai/code) ou l'onglet Code dans l'application mobile Claude, cliquez sur le sélecteur de dépôt sous la zone de saisie et choisissez un dépôt dans lequel Claude doit travailler. Vous pouvez ajouter plusieurs dépôts pour travailler sur plusieurs dans une seule session.

150 

151 Sur claude.ai/code, pour démarrer Claude à partir d'une branche de fonctionnalité au lieu de la branche par défaut, changez la branche dans le contrôle situé après le sélecteur de dépôt.

150 </Step>152 </Step>

151 153 

152 <Step title="Choisissez un mode de permission">154 <Step title="Choisissez un mode de permission">

workflows.md +4 −4

Details

99| :- | :- |99| :- | :- |

100| `↑` / `↓` | Sélectionner une phase ou un agent |100| `↑` / `↓` | Sélectionner une phase ou un agent |

101| `Entrée` ou `→` | Explorez la phase sélectionnée, puis le détail d'un agent. Dans le détail, `Entrée` le développe ou le réduit |101| `Entrée` ou `→` | Explorez la phase sélectionnée, puis le détail d'un agent. Dans le détail, `Entrée` le développe ou le réduit |

102| `Échap` ou `←` | Reculer d'un niveau. Dans les versions v2.1.203 à v2.1.205, `←` n'a pas permis de reculer d'une phase ou d'un agent ; utilisez `Échap` sur ces versions |102| `Échap` ou `←` | Reculer d'un niveau |

103| `j` / `k` | Faire défiler dans le détail de l'agent lorsqu'il déborde |103| `j` / `k` | Faire défiler dans le détail de l'agent lorsqu'il déborde |

104| `f` | Filtrer la liste des agents dans la phase sélectionnée par statut. Appuyez à nouveau pour parcourir |104| `f` | Filtrer la liste des agents dans la phase sélectionnée par statut. Appuyez à nouveau pour parcourir |

105| `p` | Mettre en pause ou reprendre l'exécution |105| `p` | Mettre en pause ou reprendre l'exécution |


167/effort ultracode167/effort ultracode

168```168```

169 169 

170Pour démarrer une session avec ultracode déjà activé, lancez avec `claude --effort ultracode`, ce qui définit également le niveau d'effort sur `xhigh`. Nécessite Claude Code v2.1.203 ou ultérieur.170Pour démarrer une session avec ultracode déjà activé, lancez avec `claude --effort ultracode`, ce qui définit également le niveau d'effort sur `xhigh`.

171 171 

172Pour l'activer à partir du curseur `/effort`, appuyez sur `Tab` pour basculer le bouton **Ultracode**, puis `Entrée` pour l'appliquer. [Ajuster le niveau d'effort](/docs/fr/model-config#adjust-effort-level) énumère les itinéraires qui activent ultracode.172Pour l'activer à partir du curseur `/effort`, appuyez sur `Tab` pour basculer le bouton **Ultracode**, puis `Entrée` pour l'appliquer. [Ajuster le niveau d'effort](/docs/fr/model-config#adjust-effort-level) énumère les itinéraires qui activent ultracode.

173 173 


505 505 

506Un workflow génère de nombreux agents, donc une seule exécution peut utiliser significativement plus de tokens que de travailler à travers la même tâche en conversation. Les exécutions comptent vers l'utilisation de votre plan et les limites de débit.506Un workflow génère de nombreux agents, donc une seule exécution peut utiliser significativement plus de tokens que de travailler à travers la même tâche en conversation. Les exécutions comptent vers l'utilisation de votre plan et les limites de débit.

507 507 

508Pour évaluer les dépenses avant de vous engager dans une tâche importante, exécutez d'abord le workflow sur un petit échantillon : un répertoire au lieu de l'ensemble du dépôt, ou une question étroite au lieu d'une question large. La vue `/workflows` affiche l'utilisation des tokens de chaque agent au fur et à mesure que l'exécution progresse, et vous pouvez arrêter l'exécution à tout moment, généralement sans perdre le travail terminé. [Reprendre après une pause](#resume-after-a-pause) couvre ce qu'une exécution arrêtée conserve. Les [limites d'agents](#behavior-and-limits) du runtime limitent le nombre d'agents qu'une seule exécution peut générer, ce qui limite le coût d'un script qui s'échappe. Pour garder les exécutions à moins d'agents, choisissez la directive de taille `small` [](#set-a-size-guideline).508Pour évaluer les dépenses avant de vous engager dans une tâche importante, exécutez d'abord le workflow sur un petit échantillon : un répertoire au lieu de l'ensemble du dépôt, ou une question étroite au lieu d'une question large. La vue `/workflows` affiche l'utilisation des tokens de chaque agent au fur et à mesure que l'exécution progresse, et vous pouvez arrêter l'exécution à tout moment, généralement sans perdre le travail terminé. [Reprendre après une pause](#resume-after-a-pause) couvre ce qu'une exécution arrêtée conserve. Les [limites d'agents](#behavior-and-limits) du runtime limitent le nombre d'agents qu'une seule exécution peut générer, ce qui limite le coût d'un script qui s'échappe. Pour garder les exécutions à moins d'agents, choisissez la [directive de taille](#set-a-size-guideline) `small`.

509 509 

510Claude Code signale également une exécution qui devient anormalement grande. Quand un workflow planifie plus de 25 agents, ou que son total de tokens projeté dépasse 1,5 million, sa ligne de progression dans le panneau des tâches sous la zone de saisie affiche un avertissement `Large workflow`. L'avertissement vous dirige vers [`/workflows`](#watch-the-run), où vous pouvez arrêter l'exécution.510Claude Code signale également une exécution qui devient anormalement grande. Quand un workflow planifie plus de 25 agents, ou que son total de tokens projeté dépasse 1,5 million, sa ligne de progression dans le panneau des tâches sous la zone de saisie affiche un avertissement `Large workflow`. L'avertissement vous dirige vers [`/workflows`](#watch-the-run), où vous pouvez arrêter l'exécution.

511 511 


527 Définir une directive de taille527 Définir une directive de taille

528</h3>528</h3>

529 529 

530Une directive de taille indique à Claude combien d'agents viser quand il écrit un workflow dynamique. Claude Code envoie la directive à Claude comme conseil, pas comme une limite, donc une invite qui appelle une échelle différente la remplace toujours. Nécessite Claude Code v2.1.202 ou ultérieur.530Une directive de taille indique à Claude combien d'agents viser quand il écrit un workflow dynamique. Claude Code envoie la directive à Claude comme conseil, pas comme une limite, donc un prompt qui appelle une échelle différente la remplace toujours.

531 531 

532Chaque valeur correspond à un nombre d'agents :532Chaque valeur correspond à un nombre d'agents :

533 533