SpyBara
Go Premium

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

69 files changed +1,287 −474. View all changes and history on the product overview
2026
Sat 10 22: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

187 187 

188Claude détermine les outils à appeler en fonction de la tâche, mais vous contrôlez si ces appels sont autorisés à s'exécuter. Vous pouvez approuver automatiquement des outils spécifiques, en bloquer d'autres entièrement, ou exiger une approbation pour tout. Trois options fonctionnent ensemble pour déterminer ce qui s'exécute :188Claude détermine les outils à appeler en fonction de la tâche, mais vous contrôlez si ces appels sont autorisés à s'exécuter. Vous pouvez approuver automatiquement des outils spécifiques, en bloquer d'autres entièrement, ou exiger une approbation pour tout. Trois options fonctionnent ensemble pour déterminer ce qui s'exécute :

189 189 

190* **`allowed_tools` / `allowedTools`** approuve automatiquement les outils listés. Un agent en lecture seule avec `["Read", "Glob", "Grep"]` dans sa liste d'outils autorisés exécute ces outils sans demander. Les outils non listés sont toujours disponibles, et les appels à ceux-ci qui nécessitent une approbation passent par le mode de permission et `canUseTool`.190* **`allowed_tools` / `allowedTools`** approuve automatiquement les outils listés. Un agent en lecture seule avec `["Read", "Glob", "Grep"]` dans sa liste d'outils autorisés exécute ces outils sans demander, à l'exception des lectures depuis des [chemins réseau](/docs/fr/permissions#network-paths). Les outils non listés sont toujours disponibles, et les appels à ceux-ci qui nécessitent une approbation passent par le mode de permission et `canUseTool`.

191* **`disallowed_tools` / `disallowedTools`** bloque les outils listés, indépendamment des autres paramètres. Voir [Permissions](/docs/fr/agent-sdk/permissions) pour l'ordre dans lequel les règles sont vérifiées avant qu'un outil s'exécute.191* **`disallowed_tools` / `disallowedTools`** bloque les outils listés, indépendamment des autres paramètres. Voir [Permissions](/docs/fr/agent-sdk/permissions) pour l'ordre dans lequel les règles sont vérifiées avant qu'un outil s'exécute.

192* **`permission_mode` / `permissionMode`** contrôle le niveau de surveillance humaine que vous souhaitez. Le SDK évalue le mode actif avec vos règles d'autorisation et de refus dans un ordre fixe, décrit dans [Comment les permissions sont évaluées](/docs/fr/agent-sdk/permissions#how-permissions-are-evaluated). Voir [Mode de permission](#permission-mode) pour les modes disponibles.192* **`permission_mode` / `permissionMode`** contrôle le niveau de surveillance humaine que vous souhaitez. Le SDK évalue le mode actif avec vos règles d'autorisation et de refus dans un ordre fixe, décrit dans [Comment les permissions sont évaluées](/docs/fr/agent-sdk/permissions#how-permissions-are-evaluated). Voir [Mode de permission](#permission-mode) pour les modes disponibles.

193 193 


263| `"default"` | Les outils non couverts par les règles d'autorisation déclenchent votre rappel `canUseTool` ; pas de rappel signifie refuser | Applications interactives avec un rappel d'approbation personnalisé |263| `"default"` | Les outils non couverts par les règles d'autorisation déclenchent votre rappel `canUseTool` ; pas de rappel signifie refuser | Applications interactives avec un rappel d'approbation personnalisé |

264| `"acceptEdits"` | Approuve automatiquement les éditions de fichiers et les commandes communes du système de fichiers (`mkdir`, `touch`, `mv`, `cp`, etc.) ; les autres commandes Bash suivent les règles par défaut | Vous faites confiance aux éditions de Claude et voulez une itération plus rapide, par exemple lors du prototypage ou lorsque vous travaillez dans un répertoire isolé |264| `"acceptEdits"` | Approuve automatiquement les éditions de fichiers et les commandes communes du système de fichiers (`mkdir`, `touch`, `mv`, `cp`, etc.) ; les autres commandes Bash suivent les règles par défaut | Vous faites confiance aux éditions de Claude et voulez une itération plus rapide, par exemple lors du prototypage ou lorsque vous travaillez dans un répertoire isolé |

265| `"plan"` | Claude explore et planifie sans éditer vos fichiers source ; les éditions de fichiers ne sont jamais approuvées automatiquement et demandent via votre rappel `canUseTool` | Vous voulez que Claude propose des modifications sans les exécuter, par exemple lors d'une revue de code ou lorsque vous devez approuver les modifications avant qu'elles ne soient apportées |265| `"plan"` | Claude explore et planifie sans éditer vos fichiers source ; les éditions de fichiers ne sont jamais approuvées automatiquement et demandent via votre rappel `canUseTool` | Vous voulez que Claude propose des modifications sans les exécuter, par exemple lors d'une revue de code ou lorsque vous devez approuver les modifications avant qu'elles ne soient apportées |

266| `"dontAsk"` | Ne demande jamais. Les outils pré-approuvés par les [règles de permission](/docs/fr/settings-reference#permission-settings) s'exécutent, et il en va de même pour les appels qui ne nécessitent pas d'approbation en mode `default`, comme les lectures de fichiers dans vos répertoires de travail ; tout appel qui demanderait autrement est refusé. `AskUserQuestion`, les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) et les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) sont refusés même si vous les avez autorisés | Vous voulez une surface d'outils fixe et explicite pour un agent sans interface et préférez un refus catégorique plutôt qu'une dépendance silencieuse à l'absence de `canUseTool` |266| `"dontAsk"` | Ne demande jamais. Les outils pré-approuvés par les [règles de permission](/docs/fr/settings-reference#permission-settings) s'exécutent, et il en va de même pour les appels qui ne nécessitent pas d'approbation en mode `default`, comme les lectures de fichiers dans vos répertoires de travail ; tout appel qui demanderait autrement est refusé. `AskUserQuestion`, les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools), les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) et les [lectures depuis des chemins réseau](/docs/fr/permissions#network-paths) sont refusés même si vous les avez autorisés | Vous voulez une surface d'outils fixe et explicite pour un agent sans interface et préférez un refus catégorique plutôt qu'une dépendance silencieuse à l'absence de `canUseTool` |

267| `"auto"` | Utilise un classificateur de modèle pour examiner les actions telles que les commandes shell et les demandes réseau, en autorisant ou en bloquant chacune qu'il examine. Voir [Mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) pour la disponibilité et l'ordre de décision | Agents autonomes qui veulent toujours des garde-fous de sécurité sur l'utilisation des outils |267| `"auto"` | Utilise un classificateur de modèle pour examiner les actions telles que les commandes shell et les demandes réseau, en autorisant ou en bloquant chacune qu'il examine. Voir [Mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) pour la disponibilité et l'ordre de décision | Agents autonomes qui veulent toujours des garde-fous de sécurité sur l'utilisation des outils |

268| `"bypassPermissions"` | Exécute tous les outils autorisés sans demander, sauf les outils correspondant à une [règle `ask`](/docs/fr/settings-reference#permission-settings) explicite, les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) et les outils qui nécessitent une interaction utilisateur. Les [garde-fous de messagerie inter-sessions](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) s'appliquent toujours. Voir [Comment les permissions sont évaluées](/docs/fr/agent-sdk/permissions#how-permissions-are-evaluated) pour l'ordre de précédence. Dans le SDK TypeScript, nécessite également `allowDangerouslySkipPermissions: true` dans `options`. Ne peut pas être utilisé lors de l'exécution en tant que root sur Unix. À utiliser uniquement dans des environnements isolés où les actions de l'agent ne peuvent pas affecter les systèmes qui vous intéressent | CI, conteneurs ou autres environnements isolés |268| `"bypassPermissions"` | Exécute tous les outils autorisés sans demander, sauf les outils correspondant à une [règle `ask`](/docs/fr/settings-reference#permission-settings) explicite, les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) et les outils qui nécessitent une interaction utilisateur. Les [garde-fous de messagerie inter-sessions](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) s'appliquent toujours. Voir [Comment les permissions sont évaluées](/docs/fr/agent-sdk/permissions#how-permissions-are-evaluated) pour l'ordre de précédence. Dans le SDK TypeScript, nécessite également `allowDangerouslySkipPermissions: true` dans `options`. Ne peut pas être utilisé lors de l'exécution en tant que root sur Unix. À utiliser uniquement dans des environnements isolés où les actions de l'agent ne peuvent pas affecter les systèmes qui vous intéressent | CI, conteneurs ou autres environnements isolés |

269 269 

Details

424 Approuver automatiquement des outils spécifiques424 Approuver automatiquement des outils spécifiques

425</h3>425</h3>

426 426 

427Par défaut, l'agent peut demander une permission avant d'utiliser certains outils. Cet exemple approuve automatiquement les outils de système de fichiers en lecture seule (Read, Glob, Grep) en retournant `permissionDecision: 'allow'`, les laissant s'exécuter sans confirmation de l'utilisateur tout en laissant tous les autres outils soumis aux vérifications de permission normales :427Par défaut, l'agent peut demander une permission avant d'utiliser certains outils. Cet exemple approuve automatiquement les outils de système de fichiers en lecture seule (Read, Glob, Grep) en retournant `permissionDecision: 'allow'`, les laissant s'exécuter sans confirmation de l'utilisateur, à l'exception des lectures depuis des [chemins réseau](/docs/fr/permissions#network-paths), tout en laissant tous les autres outils soumis aux vérifications de permission normales :

428 428 

429<CodeGroup>429<CodeGroup>

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

Details

44 Vérifiez les règles `allow` (à partir de `allowed_tools` et settings.json). Si une règle correspond, l'outil est approuvé. Un appel que l'outil approuve de lui-même est résolu à cette étape aussi, sans règle nécessaire : par exemple une lecture de fichier dans vos répertoires de travail ou une [commande Bash en lecture seule](/docs/fr/permissions#read-only-commands).44 Vérifiez les règles `allow` (à partir de `allowed_tools` et settings.json). Si une règle correspond, l'outil est approuvé. Un appel que l'outil approuve de lui-même est résolu à cette étape aussi, sans règle nécessaire : par exemple une lecture de fichier dans vos répertoires de travail ou une [commande Bash en lecture seule](/docs/fr/permissions#read-only-commands).

45 45 

46 Les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths) ne sont jamais approuvées par une règle allow. Qu'elles atteignent ensuite votre callback dépend du mode de permission : dans une session Agent SDK en mode `auto`, par exemple, Claude Code les refuse par défaut sans l'appeler. Le tableau du mode [Chemins critiques](/docs/fr/permission-modes#critical-paths) liste ce que chaque mode fait avec eux.46 Les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths) ne sont jamais approuvées par une règle allow. Qu'elles atteignent ensuite votre callback dépend du mode de permission : dans une session Agent SDK en mode `auto`, par exemple, Claude Code les refuse par défaut sans l'appeler. Le tableau du mode [Chemins critiques](/docs/fr/permission-modes#critical-paths) liste ce que chaque mode fait avec eux.

47 

48 Une règle allow n'approuve pas une lecture depuis un [chemin réseau](/docs/fr/permissions#network-paths).

47 </Step>49 </Step>

48 50 

49 <Step title="Callback canUseTool">51 <Step title="Callback canUseTool">


60Si vous transmettez un callback `canUseTool` dans une configuration où le SDK TypeScript s'attend à ce que l'ordre d'évaluation approuve automatiquement les appels avant que le callback ne soit consulté, le SDK émet un avertissement de processus Node.js une fois lorsque la requête est construite. Le code de l'avertissement est `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`. Deux configurations le déclenchent :62Si vous transmettez un callback `canUseTool` dans une configuration où le SDK TypeScript s'attend à ce que l'ordre d'évaluation approuve automatiquement les appels avant que le callback ne soit consulté, le SDK émet un avertissement de processus Node.js une fois lorsque la requête est construite. Le code de l'avertissement est `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`. Deux configurations le déclenchent :

61 63 

62* `permissionMode: 'bypassPermissions'`, qui approuve automatiquement chaque appel qui atteint l'étape du mode de permission à l'exception des [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves)64* `permissionMode: 'bypassPermissions'`, qui approuve automatiquement chaque appel qui atteint l'étape du mode de permission à l'exception des [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves)

63* Chaque entrée `allowedTools` sans nom comme `"Read"`, qui approuve automatiquement cet outil entier avant que le callback ne soit consulté, à l'exception des [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves)65* Chaque entrée `allowedTools` sans nom comme `"Read"`, qui approuve automatiquement cet outil entier avant que le callback ne soit consulté, à l'exception des [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves) et des [lectures depuis des chemins réseau](/docs/fr/permissions#network-paths)

64 66 

65Les entrées avec un spécificateur comme `Bash(ls *)` et le mode `acceptEdits` ne le déclenchent pas, et les règles d'autorisation provenant de fichiers de paramètres ne sont pas visibles pour la vérification.67Les entrées avec un spécificateur comme `Bash(ls *)` et le mode `acceptEdits` ne le déclenchent pas, et les règles d'autorisation provenant de fichiers de paramètres ne sont pas visibles pour la vérification.

66 68 


79 81 

80| Option | Effet |82| Option | Effet |

81| :- | :- |83| :- | :- |

82| `allowed_tools=["Read", "Grep"]` | `Read` et `Grep` sont approuvés automatiquement. Les autres outils non listés ici existent toujours, et les appels à ceux-ci qui nécessitent une approbation tombent dans le mode de permission et `canUseTool`. |84| `allowed_tools=["Read", "Grep"]` | `Read` et `Grep` sont approuvés automatiquement, à l'exception des [lectures depuis des chemins réseau](/docs/fr/permissions#network-paths). Les autres outils non listés ici existent toujours, et les appels à ceux-ci qui nécessitent une approbation tombent dans le mode de permission et `canUseTool`. |

83| `disallowed_tools=["Bash"]` | La définition de l'outil `Bash` est supprimée de la requête. Claude ne voit pas l'outil et ne peut pas le tenter. |85| `disallowed_tools=["Bash"]` | La définition de l'outil `Bash` est supprimée de la requête. Claude ne voit pas l'outil et ne peut pas le tenter. |

84| `disallowed_tools=["Bash(rm *)"]` | `Bash` reste disponible. Les appels correspondant à `rm *` [tel qu'écrit](/docs/fr/permissions#bash-rule-limits) sont refusés dans tous les modes de permission, y compris `bypassPermissions`. Les autres appels `Bash`, y compris `/bin/rm`, tombent dans le mode de permission. |86| `disallowed_tools=["Bash(rm *)"]` | `Bash` reste disponible. Les appels correspondant à `rm *` [tel qu'écrit](/docs/fr/permissions#bash-rule-limits) sont refusés dans tous les modes de permission, y compris `bypassPermissions`. Les autres appels `Bash`, y compris `/bin/rm`, tombent dans le mode de permission. |

85| `disallowed_tools=["*"]` | Chaque définition d'outil est supprimée de la requête. Les globs de noms d'outils sont pris en charge dans les règles de refus : `"*"` correspond à chaque outil et `"mcp__*"` correspond à chaque outil MCP sur tous les serveurs. |87| `disallowed_tools=["*"]` | Chaque définition d'outil est supprimée de la requête. Les globs de noms d'outils sont pris en charge dans les règles de refus : `"*"` correspond à chaque outil et `"mcp__*"` correspond à chaque outil MCP sur tous les serveurs. |


95 97 

96 Une règle d'autorisation n'approuve jamais automatiquement `AskUserQuestion`, les outils MCP marqués [`_meta["anthropic/requiresUserInteraction"]`](/docs/fr/mcp#require-approval-for-a-specific-tool), les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools), ou les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths). En mode `dontAsk`, Claude Code refuse ces appels sans invoquer le rappel. Dans les autres modes, les trois premiers atteignent le rappel. Selon le [mode de permission](/docs/fr/permission-modes#critical-paths), une suppression de chemin critique atteint le rappel aussi ou Claude Code la refuse sans l'appeler, comme il le fait par défaut pour une session Agent SDK en mode `auto`.98 Une règle d'autorisation n'approuve jamais automatiquement `AskUserQuestion`, les outils MCP marqués [`_meta["anthropic/requiresUserInteraction"]`](/docs/fr/mcp#require-approval-for-a-specific-tool), les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools), ou les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths). En mode `dontAsk`, Claude Code refuse ces appels sans invoquer le rappel. Dans les autres modes, les trois premiers atteignent le rappel. Selon le [mode de permission](/docs/fr/permission-modes#critical-paths), une suppression de chemin critique atteint le rappel aussi ou Claude Code la refuse sans l'appeler, comme il le fait par défaut pour une session Agent SDK en mode `auto`.

97 99 

98 La couverture dépend de la forme de l'entrée : un nom nu comme `Read` ou `mcp__github__get_issue` approuve automatiquement chaque appel à cet outil en dehors des exceptions ci-dessus, tandis qu'une règle délimitée comme `Bash(npm test *)` approuve automatiquement uniquement les appels correspondants, et les autres appels `Bash` qui nécessitent une approbation tombent toujours dans le rappel. Pour les vérifications qui doivent s'exécuter sur chaque appel d'outil, utilisez un [hook `PreToolUse`](/docs/fr/agent-sdk/hooks) : les hooks s'exécutent avant chaque autre étape, et un refus de hook s'applique même en mode `bypassPermissions`.100 La couverture dépend de la forme de l'entrée : un nom nu comme `Read` ou `mcp__github__get_issue` approuve automatiquement chaque appel à cet outil en dehors de ces exceptions et des [lectures depuis des chemins réseau](/docs/fr/permissions#network-paths), tandis qu'une règle délimitée comme `Bash(npm test *)` approuve automatiquement uniquement les appels correspondants, et les autres appels `Bash` qui nécessitent une approbation tombent toujours dans le rappel. Pour les vérifications qui doivent s'exécuter sur chaque appel d'outil, utilisez un [hook `PreToolUse`](/docs/fr/agent-sdk/hooks) : les hooks s'exécutent avant chaque autre étape, et un refus de hook s'applique même en mode `bypassPermissions`.

99</Warning>101</Warning>

100 102 

101Pour un agent verrouillé, associez `allowedTools` avec `permissionMode: "dontAsk"` :103Pour un agent verrouillé, associez `allowedTools` avec `permissionMode: "dontAsk"` :


107};109};

108```110```

109 111 

110Les outils listés sont approuvés, en dehors des [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves), et chaque autre appel qui inviterait est refusé à la place. Les appels qui ne nécessitent aucune approbation en mode `default` s'exécutent que vous les listiez ou non, comme les [commandes Bash en lecture seule](/docs/fr/permissions#read-only-commands), les outils comme `Agent` qui ne demandent pas avant d'exécuter, et les lectures de fichiers dans vos répertoires de travail. Pour mettre un outil hors de portée de Claude entièrement, ajoutez son nom nu à `disallowedTools`.112Les outils listés sont approuvés, en dehors des [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves) et des [lectures depuis des chemins réseau](/docs/fr/permissions#network-paths), et chaque autre appel qui inviterait est refusé à la place. Les appels qui ne nécessitent aucune approbation en mode `default` s'exécutent que vous les listiez ou non, comme les [commandes Bash en lecture seule](/docs/fr/permissions#read-only-commands), les outils comme `Agent` qui ne demandent pas avant d'exécuter, et les lectures de fichiers dans vos répertoires de travail. Pour supprimer entièrement un outil de la requête, ajoutez son nom nu à `disallowedTools`.

111 113 

112<Warning>114<Warning>

113 **`allowed_tools` ne contraint pas `bypassPermissions`.** `allowed_tools` pré-approuve les outils que vous listez. Les autres outils non listés ne sont pas mis en correspondance par aucune règle d'autorisation et tombent dans le mode de permission, où `bypassPermissions` les approuve. Définir `allowed_tools=["Read"]` aux côtés de `permission_mode="bypassPermissions"` approuve toujours chaque outil, y compris `Bash`, `Write`, et `Edit`. Si vous avez besoin de `bypassPermissions` mais que vous voulez que des outils spécifiques soient bloqués, utilisez `disallowed_tools`.115 **`allowed_tools` ne contraint pas `bypassPermissions`.** `allowed_tools` pré-approuve les outils que vous listez. Les autres outils non listés ne sont pas mis en correspondance par aucune règle d'autorisation et tombent dans le mode de permission, où `bypassPermissions` les approuve. Définir `allowed_tools=["Read"]` aux côtés de `permission_mode="bypassPermissions"` approuve toujours chaque outil, y compris `Bash`, `Write`, et `Edit`. Si vous avez besoin de `bypassPermissions` mais que vous voulez que des outils spécifiques soient bloqués, utilisez `disallowed_tools`.


139| Mode | Description | Comportement des outils |141| Mode | Description | Comportement des outils |

140| :- | :- | :- |142| :- | :- | :- |

141| `default` | Comportement de permission standard | Pas d'approbations automatiques basées sur le mode ; les appels qui nécessitent une approbation et ne correspondent à aucune règle d'autorisation déclenchent votre rappel `canUseTool` |143| `default` | Comportement de permission standard | Pas d'approbations automatiques basées sur le mode ; les appels qui nécessitent une approbation et ne correspondent à aucune règle d'autorisation déclenchent votre rappel `canUseTool` |

142| `dontAsk` | Refuser au lieu de demander | Tout appel qui demanderait autrement est refusé. Les appels approuvés par `allowed_tools` ou les règles s'exécutent, tout comme les appels qui ne nécessitent pas d'approbation en mode `default`, tels que les lectures de fichiers dans vos répertoires de travail et les appels à `Agent`. Les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) et les outils qui nécessitent une interaction utilisateur sont refusés même si vous les avez pré-approuvés, tout comme les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths). `canUseTool` n'est jamais appelé |144| `dontAsk` | Refuser au lieu de demander | Tout appel qui demanderait autrement est refusé. Les appels approuvés par `allowed_tools` ou les règles s'exécutent, tout comme les appels qui ne nécessitent pas d'approbation en mode `default` ; les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) et les outils qui nécessitent une interaction utilisateur sont refusés même si vous les avez pré-approuvés, tout comme les [lectures depuis des chemins réseau](/docs/fr/permissions#network-paths) et les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths). `canUseTool` n'est jamais appelé |

143| `acceptEdits` | Accepter automatiquement les modifications de fichiers | Les modifications de fichiers et les [opérations du système de fichiers](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, etc.) sont automatiquement approuvées |145| `acceptEdits` | Accepter automatiquement les modifications de fichiers | Les modifications de fichiers et les [opérations du système de fichiers](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, etc.) sont automatiquement approuvées |

144| `bypassPermissions` | Contourner les vérifications de permission | Les outils s'exécutent sans invites de permission, sauf pour les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves). À utiliser avec prudence |146| `bypassPermissions` | Contourner les vérifications de permission | Les outils s'exécutent sans invites de permission, sauf pour les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves). À utiliser avec prudence |

145| `plan` | Mode de planification | Claude explore et planifie sans modifier vos fichiers source ; les modifications de fichiers ne sont jamais approuvées automatiquement et demandent via votre rappel `canUseTool` |147| `plan` | Mode de planification | Claude explore et planifie sans modifier vos fichiers source ; les modifications de fichiers ne sont jamais approuvées automatiquement et demandent via votre rappel `canUseTool` |


286 Mode ne pas demander (`dontAsk`)288 Mode ne pas demander (`dontAsk`)

287</h4>289</h4>

288 290 

289Convertit toute invite de permission en refus, sans appeler `canUseTool`. Les outils pré-approuvés par `allowed_tools`, les règles d'autorisation `settings.json` ou un hook s'exécutent normalement, tout comme les appels qui ne nécessitent pas d'approbation en mode `default`, tels que les lectures de fichiers dans vos répertoires de travail et les appels à `Agent`. Les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools), les outils qui nécessitent une interaction utilisateur, et les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths) sont refusés même lorsqu'une règle d'autorisation correspond. Un refus de hook PreToolUse ne supprime pas non plus une suppression de chemin critique.291Convertit toute demande de permission en refus, sans appeler `canUseTool`. Les outils pré-approuvés par `allowed_tools`, les règles d'autorisation `settings.json` ou un hook s'exécutent normalement, tout comme les appels qui ne nécessitent pas d'approbation en mode `default`, tels que les lectures de fichiers dans vos répertoires de travail et les appels à `Agent`. Les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools), les outils qui nécessitent une interaction utilisateur, les [lectures depuis des chemins réseau](/docs/fr/permissions#network-paths) et les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths) sont refusés même lorsqu'une règle d'autorisation correspond. Une autorisation par un hook `PreToolUse` ne lève pas non plus le blocage d'une suppression de chemin critique ni d'une lecture depuis un chemin réseau.

290 292 

291**À utiliser quand :** vous souhaitez une surface d'outils fixe et explicite pour un agent sans interface et préférez un refus catégorique à une dépendance silencieuse à l'absence de `canUseTool`.293**À utiliser quand :** vous souhaitez une surface d'outils fixe et explicite pour un agent sans interface et préférez un refus catégorique à une dépendance silencieuse à l'absence de `canUseTool`.

292 294 

Details

518 print(session.summary)518 print(session.summary)

519```519```

520 520 

521<h3 id="fork_session">

522 `fork_session()`

523</h3>

524 

525Copie la transcription d'une session dans une nouvelle session afin que vous puissiez orienter la conversation dans une autre direction tout en laissant l'originale inchangée. Pour créer une branche à partir d'un point antérieur de la conversation, passez `up_to_message_id`. Synchrone.

526 

527```python theme={null}

528def fork_session(

529 session_id: str,

530 directory: str | None = None,

531 up_to_message_id: str | None = None,

532 title: str | None = None,

533) -> ForkSessionResult

534```

535 

536<h4 id="parameters-9">

537 Paramètres

538</h4>

539 

540| Paramètre | Type | Par défaut | Description |

541| :- | :- | :- | :- |

542| `session_id` | `str` | requis | UUID de la session à forker |

543| `directory` | `str \| None` | `None` | Chemin du répertoire de projet. Quand omis, recherche dans tous les répertoires de projet |

544| `up_to_message_id` | `str \| None` | `None` | Copie la transcription jusqu'au message ayant cet UUID inclus, tel qu'un `uuid` provenant de [`get_session_messages()`](#get_session_messages). Quand omis, copie la transcription entière |

545| `title` | `str \| None` | `None` | Titre du fork. Quand omis, le SDK en dérive un à partir de la session originale, suivi de `(fork)` |

546 

547Retourne un `ForkSessionResult` dont le `session_id` est l'UUID de la nouvelle session. Passez-le comme [`resume`](#claudeagentoptions) pour poursuivre le fork. Le fork n'inclut pas les [checkpoints de fichiers](/docs/fr/agent-sdk/file-checkpointing) de la session originale, vous ne pouvez donc pas le ramener à un checkpoint capturé avant le fork.

548 

549`fork_session()` lève :

550 

551* `ValueError` : `session_id` ou `up_to_message_id` n'est pas un UUID valide

552* `ValueError` : la session ne contient aucun message, ou `up_to_message_id` ne correspond à aucun message de la transcription

553* `FileNotFoundError` : la session ne peut pas être trouvée

554 

555<h4 id="example-8">

556 Exemple

557</h4>

558 

559Forkez la session la plus récente sous un nouveau titre, puis reprenez le fork. La session originale conserve son propre historique.

560 

561```python theme={null}

562from claude_agent_sdk import fork_session, list_sessions

563 

564sessions = list_sessions(directory="/path/to/project", limit=1)

565if sessions:

566 forked = fork_session(sessions[0].session_id, title="Try the OAuth approach")

567 print(forked.session_id) # pass as ClaudeAgentOptions(resume=...) to continue the fork

568```

569 

521<h2 id="classes">570<h2 id="classes">

522 Classes571 Classes

523</h2>572</h2>


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

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

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

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

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

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

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


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

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

1851 1900 

1901Quand plusieurs tâches en arrière-plan se terminent à peu d'intervalle, Claude Code peut répondre à leurs notifications en un seul tour plutôt qu'en un tour pour chacune. Vous recevez toujours un `ResultMessage` par notification, dans l'ordre, chacun avec un `origin` dont le `kind` est `"task-notification"`. Tous sauf le dernier ont `num_turns` défini à `0` et un `result` vide, et le dernier porte le tour qui répond à toutes.

1902 

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

1853 1904 

1854| Clé | Type | Description |1905| Clé | Type | Description |

Details

360* [`renameSession()`](/docs/fr/agent-sdk/typescript#renamesession)360* [`renameSession()`](/docs/fr/agent-sdk/typescript#renamesession)

361* [`tagSession()`](/docs/fr/agent-sdk/typescript#tagsession)361* [`tagSession()`](/docs/fr/agent-sdk/typescript#tagsession)

362* [`deleteSession()`](/docs/fr/agent-sdk/typescript)362* [`deleteSession()`](/docs/fr/agent-sdk/typescript)

363* [`forkSession()`](/docs/fr/agent-sdk/typescript)363* [`forkSession()`](/docs/fr/agent-sdk/typescript#forksession)

364* [`listSubagents()`](/docs/fr/agent-sdk/typescript)364* [`listSubagents()`](/docs/fr/agent-sdk/typescript)

365* [`getSubagentMessages()`](/docs/fr/agent-sdk/typescript)365* [`getSubagentMessages()`](/docs/fr/agent-sdk/typescript)

366 366 

Details

293 293 

294 Vous pouvez reprendre à partir de n'importe quel répertoire de travail :294 Vous pouvez reprendre à partir de n'importe quel répertoire de travail :

295 295 

296 * **Recherche inter-répertoires** : Claude Code cherche au-delà du répertoire de projet actuel pour trouver l'ID ; voir [Reprendre une session](/docs/fr/sessions#resume-a-session) pour l'ordre de recherche exact et comment les copies en double sont gérées.296 * **Recherche inter-répertoires** : Claude Code cherche au-delà du répertoire de projet actuel pour trouver l'ID ; voir [Reprendre une session](/docs/fr/sessions#where-the-session-picker-looks) pour l'ordre de recherche exact et comment les copies en double sont gérées.

297 * **Même machine uniquement** : le fichier de session doit toujours exister sur la machine actuelle.297 * **Même machine uniquement** : le fichier de session doit toujours exister sur la machine actuelle.

298 298 

299 Avant v2.1.223, la recherche était limitée au répertoire de projet actuel et à ses git worktrees ; les versions du SDK qui regroupent une CLI plus ancienne se comportent toujours de cette façon.299 Avant v2.1.223, la recherche était limitée au répertoire de projet actuel et à ses git worktrees ; les versions du SDK qui regroupent une CLI plus ancienne se comportent toujours de cette façon.


423 423 

424* **Déplacer le fichier de session.** Persistez `~/.claude/projects/<encoded-cwd>/<session-id>.jsonl` de la première exécution et restaurez-le à l'intérieur de n'importe quel répertoire sous `~/.claude/projects/` sur le nouvel hôte avant d'appeler `resume`.424* **Déplacer le fichier de session.** Persistez `~/.claude/projects/<encoded-cwd>/<session-id>.jsonl` de la première exécution et restaurez-le à l'intérieur de n'importe quel répertoire sous `~/.claude/projects/` sur le nouvel hôte avant d'appeler `resume`.

425 425 

426 Claude Code recherche au-delà du répertoire de projet actuel pour trouver l'ID ; consultez [Reprendre une session](/docs/fr/sessions#resume-a-session) pour l'ordre de recherche exact et la façon dont les copies en double sont traitées. Avant v2.1.223, la recherche était limitée au répertoire de projet actuel et à ses git worktrees ; les versions du SDK qui regroupent une CLI plus ancienne se comportent toujours de cette façon.426 Claude Code recherche au-delà du répertoire de projet actuel pour trouver l'ID ; consultez [Reprendre une session](/docs/fr/sessions#where-the-session-picker-looks) pour l'ordre de recherche exact et la façon dont les copies en double sont traitées. Avant v2.1.223, la recherche était limitée au répertoire de projet actuel et à ses git worktrees ; les versions du SDK qui regroupent une CLI plus ancienne se comportent toujours de cette façon.

427 427 

428* **Ne pas compter sur la reprise de session.** Capturez les résultats dont vous avez besoin (sortie d'analyse, décisions, diffs de fichiers) en tant qu'état d'application et passez-les dans le prompt d'une session nouvelle. C'est souvent plus robuste que d'expédier des fichiers de transcription.428* **Ne pas compter sur la reprise de session.** Capturez les résultats dont vous avez besoin (sortie d'analyse, décisions, diffs de fichiers) en tant qu'état d'application et passez-les dans le prompt d'une session nouvelle. C'est souvent plus robuste que d'expédier des fichiers de transcription.

429 429 

Details

124 124 

125Sans les messages partiels activés, vous recevez tous les types de messages sauf `StreamEvent`. Les types courants incluent `SystemMessage` (initialisation de session), `AssistantMessage` (blocs de contenu complets), `ResultMessage` (résultat final), et un message de limite compact indiquant quand l'historique de conversation a été compacté (`SDKCompactBoundaryMessage` en TypeScript ; `SystemMessage` avec le sous-type `"compact_boundary"` en Python).125Sans les messages partiels activés, vous recevez tous les types de messages sauf `StreamEvent`. Les types courants incluent `SystemMessage` (initialisation de session), `AssistantMessage` (blocs de contenu complets), `ResultMessage` (résultat final), et un message de limite compact indiquant quand l'historique de conversation a été compacté (`SDKCompactBoundaryMessage` en TypeScript ; `SystemMessage` avec le sous-type `"compact_boundary"` en Python).

126 126 

127<h3 id="handle-a-stream-that’s-cut-off">

128 Gérer un flux interrompu

129</h3>

130 

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

132 

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

134 

127<h2 id="stream-tool-calls">135<h2 id="stream-tool-calls">

128 Diffuser les appels d'outils136 Diffuser les appels d'outils

129</h2>137</h2>

Details

464| `tag` | `string \| null` | requis | Chaîne d'étiquette, ou `null` pour effacer |464| `tag` | `string \| null` | requis | Chaîne d'étiquette, ou `null` pour effacer |

465| `options.dir` | `string` | `undefined` | Chemin du répertoire de projet. Lorsqu'il est omis, recherche dans tous les répertoires de projet |465| `options.dir` | `string` | `undefined` | Chemin du répertoire de projet. Lorsqu'il est omis, recherche dans tous les répertoires de projet |

466 466 

467<h3 id="forksession">

468 `forkSession()`

469</h3>

470 

471Copie la transcription d'une session dans une nouvelle session afin que vous puissiez orienter la conversation dans une autre direction tout en laissant l'originale inchangée. Pour créer une branche à partir d'un point antérieur de la conversation, passez `upToMessageId`.

472 

473```typescript theme={null}

474function forkSession(

475 sessionId: string,

476 options?: ForkSessionOptions

477): Promise<ForkSessionResult>;

478```

479 

480<h4 id="parameters-10">

481 Paramètres

482</h4>

483 

484| Paramètre | Type | Par défaut | Description |

485| :- | :- | :- | :- |

486| `sessionId` | `string` | requis | UUID de la session à forker |

487| `options.dir` | `string` | `undefined` | Chemin du répertoire de projet. Lorsqu'il est omis, recherche dans tous les répertoires de projet |

488| `options.upToMessageId` | `string` | `undefined` | Copie la transcription jusqu'au message portant cet `uuid` inclus : une valeur issue de [`getSessionMessages()`](#getsessionmessages), ou un `uuid` que vous définissez sur un [`SDKUserMessage`](#sdkusermessage) envoyé en streaming. Lorsqu'il est omis, copie la transcription entière |

489| `options.title` | `string` | `undefined` | Titre du fork. Lorsqu'il est omis, le SDK en dérive un à partir de la session d'origine, suivi de `(fork)` |

490 

491Retourne `{ sessionId }`, l'UUID de la nouvelle session. Passez-le comme [`resume`](#options) pour poursuivre le fork. Le fork n'inclut pas les [checkpoints de fichiers](/docs/fr/agent-sdk/file-checkpointing) de la session d'origine, vous ne pouvez donc pas le rembobiner jusqu'à un checkpoint capturé avant le fork.

492 

493`forkSession()` lève une exception lorsque :

494 

495* `sessionId` n'est pas un UUID

496* la session est introuvable ou ne contient aucun message

497* `upToMessageId` ne correspond à aucun message de la transcription

498 

467<h3 id="resolvesettings">499<h3 id="resolvesettings">

468 `resolveSettings()`500 `resolveSettings()`

469</h3>501</h3>


486): Promise<ResolvedSettings>;518): Promise<ResolvedSettings>;

487```519```

488 520 

489<h4 id="parameters-10">521<h4 id="parameters-11">

490 Paramètres522 Paramètres

491</h4>523</h4>

492 524 


547| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | Définir des sous-agents par programmation |579| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | Définir des sous-agents par programmation |

548| `agentProgressSummaries` | `boolean` | `false` | Lorsque `true`, génère des résumés de progression d'une ligne pour les sous-agents et les transmet dans les événements [`task_progress`](#sdktaskprogressmessage) via le champ `summary`. S'applique aux sous-agents au premier plan et en arrière-plan |580| `agentProgressSummaries` | `boolean` | `false` | Lorsque `true`, génère des résumés de progression d'une ligne pour les sous-agents et les transmet dans les événements [`task_progress`](#sdktaskprogressmessage) via le champ `summary`. S'applique aux sous-agents au premier plan et en arrière-plan |

549| `allowDangerouslySkipPermissions` | `boolean` | `false` | Active le contournement des permissions. Requis lors de l'utilisation de `permissionMode: 'bypassPermissions'`, au démarrage ou ultérieurement via `setPermissionMode()`. Consultez [mode plan](/docs/fr/agent-sdk/permissions#plan-mode-plan) pour savoir comment il interagit avec `permissionMode: 'plan'` |581| `allowDangerouslySkipPermissions` | `boolean` | `false` | Active le contournement des permissions. Requis lors de l'utilisation de `permissionMode: 'bypassPermissions'`, au démarrage ou ultérieurement via `setPermissionMode()`. Consultez [mode plan](/docs/fr/agent-sdk/permissions#plan-mode-plan) pour savoir comment il interagit avec `permissionMode: 'plan'` |

550| `allowedTools` | `string[]` | `[]` | Outils à approuver automatiquement sans demande. Cela ne limite pas Claude à ces seuls outils. Si vous nommez ici l'un des [outils de suivi des tâches](/docs/fr/agent-sdk/todo-tracking#model-availability), Claude Code les active également pour la session. Les autres outils non listés sont soumis à `permissionMode` et `canUseTool`. Utilisez `disallowedTools` pour bloquer des outils. Consultez [Permissions](/docs/fr/agent-sdk/permissions#allow-and-deny-rules) |582| `allowedTools` | `string[]` | `[]` | Outils à approuver automatiquement sans demande, à l'exception des lectures depuis des [chemins réseau](/docs/fr/permissions#network-paths). Cela ne limite pas Claude à ces seuls outils. Si vous nommez ici l'un des [outils de suivi des tâches](/docs/fr/agent-sdk/todo-tracking#model-availability), Claude Code active également ces outils pour la session. Les autres outils non listés sont soumis à `permissionMode` et `canUseTool`. Utilisez `disallowedTools` pour bloquer des outils. Consultez [Permissions](/docs/fr/agent-sdk/permissions#allow-and-deny-rules) |

551| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | Activer les fonctionnalités bêta |583| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | Activer les fonctionnalités bêta |

552| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | Fonction de permission personnalisée, invoquée uniquement lorsque le [flux de permissions](/docs/fr/agent-sdk/permissions#how-permissions-are-evaluated) aboutit à une demande. Non invoquée pour les appels approuvés automatiquement par `allowedTools`, les règles d'autorisation ou `permissionMode`. Une règle d'autorisation ne pré-approuve pas les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves). Consultez [`CanUseTool`](#canusetool) pour plus de détails |584| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | Fonction de permission personnalisée, invoquée uniquement lorsque le [flux de permissions](/docs/fr/agent-sdk/permissions#how-permissions-are-evaluated) aboutit à une demande. Non invoquée pour les appels approuvés automatiquement par `allowedTools`, les règles d'autorisation ou `permissionMode`. Une règle d'autorisation ne pré-approuve pas les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves). Consultez [`CanUseTool`](#canusetool) pour plus de détails |

553| `continue` | `boolean` | `false` | Poursuivre la conversation la plus récente |585| `continue` | `boolean` | `false` | Poursuivre la conversation la plus récente |


1588 1620 

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

1590 1622 

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

1592 1624 

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

1594 1626 


1631 1663 

1632Définissez `inline_pastes` pour indiquer à Claude Code quelles parties de `message.content` l'utilisateur a collées plutôt que tapées, avec une chaîne par collage. Le texte du prompt reste là où l'utilisateur l'a placé. Claude Code peut encadrer chaque collage listé de balises `<pasted_content>` à l'endroit où il se trouve, afin que Claude puisse distinguer le contenu collé des propres mots de l'utilisateur. Seuls les collages situés dans le dernier bloc de texte du prompt sont encadrés. Nécessite TypeScript Agent SDK v0.3.280 ou version ultérieure.1664Définissez `inline_pastes` pour indiquer à Claude Code quelles parties de `message.content` l'utilisateur a collées plutôt que tapées, avec une chaîne par collage. Le texte du prompt reste là où l'utilisateur l'a placé. Claude Code peut encadrer chaque collage listé de balises `<pasted_content>` à l'endroit où il se trouve, afin que Claude puisse distinguer le contenu collé des propres mots de l'utilisateur. Seuls les collages situés dans le dernier bloc de texte du prompt sont encadrés. Nécessite TypeScript Agent SDK v0.3.280 ou version ultérieure.

1633 1665 

1666Chaque champ de collage a une limite de taille :

1667 

1668* `pasted_content` : si les entrées et les blocs de contenu qu'elles contiennent dépassent 1 000 au total, Claude Code ignore l'ensemble du champ.

1669* `inline_pastes` : Claude Code utilise les 100 premières entrées non vides et ignore le reste.

1670 

1634Définissez `shouldQuery`, `client_composed` ou `priority` pour modifier la façon dont Claude Code traite un message que vous envoyez :1671Définissez `shouldQuery`, `client_composed` ou `priority` pour modifier la façon dont Claude Code traite un message que vous envoyez :

1635 1672 

1636* `shouldQuery` : définissez-le à `false` pour ajouter le message à la transcription sans déclencher un tour d'assistant. Le message est conservé et fusionné dans le prochain message utilisateur qui déclenche un tour. Utilisez ceci pour injecter du contexte, comme la sortie d'une commande que vous avez exécutée hors bande, sans dépenser un appel de modèle pour cela.1673* `shouldQuery` : définissez-le à `false` pour ajouter le message à la transcription sans déclencher un tour d'assistant. Le message est conservé et fusionné dans le prochain message utilisateur qui déclenche un tour. Utilisez ceci pour injecter du contexte, comme la sortie d'une commande que vous avez exécutée hors bande, sans dépenser un appel de modèle pour cela.


1661* Un appel WebFetch ou WebSearch que Claude Code a déplacé en arrière-plan pour livrer un message `'now'` : le message utilisateur qui porte le `tool_result` de cet appel a `tool_use_result` défini sur `{ detachedToolCall: true }`. L'appel est toujours en cours et Claude reçoit son résultat une fois qu'il est terminé. Aucun second `tool_result` pour ce `tool_use_id` ne suit : si votre application affiche une ligne pour chaque appel d'outil, marquez donc cette ligne comme déplacée en arrière-plan lorsque ce message arrive. Nécessite Claude Code v2.1.287 ou version ultérieure.1698* Un appel WebFetch ou WebSearch que Claude Code a déplacé en arrière-plan pour livrer un message `'now'` : le message utilisateur qui porte le `tool_result` de cet appel a `tool_use_result` défini sur `{ detachedToolCall: true }`. L'appel est toujours en cours et Claude reçoit son résultat une fois qu'il est terminé. Aucun second `tool_result` pour ce `tool_use_id` ne suit : si votre application affiche une ligne pour chaque appel d'outil, marquez donc cette ligne comme déplacée en arrière-plan lorsque ce message arrive. Nécessite Claude Code v2.1.287 ou version ultérieure.

1662* Un outil MCP dont le résultat contient des blocs `resource_link` : `tool_use_result` est un objet doté d'un tableau `resourceLinks` d'entrées [`SDKMcpResourceLink`](#sdkmcpresourcelink). Claude reçoit chaque lien sous la forme d'une ligne de texte dans le bloc `tool_result` : lisez donc `resourceLinks` pour afficher les fichiers renvoyés par le serveur au lieu d'analyser ce texte. Claude Code omet `resourceLinks` lorsque le résultat ne contient aucun lien ainsi que sur les résultats provenant de sous-agents, conserve au maximum 50 liens par résultat et cesse d'ajouter des liens une fois que le tableau atteint 64 Kio de JSON sérialisé. `resourceLinks` nécessite Agent SDK v0.3.257 ou version ultérieure.1699* Un outil MCP dont le résultat contient des blocs `resource_link` : `tool_use_result` est un objet doté d'un tableau `resourceLinks` d'entrées [`SDKMcpResourceLink`](#sdkmcpresourcelink). Claude reçoit chaque lien sous la forme d'une ligne de texte dans le bloc `tool_result` : lisez donc `resourceLinks` pour afficher les fichiers renvoyés par le serveur au lieu d'analyser ce texte. Claude Code omet `resourceLinks` lorsque le résultat ne contient aucun lien ainsi que sur les résultats provenant de sous-agents, conserve au maximum 50 liens par résultat et cesse d'ajouter des liens une fois que le tableau atteint 64 Kio de JSON sérialisé. `resourceLinks` nécessite Agent SDK v0.3.257 ou version ultérieure.

1663* Un outil MCP qui renvoie [`structuredContent`](#calltoolresult) : `tool_use_result` est un objet dont le membre `structuredContent` contient ce que le serveur a envoyé et dont le membre `content` contient la valeur [`McpOutput`](#mcpoutput). Les résultats provenant de sous-agents ne portent pas `structuredContent`.1700* Un outil MCP qui renvoie [`structuredContent`](#calltoolresult) : `tool_use_result` est un objet dont le membre `structuredContent` contient ce que le serveur a envoyé et dont le membre `content` contient la valeur [`McpOutput`](#mcpoutput). Les résultats provenant de sous-agents ne portent pas `structuredContent`.

1664* Un outil MCP dont le `structuredContent` se sérialise en plus de 1 048 576 caractères de JSON : Claude Code retire `structuredContent` de `tool_use_result` et définit `structuredContentOmitted: true` à sa place, afin que votre application puisse distinguer un objet abandonné d'un outil qui n'en a envoyé aucun. Les autres membres, tels que `content` et `resourceLinks`, restent, et ce que reçoit Claude ne change pas. Les outils provenant de [serveurs SDK in-process](/docs/fr/agent-sdk/custom-tools) et les outils dont l'entrée `tools/list` déclare une [ressource MCP Apps `_meta.ui`](#mcpserverstatus) sont exemptés et livrent l'objet en entier. Claude Code v2.1.287 ou version ultérieure applique ce plafond.1701* Un outil MCP dont le `structuredContent` se sérialise en plus de 1 048 576 caractères de JSON : Claude Code omet `structuredContent` de `tool_use_result` et définit à la place `structuredContentOmitted: true`, afin que votre application puisse distinguer un objet abandonné d'un outil qui n'en a envoyé aucun. Les autres membres, comme `content` et `resourceLinks`, sont conservés, et ce que Claude reçoit ne change pas. Claude Code v2.1.287 ou une version ultérieure applique ce plafond. Deux types d'outils font exception :

1702 * Les outils provenant de [serveurs SDK en processus](/docs/fr/agent-sdk/custom-tools) en sont exemptés et transmettent l'objet entier.

1703 * Un outil dont l'entrée `tools/list` déclare une [ressource MCP Apps `ui://`](#mcpserverstatus) a une limite de 8 388 608 caractères avec Claude Code v2.1.295 ou une version ultérieure, et les versions antérieures à v2.1.295 l'en exemptent.

1665 1704 

1666<h3 id="sdkusermessagereplay">1705<h3 id="sdkusermessagereplay">

1667 `SDKUserMessageReplay`1706 `SDKUserMessageReplay`


1775* `ttft_stream_ms` : temps en millisecondes jusqu'au premier événement de flux `message_start`, quand le flux de réponse s'ouvre. Inférieur à `ttft_ms` ; l'écart entre les deux est le temps passé à diffuser en streaming le premier message. Présent sur le bras de succès uniquement.1814* `ttft_stream_ms` : temps en millisecondes jusqu'au premier événement de flux `message_start`, quand le flux de réponse s'ouvre. Inférieur à `ttft_ms` ; l'écart entre les deux est le temps passé à diffuser en streaming le premier message. Présent sur le bras de succès uniquement.

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

1777* `user_message_uuids` : les `uuid`s de chaque message que vous avez envoyé auquel Claude Code a répondu dans ce tour. Voir [`user_message_uuids`](#user_message_uuids).1816* `user_message_uuids` : les `uuid`s de chaque message que vous avez envoyé auquel Claude Code a répondu dans ce tour. Voir [`user_message_uuids`](#user_message_uuids).

1778* `resume_reason` : la raison pour laquelle Claude Code a réexécuté ce tour après qu'un redémarrage l'a interrompu. Présent sur les deux branches. Consultez [`resume_reason`](#resume_reason).1817* `resume_reason` : la raison pour laquelle ce tour poursuit un tour qu'un redémarrage a interrompu. Présent dans les deux branches. Consultez [`resume_reason`](#resume_reason).

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

1780* `request_sent_wall_ms` : millisecondes d'époque auxquelles Claude Code a envoyé la requête API, pour les jointures avec les horodatages côté serveur. Présent uniquement avec [`user_message_uuid`](#user_message_uuid), sur un résultat de succès avec `is_error` false dont le tour a envoyé une requête API.1819* `request_sent_wall_ms` : millisecondes d'époque auxquelles Claude Code a envoyé la requête API, pour les jointures avec les horodatages côté serveur. Présent uniquement avec [`user_message_uuid`](#user_message_uuid), sur un résultat de succès avec `is_error` false dont le tour a envoyé une requête API.

1781* `first_content_frame_ms` : temps en millisecondes jusqu'au premier événement de flux `content_block_start` ou `content_block_delta`, en comptant les blocs de réflexion comme du contenu. Présent sur le bras de succès uniquement, quand `is_error` est false. Nécessite Agent SDK v0.3.260 ou ultérieur.1820* `first_content_frame_ms` : temps en millisecondes jusqu'au premier événement de flux `content_block_start` ou `content_block_delta`, en comptant les blocs de réflexion comme du contenu. Présent sur le bras de succès uniquement, quand `is_error` est false. Nécessite Agent SDK v0.3.260 ou ultérieur.


1825 1864 

1826* **Un message régulier que vous avez envoyé**, c'est-à-dire sans `isSynthetic: true` : le tour répond à ce message pour toute sa durée. Quand vous envoyez plusieurs messages rapprochés, Claude Code peut les fusionner en un seul tour, et le champ porte alors uniquement l'`uuid` du dernier message. Pour faire correspondre la réponse à l'un des messages fusionnés, utilisez [`user_message_uuids`](#user_message_uuids).1865* **Un message régulier que vous avez envoyé**, c'est-à-dire sans `isSynthetic: true` : le tour répond à ce message pour toute sa durée. Quand vous envoyez plusieurs messages rapprochés, Claude Code peut les fusionner en un seul tour, et le champ porte alors uniquement l'`uuid` du dernier message. Pour faire correspondre la réponse à l'un des messages fusionnés, utilisez [`user_message_uuids`](#user_message_uuids).

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

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

1829* **Tout autre prompt que Claude Code a généré lui-même** : le tour ne répond d'abord à aucun message de votre part et ses cadres ne portent aucun écho. Si Claude Code prend en compte un message régulier de votre part entre les appels d'outils, le tour répond à ce message à partir de là. L'écho de prise en compte nécessite Agent SDK v0.3.265 ou ultérieur ; les versions antérieures ne renvoient rien sur ces tours.1868* **Tout autre prompt que Claude Code a généré lui-même** : le tour ne répond d'abord à aucun message de votre part et ses cadres ne portent aucun écho. Si Claude Code prend en compte un message régulier de votre part entre les appels d'outils, le tour répond à ce message à partir de là. L'écho de prise en compte nécessite Agent SDK v0.3.265 ou ultérieur ; les versions antérieures ne renvoient rien sur ces tours.

1830 1869 

1831Claude Code renvoie l'`uuid` du message auquel il répond sur trois types de cadre :1870Claude Code renvoie l'`uuid` du message auquel il répond sur trois types de cadre :


1857 `resume_reason`1896 `resume_reason`

1858</h4>1897</h4>

1859 1898 

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

1861 1900 

1862Claude Code définit le champ sur deux types de cadre :1901Claude Code définit le champ sur deux types de cadre :

1863 1902 

1864* **Le résultat de la réexécution** : sur les bras de succès et d'erreur, que le résultat porte ou non `user_message_uuid`.1903* **Le résultat du tour poursuivi** : dans la branche de succès comme dans la branche d'erreur, que le résultat porte ou non `user_message_uuid`.

1865* **Les cadres de réponse de la réexécution** : ceux qui portent [`user_message_uuid`](#user_message_uuid).1904* **Les trames de réponse du tour poursuivi** : celles qui portent [`user_message_uuid`](#user_message_uuid).

1866 1905 

1867La valeur est un court identifiant en minuscules indiquant pourquoi le tour a été réexécuté, comme `interrupted_turn`.1906La valeur est un court token en minuscules, tel que `interrupted_turn`.

1868 1907 

1869<h4 id="queued_turn_count">1908<h4 id="queued_turn_count">

1870 `queued_turn_count`1909 `queued_turn_count`


2029};2068};

2030```2069```

2031 2070 

2032Claude Code définit `user_message_uuid` et `user_message_uuids` sur le premier événement de flux non-ping du tour, et à nouveau quand le message auquel le tour répond change, selon les conditions dans [`user_message_uuid`](#user_message_uuid). Quand Claude Code réexécute un tour qu'un redémarrage a interrompu, les événements de flux de la réexécution qui portent ces champs portent aussi [`resume_reason`](#resume_reason).2071Claude Code définit `user_message_uuid` et `user_message_uuids` sur le premier événement de flux du tour qui n'est pas un ping, puis de nouveau lorsque le message auquel le tour répond change, dans les conditions décrites dans [`user_message_uuid`](#user_message_uuid). Lorsque le tour poursuit un tour qu'un redémarrage a interrompu, les événements de flux qui portent ces champs portent également [`resume_reason`](#resume_reason).

2033 2072 

2034<h3 id="sdkcompactboundarymessage">2073<h3 id="sdkcompactboundarymessage">

2035 `SDKCompactBoundaryMessage`2074 `SDKCompactBoundaryMessage`


3560| - | - | - |3599| - | - | - |

3561| `script` | `string` | Script de workflow en ligne. Doit commencer par `export const meta = { name, description }` comme littéral, suivi du corps du script utilisant `agent()`, `parallel()`, `pipeline()` et `phase()`. Un tableau `phases` optionnel dans `meta` regroupe les agents sous des étapes nommées dans la vue de progression |3600| `script` | `string` | Script de workflow en ligne. Doit commencer par `export const meta = { name, description }` comme littéral, suivi du corps du script utilisant `agent()`, `parallel()`, `pipeline()` et `phase()`. Un tableau `phases` optionnel dans `meta` regroupe les agents sous des étapes nommées dans la vue de progression |

3562| `name` | `string` | Nom d'un workflow intégré ou d'un workflow enregistré dans `.claude/workflows/`. Résolu en script |3601| `name` | `string` | Nom d'un workflow intégré ou d'un workflow enregistré dans `.claude/workflows/`. Résolu en script |

3563| `scriptPath` | `string` | Chemin vers un fichier de script de workflow sur le disque. A priorité sur `script` et `name`. Claude Code persiste chaque invocation du script et retourne le chemin dans le résultat, afin que vous puissiez éditer ce fichier et réinvoquer avec le même `scriptPath` pour itérer |3602| `scriptPath` | `string` | Chemin vers un fichier de script de workflow sur le disque, tel que le `scriptPath` retourné par une exécution précédente. A priorité sur `script` et `name`. Claude Code rejette `scriptPath` avec une erreur lorsque les outils de la session n'incluent pas `Read` |

3564| `args` | `unknown` | Valeur d'entrée exposée au script en tant que `args` global, pour les workflows nommés paramétrés tels qu'une question de recherche ou une liste de chemins de fichiers. Passez les tableaux et les objets comme des valeurs JSON réelles, pas comme une chaîne codée en JSON |3603| `args` | `unknown` | Valeur d'entrée exposée au script en tant que `args` global, pour les workflows nommés paramétrés tels qu'une question de recherche ou une liste de chemins de fichiers. Passez les tableaux et les objets comme des valeurs JSON réelles, pas comme une chaîne codée en JSON |

3565| `resumeFromRunId` | `string` | ID d'exécution d'une invocation `Workflow` antérieure à reprendre. Les appels `agent()` complétés avec des entrées inchangées retournent généralement les résultats en cache ; le reste s'exécute en direct. [Reprendre après une pause](/docs/fr/workflows#resume-after-a-pause) couvre les appels complétés qui se réexécutent. Même session uniquement |3604| `resumeFromRunId` | `string` | ID d'exécution d'une invocation `Workflow` antérieure à reprendre. Les appels `agent()` complétés avec des entrées inchangées retournent généralement les résultats en cache ; le reste s'exécute en direct. [Reprendre après une pause](/docs/fr/workflows#resume-after-a-pause) couvre les appels complétés qui se réexécutent. Même session uniquement |

3566| `title` | `string` | Ignoré ; le bloc `meta` du script définit le titre |3605| `title` | `string` | Ignoré ; le bloc `meta` du script définit le titre |

agent-view.md +18 −14

Details

152| Forme | Ce que cela signifie |152| Forme | Ce que cela signifie |

153| :- | :- |153| :- | :- |

154| `✻` ou `✽` animée | Le processus de session est en cours d'exécution, ou la session a besoin de votre entrée |154| `✻` ou `✽` animée | Le processus de session est en cours d'exécution, ou la session a besoin de votre entrée |

155| `∙` | Le processus a quitté. Vous pouvez toujours jeter un coup d'œil à la ligne, et lorsque vous répondez ou vous attachez, Claude redémarre à partir de là où il s'était arrêté |155| `∙` | Le processus a quitté. Vous pouvez toujours jeter un coup d'œil à la ligne, et lorsque vous répondez ou vous attachez, Claude redémarre la session à partir de sa conversation enregistrée |

156| `✢` | Une session [`/loop`](/docs/fr/scheduled-tasks) en sommeil entre les itérations. La ligne affiche son nombre d'exécutions et un compte à rebours |156| `✢` | Une session [`/loop`](/docs/fr/scheduled-tasks) en sommeil entre les itérations. La ligne affiche son nombre d'exécutions et un compte à rebours |

157 157 

158L'étiquette `#N` ou `!N` qui peut apparaître au bord droit d'une ligne est un lien vers la [pull request ou merge request](#pull-request-status) de la session, et non une partie de l'icône d'état.158L'étiquette `#N` ou `!N` qui peut apparaître au bord droit d'une ligne est un lien vers la [pull request ou merge request](#pull-request-status) de la session, et non une partie de l'icône d'état.


256 256 

257Les sessions attachées s'affichent toujours en [mode plein écran](/docs/fr/fullscreen), quel que soit votre paramètre `tui`, car une session en arrière-plan n'a pas d'historique de défilement de terminal auquel ajouter du contenu. Faites défiler avec `PgUp`, `PgDn` ou la molette de la souris, et appuyez sur `Ctrl+O` pour le mode transcription. Le défilement natif de votre terminal et le mode copie tmux affichent uniquement la fenêtre d'affichage actuelle, comme lorsque vous exécutez n'importe quelle application plein écran.257Les sessions attachées s'affichent toujours en [mode plein écran](/docs/fr/fullscreen), quel que soit votre paramètre `tui`, car une session en arrière-plan n'a pas d'historique de défilement de terminal auquel ajouter du contenu. Faites défiler avec `PgUp`, `PgDn` ou la molette de la souris, et appuyez sur `Ctrl+O` pour le mode transcription. Le défilement natif de votre terminal et le mode copie tmux affichent uniquement la fenêtre d'affichage actuelle, comme lorsque vous exécutez n'importe quelle application plein écran.

258 258 

259Une session attachée ne [signale pas son état à votre terminal](/docs/fr/terminal-config#see-session-status-in-your-terminal).

260 

259Appuyez sur `←` sur un prompt vide, ou exécutez `/exit`, pour vous détacher et revenir à la vue agent, que vous ayez ouvert la session à partir de la vue agent ou avec `claude attach <id>` à partir de votre shell.261Appuyez sur `←` sur un prompt vide, ou exécutez `/exit`, pour vous détacher et revenir à la vue agent, que vous ayez ouvert la session à partir de la vue agent ou avec `claude attach <id>` à partir de votre shell.

260 262 

261`←` détache également pendant que la [superposition `/btw`](/docs/fr/interactive-mode#side-questions-with-%2Fbtw) est ouverte. Nécessite Claude Code v2.1.257 ou ultérieur. Une question latérale qui est encore en train de répondre continue de s'exécuter pendant votre absence. La prochaine fois que vous vous attachez, la superposition se rouvre avec elle, ou avec sa réponse.263`←` détache également pendant que la [superposition `/btw`](/docs/fr/interactive-mode#side-questions-with-%2Fbtw) est ouverte. Nécessite Claude Code v2.1.257 ou ultérieur. Une question latérale qui est encore en train de répondre continue de s'exécuter pendant votre absence. La prochaine fois que vous vous attachez, la superposition se rouvre avec elle, ou avec sa réponse.


264 266 

265`Ctrl+Z` détache également mais revient plutôt à votre point de départ : la vue agent si vous vous êtes attaché à partir de là, ou votre shell si vous avez exécuté `claude attach`. Utilisez `Ctrl+Z` lorsqu'un dialogue a le focus et ne répond pas à `←`.267`Ctrl+Z` détache également mais revient plutôt à votre point de départ : la vue agent si vous vous êtes attaché à partir de là, ou votre shell si vous avez exécuté `claude attach`. Utilisez `Ctrl+Z` lorsqu'un dialogue a le focus et ne répond pas à `←`.

266 268 

267`Ctrl+C` conserve son comportement d'interruption standard pendant l'attachement : il annule une réponse en cours ou une commande shell `!` plutôt que de détacher. Appuyer deux fois sur `Ctrl+C` sur un prompt vide détache, comme dans n'importe quelle session.269`Ctrl+C` conserve son comportement d'interruption standard pendant l'attachement : il annule une réponse en cours ou une commande shell `!` plutôt que de détacher. Appuyer deux fois sur `Ctrl+C` sur un prompt vide détache.

268 270 

269Le détachement n'arrête jamais une session en arrière-plan : `←`, `Ctrl+Z`, `/exit` et double `Ctrl+C` ou double `Ctrl+D` la laissent tous en cours d'exécution. Pour terminer une session de l'intérieur, exécutez `/stop`.271Le détachement n'arrête jamais une session en arrière-plan : `←`, `Ctrl+Z`, `/exit` et double `Ctrl+C` ou double `Ctrl+D` la laissent tous en cours d'exécution. Si vous vous détachez pendant qu'une `/loop` attend sa prochaine itération, la boucle continue de s'exécuter et cette itération démarre à l'heure prévue sans vous. Pour arrêter la boucle avant de vous détacher, consultez [Arrêter une boucle](/docs/fr/scheduled-tasks#stop-a-loop). Pour terminer une session de l'intérieur, exécutez `/stop`.

270 272 

271<h4 id="switch-sessions-without-leaving-the-terminal">273<h4 id="switch-sessions-without-leaving-the-terminal">

272 Basculer entre les sessions sans quitter le terminal274 Basculer entre les sessions sans quitter le terminal


293Aprè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 :

294 296 

295* **Des sous-agents au premier plan s'exécutent encore** : Claude Code continue d'attendre afin que le travail des [sous-agents au premier plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) que Claude a démarrés soit transféré, et affiche `Still backgrounding after the current tool`. Appuyez à nouveau sur `←` pour mettre en arrière-plan sans attendre, ce qui redémarre ces sous-agents depuis le début.297* **Des sous-agents au premier plan s'exécutent encore** : Claude Code continue d'attendre afin que le travail des [sous-agents au premier plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) que Claude a démarrés soit transféré, et affiche `Still backgrounding after the current tool`. Appuyez à nouveau sur `←` pour mettre en arrière-plan sans attendre, ce qui redémarre ces sous-agents depuis le début.

296* **Une demande de permission ou une question attend votre réponse** : pendant qu'une demande de permission ou une question posée par Claude attend, Claude Code continue d'attendre et affiche `Still backgrounding after the current tool — a question is waiting for your answer.`298* **Une demande de permission ou une question attend votre réponse** : pendant qu'une demande de permission ou une question posée par Claude attend, Claude Code continue d'attendre et affiche `Still backgrounding after the current tool — a question is waiting for your answer.` Si votre réponse permet au tour de continuer, comme **Yes** sur une demande de permission, Claude Code met la session en arrière-plan lorsque l'outil actuel se termine.

297* **Vous tapez dans l'entrée du prompt** : Claude Code annule le basculement, car le texte non envoyé reste dans la zone de saisie de votre terminal et ne serait pas déplacé vers la session en arrière-plan. Il affiche `Backgrounding cancelled — you have unsent text in the input. Send it or clear it, then press ← again.`299* **Vous tapez dans l'entrée du prompt** : Claude Code annule le basculement, car le texte non envoyé reste dans la zone de saisie de votre terminal et ne serait pas déplacé vers la session en arrière-plan. Il affiche `Backgrounding cancelled — you have unsent text in the input. Send it or clear it, then press ← again.`

300* **Vous arrêtez le tour** : Claude Code annule le basculement et affiche `Backgrounding cancelled — the turn was stopped.` Par exemple, le tour s'arrête lorsque vous [interrompez Claude avec `Esc`](/docs/fr/interactive-mode#general-controls) ou sélectionnez **No** [sans commentaire](/docs/fr/permissions#add-a-comment-when-you-answer-a-permission-prompt) sur une demande de permission de la conversation principale, ou appuyez sur `Esc` sur une question que Claude y pose. Appuyez à nouveau sur `←` pour mettre la session en arrière-plan.

298* **Un message en file d'attente ne peut pas être déplacé** : les messages que vous avez [mis en file d'attente pendant que Claude travaillait](/docs/fr/interactive-mode#queue-messages-while-claude-works) sont déplacés vers la session en arrière-plan avec la conversation. Lorsque l'un d'eux ne peut pas l'être, la session reste au premier plan et Claude Code affiche un avis comme `Cannot open agents — 1 queued message can't move to the background. Press ← again once Claude has read it.`301* **Un message en file d'attente ne peut pas être déplacé** : les messages que vous avez [mis en file d'attente pendant que Claude travaillait](/docs/fr/interactive-mode#queue-messages-while-claude-works) sont déplacés vers la session en arrière-plan avec la conversation. Lorsque l'un d'eux ne peut pas l'être, la session reste au premier plan et Claude Code affiche un avis comme `Cannot open agents — 1 queued message can't move to the background. Press ← again once Claude has read it.`

299 302 

300Appuyer sur `←` crée la ligne de la session même lorsque la conversation n'a pas encore de messages, afin que `→` y revienne toujours.303Appuyer sur `←` crée la ligne de la session même lorsque la conversation n'a pas encore de messages, afin que `→` y revienne toujours.


513* `--fallback-model`516* `--fallback-model`

514* `--allow-dangerously-skip-permissions`517* `--allow-dangerously-skip-permissions`

515 518 

516Les répertoires que vous avez ajoutés pendant la session avec [`/add-dir`](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) sont également reportés. Reporter `--allow-dangerously-skip-permissions` maintient `bypassPermissions` accessible dans la session mise en arrière-plan, mais n'accorde rien de nouveau : le mode nécessite toujours l'acceptation interactive unique décrite dans [Mode de permission, modèle et effort](#permission-mode-model-and-effort).519Les répertoires que vous avez ajoutés pendant la session avec [`/add-dir`](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) sont également reportés. Reporter `--allow-dangerously-skip-permissions` maintient `bypassPermissions` accessible dans la session mise en arrière-plan, mais n'accorde rien de nouveau : le mode nécessite toujours que votre [acceptation de l'avertissement de contournement](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) soit enregistrée.

517 520 

518<span id="from-your-shell" />521<span id="from-your-shell" />

519 522 


767 770 

768Les valeurs par défaut actives apparaissent dans le pied de page sous l'entrée de lancement.771Les valeurs par défaut actives apparaissent dans le pied de page sous l'entrée de lancement.

769 772 

770Claude Code refuse `claude --bg --permission-mode bypassPermissions` tant que vous n'avez pas accepté l'avertissement de contournement en exécutant une fois `claude --dangerously-skip-permissions` de manière interactive, puisque ce mode permet à une session que vous ne surveillez pas d'agir sans approbation. Passer `--dangerously-skip-permissions` ou `--permission-mode bypassPermissions` à `claude agents` affiche le même avertissement si vous ne l'avez pas accepté auparavant, et l'accepter applique `bypassPermissions` aux sessions que vous lancez à partir de la vue. Passer `--allow-dangerously-skip-permissions` affiche également le même avertissement, et l'accepter rend `bypassPermissions` disponible dans le cycle `Shift+Tab` de ces sessions sans les y démarrer.773Une session en arrière-plan démarrée en mode `bypassPermissions` nécessite que votre [acceptation de l'avertissement de contournement](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) soit enregistrée, puisque ce mode permet à une session que vous ne surveillez pas d'agir sans approbation. Passer `--dangerously-skip-permissions` ou `--permission-mode bypassPermissions` à `claude agents` affiche le même avertissement si vous ne l'avez pas accepté auparavant, et l'accepter applique `bypassPermissions` aux sessions que vous lancez à partir de la vue. Passer `--allow-dangerously-skip-permissions` affiche également le même avertissement, et l'accepter rend `bypassPermissions` disponible dans le cycle `Shift+Tab` de ces sessions sans les y démarrer.

771 774 

772<h4 id="what-persists-across-restarts">775<h4 id="what-persists-across-restarts">

773 Ce qui persiste lors des redémarrages776 Ce qui persiste lors des redémarrages

774</h4>777</h4>

775 778 

776Le mode de permission, le modèle et l'effort que vous avez choisis pour une session en arrière-plan, ainsi que les [flags de configuration qu'elle reporte](#what-carries-over-when-you-background), persistent tous lorsque le superviseur [arrête et redémarre](#the-supervisor-process) ultérieurement son processus. Une session que vous avez lancée avec `claude --bg --dangerously-skip-permissions` ou `claude --bg --permission-mode bypassPermissions` reste en `bypassPermissions` après ce redémarrage. Un modèle ou un effort que vous avez changé en cours de session avec `/model` ou `/effort` est également conservé.779Le mode de permission, le modèle et l'effort que vous avez choisis pour une session en arrière-plan, ainsi que les [flags de configuration qu'elle reporte](#what-carries-over-when-you-background), persistent tous lorsque le superviseur [arrête et redémarre](#the-supervisor-process) ultérieurement son processus. Un modèle ou un effort que vous avez changé en cours de session avec `/model` ou `/effort` est également conservé.

777 780 

778Si la session a pris son effort dans vos paramètres plutôt que dans `--effort` ou `/effort`, Claude Code relit vos paramètres chaque fois qu'il démarre un processus pour la session. Après avoir modifié l'effort enregistré dans `settings.json`, le changement atteint les sessions que vous mettez en arrière-plan avec `←` ou `/bg`, ainsi que leurs redémarrages ultérieurs. L'effort enregistré correspond à la clé [`effortLevel`](/docs/fr/settings-reference#effortlevel) ou à une entrée [`modelSettings`](/docs/fr/settings-reference#modelsettings).781Si la session a pris son effort dans vos paramètres plutôt que dans `--effort` ou `/effort`, Claude Code relit vos paramètres chaque fois qu'il démarre un processus pour la session. Après avoir modifié l'effort enregistré dans `settings.json`, le changement atteint les sessions que vous mettez en arrière-plan avec `←` ou `/bg`, ainsi que leurs redémarrages ultérieurs. L'effort enregistré correspond à la clé [`effortLevel`](/docs/fr/settings-reference#effortlevel) ou à une entrée [`modelSettings`](/docs/fr/settings-reference#modelsettings).

779 782 


822| `claude attach <id\|name>` | S'attacher à une session dans ce terminal |825| `claude attach <id\|name>` | S'attacher à une session dans ce terminal |

823| `claude logs <id\|name>` | Afficher la sortie récente de la session |826| `claude logs <id\|name>` | Afficher la sortie récente de la session |

824| `claude stop <id>` | Arrêter une session. Accepte aussi `claude kill` |827| `claude stop <id>` | Arrêter une session. Accepte aussi `claude kill` |

825| `claude respawn <id>` | Redémarrer une session, en cours d'exécution ou arrêtée, par exemple pour utiliser un binaire Claude Code mis à jour. La session redémarrée reprend sa conversation enregistrée ; quand aucune n'est sur le disque, elle exécute à nouveau son prompt original en tant que nouvelle conversation |828| `claude respawn <id>` | Redémarrer une session, en cours d'exécution ou arrêtée, par exemple pour utiliser un binaire Claude Code mis à jour. Une session qui a une conversation enregistrée la reprend |

826| `claude respawn --all` | Redémarrer chaque session en cours d'exécution, par exemple pour déplacer toutes les sessions vers un binaire Claude Code mis à jour en une seule fois |829| `claude respawn --all` | Redémarrer chaque session en cours d'exécution, par exemple pour déplacer toutes les sessions vers un binaire Claude Code mis à jour en une seule fois |

827| `claude rm <id>` | Supprimer une session de la liste, ainsi qu'une worktree que Claude a créée pour elle quand il est sûr de la supprimer ; voir [Ce que la suppression d'une session supprime](#what-deleting-a-session-removes). La transcription de la conversation reste sur votre machine locale et reste disponible via `claude --resume` |830| `claude rm <id>` | Supprimer une session de la liste, ainsi qu'une worktree que Claude a créée pour elle quand il est sûr de la supprimer ; voir [Ce que la suppression d'une session supprime](#what-deleting-a-session-removes). La transcription de la conversation reste sur votre machine locale et reste disponible via `claude --resume` |

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

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

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

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

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

833 836 

834`claude attach` et `claude logs` peuvent prendre une partie du nom d'une session à la place de l'ID, comme dans `claude logs "auth refactor"`. Passer un nom nécessite Claude Code v2.1.290 ou ultérieur.837`claude attach` et `claude logs` peuvent prendre une partie du nom d'une session à la place de l'ID, comme dans `claude logs "auth refactor"`. `claude attach` n'ouvre une session par son nom que tant que son processus est en cours d'exécution ; passez donc plutôt l'ID pour redémarrer une session arrêtée. Passer un nom nécessite Claude Code v2.1.290 ou ultérieur.

835 838 

836<h3 id="list-sessions-as-json">839<h3 id="list-sessions-as-json">

837 Afficher les sessions en tant que JSON840 Afficher les sessions en tant que JSON


889* **Terminé ou en attente de votre prochain message, et non attaché pendant environ une heure** : le superviseur arrête le processus pour libérer des ressources. Une session qui a terminé son tour en vous posant une question compte comme en attente de votre prochain message. La conversation reste sur le disque, et la prochaine fois que vous vous attachez ou répondez, la session reprend là où elle s'était arrêtée. Épinglez une session avec `Ctrl+T` pour garder son processus en cours d'exécution.892* **Terminé ou en attente de votre prochain message, et non attaché pendant environ une heure** : le superviseur arrête le processus pour libérer des ressources. Une session qui a terminé son tour en vous posant une question compte comme en attente de votre prochain message. La conversation reste sur le disque, et la prochaine fois que vous vous attachez ou répondez, la session reprend là où elle s'était arrêtée. Épinglez une session avec `Ctrl+T` pour garder son processus en cours d'exécution.

890* **Arrêté de manière inattendue tandis que le superviseur est en cours d'exécution** : le superviseur redémarre le processus. Terminer une session que vous avez mise en arrière-plan vous-même avec `←` ou `/background`, par exemple avec `kill`, la marque comme arrêtée au lieu de la redémarrer. Pour les sessions qui se sont terminées avec un arrêt, voir [Les sessions s'affichent comme échouées ou arrêtées après l'arrêt](#sessions-show-as-failed-after-shutdown).893* **Arrêté de manière inattendue tandis que le superviseur est en cours d'exécution** : le superviseur redémarre le processus. Terminer une session que vous avez mise en arrière-plan vous-même avec `←` ou `/background`, par exemple avec `kill`, la marque comme arrêtée au lieu de la redémarrer. Pour les sessions qui se sont terminées avec un arrêt, voir [Les sessions s'affichent comme échouées ou arrêtées après l'arrêt](#sessions-show-as-failed-after-shutdown).

891* **Après une mise à jour automatique** : le superviseur redémarre lui-même sur la nouvelle version et déplace les sessions inactives en arrière-plan. Les sessions qui fonctionnent, qui attendent votre entrée, ou qui sont attachées ne sont pas interrompues.894* **Après une mise à jour automatique** : le superviseur redémarre lui-même sur la nouvelle version et déplace les sessions inactives en arrière-plan. Les sessions qui fonctionnent, qui attendent votre entrée, ou qui sont attachées ne sont pas interrompues.

895* **Le superviseur lui-même s'arrête**, par exemple parce que son processus a été terminé depuis l'extérieur de Claude Code : sur macOS et Linux, le processus de chaque session attend environ une minute qu'un nouveau superviseur s'y reconnecte, et s'arrête si aucun ne le fait. Exécutez `claude agents` dans votre shell durant cette minute pour démarrer un nouveau superviseur et garder vos sessions en cours d'exécution. Si la minute s'écoule d'abord, les sessions s'arrêtent, mais leurs conversations enregistrées restent sur le disque : attachez-vous à une session ou répondez-y et elle redémarre à partir de sa conversation enregistrée, comme décrit dans [Les sessions s'affichent comme échouées ou arrêtées après l'arrêt](#sessions-show-as-failed-after-shutdown).

892 896 

893Quand le processus d'une session s'arrête ou redémarre, les commandes shell en arrière-plan, les workflows dynamiques et les sous-agents en arrière-plan que Claude a démarrés dedans se reportent à son processus suivant ; les monitors en cours d'exécution et les commandes shell qu'un sous-agent a démarrées s'arrêtent avec le processus. Supprimer la session arrête tout ce qu'elle a reporté. Pour arrêter tout cela avec le processus à la place, définissez [`CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF`](/docs/fr/env-vars#variables) à `1`.897Quand le processus d'une session s'arrête ou redémarre, les commandes shell en arrière-plan, les workflows dynamiques et les sous-agents en arrière-plan que Claude a démarrés dedans se reportent à son processus suivant ; les monitors en cours d'exécution et les commandes shell qu'un sous-agent a démarrées s'arrêtent avec le processus. Supprimer la session arrête tout ce qu'elle a reporté. Pour arrêter tout cela avec le processus à la place, définissez [`CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF`](/docs/fr/env-vars#variables) à `1`.

894 898 


911 915 

912Pour inspecter cet état sans lire les fichiers directement, exécutez `claude daemon status`. Il rapporte si le superviseur est accessible, son ID de processus et sa version, le répertoire socket, et combien de sessions en arrière-plan sont actives.916Pour inspecter cet état sans lire les fichiers directement, exécutez `claude daemon status`. Il rapporte si le superviseur est accessible, son ID de processus et sa version, le répertoire socket, et combien de sessions en arrière-plan sont actives.

913 917 

914La commande avertit également quand le superviseur en cours d'exécution est sur une version différente de celle du `claude` que vous avez invoqué, ce qui se produit après une mise à jour que le superviseur n'a pas encore redémarrée. L'avertissement affiche les deux versions et vous dit d'exécuter `claude daemon stop --any` pour récupérer la nouvelle version. Quand Claude Code est installé en tant que service du système d'exploitation, la commande suggérée est `claude daemon stop` sans le flag.918La commande avertit également quand le superviseur en cours d'exécution est sur une version différente de celle du `claude` que vous avez invoqué, ce qui se produit après une mise à jour que le superviseur n'a pas encore redémarrée. L'avertissement affiche les deux versions et vous dit d'exécuter `claude daemon stop --any` pour récupérer la nouvelle version.

915 919 

916Les sessions survivent intactes à ce décalage de version : une version plus ancienne de Claude Code qui met à jour le `state.json` d'une session préserve les champs qu'elle ne reconnaît pas et garde la session listée. La liste des sessions dans `roster.json` suit la même règle, donc les sessions démarrées par la version plus récente restent accessibles et continuent d'accepter l'entrée après le redémarrage du superviseur.920Les sessions survivent intactes à ce décalage de version : une version plus ancienne de Claude Code qui met à jour le `state.json` d'une session préserve les champs qu'elle ne reconnaît pas et garde la session listée. La liste des sessions dans `roster.json` suit la même règle, donc les sessions démarrées par la version plus récente restent accessibles et continuent d'accepter l'entrée après le redémarrage du superviseur.

917 921 


963 967 

964L'arrêt ou le redémarrage de votre machine arrête les sessions en arrière-plan en cours d'exécution. Une session qui attendait votre entrée reste sous `Needs input` quand vous revenez. Pour toute autre session en cours d'exécution, ce que la vue agent affiche dépend de la durée depuis laquelle elle a fait des progrès :968L'arrêt ou le redémarrage de votre machine arrête les sessions en arrière-plan en cours d'exécution. Une session qui attendait votre entrée reste sous `Needs input` quand vous revenez. Pour toute autre session en cours d'exécution, ce que la vue agent affiche dépend de la durée depuis laquelle elle a fait des progrès :

965 969 

966* Dans les 48 heures, la session s'affiche comme échouée. Attachez-la ou répondez-lui et elle redémarre d'où elle s'était arrêtée.970* Dans les 48 heures, la session s'affiche comme échouée. Attachez-la ou répondez-lui et elle redémarre à partir de sa conversation enregistrée. Pour reprendre le travail interrompu, envoyez-lui une réponse lui demandant de continuer.

967* Après 48 heures, par exemple après que la machine a été éteinte pendant des jours, la session s'affiche comme arrêtée avec `ended while the background service was off`. Appuyez sur `Enter` sur la ligne et le pied de page affiche `Press enter again to resume this session (it ended while the background service was off), or ctrl+x to delete it.` Appuyez sur `Enter` sur la même ligne à nouveau pour reprendre sa conversation enregistrée. Une réponse ou `claude attach <id>` la reprend sans ce message de pied de page.971* Après 48 heures, par exemple après que la machine a été éteinte pendant des jours, la session s'affiche comme arrêtée avec `ended while the background service was off`. Appuyez sur `Enter` sur la ligne et le pied de page affiche `Press enter again to resume this session (it ended while the background service was off), or ctrl+x to delete it.` Appuyez sur `Enter` sur la même ligne à nouveau pour reprendre sa conversation enregistrée. Une réponse ou `claude attach <id>` la reprend sans ce message de pied de page.

968 972 

969Quand le [nettoyage des transcriptions](/docs/fr/settings-reference#cleanupperioddays) a supprimé la conversation enregistrée d'une session arrêtée, Claude Code refuse d'ouvrir la ligne : le message dit qu'il n'y a rien à reprendre. `claude rm <id>` supprime la ligne, sauf dans les [cas conservés](#what-deleting-a-session-removes) décrits ci-dessus, et `claude respawn <id>` exécute à nouveau son prompt d'origine. Consultez [This session's saved conversation is no longer on disk](/docs/fr/errors#this-sessions-saved-conversation-is-no-longer-on-disk).973Quand le [nettoyage des transcriptions](/docs/fr/settings-reference#cleanupperioddays) a supprimé la conversation enregistrée d'une session arrêtée, Claude Code refuse d'ouvrir la ligne : le message dit qu'il n'y a rien à reprendre. `claude rm <id>` supprime la ligne, sauf dans les [cas conservés](#what-deleting-a-session-removes) décrits ci-dessus, et `claude respawn <id>` exécute à nouveau son prompt d'origine. Consultez [This session's saved conversation is no longer on disk](/docs/fr/errors#this-sessions-saved-conversation-is-no-longer-on-disk).


1022claude daemon stop --any --keep-workers1026claude daemon stop --any --keep-workers

1023```1027```

1024 1028 

1025Le nouveau superviseur se reconnecte aux sessions en cours d'exécution. Sans `--keep-workers`, la commande termine également les sessions en arrière-plan. Le flag `--any` confirme que vous voulez arrêter un superviseur qui a démarré à la demande plutôt que comme service installé, ce qui est la valeur par défaut.1029Exécutez ensuite `claude agents` dans votre shell pour démarrer le nouveau superviseur. Si vous le faites dans un délai d'[environ une minute](#the-supervisor-process) après l'arrêt, il se reconnecte aux sessions toujours en cours d'exécution, et leur travail continue sans interruption. Si vous mettez plus de temps, sur macOS et Linux les sessions se sont alors arrêtées d'elles-mêmes, et l'attachement ou la réponse à l'une d'elles la redémarre à partir de sa conversation enregistrée. Sans `--keep-workers`, la commande termine également les sessions en arrière-plan. Le flag `--any` permet à la commande d'arrêter un superviseur que Claude Code a démarré à la demande.

1026 1030 

1027Un superviseur qui démarre mais ne peut pas accepter les connexions se termine et libère son verrou de sa propre initiative, donc le prochain `claude agents` en démarre un nouveau sans cet arrêt manuel. Les étapes ci-dessus s'appliquent quand un superviseur en cours d'exécution se fige.1031Un superviseur qui démarre mais ne peut pas accepter les connexions se termine et libère son verrou de sa propre initiative, donc le prochain `claude agents` en démarre un nouveau sans cet arrêt manuel. Les étapes ci-dessus s'appliquent quand un superviseur en cours d'exécution se fige.

1028 1032 


1040claude daemon stop --any --keep-workers1044claude daemon stop --any --keep-workers

1041```1045```

1042 1046 

1043Le prochain `claude agents` ou `claude --bg` démarre un nouveau superviseur qui lit vos identifiants stockés. Si vous vous authentifiez avec une variable d'environnement telle que `ANTHROPIC_API_KEY` plutôt que `/login`, exécutez cette commande suivante depuis un shell où la variable est définie.1047Dans un délai d'[environ une minute](#the-supervisor-process), exécutez `claude agents` ou `claude --bg` dans votre shell pour démarrer un nouveau superviseur qui lit vos identifiants stockés. Si vous vous authentifiez avec une variable d'environnement telle que `ANTHROPIC_API_KEY` plutôt que `/login`, exécutez cette commande suivante depuis un shell où la variable est définie.

1044 1048 

1045Consultez la [référence des erreurs](/docs/fr/errors#could-not-resolve-authentication-method) pour la liste complète des causes et des correctifs.1049Consultez la [référence des erreurs](/docs/fr/errors#could-not-resolve-authentication-method) pour la liste complète des causes et des correctifs.

1046 1050 

analytics.md +1 −1

Details

67* **« Application GitHub requise »** : installez l'application GitHub pour consulter les métriques de contribution67* **« Application GitHub requise »** : installez l'application GitHub pour consulter les métriques de contribution

68* **« Traitement des données en cours »** : revenez dans quelques jours et confirmez que l'application GitHub est installée si les données n'apparaissent pas68* **« Traitement des données en cours »** : revenez dans quelques jours et confirmez que l'application GitHub est installée si les données n'apparaissent pas

69 69 

70Les métriques de contribution prennent en charge GitHub Cloud et GitHub Enterprise Server.70Les métriques de contribution couvrent les dépôts hébergés sur github.com. Pour les dépôts sur [GitHub Enterprise Server](/docs/fr/github-enterprise-server), le tableau de bord analytique affiche uniquement les métriques d'utilisation.

71 71 

72<h3 id="review-summary-metrics">72<h3 id="review-summary-metrics">

73 Examiner les métriques récapitulatives73 Examiner les métriques récapitulatives

Details

96 <Step title="Ajouter des utilisateurs">96 <Step title="Ajouter des utilisateurs">

97 Vous pouvez ajouter des utilisateurs par l'une ou l'autre méthode :97 Vous pouvez ajouter des utilisateurs par l'une ou l'autre méthode :

98 98 

99 * Inviter en masse des utilisateurs depuis la Console : Settings -> Members -> Invite99 * Inviter en masse des utilisateurs depuis la page Members de la Console, à l'adresse [platform.claude.com/settings/members](https://platform.claude.com/settings/members) : cliquez sur **Invite**

100 * [Configurer SSO](https://support.claude.com/en/articles/13132885-setting-up-single-sign-on-sso)100 * [Configurer SSO](https://support.claude.com/en/articles/13132885-setting-up-single-sign-on-sso)

101 </Step>101 </Step>

102 102 


123 123 

124Vous pouvez vous connecter à votre compte Console sans créer de clé API, même si votre organisation ne permet pas aux développeurs d'en créer. Choisissez le compte Anthropic Console à l'invite `/login` et Claude Code vous demande comment vous souhaitez vous connecter. Nécessite Claude Code v2.1.242 ou version ultérieure. Les deux itinéraires vous connectent à Console dans le navigateur et diffèrent dans ce que Claude Code stocke ensuite :124Vous pouvez vous connecter à votre compte Console sans créer de clé API, même si votre organisation ne permet pas aux développeurs d'en créer. Choisissez le compte Anthropic Console à l'invite `/login` et Claude Code vous demande comment vous souhaitez vous connecter. Nécessite Claude Code v2.1.242 ou version ultérieure. Les deux itinéraires vous connectent à Console dans le navigateur et diffèrent dans ce que Claude Code stocke ensuite :

125 125 

126* **Se connecter avec votre compte Console**, étiqueté `(recommandé)` : Claude Code conserve le jeton OAuth de cette connexion et le stocke en tant que [profil Anthropic](#anthropic-profiles-and-federation-credentials). Il ne crée aucune clé API126* **Se connecter avec votre compte Console**, étiqueté `(recommended)` : Claude Code conserve le jeton OAuth de cette connexion et le stocke en tant que [profil Anthropic](#anthropic-profiles-and-federation-credentials). Il ne crée aucune clé API

127* **Créer une clé API**, étiqueté `(hérité)` : Claude Code crée une clé API Console pour vous et la stocke avec vos autres identifiants127* **Créer une clé API**, étiqueté `(legacy)` : Claude Code crée une clé API Console pour vous et la stocke avec vos autres identifiants

128 128 

129En pratique, le profil stocke une connexion OAuth tandis qu'une clé API est un identifiant statique : Claude Code actualise automatiquement la connexion du profil, et lorsque l'actualisation échoue, les demandes échouent avec [Anthropic profile login expired](/docs/fr/errors#anthropic-profile-login-expired) jusqu'à ce que vous vous reconnectiez.129En pratique, le profil stocke une connexion OAuth tandis qu'une clé API est un identifiant statique : Claude Code actualise automatiquement la connexion du profil, et lorsque l'actualisation échoue, les demandes échouent avec [Anthropic profile login expired](/docs/fr/errors#anthropic-profile-login-expired) jusqu'à ce que vous vous reconnectiez.

130 130 

Details

1> ## Documentation Index

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

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

4 

5# Frais de requête du classifieur en mode auto

6 

7> Résolvez l'avis Claude Code indiquant que cette session n'est pas admissible aux requêtes de classifieur sans frais du mode auto : ce que cela signifie, pourquoi il apparaît et ce qu'il faut faire.

8 

9En [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), un classificateur vérifie les actions telles que les commandes shell et les demandes réseau avant qu'elles ne s'exécutent. Partout où [les vérifications côté serveur sont activées](/docs/fr/permission-modes#server-side-classifier-review), le serveur effectue ces vérifications dans le cadre des propres demandes de modèle de la session, sans frais. Ce dialogue signifie que les vérifications du serveur n'atteignent pas votre session, donc Claude Code effectue ses propres demandes de classificateur à la place, et sur votre compte ces demandes comptent dans votre utilisation de tokens :

10 

11```text theme={null}

12We're changing auto mode to no longer charge for classifier requests in Claude Code. However, this session isn't eligible.

13```

14 

15À l'invite, Claude Code retient la première action qu'il vérifierait de cette manière jusqu'à ce que vous répondiez. Rien n'est cassé : le mode auto continue de fonctionner, et ses demandes de classificateur sont facturées comme elles l'étaient auparavant. La cause la plus courante est une passerelle LLM ou un proxy entre Claude Code et l'API, et quand Claude Code peut en identifier un, le dialogue le nomme. Appuyez sur **Entrée** pour continuer, ou consultez [Rendre la session admissible](#make-the-session-eligible) pour éviter que cela n'apparaisse dans les nouvelles sessions.

16 

17<h2 id="respond-to-the-notice">

18 Répondre à la notification

19</h2>

20 

21La notification maintient l'action en attente jusqu'à ce que vous y répondiez :

22 

23* **Entrée** continue : l'action maintenue et le reste de la session utilisent les demandes de classificateur propres à Claude Code, facturées comme utilisation de tokens comme avant, et la notification n'apparaît plus dans cette session. Lorsque la notification a nommé une passerelle, l'accepter l'empêche de réapparaître sur cette machine pendant 24 heures. Lorsqu'elle ne l'a pas fait, la notification réapparaît la prochaine fois qu'une session bascule.

24* **Échap** ou **Ctrl+C** annule : l'action maintenue ne s'exécute pas et le tour actuel s'arrête, la session restant en mode automatique. Rien n'est mémorisé, donc la notification apparaît à nouveau avant la prochaine action vérifiée.

25 

26Pour arrêter d'utiliser le mode automatique à la place, changez les modes de permission avec `Shift+Tab` après avoir répondu.

27 

28Lorsque la notification ne peut pas attendre une réponse, Claude Code signale le même texte et la session continue en mode automatique, sauf si une acceptation de passerelle sur cette machine au cours des 24 dernières heures l'a supprimée. En [mode non interactif](/docs/fr/headless) avec `-p`, il imprime le texte sur stderr, et en sortie `stream-json`, il émet un message d'avertissement `system`, que les applications Agent SDK peuvent lire à partir du flux de messages.

29 

30<h2 id="make-the-session-eligible">

31 Rendre la session admissible

32</h2>

33 

34Si une passerelle en est la cause, demandez à l'administrateur de votre entreprise ou à votre fournisseur de passerelle de transmettre les demandes et les réponses sans modification. Cela signifie transférer les en-têtes de demande et les champs du corps tels qu'ils sont, y compris ceux que la passerelle ne reconnaît pas, comme le champ de demande `safeguards`, et retourner les réponses et les événements de streaming sans supprimer les clés comme le champ `safeguard_results` ou réécrire les ID d'utilisation d'outils, comme le [guide de compatibilité des passerelles](/docs/fr/llm-gateway-protocol#feature-pass-through) le décrit. Une passerelle qui transmet le trafic de cette manière continue de fonctionner avec cette fonctionnalité et avec les futures. Les nouvelles sessions utilisent alors à nouveau les vérifications du serveur.

35 

36Si vous savez déjà que votre passerelle ne peut pas fournir les vérifications du serveur, dites à Claude Code de ne pas les demander là en définissant `CLAUDE_CODE_AUTO_MODE_SERVER` sur `0` avant de démarrer la session, dans votre shell ou dans la [clé de paramètres `env`](/docs/fr/settings-reference#env) :

37 

38```bash theme={null}

39export CLAUDE_CODE_AUTO_MODE_SERVER=0

40```

41 

42Les demandes de classificateur sont alors toujours celles de Claude Code lui-même, facturées de la même manière, et l'avis n'apparaît pas. Sur une connexion directe à l'API Anthropic, la variable nécessite Claude Code v2.1.281 ou version ultérieure. Définir `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` tandis que `CLAUDE_CODE_AUTO_MODE_SERVER` n'est pas défini désactive également les vérifications du serveur, sauf comme le décrit [Désactiver les capacités de pré-version](/docs/fr/llm-gateway-protocol#disable-pre-release-capabilities).

43 

44`CLAUDE_CODE_AUTO_MODE_SERVER` est un paramètre temporaire et peut être supprimé dans une version ultérieure.

45 

46<h2 id="why-the-notice-appears">

47 Pourquoi la notification apparaît

48</h2>

49 

50[L'examen du classificateur côté serveur](/docs/fr/permission-modes#server-side-classifier-review) répertorie les sessions qui demandent au serveur d'effectuer les vérifications du classificateur. Les plans Pro, Max et Team n'affichent jamais la notification. Lorsqu'elle apparaît, les causes habituelles sont :

51 

52* **Une passerelle LLM ou un proxy se trouve dans le chemin** : l'un qui supprime ou réécrit les en-têtes de requête, supprime les champs de requête qu'il ne reconnaît pas, ou modifie les réponses. Le serveur ne reçoit alors jamais la demande de vérifications, ou Claude Code ne reçoit jamais les résultats. Lorsque votre configuration ou les réponses identifient la passerelle, la notification la nomme.

53* **Les vérifications côté serveur n'ont pas encore atteint votre plateforme, région ou identifiant** : qu'une plateforme ou une région les effectue dépend du déploiement de cette plateforme. Si vous voyez la notification sans passerelle ou proxy dans le chemin et qu'elle continue d'apparaître, c'est la cause probable. Pour confirmer, contactez le support ou l'administrateur de votre entreprise, ou signalez-le avec `/feedback`.

54 

55Pour vérifier une session en mode auto, exécutez `/status` à l'invite Claude Code : sa ligne **Auto mode server** affiche `Enabled` tandis que les vérifications du serveur décident des actions de la session et `Disabled` une fois que la session s'est repliée.

56 

57Lorsqu'une passerelle coupe les réponses ou réécrit les résultats dans une forme que Claude Code ne peut pas lire, vous obtenez des refus sans verdict à la place de cette notification ; voir [L'examen du classificateur côté serveur](/docs/fr/permission-modes#server-side-classifier-review).

58 

59<h2 id="related-resources">

60 Ressources connexes

61</h2>

62 

63* [Mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) : qu'est-ce que le mode auto et ce qu'il bloque par défaut

64* [Examen du classificateur côté serveur](/docs/fr/permission-modes#server-side-classifier-review) : quelles sessions demandent au serveur de vérifier les actions, et la version de Claude Code requise pour chacune

65* [Guide de compatibilité de la passerelle](/docs/fr/llm-gateway-protocol#feature-pass-through) : ce qui se casse quand une passerelle supprime les en-têtes ou les champs du corps

66* [Le serveur n'a retourné aucun verdict de sécurité](/docs/fr/errors#the-server-returned-no-safety-verdict) : le refus que vous voyez quand le serveur ne donne aucun verdict pour une action

67* [Gérer les coûts efficacement](/docs/fr/costs) : suivre l'utilisation des tokens et réduire les coûts de Claude Code

Details

383 383 

384Deux autres endroits à l'écran qui signalent les refus omettent la commande ou l'URL : l'avis près de la zone de saisie, tel que `bash denied by auto mode · [Data Exfiltration] · /permissions`, indique l'outil et la raison, et l'onglet **Recently denied** répertorie une commande shell par la description que Claude a écrite pour elle. Pour capturer l'entrée exacte de ces refus par programmation, ajoutez un [`PermissionDenied` hook](/docs/fr/hooks#permissiondenied), qui la reçoit en tant que `tool_input`.384Deux autres endroits à l'écran qui signalent les refus omettent la commande ou l'URL : l'avis près de la zone de saisie, tel que `bash denied by auto mode · [Data Exfiltration] · /permissions`, indique l'outil et la raison, et l'onglet **Recently denied** répertorie une commande shell par la description que Claude a écrite pour elle. Pour capturer l'entrée exacte de ces refus par programmation, ajoutez un [`PermissionDenied` hook](/docs/fr/hooks#permissiondenied), qui la reçoit en tant que `tool_input`.

385 385 

386Le texte sous l'appel vous indique s'il y a quelque chose à corriger. Le texte qui signale un problème avec le classificateur lui-même, tel qu'un modèle qui `is temporarily unavailable` ou une erreur du classificateur, signifie que Claude Code a bloqué l'appel sans verdict final du classificateur ; consultez [Auto mode cannot determine the safety of an action](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action) pour savoir quoi faire. Sinon, une ligne lisant `Denied by auto mode classifier` avec une raison telle que `[Production Deploy]` ou `Blocked by classifier` signifie que le classificateur a jugé l'appel non sécurisé, alors choisissez la correction parmi ce que l'appel tentait d'atteindre ou de faire :386Le texte sous l'appel vous indique s'il y a quelque chose à corriger. Une ligne grisée `Not run · auto mode's check had no usable answer`, ou un texte qui signale un problème avec le classificateur lui-même, tel que `Auto mode could not evaluate this action`, signifie que Claude Code a bloqué l'appel sans verdict du classificateur. Pour une ligne `Not run`, appuyez sur `Ctrl+O` pour lire le message complet, puis consultez [Auto mode cannot determine the safety of an action](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action) ou [The server returned no safety verdict](/docs/fr/errors#the-server-returned-no-safety-verdict) pour savoir quoi faire.

387 

388Sinon, une ligne lisant `Denied by auto mode classifier` avec une raison telle que `[Production Deploy]` ou `Blocked by classifier` signifie que le classificateur a jugé l'appel non sécurisé, alors choisissez la correction en fonction de ce que l'appel tentait d'atteindre ou de faire :

387 389 

388* Une destination dont Claude a besoin tout au long de la tâche, telle qu'un registre de paquets, un domaine interne ou un hôte de référentiel : ajoutez-la à `autoMode.environment`.390* Une destination dont Claude a besoin tout au long de la tâche, telle qu'un registre de paquets, un domaine interne ou un hôte de référentiel : ajoutez-la à `autoMode.environment`.

389* Une commande que vous souhaitez exécuter sans révision à partir de maintenant : ajoutez une règle `allow`.391* Une commande que vous souhaitez exécuter sans révision à partir de maintenant : ajoutez une règle `allow`.

Details

114 Les messages envoyés en cours de tour ne sont pas checkpointés114 Les messages envoyés en cours de tour ne sont pas checkpointés

115</h3>115</h3>

116 116 

117Lorsqu'un message que vous [mettez en file d'attente pendant que Claude travaille](/docs/fr/interactive-mode#queue-messages-while-claude-works) atteint Claude au cours du tour en cours, il rejoint ce tour au lieu d'en commencer un nouveau. Le message apparaît dans la conversation, mais Claude Code ne crée pas de checkpoint pour lui. Un message en file d'attente que Claude Code envoie dans le cadre d'un nouveau tour reçoit un checkpoint comme d'habitude, y compris lorsque plusieurs messages en file d'attente [partagent ce tour](/docs/fr/interactive-mode#when-claude-code-sends-what-you-queued).117Dans le menu de rembobinage, un message que vous [avez saisi pendant que Claude travaillait encore](/docs/fr/interactive-mode#queue-messages-while-claude-works) peut être marqué **No code restore**. Claude a lu ce message avant la fin de son tour. [Les checkpoints sont créés pour les prompts qui démarrent un tour](#how-checkpoints-work), ce message n'a donc pas de checkpoint propre. Les modifications que Claude a apportées après l'avoir lu sont rattachées au prompt qui a démarré le tour.

118 118 

119Pour annuler les modifications que Claude a apportées après un tel message, rembobinez jusqu'au prompt qui a démarré le tour. Cela rembobine le tour entier, y compris le travail que Claude a effectué avant l'arrivée de votre message.119Vous n'avez rien à faire concernant le message lui-même. Pour annuler les modifications de fichiers de cette partie de la session, sélectionnez le prompt qui a démarré le tour et choisissez **Restore code** ou **Restore code and conversation**. Cela annule les modifications de fichiers de Claude sur l'ensemble du tour, y compris celles effectuées avant l'arrivée de votre message. Sélectionner le message marqué propose toujours **Restore conversation**, qui rembobine la conversation jusqu'à ce message et laisse vos fichiers tels quels.

120 120 

121<h3 id="symlinked-and-hard-linked-paths-not-restored">121<h3 id="symlinked-and-hard-linked-paths-not-restored">

122 Les chemins symlinked et hard-linked ne sont pas restaurés122 Les chemins symlinked et hard-linked ne sont pas restaurés

chrome.md +3 −4

Details

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

130</h3>130</h3>

131 131 

132Dans une session VS Code, le fait que Claude Code vous demande votre accord avant une action du navigateur dépend de la façon dont la session s'est connectée à votre navigateur :132Dans une session VS Code, lorsque Claude Code vous demande votre accord avant une action du navigateur, la demande apparaît sous forme de carte dans le panneau de chat. Lorsque l'action cible un site que vous n'avez pas autorisé, la carte propose également d'autoriser ce site.

133 133 

134* **Vous avez tapé `@browser`** : l'extension approuve chaque action du navigateur pour laquelle Claude Code vous aurait autrement sollicité.134Dans une session qui s'est connectée à votre navigateur au démarrage parce que le paramètre [Enabled by default](#enable-chrome-by-default) est activé, Claude Code vous demande votre accord avant les actions du navigateur sur un site que vous n'avez pas autorisé, dans les modes de permission Manual, Edit automatically, Auto et Bypass permissions. Dans les modes de permission Auto et Bypass permissions, cela s'applique jusqu'à ce que vous tapiez `@browser` dans cette session.

135* **Le paramètre [Enabled by default](#enable-chrome-by-default) l'a connectée au démarrage** : Claude Code vous demande votre accord avant les actions du navigateur sur un site que vous n'avez pas autorisé, dans les modes de permission Manual, Edit automatically, Auto et Bypass permissions, jusqu'à ce que vous tapiez `@browser` dans cette session.

136 135 

137<h3 id="browser-tools-in-plan-mode">136<h3 id="browser-tools-in-plan-mode">

138 Outils du navigateur en mode plan137 Outils du navigateur en mode plan

139</h3>138</h3>

140 139 

141En [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, sauf dans une session VS Code où vous avez tapé [`@browser`](#permission-prompts-in-vs-code-sessions). 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.

142 141 

143Un 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` 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.

144 143 

Details

263 Connecter les développeurs263 Connecter les développeurs

264</h2>264</h2>

265 265 

266Les développeurs se connectent à partir de leurs propres ordinateurs portables avec une seule connexion au navigateur, en utilisant leur compte professionnel d'entreprise. Ils n'ont pas besoin d'un compte claude.ai, d'une clé API ou d'un abonnement, car les requêtes au modèle passent par la passerelle en utilisant l'identifiant en amont de l'organisation. La connexion est pilotée par les [paramètres gérés côté client](/docs/fr/claude-apps-gateway-config#client-side-managed-settings) que vous poussez via MDM, il n'y a donc pas de configuration manuelle du côté du développeur ; cette section couvre ce que l'administrateur configure.266Les développeurs se connectent à partir de leurs propres ordinateurs portables avec une seule connexion au navigateur, en utilisant leur compte professionnel d'entreprise. Ils n'ont pas besoin d'un compte claude.ai, d'une clé API ou d'un abonnement, car les requêtes au modèle passent par la passerelle en utilisant l'identifiant en amont de l'organisation. La connexion est pilotée par les [paramètres gérés côté client](/docs/fr/claude-apps-gateway-config#client-side-managed-settings) que vous poussez via MDM, et cette section couvre ce que l'administrateur configure.

267 267 

268L'interface de ligne de commande calcule l'empreinte du certificat feuille TLS de la passerelle à la première connexion et l'épingle par nom d'hôte. Elle vérifie cette épingle à nouveau lors de la connexion, lors des rafraîchissements de session silencieux et lors des récupérations de paramètres gérés, tandis que les requêtes d'inférence utilisent la validation TLS standard sans l'épingle. Les requêtes acheminées via un proxy HTTPS ignorent la vérification de l'épingle, donc ajoutez l'hôte de la passerelle à `NO_PROXY` pour les garder directes.268L'interface de ligne de commande calcule l'empreinte du certificat feuille TLS de la passerelle à la première connexion et l'épingle par nom d'hôte. Elle vérifie cette épingle à nouveau lors de la connexion, lors des rafraîchissements de session silencieux et lors des récupérations de paramètres gérés, tandis que les requêtes d'inférence utilisent la validation TLS standard sans l'épingle. Les requêtes acheminées via un proxy HTTPS ignorent la vérification de l'épingle, donc ajoutez l'hôte de la passerelle à `NO_PROXY` pour les garder directes.

269 269 


287 Définir l'URL de la passerelle287 Définir l'URL de la passerelle

288</h3>288</h3>

289 289 

290Trois clés vont dans le fichier de [paramètres gérés](/docs/fr/managed-settings#delivery-mechanisms) par système d'exploitation que vous déployez via MDM ou directement sur le disque. `forceLoginMethod` et `forceLoginGatewayUrl` ouvrent `/login` directement sur l'écran **Cloud gateway** avec l'URL remplie, et `parentSettingsBehavior: "merge"` permet à Claude Desktop de livrer la liste d'autorisation de sortie de la passerelle aux sessions Claude Code qu'il lance, expliqué dans [Livrer la politique aux sessions Claude Desktop](#deliver-policy-to-claude-desktop-sessions) :290Trois clés vont dans le fichier de [paramètres gérés](/docs/fr/managed-settings#delivery-mechanisms) par système d'exploitation que vous déployez via MDM ou directement sur le disque. Pour une machine sans paramètres gérés, consultez plutôt [Définir l'URL de la passerelle dans les paramètres utilisateur](#set-the-gateway-url-in-user-settings). `forceLoginMethod` et `forceLoginGatewayUrl` ouvrent `/login` directement sur l'écran **Cloud gateway** avec l'URL remplie, et `parentSettingsBehavior: "merge"` permet à Claude Desktop de livrer la liste d'autorisation de sortie de la passerelle aux sessions Claude Code qu'il lance, expliqué dans [Livrer la politique aux sessions Claude Desktop](#deliver-policy-to-claude-desktop-sessions) :

291 291 

292```json theme={null}292```json theme={null}

293{293{


299 299 

300Le développeur appuie sur Entrée pour se connecter. L'invite d'empreinte TLS de [première connexion](#connect-developers) apparaît toujours. Une fois le fichier sur une machine, un développeur qui n'a pas complété la connexion à la passerelle voit l'un des messages décrits sous [La politique d'administrateur nécessite une connexion Cloud gateway](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in). Les développeurs qui sélectionnent un fournisseur cloud via une variable d'environnement telle que `CLAUDE_CODE_USE_BEDROCK` n'ont pas besoin de la connexion à la passerelle.300Le développeur appuie sur Entrée pour se connecter. L'invite d'empreinte TLS de [première connexion](#connect-developers) apparaît toujours. Une fois le fichier sur une machine, un développeur qui n'a pas complété la connexion à la passerelle voit l'un des messages décrits sous [La politique d'administrateur nécessite une connexion Cloud gateway](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in). Les développeurs qui sélectionnent un fournisseur cloud via une variable d'environnement telle que `CLAUDE_CODE_USE_BEDROCK` n'ont pas besoin de la connexion à la passerelle.

301 301 

302Un développeur ne peut pas configurer cela manuellement. Le sélecteur de connexion n'a pas d'option de passerelle, et `forceLoginGatewayUrl` est ignoré dans les fichiers de paramètres propres d'un développeur. `forceLoginMethod` seul, sans URL, laisse le développeur à un message « Contactez votre administrateur informatique ». Les clés de connexion appartiennent au fichier que vous poussez vers les machines, pas au bloc `managed.policies[].cli` de la passerelle, qui n'atteint que les clients déjà connectés.302Le sélecteur de connexion n'a pas d'option de passerelle, et dans les paramètres gérés, `forceLoginMethod` seul, sans URL, laisse le développeur à un message « Contactez votre administrateur informatique ». Les clés de connexion appartiennent au fichier que vous poussez vers les machines, pas au bloc `managed.policies[].cli` de la passerelle, qui n'atteint que les clients déjà connectés.

303 

304<h4 id="set-the-gateway-url-in-user-settings">

305 Définir l'URL de la passerelle dans les paramètres utilisateur

306</h4>

307 

308Sur les machines sans paramètres gérés, demandez à chaque développeur d'ajouter `forceLoginMethod` et `forceLoginGatewayUrl` à son propre fichier de paramètres utilisateur, `~/.claude/settings.json`. Cela nécessite Claude Code v2.1.295 ou ultérieur sur la machine du développeur. Cet exemple désigne une passerelle à `claude-gateway.internal.example.com` :

309 

310```json theme={null}

311{

312 "forceLoginMethod": "gateway",

313 "forceLoginGatewayUrl": "https://claude-gateway.internal.example.com"

314}

315```

316 

317Quand le développeur exécute `/login` à l'invite de Claude Code, l'écran **Cloud gateway** s'ouvre sur cette adresse et il appuie sur Entrée pour se connecter. L'invite d'empreinte TLS de [première connexion](#connect-developers) apparaît toujours. Ces limites s'appliquent aux clés définies de cette manière :

318 

319* **Paramètres utilisateur uniquement** : Claude Code lit les deux clés à partir de `~/.claude/settings.json`, et non à partir du `.claude/settings.json` ou du `.claude/settings.local.json` d'un projet.

320* **Les paramètres gérés les désactivent** : une fois que les paramètres d'un administrateur atteignent la machine via un fichier de paramètres gérés, une plist macOS ou une politique HKLM Windows, ou un [policy helper](/docs/fr/settings-reference#policyhelper), Claude Code ignore une passerelle désignée dans les paramètres utilisateur.

303 321 

304<h3 id="allow-a-gateway-on-public-address-space-you-own">322<h3 id="allow-a-gateway-on-public-address-space-you-own">

305 Autoriser une passerelle sur l'espace d'adresses publiques que vous possédez323 Autoriser une passerelle sur l'espace d'adresses publiques que vous possédez

Details

981 * **Clés mélangées** : un fichier contenant à la fois `code` et `cli`, ou son ancienne graphie `settings`, empêche la passerelle de démarrer. Placez tous les blocs sous une seule clé, en une seule modification.981 * **Clés mélangées** : un fichier contenant à la fois `code` et `cli`, ou son ancienne graphie `settings`, empêche la passerelle de démarrer. Placez tous les blocs sous une seule clé, en une seule modification.

982</Warning>982</Warning>

983 983 

984Les paramètres Claude Code d'une politique, comme une règle qui refuse la lecture des fichiers `.env`, se placent dans un bloc sous la clé `cli` ou `code`. Les deux clés acceptent le même contenu. La clé détermine où les paramètres sont appliqués :984Les paramètres Claude Code d'une politique, comme une règle qui refuse la lecture des fichiers `.env`, se placent dans un bloc sous la clé `cli` ou `code`. `code` est la clé recommandée, et `cli` la clé héritée. Les deux clés acceptent le même contenu. La clé détermine où les paramètres sont appliqués :

985 985 

986* **`cli`** : le terminal, les extensions VS Code et JetBrains, et l'Agent SDK. Sous `cli`, l'onglet Code de Claude Desktop reçoit les [paramètres dérivés](#claude-desktop-overlay), de sorte qu'une règle ciblée telle que `Read(./.env)` n'y bloque pas l'utilisateur.986* **`cli`** : le terminal, les extensions VS Code et JetBrains, et l'Agent SDK. Sous `cli`, l'onglet Code de Claude Desktop reçoit les [paramètres dérivés](#claude-desktop-overlay), de sorte qu'une règle ciblée telle que `Read(./.env)` n'y bloque pas l'utilisateur.

987* **`code`** : les mêmes emplacements, et l'onglet Code de Claude Desktop peut également être couvert.987* **`code`** : les mêmes emplacements, et l'onglet Code de Claude Desktop peut également être couvert.

988 988 

989Le choix consiste à décider si ces paramètres doivent aussi couvrir l'onglet Code. Si ce n'est pas le cas, ne changez rien. Un fichier qui utilise `cli` fonctionne comme avant, et une passerelle qui trouve `cli` dans une politique comportant une clé [`desktop`](#claude-desktop-overlay) émet un avertissement au démarrage et démarre malgré tout. Pour couvrir l'onglet Code, passez à `code`, la clé recommandée.989Un fichier qui utilise `cli` fonctionne comme avant, et une passerelle qui trouve `cli` dans une politique dotée d'une clé [`desktop`](#claude-desktop-overlay) émet un avertissement au démarrage et démarre quand même. Passez à `code` pour que les paramètres puissent aussi couvrir l'onglet Code.

990 990 

991Avant de basculer, lisez [Appliquer les paramètres `code` dans l'onglet Code](#apply-code-settings-in-the-code-tab). La politique a besoin d'une clé `desktop` et les machines des utilisateurs doivent être configurées avant que les paramètres s'y appliquent, et la recherche web est désactivée dans Claude Desktop.991Avant de basculer, lisez [Appliquer les paramètres `code` dans l'onglet Code](#apply-code-settings-in-the-code-tab). La politique a besoin d'une clé `desktop` et les machines des utilisateurs doivent être configurées avant que les paramètres s'y appliquent, et la recherche web est désactivée dans Claude Desktop.

992 992 


1714 1714 

1715Pour Claude Desktop, définissez la clé `bootstrapUrl` dans la propre [configuration gérée](https://claude.com/docs/third-party/claude-desktop/configuration) de Claude Desktop sur `<listen.public_url>/user/bootstrap`. Le flux de connexion et la stratégie par groupe correspondent alors à ceux du CLI une fois qu'une stratégie opte pour le serveur avec une clé `desktop` ; sans l'opt-in, `/user/bootstrap` retourne 404. Voir [Claude Desktop overlay](#claude-desktop-overlay) pour la moitié côté serveur.1715Pour Claude Desktop, définissez la clé `bootstrapUrl` dans la propre [configuration gérée](https://claude.com/docs/third-party/claude-desktop/configuration) de Claude Desktop sur `<listen.public_url>/user/bootstrap`. Le flux de connexion et la stratégie par groupe correspondent alors à ceux du CLI une fois qu'une stratégie opte pour le serveur avec une clé `desktop` ; sans l'opt-in, `/user/bootstrap` retourne 404. Voir [Claude Desktop overlay](#claude-desktop-overlay) pour la moitié côté serveur.

1716 1716 

1717Claude Code honore [`forceLoginGatewayUrl`](/docs/fr/settings-reference#forcelogingatewayurl), [`gatewayInternalNetworks`](/docs/fr/settings-reference#gatewayinternalnetworks), et la valeur `"gateway"` de [`forceLoginMethod`](/docs/fr/settings-reference#forceloginmethod) uniquement à partir d'une source gérée sur la machine : `managed-settings.json`, le plist macOS ou le registre HKLM Windows, ou un assistant de stratégie. Les définir dans le `~/.claude/settings.json` personnel d'un développeur ou dans la charge utile de la passerelle ne configure pas la connexion à la passerelle.1717Claude Code honore [`forceLoginGatewayUrl`](/docs/fr/settings-reference#forcelogingatewayurl), [`gatewayInternalNetworks`](/docs/fr/settings-reference#gatewayinternalnetworks), et la valeur `"gateway"` de [`forceLoginMethod`](/docs/fr/settings-reference#forceloginmethod) à partir d'une source gérée sur la machine : `managed-settings.json`, le plist macOS ou le registre HKLM Windows, ou un assistant de stratégie. Les définir dans la charge utile de la passerelle ne configure pas la connexion à la passerelle. Pour le `~/.claude/settings.json` personnel d'un développeur, voir [Définir l'URL de la passerelle dans les paramètres utilisateur](/docs/fr/claude-apps-gateway#set-the-gateway-url-in-user-settings).

1718 1718 

1719Omettez `forceLoginMethod` et `forceLoginOrgUUID` de la charge utile. Claude Code lit toujours les deux clés à partir de la charge utile pour sa vérification des identifiants au démarrage, donc un développeur qui conserve une identifiant émis par Anthropic sur la machine obtient la sortie au démarrage décrite sous [Administrator policy requires a Cloud gateway sign-in](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in) même après sa connexion.1719Omettez `forceLoginMethod` et `forceLoginOrgUUID` de la charge utile. Claude Code lit toujours les deux clés à partir de la charge utile pour sa vérification des identifiants au démarrage, donc un développeur qui conserve une identifiant émis par Anthropic sur la machine obtient la sortie au démarrage décrite sous [Administrator policy requires a Cloud gateway sign-in](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in) même après sa connexion.

1720 1720 

Details

135 Envoyer l'URL de la passerelle aux machines des développeurs135 Envoyer l'URL de la passerelle aux machines des développeurs

136</h3>136</h3>

137 137 

138Une fois que la passerelle est en service, envoyez `forceLoginMethod`, `forceLoginGatewayUrl` et `parentSettingsBehavior: "merge"` à la machine de chaque développeur via les paramètres gérés, via MDM ou en écrivant directement le fichier `managed-settings.json` par système d'exploitation. Sans cela, `/login` affiche le sélecteur de compte standard sans option de passerelle.138Une fois que la passerelle est en service, envoyez `forceLoginMethod`, `forceLoginGatewayUrl` et `parentSettingsBehavior: "merge"` à la machine de chaque développeur via les paramètres gérés, via MDM ou en écrivant directement le fichier `managed-settings.json` par système d'exploitation.

139 139 

140Une fois que vous déployez les clés, Claude Code cesse d'utiliser une clé API restante ou une connexion claude.ai sur la machine, donc planifiez l'envoi avec vos instructions de connexion. [La politique de l'administrateur nécessite une connexion à la passerelle Cloud](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in) décrit les messages que les développeurs voient.140Une fois que vous déployez les clés, Claude Code cesse d'utiliser une clé API restante ou une connexion claude.ai sur la machine, donc planifiez l'envoi avec vos instructions de connexion. [La politique de l'administrateur nécessite une connexion à la passerelle Cloud](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in) décrit les messages que les développeurs voient.

141 141 

Details

277 277 

278Les threads s'exécutent en [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) quand le modèle du thread le supporte, donc la plupart des appels d'outils s'exécutent sans vous demander. Quand un thread a besoin de votre approbation, l'invite est à l'intérieur de ce thread et le thread attend jusqu'à ce que vous y répondiez. Dire à Claude dans la conversation du projet d'aller de l'avant ne l'atteint pas.278Les threads s'exécutent en [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) quand le modèle du thread le supporte, donc la plupart des appels d'outils s'exécutent sans vous demander. Quand un thread a besoin de votre approbation, l'invite est à l'intérieur de ce thread et le thread attend jusqu'à ce que vous y répondiez. Dire à Claude dans la conversation du projet d'aller de l'avant ne l'atteint pas.

279 279 

280Chaque approbation couvre cette invite, ou le reste de ce thread si vous choisissez l'option plus large. Pour laisser chaque thread exécuter certaines commandes sans demander, ou pour en bloquer certaines, ajoutez des [règles de permission](/docs/fr/permissions) au `.claude/settings.json` du référentiel. Les threads cloud ne les appliquent que dans un projet avec un référentiel ; voir [Ce que les threads récupèrent de vos référentiels](#what-threads-pick-up-from-your-repositories). Dans un projet avec plusieurs référentiels, aucune règle de permission du référentiel n'atteint un thread cloud, donc vous comptez sur le mode auto et sur les approbations que vous donnez à l'intérieur de chaque thread.280Chaque approbation couvre cette demande, ou le reste de ce thread si vous choisissez l'option plus large.

281 

282Pour laisser chaque thread exécuter certaines commandes sans demander, ou pour en bloquer certaines, ajoutez des [règles de permission](/docs/fr/permissions) au `.claude/settings.json` du dépôt. Vérifiez que les threads cloud de votre projet les appliquent :

283 

284* **Un dépôt** : les threads cloud appliquent les règles. Voir [Ce que les threads récupèrent de vos dépôts](#what-threads-pick-up-from-your-repositories).

285* **Plusieurs dépôts, environnement hébergé par Anthropic** : aucune règle de permission d'un dépôt n'atteint un thread cloud, donc vous comptez sur le mode auto et sur les approbations que vous donnez à l'intérieur de chaque thread.

286* **Plusieurs dépôts, environnement auto-hébergé** : voir [quels paramètres de dépôt s'appliquent](/docs/fr/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories).

281 287 

282<h3 id="run-a-thread-on-your-own-computer">288<h3 id="run-a-thread-on-your-own-computer">

283 Exécuter un thread sur votre propre ordinateur289 Exécuter un thread sur votre propre ordinateur


381 Ce que les threads reprennent de vos dépôts387 Ce que les threads reprennent de vos dépôts

382</h3>388</h3>

383 389 

384Chaque thread cloud clone chaque dépôt du projet et charge `CLAUDE.md` et les skills de tous. Les règles de permission, les hooks et `env` viennent seulement du `.claude/settings.json` dans le répertoire où le thread commence : à l'intérieur du dépôt quand le projet en a un, et au-dessus des clones quand il en a plusieurs, où aucun fichier de dépôt n'est lu pour eux.390Chaque thread cloud clone chaque dépôt du projet et charge `CLAUDE.md` et les skills de tous. Les règles de permission, les hooks et `env` viennent seulement du `.claude/settings.json` dans le répertoire où le thread commence.

385 391 

386| Dans chaque dépôt | Un dépôt | Plusieurs dépôts |392| Dans chaque dépôt | Un dépôt | Plusieurs dépôts |

387| :- | :- | :- |393| :- | :- | :- |

388| `CLAUDE.md` | Chargé au démarrage du thread | Chargé à partir de chaque dépôt au démarrage du thread |394| `CLAUDE.md` | Chargé au démarrage du thread | Chargé à partir de chaque dépôt au démarrage du thread |

389| Skills, agents et commandes sous `.claude/` | Chargés | Chargés à partir de chaque dépôt |395| Skills, agents et commandes sous `.claude/` | Chargés | Chargés à partir de chaque dépôt |

390| Plugins activés dans `.claude/settings.json` | Non chargés. Ajoutez le plugin dans **Project settings > Plugins** à la place | Non chargés. Ajoutez le plugin dans **Project settings > Plugins** à la place |396| Plugins activés dans `.claude/settings.json` | Non chargés. Ajoutez le plugin dans **Project settings > Plugins** à la place | Non chargés. Ajoutez le plugin dans **Project settings > Plugins** à la place |

391| Règles de permission, hooks et `env` définis dans `.claude/settings.json` | S'appliquent au thread, sauf les clés `env` que [aucune session cloud n'honore](/docs/fr/cloud-environments#what-carries-over-from-your-setup) | Ne s'appliquent pas |397| Règles de permission, hooks et `env` définis dans `.claude/settings.json` | S'appliquent au thread, sauf les clés `env` que [aucune session cloud n'honore](/docs/fr/cloud-environments#what-carries-over-from-your-setup) | Ne s'appliquent pas dans un environnement hébergé par Anthropic. Pour un environnement auto-hébergé, voir [quels paramètres de dépôt s'appliquent](/docs/fr/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories) |

392 398 

393Dans un projet avec plusieurs dépôts, chaque clone est attaché au thread en tant que [répertoire supplémentaire](/docs/fr/memory#load-from-additional-directories) avec le chargement de `CLAUDE.md` activé, c'est pourquoi le `CLAUDE.md` et les skills de chaque dépôt se chargent au démarrage même si le thread commence au-dessus d'eux. Dans un tel projet, mettez les règles permanentes dans les instructions du projet et donnez aux threads les variables d'environnement via l'[environnement cloud](#choose-an-environment-for-threads).399Dans un projet avec plusieurs dépôts, mettez les règles permanentes dans les instructions du projet et donnez aux threads les variables d'environnement via l'[environnement cloud](#choose-an-environment-for-threads).

394 400 

395<h3 id="choose-an-environment-for-threads">401<h3 id="choose-an-environment-for-threads">

396 Choisir un environnement pour les threads402 Choisir un environnement pour les threads


406 412 

407Les threads cloud n'ont pas les skills, les serveurs MCP, les plugins et les outils installés seulement sur votre machine. Un thread que Claude exécute sur votre machine via [Remote Control](/docs/fr/remote-control) utilise ce qui y est installé. Pour rendre chacun de ceux-ci disponible aux threads cloud :413Les threads cloud n'ont pas les skills, les serveurs MCP, les plugins et les outils installés seulement sur votre machine. Un thread que Claude exécute sur votre machine via [Remote Control](/docs/fr/remote-control) utilise ce qui y est installé. Pour rendre chacun de ceux-ci disponible aux threads cloud :

408 414 

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

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

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

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

Details

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

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

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

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

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

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

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


68| `--agent` | Spécifier un agent pour la session actuelle (remplace le paramètre `agent`) | `claude --agent my-custom-agent` |68| `--agent` | Spécifier un agent pour la session actuelle (remplace le paramètre `agent`) | `claude --agent my-custom-agent` |

69| `--agents` | Définir des subagents personnalisés dynamiquement via JSON. Accepte les [champs répertoriés pour les subagents définis via CLI](/docs/fr/sub-agents#choose-the-subagent-scope). Avec `--print`, la valeur peut être le chemin vers un fichier JSON contenant l'objet ; la forme fichier nécessite Claude Code v2.1.281 ou ultérieur. Claude Code valide la valeur au démarrage et quitte sur une valeur invalide ; voir [`Invalid --agents configuration`](/docs/fr/errors#invalid-agents-configuration) pour le message et pour les drapeaux et la variable d'environnement qui ignorent la validation. La validation nécessite Claude Code v2.1.242 ou ultérieur | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |69| `--agents` | Définir des subagents personnalisés dynamiquement via JSON. Accepte les [champs répertoriés pour les subagents définis via CLI](/docs/fr/sub-agents#choose-the-subagent-scope). Avec `--print`, la valeur peut être le chemin vers un fichier JSON contenant l'objet ; la forme fichier nécessite Claude Code v2.1.281 ou ultérieur. Claude Code valide la valeur au démarrage et quitte sur une valeur invalide ; voir [`Invalid --agents configuration`](/docs/fr/errors#invalid-agents-configuration) pour le message et pour les drapeaux et la variable d'environnement qui ignorent la validation. La validation nécessite Claude Code v2.1.242 ou ultérieur | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |

70| `--allow-dangerously-skip-permissions` | Ajouter `bypassPermissions` au cycle du mode `Shift+Tab` sans commencer dedans. Permet de commencer dans un mode différent comme `plan` et de basculer vers `bypassPermissions` plus tard. Voir [modes de permission](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) | `claude --permission-mode plan --allow-dangerously-skip-permissions` |70| `--allow-dangerously-skip-permissions` | Ajouter `bypassPermissions` au cycle du mode `Shift+Tab` sans commencer dedans. Permet de commencer dans un mode différent comme `plan` et de basculer vers `bypassPermissions` plus tard. Voir [modes de permission](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) | `claude --permission-mode plan --allow-dangerously-skip-permissions` |

71| `--allowedTools`, `--allowed-tools` | Outils qui s'exécutent sans demander la permission. Voir [syntaxe des règles de permission](/docs/fr/settings-reference#permission-rule-syntax) pour la correspondance de motifs. Pour restreindre les outils disponibles, utilisez `--tools` à la place. Si vous nommez l'un des [outils de suivi des tâches](/docs/fr/tools-reference#task-tool-availability) ici, Claude Code opte également la session | `"Bash(git log *)" "Bash(git diff *)" "Read"` |71| `--allowedTools`, `--allowed-tools` | Outils qui s'exécutent sans demander la permission, à l'exception des lectures depuis des [chemins réseau](/docs/fr/permissions#network-paths). Voir [syntaxe des règles de permission](/docs/fr/settings-reference#permission-rule-syntax) pour la correspondance de motifs. Pour restreindre les outils disponibles, utilisez `--tools` à la place. Si vous nommez l'un des [outils de suivi des tâches](/docs/fr/tools-reference#task-tool-availability) ici, Claude Code les active également pour la session | `"Bash(git log *)" "Bash(git diff *)" "Read"` |

72| `--append-subagent-system-prompt` | Ajouter du texte personnalisé à la fin de l'invite système de chaque [subagent](/docs/fr/sub-agents), y compris les subagents imbriqués, à l'exception d'un [subagent forké](/docs/fr/sub-agents#fork-the-current-conversation), qui réutilise l'invite de la conversation. S'applique uniquement en mode non interactif avec `-p`. Nécessite Claude Code v2.1.205 ou ultérieur | `claude -p --append-subagent-system-prompt "Cite file paths in every answer" "query"` |72| `--append-subagent-system-prompt` | Ajouter du texte personnalisé à la fin de l'invite système de chaque [subagent](/docs/fr/sub-agents), y compris les subagents imbriqués, à l'exception d'un [subagent forké](/docs/fr/sub-agents#fork-the-current-conversation), qui réutilise l'invite de la conversation. S'applique uniquement en mode non interactif avec `-p`. Nécessite Claude Code v2.1.205 ou ultérieur | `claude -p --append-subagent-system-prompt "Cite file paths in every answer" "query"` |

73| `--append-subagent-system-prompt-file` | Charger du texte à partir d'un fichier et l'ajouter aux invites système des [subagents](/docs/fr/sub-agents). Une alternative à `--append-subagent-system-prompt` pour le texte trop long pour passer sur la ligne de commande. Les deux drapeaux ne peuvent pas être combinés. S'applique uniquement en mode non interactif avec `-p`. Nécessite Claude Code v2.1.261 ou ultérieur | `claude -p --append-subagent-system-prompt-file ./subagent-rules.txt "query"` |73| `--append-subagent-system-prompt-file` | Charger du texte à partir d'un fichier et l'ajouter aux invites système des [subagents](/docs/fr/sub-agents). Une alternative à `--append-subagent-system-prompt` pour le texte trop long pour passer sur la ligne de commande. Les deux drapeaux ne peuvent pas être combinés. S'applique uniquement en mode non interactif avec `-p`. Nécessite Claude Code v2.1.261 ou ultérieur | `claude -p --append-subagent-system-prompt-file ./subagent-rules.txt "query"` |

74| `--append-system-prompt` | Ajouter du texte personnalisé à la fin de l'invite système par défaut | `claude --append-system-prompt "Always use TypeScript"` |74| `--append-system-prompt` | Ajouter du texte personnalisé à la fin de l'invite système par défaut | `claude --append-system-prompt "Always use TypeScript"` |


81| `--channels` | (Aperçu de recherche) Serveurs MCP dont les notifications de [canal](/docs/fr/channels) Claude doit écouter dans cette session. Liste séparée par des espaces d'entrées `plugin:<name>@<marketplace>`. Nécessite l'authentification Anthropic via claude.ai ou une clé API Console | `claude --channels plugin:my-notifier@my-marketplace` |81| `--channels` | (Aperçu de recherche) Serveurs MCP dont les notifications de [canal](/docs/fr/channels) Claude doit écouter dans cette session. Liste séparée par des espaces d'entrées `plugin:<name>@<marketplace>`. Nécessite l'authentification Anthropic via claude.ai ou une clé API Console | `claude --channels plugin:my-notifier@my-marketplace` |

82| `--chrome` | Activer l'[intégration du navigateur Chrome](/docs/fr/chrome) pour l'automatisation web et les tests | `claude --chrome` |82| `--chrome` | Activer l'[intégration du navigateur Chrome](/docs/fr/chrome) pour l'automatisation web et les tests | `claude --chrome` |

83| `--cloud` | Avec une description de tâche, créer une nouvelle [session web](/docs/fr/claude-code-on-the-web). Avec un ID de session (`session_...` ou `cse_...`) ou une URL claude.ai/code, mettre en file d'attente un message dans cette session existante à la place, avec `-p`. Voir [envoyer un message de suivi](/docs/fr/claude-code-on-the-web#send-follow-ups-from-the-cli). | `claude --cloud "Fix the login bug"` |83| `--cloud` | Avec une description de tâche, créer une nouvelle [session web](/docs/fr/claude-code-on-the-web). Avec un ID de session (`session_...` ou `cse_...`) ou une URL claude.ai/code, mettre en file d'attente un message dans cette session existante à la place, avec `-p`. Voir [envoyer un message de suivi](/docs/fr/claude-code-on-the-web#send-follow-ups-from-the-cli). | `claude --cloud "Fix the login bug"` |

84| `--continue`, `-c` | Charger la conversation la plus récente dans le répertoire courant, y compris une [session en arrière-plan qui a terminé](/docs/fr/sessions#resume-a-session) ; l'ouverture de sessions en arrière-plan terminées nécessite Claude Code v2.1.257 ou ultérieur. Ignore les sessions créées avec `claude -p` ou le SDK Agent, et les sessions dont le premier message était `/loop`. `claude -p --continue` inclut les sessions `-p`, SDK et `/loop`. Inclut les sessions qui ont ajouté ce répertoire avec `/add-dir` | `claude --continue` |84| `--continue`, `-c` | Charger la conversation la plus récente dans le répertoire courant, y compris une [session en arrière-plan qui a terminé](/docs/fr/sessions#where-the-session-picker-looks) ; l'ouverture de sessions en arrière-plan terminées nécessite Claude Code v2.1.257 ou ultérieur. Ignore les sessions créées avec `claude -p` ou le SDK Agent, et les sessions dont le premier prompt était `/loop`. `claude -p --continue` inclut les sessions `-p`, SDK et `/loop`. Inclut les sessions qui ont ajouté ce répertoire avec `/add-dir` | `claude --continue` |

85| `--dangerously-load-development-channels` | Activer des [canaux](/docs/fr/channels-reference#test-during-the-research-preview) qui ne figurent pas sur la liste d'autorisation approuvée, pour le développement local. Accepte les entrées `plugin:<name>@<marketplace>` et `server:<name>`. Demande une confirmation, il prend donc effet dans les sessions interactives. Avec `-p`, Claude Code ignore le flag | `claude --dangerously-load-development-channels server:webhook` |85| `--dangerously-load-development-channels` | Activer des [canaux](/docs/fr/channels-reference#test-during-the-research-preview) qui ne figurent pas sur la liste d'autorisation approuvée, pour le développement local. Accepte les entrées `plugin:<name>@<marketplace>` et `server:<name>`. Demande une confirmation, il prend donc effet dans les sessions interactives. Avec `-p`, Claude Code ignore le flag | `claude --dangerously-load-development-channels server:webhook` |

86| `--dangerously-skip-permissions` | Ignorer les invites de permission. Équivalent à `--permission-mode bypassPermissions`. Voir [modes de permission](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) pour ce que cela ignore et n'ignore pas. Pour les sessions démarrées avec `--bg`, le mode [persiste lorsque le superviseur redémarre la session](/docs/fr/agent-view#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` |86| `--dangerously-skip-permissions` | Ignorer les invites de permission. Équivalent à `--permission-mode bypassPermissions`. Voir [modes de permission](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) pour ce que cela ignore et n'ignore pas. Pour les sessions démarrées avec `--bg`, le mode [persiste lorsque le superviseur redémarre la session](/docs/fr/agent-view#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` |

87| `--debug` | Activer le mode débogage avec filtrage de catégorie optionnel, tel que `--debug='mcp,startup'` ou `--debug='!1p'`. Le filtre se lie uniquement dans la forme `=` ; un filtre séparé par des espaces active le mode débogage sans filtrage | `claude --debug='mcp,startup'` |87| `--debug` | Activer le mode débogage avec filtrage de catégorie optionnel, tel que `--debug='mcp,startup'` ou `--debug='!1p'`. Le filtre se lie uniquement dans la forme `=` ; un filtre séparé par des espaces active le mode débogage sans filtrage | `claude --debug='mcp,startup'` |


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

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

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

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

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

113| `--name`, `-n` | Définir un nom d'affichage pour la session, affiché dans `/resume` et le titre du terminal. Vous pouvez reprendre une session nommée avec `claude --resume <name>`. Dans une session interactive, si une autre session en direct sur cette machine utilise déjà le nom, Claude Code applique [une variante de celui-ci](/docs/fr/sessions#name-your-sessions) à la place. <br /><br />[`/rename`](/docs/fr/commands) change le nom en cours de session et l'affiche également dans la barre d'invite | `claude -n "my-feature-work"` |113| `--name`, `-n` | Définir un nom d'affichage pour la session, affiché dans `/resume` et le titre du terminal. Vous pouvez reprendre une session nommée avec `claude --resume <name>`. <br /><br />[`/rename`](/docs/fr/commands) change le nom en cours de session et l'affiche également dans la barre de prompt | `claude -n "my-feature-work"` |

114| `--no-chrome` | Désactiver l'[intégration du navigateur Chrome](/docs/fr/chrome) pour cette session | `claude --no-chrome` |114| `--no-chrome` | Désactiver l'[intégration du navigateur Chrome](/docs/fr/chrome) pour cette session | `claude --no-chrome` |

115| `--no-session-persistence` | Désactiver la persistance de session afin que les sessions ne soient pas enregistrées sur le disque et ne puissent pas être reprises. Mode impression uniquement. La variable d'environnement [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/docs/fr/env-vars) fait la même chose dans n'importe quel mode | `claude -p --no-session-persistence "query"` |115| `--no-session-persistence` | Désactiver la persistance de session afin que les sessions ne soient pas enregistrées sur le disque et ne puissent pas être reprises. Mode impression uniquement. La variable d'environnement [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/docs/fr/env-vars) fait la même chose dans n'importe quel mode | `claude -p --no-session-persistence "query"` |

116| `--output-format` | Spécifier le format de sortie pour le mode impression (options : `text`, `json`, `stream-json`) | `claude -p "query" --output-format json` |116| `--output-format` | Spécifier le format de sortie pour le mode impression (options : `text`, `json`, `stream-json`) | `claude -p "query" --output-format json` |

Details

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

315| Les [paramètres gérés par le serveur](/docs/fr/server-managed-settings) de votre organisation | Oui, sauf dans les sessions [Claude Tag](https://claude.com/docs/claude-tag/overview) | Récupérés des serveurs d'Anthropic quand la session démarre. Consultez [Couverture de surface](/docs/fr/model-config#surface-coverage) pour savoir comment `availableModels` est appliqué dans les sessions cloud. Les paramètres déployés sur votre appareil via MDM ou des fichiers de paramètres gérés ne s'appliquent pas, car la session s'exécute sur une VM gérée par Anthropic ; dans un [environnement auto-hébergé](/docs/fr/self-hosted-environments), les sessions lisent également le fichier de paramètres gérés dans l'image d'exécuteur, selon [comment Claude Code combine les sources gérées](/docs/fr/managed-settings#how-claude-code-combines-managed-sources) |315| Les [paramètres gérés par le serveur](/docs/fr/server-managed-settings) de votre organisation | Oui, sauf dans les sessions [Claude Tag](https://claude.com/docs/claude-tag/overview) | Récupérés des serveurs d'Anthropic quand la session démarre. Consultez [Couverture de surface](/docs/fr/model-config#surface-coverage) pour savoir comment `availableModels` est appliqué dans les sessions cloud. Les paramètres déployés sur votre appareil via MDM ou des fichiers de paramètres gérés ne s'appliquent pas, car la session s'exécute sur une VM gérée par Anthropic ; dans un [environnement auto-hébergé](/docs/fr/self-hosted-environments), les sessions lisent également le fichier de paramètres gérés dans l'image d'exécuteur, selon [comment Claude Code combine les sources gérées](/docs/fr/managed-settings#how-claude-code-combines-managed-sources) |

316| Votre `~/.claude/CLAUDE.md` utilisateur | Non | Vit sur votre machine, pas dans le dépôt. Consultez [Ajouter des préférences personnelles sans les commiter dans le dépôt](#add-personal-preferences-without-committing-to-the-repo) |316| Votre `~/.claude/CLAUDE.md` utilisateur | Non | Vit sur votre machine, pas dans le dépôt. Consultez [Ajouter des préférences personnelles sans les commiter dans le dépôt](#add-personal-preferences-without-committing-to-the-repo) |

317| Vos `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` utilisateur | Non | Vivent sur votre machine, pas dans le dépôt. Commitez-les dans le répertoire `.claude/` du dépôt à la place. Les sessions cloud chargent automatiquement les skills que vous activez sur claude.ai |317| Vos `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` utilisateur | Non | Vivent sur votre machine, pas dans le dépôt. Commitez-les dans le répertoire `.claude/` du dépôt à la place. Les sessions cloud chargent automatiquement les [skills que vous activez sur claude.ai](/docs/fr/skills#skills-in-cowork-and-cloud-sessions) |

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

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

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

code-review.md +4 −4

Details

270| Section | Ce qu'il affiche |270| Section | Ce qu'il affiche |

271| :- | :- |271| :- | :- |

272| PRs reviewed | Nombre quotidien de pull requests examinées sur la plage de temps sélectionnée |272| PRs reviewed | Nombre quotidien de pull requests examinées sur la plage de temps sélectionnée |

273| Cost weekly | Dépenses hebdomadaires sur Code Review |273| Code Review cost | Dépenses Code Review depuis le début du mois |

274| Feedback | Nombre de commentaires de révision qui ont été auto-résolus parce qu'un développeur a résolu le problème |274| Feedback | Nombre de commentaires de révision qui ont été auto-résolus parce qu'un développeur a résolu le problème |

275| Repository breakdown | Comptages par référentiel des PR examinées et des commentaires résolus |275| Repository breakdown | Nombre par dépôt de PR examinées, de commentaires résolus et d'exécutions de revue, avec le coût estimé et une vue par PR |

276 276 

277Les chiffres de coût du tableau de bord sont des estimations pour surveiller l'activité. Pour les dépenses exactes de facture, consultez votre facture Anthropic.277La carte Code Review cost n'affiche un montant que lorsque le mois en cours est sélectionné. Les chiffres de coût dans les analyses peuvent différer de votre facture. Les coûts de Repository breakdown sont estimés au prix catalogue, avant toute remise ou tout crédit, et ne couvrent que les revues que Claude a publiées sur une pull request. Pour des dépenses conformes à votre facture, consultez votre facture Anthropic.

278 278 

279<h2 id="pricing">279<h2 id="pricing">

280 Tarification280 Tarification


292 292 

293Les coûts apparaissent sur votre facture Anthropic quel que soit le fait que votre organisation utilise Amazon Bedrock ou Google Cloud's Agent Platform pour d'autres fonctionnalités Claude Code. Pour définir un plafond de dépenses mensuelles pour Code Review, allez à [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage) et configurez la limite pour le service Claude Code Review.293Les coûts apparaissent sur votre facture Anthropic quel que soit le fait que votre organisation utilise Amazon Bedrock ou Google Cloud's Agent Platform pour d'autres fonctionnalités Claude Code. Pour définir un plafond de dépenses mensuelles pour Code Review, allez à [claude.ai/admin-settings/usage](https://claude.ai/admin-settings/usage) et configurez la limite pour le service Claude Code Review.

294 294 

295Surveillez les dépenses via le graphique de coût hebdomadaire dans [analytics](#view-usage) ou la colonne de coût moyen par référentiel dans les paramètres d'administration.295Pour surveiller les dépenses, utilisez le [tableau de bord analytics](#view-usage).

296 296 

297<h2 id="troubleshooting">297<h2 id="troubleshooting">

298 Dépannage298 Dépannage

commands.md +2 −2

Details

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 |

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

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

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

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


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

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

8 8 

9Certaines organisations exigent que chaque processus sur une station de travail démarre via un lanceur obligatoire. Le lanceur applique le bac à sable, les contrôles réseau ou l'injection de credentials dont dépend la posture de sécurité de l'entreprise, et un binaire qui démarre sans cela constitue une violation de politique.9Certaines organisations exigent que chaque processus sur une station de travail démarre via un lanceur obligatoire. Le lanceur applique le bac à sable, les contrôles réseau ou l'injection de credentials dont dépend la posture de sécurité de l'entreprise, et un binaire qui démarre sans cela constitue une violation de politique.

10 10 

11`CLAUDE_CODE_PROCESS_WRAPPER` démarre chaque processus que Claude Code lance à partir de son propre binaire via votre lanceur : le service d'arrière-plan, chaque session qu'il héberge dans la [vue agent](/docs/fr/agent-view), et les relanceurs de Claude Code après une mise à jour. Définissez-le sur le chemin absolu de votre lanceur, et Claude Code exécute le lanceur avec la commande Claude Code comme arguments.11`CLAUDE_CODE_PROCESS_WRAPPER` démarre chaque processus que Claude Code lance à partir de son propre binaire via votre lanceur : le [service d'arrière-plan](/docs/fr/agent-view#the-supervisor-process), chaque session qu'il héberge dans la [vue agent](/docs/fr/agent-view), et les relancements de Claude Code après une mise à jour. Définissez-le sur le chemin absolu de votre lanceur, et Claude Code exécute le lanceur avec la commande Claude Code comme arguments.

12 12 

13Un lanceur qui enveloppe la commande `claude` sur votre `PATH` ne peut pas atteindre le service d'arrière-plan ou les sessions qu'il héberge, car ils démarrent à partir du chemin direct du binaire sans consulter `claude`.13Un lanceur qui enveloppe la commande `claude` sur votre `PATH` ne peut pas atteindre le service d'arrière-plan ou les sessions qu'il héberge, car ils démarrent à partir du chemin direct du binaire sans consulter `claude`.

14 14 


39 39 

40Les processus suivants ne démarrent pas via le lanceur :40Les processus suivants ne démarrent pas via le lanceur :

41 41 

42* Un [service d'arrière-plan installé](/docs/fr/agent-view#the-supervisor-process) dont l'unité a été écrite avant la configuration du lanceur : `launchd` ou `systemd` démarre ce processus à partir de son fichier d'unité. `/status` et `claude daemon status` avertissent quand le service en cours d'exécution et le lanceur configuré ne correspondent pas, et les sessions que le service génère démarrent toujours via le lanceur une fois que le service redémarre avec la variable dans ses paramètres.

43* Une session que vous démarrez vous-même dans un terminal, qui s'exécute comme vous l'avez invoquée. Pour couvrir ces sessions, mettez un script nommé `claude` dans un répertoire plus tôt sur `PATH` qui exécute votre lanceur avec le vrai binaire ; ne remplacez pas le lien symbolique géré. Le service d'arrière-plan et ses sessions démarrent sans une recherche `PATH`, donc les deux lanceurs ne s'empilent pas là.42* Une session que vous démarrez vous-même dans un terminal, qui s'exécute comme vous l'avez invoquée. Pour couvrir ces sessions, mettez un script nommé `claude` dans un répertoire plus tôt sur `PATH` qui exécute votre lanceur avec le vrai binaire ; ne remplacez pas le lien symbolique géré. Le service d'arrière-plan et ses sessions démarrent sans une recherche `PATH`, donc les deux lanceurs ne s'empilent pas là.

44* Le premier processus d'un lien profond `claude-cli://`, que le gestionnaire de protocole du système d'exploitation démarre directement. Tout ce que cette session démarre en arrière-plan par la suite s'exécute via le lanceur. Pour fermer complètement ce chemin, [empêchez l'enregistrement du gestionnaire](/docs/fr/deep-links#registration-and-supported-platforms) avec le paramètre `disableDeepLinkRegistration`.43* Le premier processus d'un lien profond `claude-cli://`, que le gestionnaire de protocole du système d'exploitation démarre directement. Tout ce que cette session démarre en arrière-plan par la suite s'exécute via le lanceur. Pour fermer complètement ce chemin, [empêchez l'enregistrement du gestionnaire](/docs/fr/deep-links#registration-and-supported-platforms) avec le paramètre `disableDeepLinkRegistration`.

45* Le relancement que `--worktree` combiné avec `--tmux` effectue : le multiplexeur de terminal démarre ce volet, pas le binaire de Claude Code.44* Le relancement que `--worktree` combiné avec `--tmux` effectue : le multiplexeur de terminal démarre ce volet, pas le binaire de Claude Code.


100 99 

101 Parce que `processWrapper` est un paramètre nommé, une organisation qui le fournit via les [paramètres gérés à distance](/docs/fr/managed-settings#delivery-mechanisms) le voit listé sur la [boîte de dialogue d'approbation de sécurité](/docs/fr/server-managed-settings#security-approval-dialogs) aux côtés des autres paramètres qui exécutent des exécutables fournis par l'administrateur.100 Parce que `processWrapper` est un paramètre nommé, une organisation qui le fournit via les [paramètres gérés à distance](/docs/fr/managed-settings#delivery-mechanisms) le voit listé sur la [boîte de dialogue d'approbation de sécurité](/docs/fr/server-managed-settings#security-approval-dialogs) aux côtés des autres paramètres qui exécutent des exécutables fournis par l'administrateur.

102 101 

103 Les paramètres de projet et locaux ne peuvent pas configurer le lanceur. Un fichier validé dans un référentiel ne doit pas pouvoir mettre un binaire devant chaque processus Claude Code sur la machine, donc Claude Code ignore `CLAUDE_CODE_PROCESS_WRAPPER` dans `.claude/settings.json` ou `.claude/settings.local.json` avec un avertissement dans le [journal de débogage](/docs/fr/troubleshooting), et ne lit jamais la clé `processWrapper` de ces fichiers.102 Les paramètres de projet et locaux ne peuvent pas configurer le lanceur. Un fichier validé dans un dépôt ne doit pas pouvoir mettre un binaire devant chaque processus Claude Code sur la machine, donc Claude Code ignore `CLAUDE_CODE_PROCESS_WRAPPER` dans `.claude/settings.json` ou `.claude/settings.local.json` avec un avertissement dans le [journal de débogage](/docs/fr/troubleshooting), et ne lit jamais la clé `processWrapper` de ces fichiers.

104 </Step>103 </Step>

105 104 

106 <Step title="Redémarrer le service d'arrière-plan et vos sessions">105 <Step title="Redémarrer le service d'arrière-plan et vos sessions">

107 Un service d'arrière-plan en cours d'exécution et toute session `claude` ouverte lisent la variable une fois au démarrage, donc ils continuent de lancer des processus sans enveloppe jusqu'au redémarrage. Exécutez `claude daemon stop --any` pour arrêter le service à la demande ; la commande suivante qui en a besoin, comme `claude agents`, en démarre un enveloppé. Un [service installé](/docs/fr/agent-view#the-supervisor-process) prend `claude daemon stop` sans `--any`. Ensuite, redémarrez vos sessions `claude` ouvertes.106 Un service d'arrière-plan en cours d'exécution et toute session `claude` ouverte lisent la variable une fois au démarrage, donc ils continuent de lancer des processus sans enveloppe jusqu'au redémarrage. Exécutez `claude daemon stop --any` pour arrêter le service à la demande. La commande suivante qui en a besoin, comme `claude agents`, en démarre un enveloppé. Ensuite, redémarrez vos sessions `claude` ouvertes.

108 107 

109 Sur les machines que vous ne pouvez pas redémarrer manuellement, la première session démarrée après le push des paramètres retire automatiquement un service à la demande sans enveloppe restant. Une machine où aucune nouvelle session ne démarre garde son service sans enveloppe jusqu'à ce qu'une le fasse, et un service installé a toujours besoin du redémarrage dans cette étape.108 Sur les machines que vous ne pouvez pas redémarrer manuellement, la première session démarrée après le push des paramètres retire automatiquement un service à la demande sans enveloppe restant. Une machine où aucune nouvelle session ne démarre garde son service d'arrière-plan sans enveloppe jusqu'à ce qu'une le fasse.

110 </Step>109 </Step>

111 110 

112 <Step title="Vérifier">111 <Step title="Vérifier">

Details

142 142 

143Une session répond au nom que vous définissez avec la commande [`/rename`](/docs/fr/commands) ou l'indicateur [`--name`](/docs/fr/cli-reference#cli-flags). Quand vous n'en définissez pas un, Claude Code nomme la session lui-même. Pour une session interactive, c'est le nom affiché dans les [listes de sessions en cours d'exécution](/docs/fr/sessions#name-your-sessions).143Une session répond au nom que vous définissez avec la commande [`/rename`](/docs/fr/commands) ou l'indicateur [`--name`](/docs/fr/cli-reference#cli-flags). Quand vous n'en définissez pas un, Claude Code nomme la session lui-même. Pour une session interactive, c'est le nom affiché dans les [listes de sessions en cours d'exécution](/docs/fr/sessions#name-your-sessions).

144 144 

145Quand vous renommez une session, ou démarrez ou reprenez une session interactive, avec un nom qu'une autre session active sur cette machine utilise déjà, Claude Code laisse le nom avec la session qui l'a déjà et [renomme la vôtre en une variante](/docs/fr/sessions#name-your-sessions). Les sessions peuvent toujours partager un nom, par exemple quand l'une d'elles exécute une version antérieure de Claude Code ou le nom partagé en est un que Claude Code a généré. Sauf si cette session est connectée à Remote Control, Claude Code affiche le répertoire de travail de chaque session locale dans la sortie `/list-agents`, afin que vous puissiez distinguer les sessions portant le même nom quand elles s'exécutent dans des répertoires différents. Claude adresse le message de l'une de deux façons, selon le nombre de sessions actives qui répondent au nom :145Sauf si cette session est connectée à Remote Control, Claude Code affiche le répertoire de travail de chaque session locale dans la sortie de `/list-agents`, afin que vous puissiez distinguer les sessions portant le même nom quand elles s'exécutent dans des répertoires différents. Claude adresse le message de l'une de deux façons, selon le nombre de sessions actives qui répondent au nom :

146 146 

147* **Une session répond au nom** : Claude Code livre le message sur le nom seul.147* **Une session répond au nom** : Claude Code livre le message sur le nom seul.

148* **Plusieurs sessions partagent le nom, ou Claude Code n'a pas pu vérifier partout où vos sessions s'exécutent** : Claude ajoute un court identifiant à chaque ligne de sa liste et utilise l'identifiant dans l'adresse.148* **Plusieurs sessions partagent le nom, ou Claude Code n'a pas pu vérifier partout où vos sessions s'exécutent** : Claude ajoute un court identifiant à chaque ligne de sa liste et utilise l'identifiant dans l'adresse.

desktop.md +30 −4

Details

400 400 

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

402 402 

403Les worktrees sont stockés dans `<project-root>/.claude/worktrees/` par défaut. Vous pouvez modifier ceci en un répertoire personnalisé dans Paramètres → Claude Code sous « Emplacement du worktree ». Vous pouvez également définir un préfixe de branche qui est ajouté au début de chaque nom de branche worktree, ce qui est utile pour garder les branches créées par Claude organisées. Pour supprimer un worktree quand vous avez terminé, survolez la session dans la barre latérale et cliquez sur l'icône d'archive. Pour que les sessions s'archivent elles-mêmes quand leur pull request est fusionnée ou fermée, activez **Auto-archive après fusion ou fermeture de PR** dans Paramètres → Claude Code. L'auto-archive s'applique uniquement aux sessions locales qui ont terminé l'exécution.403Les worktrees sont stockés dans `<project-root>/.claude/worktrees/` par défaut. Vous pouvez modifier ceci en un répertoire personnalisé :

404 404 

405Pour inclure les fichiers ignorés par git comme `.env` dans les nouveaux worktrees, créez un [fichier `.worktreeinclude`](/docs/fr/worktrees#copy-gitignored-files-into-worktrees) à la racine de votre projet.405* **Sessions locales** : définissez **Emplacement du worktree** dans **Paramètres > Claude Code**

406* **Sessions SSH** : définissez **Dossier du worktree** sur la [connexion SSH](#choose-where-ssh-session-worktrees-go)

407 

408Vous pouvez également définir un **Préfixe de branche** dans **Paramètres > Claude Code**. Desktop l'ajoute au début de chaque nom de branche worktree, ce qui est utile pour garder les branches créées par Claude organisées.

409 

410Pour supprimer un worktree quand vous avez terminé, survolez la session dans la barre latérale et cliquez sur l'icône d'archive. Pour que les sessions s'archivent elles-mêmes quand leur pull request est fusionnée ou fermée, activez **Auto-archive après fusion ou fermeture de PR** dans **Paramètres > Claude Code**. L'auto-archive s'applique uniquement aux sessions locales qui ont terminé l'exécution.

411 

412Pour inclure les fichiers ignorés par git comme `.env` dans les nouveaux worktrees, créez un [fichier `.worktreeinclude`](/docs/fr/worktrees#copy-gitignored-files-into-worktrees) à la racine de votre projet. Voir [Ce que les worktrees partagent avec le checkout principal](/docs/fr/worktrees#what-worktrees-share-with-the-main-checkout) pour savoir où une session worktree lit les paramètres du projet, les hooks et les skills.

406 413 

407<Note>414<Note>

408 L'isolation des sessions nécessite [Git](https://git-scm.com/downloads). La plupart des Macs incluent Git par défaut. Exécutez `git --version` dans Terminal pour vérifier ; s'il affiche un numéro de version, Git est installé. Si vous rencontrez des erreurs Git, demandez à Claude dans l'[onglet Cowork](https://claude.com/product/cowork) de vous aider à dépanner votre configuration.415 L'isolation des sessions nécessite [Git](https://git-scm.com/downloads). La plupart des Macs incluent Git par défaut. Exécutez `git --version` dans Terminal pour vérifier ; s'il affiche un numéro de version, Git est installé. Si vous rencontrez des erreurs Git, demandez à Claude dans l'[onglet Cowork](https://claude.com/product/cowork) de vous aider à dépanner votre configuration.


811* **Hôte SSH** : `user@hostname` ou un hôte défini dans `~/.ssh/config`818* **Hôte SSH** : `user@hostname` ou un hôte défini dans `~/.ssh/config`

812* **Port SSH** : par défaut 22 s'il est laissé vide, ou utilise le port de votre configuration SSH819* **Port SSH** : par défaut 22 s'il est laissé vide, ou utilise le port de votre configuration SSH

813* **Clé SSH (facultatif)** : chemin vers votre clé privée, comme `~/.ssh/id_ed25519`. Laissez vide pour utiliser votre configuration SSH ou votre agent SSH.820* **Clé SSH (facultatif)** : chemin vers votre clé privée, comme `~/.ssh/id_ed25519`. Laissez vide pour utiliser votre configuration SSH ou votre agent SSH.

821* **Dossier des worktrees** : un dossier sur la machine distante, comme `~/worktrees`, où les nouvelles sessions créent leurs worktrees. Laissez vide pour utiliser la [valeur par défaut de la machine distante](#choose-where-ssh-session-worktrees-go).

814 822 

815Une fois ajoutée, la connexion apparaît sous **SSH** dans la liste déroulante d'environnement. Sélectionnez-la pour démarrer une session sur cette machine. Claude s'exécute sur la machine distante avec accès à ses fichiers et outils.823Une fois ajoutée, la connexion apparaît sous **SSH** dans la liste déroulante d'environnement. Sélectionnez-la pour démarrer une session sur cette machine. Claude s'exécute sur la machine distante avec accès à ses fichiers et outils.

816 824 

817La machine distante doit exécuter Linux ou macOS. Desktop installe Claude Code sur la machine distante automatiquement la première fois que vous vous connectez. Une fois connecté, les sessions SSH supportent les modes de permission, les connecteurs, les plugins et les serveurs MCP.825La machine distante doit exécuter Linux ou macOS. Desktop installe Claude Code sur la machine distante automatiquement la première fois que vous vous connectez. Une fois connecté, les sessions SSH supportent les modes de permission, les connecteurs, les plugins et les serveurs MCP.

818 826 

827<h4 id="choose-where-ssh-session-worktrees-go">

828 Choisir l'emplacement des worktrees des sessions SSH

829</h4>

830 

831Sauf si votre organisation restreint les dossiers que les sessions peuvent utiliser, les nouvelles sessions SSH créent leurs [worktrees](#work-in-parallel-with-sessions) dans le premier des emplacements suivants qui est défini :

832 

8331. **Dossier des worktrees** sur la connexion SSH

8342. [`worktree.location`](/docs/fr/settings-reference#worktree-location) dans `~/.claude/settings.json` sur la machine distante

8353. `<project-root>/.claude/worktrees/`, la valeur par défaut

836 

837Chaque projet obtient son propre sous-dossier dans le dossier que vous définissez ; ainsi, avec `~/worktrees`, le chemin d'un worktree est `~/worktrees/<project>-<id>/<worktree-name>`. Si le dossier que vous définissez se trouve à l'intérieur du projet, Desktop l'ignore pour ce projet et utilise la valeur par défaut.

838 

839Pour définir **Dossier des worktrees** sur une connexion que vous avez ajoutée précédemment ou sur une connexion gérée par votre organisation, survolez-la dans la liste déroulante d'environnement et cliquez sur l'icône d'engrenage.

840 

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

842 

819<h4 id="open-an-ssh-session-from-a-link">843<h4 id="open-an-ssh-session-from-a-link">

820 Ouvrir une session SSH à partir d'un lien844 Ouvrir une session SSH à partir d'un lien

821</h4>845</h4>


869 Pré-configurer les connexions SSH pour votre équipe893 Pré-configurer les connexions SSH pour votre équipe

870</h4>894</h4>

871 895 

872Les administrateurs peuvent distribuer les connexions SSH aux membres de l'équipe en définissant `sshConfigs` dans les [paramètres gérés](/docs/fr/managed-settings). Les connexions définies de cette manière apparaissent dans la liste déroulante d'environnement de chaque utilisateur automatiquement et sont affichées comme gérées, de sorte que les utilisateurs peuvent les sélectionner mais ne peuvent pas les modifier ou les supprimer dans l'application.896Les administrateurs peuvent distribuer les connexions SSH aux membres de l'équipe en définissant `sshConfigs` dans les [paramètres gérés](/docs/fr/managed-settings). Les connexions définies de cette manière apparaissent dans la liste déroulante d'environnement de chaque utilisateur automatiquement et sont affichées comme gérées. Les utilisateurs peuvent les sélectionner et [définir leur propre **Dossier des worktrees**](#choose-where-ssh-session-worktrees-go) pour celles-ci, mais ne peuvent rien modifier d'autre ni les supprimer dans l'application.

873 897 

874L'exemple suivant pré-configure une seule connexion :898L'exemple suivant pré-configure une seule connexion :

875 899 


935 Le formulaire OpenTelemetry pour Cowork sous **Monitoring** dans les [paramètres de données et de confidentialité](https://claude.ai/admin-settings/data-privacy-controls) de la console d'administration s'applique uniquement aux sessions Cowork. Dans une session Cowork sur cette machine, l'application de bureau transmet ce collecteur à Claude Code en tant que variables d'environnement `OTEL_*`, de sorte que le formulaire prend effet même si Claude Code dans cette session [ne récupère jamais les paramètres de la console d'administration](#managed-settings).959 Le formulaire OpenTelemetry pour Cowork sous **Monitoring** dans les [paramètres de données et de confidentialité](https://claude.ai/admin-settings/data-privacy-controls) de la console d'administration s'applique uniquement aux sessions Cowork. Dans une session Cowork sur cette machine, l'application de bureau transmet ce collecteur à Claude Code en tant que variables d'environnement `OTEL_*`, de sorte que le formulaire prend effet même si Claude Code dans cette session [ne récupère jamais les paramètres de la console d'administration](#managed-settings).

936 960 

937 Pour exporter la télémétrie à partir des sessions de l'onglet Code, définissez `CLAUDE_CODE_ENABLE_TELEMETRY` et les variables `OTEL_*` dans le bloc `env` de vos paramètres gérés Claude Code, comme indiqué dans [configuration de l'administrateur pour la surveillance](/docs/fr/monitoring-usage#administrator-configuration). Les sessions locales, cloud et SSH lisent chacune les [paramètres gérés à partir de sources différentes](#managed-settings). Pour les hôtes qu'une session cloud peut atteindre, voir [accès réseau](/docs/fr/cloud-environments#network-access). Pour le `service.name` que les sessions de l'onglet Code signalent, voir [informations de service](/docs/fr/monitoring-usage#service-information).961 Pour exporter la télémétrie à partir des sessions de l'onglet Code, définissez `CLAUDE_CODE_ENABLE_TELEMETRY` et les variables `OTEL_*` dans le bloc `env` de vos paramètres gérés Claude Code, comme indiqué dans [configuration de l'administrateur pour la surveillance](/docs/fr/monitoring-usage#administrator-configuration). Les sessions locales, cloud et SSH lisent chacune les [paramètres gérés à partir de sources différentes](#managed-settings). Pour les hôtes qu'une session cloud peut atteindre, voir [accès réseau](/docs/fr/cloud-environments#network-access). Pour le `service.name` que les sessions de l'onglet Code signalent, voir [informations de service](/docs/fr/monitoring-usage#service-information).

962 

963 Pour savoir sur quelle machine distante une session SSH s'est exécutée, voir [Attribuer la télémétrie aux sessions SSH de Desktop](/docs/fr/monitoring-usage#attribute-telemetry-to-desktop-ssh-sessions).

938</Note>964</Note>

939 965 

940<h3 id="managed-settings">966<h3 id="managed-settings">


951| `browserExternalPageTools` | définissez sur `"disabled"` pour empêcher Claude d'utiliser des outils pour lire ou agir sur des pages externes dans le [volet Navigateur](#browse-external-sites). Les utilisateurs peuvent toujours naviguer vers des sites externes eux-mêmes, et les aperçus des serveurs de développement locaux ne sont pas affectés. |977| `browserExternalPageTools` | définissez sur `"disabled"` pour empêcher Claude d'utiliser des outils pour lire ou agir sur des pages externes dans le [volet Navigateur](#browse-external-sites). Les utilisateurs peuvent toujours naviguer vers des sites externes eux-mêmes, et les aperçus des serveurs de développement locaux ne sont pas affectés. |

952| `disableMobileSimulatorTools` | définissez sur `true` pour bloquer les outils de Claude pour contrôler et capturer les appareils dans le [volet iOS Simulator](/docs/fr/desktop-ios-simulator#turn-off-simulator-access). Le volet reste utilisable pour les appuis de l'utilisateur ; seul l'accès de Claude est supprimé. La valeur doit être le booléen JSON `true` ; la chaîne `"true"` est ignorée. |978| `disableMobileSimulatorTools` | définissez sur `true` pour bloquer les outils de Claude pour contrôler et capturer les appareils dans le [volet iOS Simulator](/docs/fr/desktop-ios-simulator#turn-off-simulator-access). Le volet reste utilisable pour les appuis de l'utilisateur ; seul l'accès de Claude est supprimé. La valeur doit être le booléen JSON `true` ; la chaîne `"true"` est ignorée. |

953| `disableBrowserExternalNavigation` | définissez sur `true` pour désactiver complètement la navigation externe dans le [volet Navigateur](#browse-external-sites). Ni les utilisateurs ni Claude ne peuvent naviguer vers des sites externes, et les aperçus des serveurs de développement localhost ne sont pas affectés. La valeur doit être le booléen JSON `true` ; la chaîne `"true"` est ignorée. |979| `disableBrowserExternalNavigation` | définissez sur `true` pour désactiver complètement la navigation externe dans le [volet Navigateur](#browse-external-sites). Ni les utilisateurs ni Claude ne peuvent naviguer vers des sites externes, et les aperçus des serveurs de développement localhost ne sont pas affectés. La valeur doit être le booléen JSON `true` ; la chaîne `"true"` est ignorée. |

954| `sshConfigs` | pré-configurez les [connexions SSH](#pre-configure-ssh-connections-for-your-team) qui apparaissent dans la liste déroulante de l'environnement. Les utilisateurs ne peuvent pas modifier ou supprimer les connexions gérées. |980| `sshConfigs` | pré-configurez les [connexions SSH](#pre-configure-ssh-connections-for-your-team) qui apparaissent dans la liste déroulante de l'environnement. Les utilisateurs ne peuvent pas supprimer les connexions gérées ni modifier quoi que ce soit d'autre que leur propre **Worktree folder**. |

955| `sshHostAllowlist` | restreignez les [sessions SSH](#restrict-which-ssh-hosts-users-can-connect-to) aux hôtes dont le nom d'hôte résolu correspond à l'un de ces modèles. Lecture à partir des paramètres gérés uniquement. |981| `sshHostAllowlist` | restreignez les [sessions SSH](#restrict-which-ssh-hosts-users-can-connect-to) aux hôtes dont le nom d'hôte résolu correspond à l'un de ces modèles. Lecture à partir des paramètres gérés uniquement. |

956| `disableDesktopLocalSessions` | définissez sur `true` pour désactiver les [sessions Code qui s'exécutent sur l'appareil](#local-sessions-on-managed-devices), en laissant les sessions SSH vers d'autres hôtes et les sessions cloud disponibles. La valeur doit être le booléen JSON `true`. Lecture à partir des paramètres gérés uniquement. Nécessite Claude Desktop v1.37937.0 ou version ultérieure. |982| `disableDesktopLocalSessions` | définissez sur `true` pour désactiver les [sessions Code qui s'exécutent sur l'appareil](#local-sessions-on-managed-devices), en laissant les sessions SSH vers d'autres hôtes et les sessions cloud disponibles. La valeur doit être le booléen JSON `true`. Lecture à partir des paramètres gérés uniquement. Nécessite Claude Desktop v1.37937.0 ou version ultérieure. |

957| `disableSshSavedPasswords` | définissez sur `true` pour empêcher Desktop de proposer de mémoriser les mots de passe SSH et d'utiliser ou d'afficher ceux qu'il a enregistrés précédemment. L'activer ne les supprime pas. Lecture à partir des paramètres gérés uniquement. Nécessite Claude Desktop v1.49585.0 ou version ultérieure. |983| `disableSshSavedPasswords` | définissez sur `true` pour empêcher Desktop de proposer de mémoriser les mots de passe SSH et d'utiliser ou d'afficher ceux qu'il a enregistrés précédemment. L'activer ne les supprime pas. Lecture à partir des paramètres gérés uniquement. Nécessite Claude Desktop v1.49585.0 ou version ultérieure. |

env-vars.md +5 −5

Details

210| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Définissez sur `1` pour omettre le préfixe `mcp__<server>__` des noms d'outils provenant des serveurs MCP créés par le SDK. Les outils utilisent leurs noms d'origine. Utilisation du SDK uniquement |210| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Définissez sur `1` pour omettre le préfixe `mcp__<server>__` des noms d'outils provenant des serveurs MCP créés par le SDK. Les outils utilisent leurs noms d'origine. Utilisation du SDK uniquement |

211| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Délai de blocage en millisecondes pour les sous-agents. Couvre également les [agents de workflow](/docs/fr/workflows#when-an-agent-stalls-and-restarts) sur Claude Code v2.1.286 ou ultérieur. Par défaut `600000` (10 minutes) ; si vous augmentez `CLAUDE_STREAM_IDLE_TIMEOUT_MS` alors que le watchdog de flux est actif, la valeur par défaut augmente avec lui, comme le décrit [Gérer les réponses API lentes ou bloquées](/docs/fr/agent-sdk/typescript#handle-slow-or-stalled-api-responses) |211| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Délai de blocage en millisecondes pour les sous-agents. Couvre également les [agents de workflow](/docs/fr/workflows#when-an-agent-stalls-and-restarts) sur Claude Code v2.1.286 ou ultérieur. Par défaut `600000` (10 minutes) ; si vous augmentez `CLAUDE_STREAM_IDLE_TIMEOUT_MS` alors que le watchdog de flux est actif, la valeur par défaut augmente avec lui, comme le décrit [Gérer les réponses API lentes ou bloquées](/docs/fr/agent-sdk/typescript#handle-slow-or-stalled-api-responses) |

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

213| `CLAUDE_AUTO_BACKGROUND_TASKS` | Définissez sur `1` pour forcer l'activation de la mise en arrière-plan automatique des tâches d'agent de longue durée. Lorsqu'elle est activée, les sous-agents sont déplacés en arrière-plan après environ deux minutes d'exécution. Active également la [mise en arrière-plan automatique des appels d'outils MCP longs](/docs/fr/mcp#automatic-backgrounding-of-long-tool-calls) en mode non interactif sur Claude Code v2.1.212 ou ultérieur |213| `CLAUDE_AUTO_BACKGROUND_TASKS` | Définissez sur `1` pour forcer l'activation de la mise en arrière-plan automatique des tâches d'agent de longue durée. Lorsqu'elle est activée, un [sous-agent](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) passe en arrière-plan après environ deux minutes d'exécution. Si Claude a mis en file d'attente un appel d'outil, comme une modification de fichier, derrière le sous-agent, celui-ci se termine au premier plan avant que cet appel ne démarre. Active également la [mise en arrière-plan automatique des longs appels d'outils MCP](/docs/fr/mcp#automatic-backgrounding-of-long-tool-calls) en mode non interactif sur Claude Code v2.1.212 ou version ultérieure |

214| `CLAUDE_AX_PREPARK_MS` | En [mode lecteur d'écran](/docs/fr/accessibility), nombre de millisecondes que Claude Code attend avant d'écrire une ligne nouvelle ou modifiée. Par défaut `0`, donc Claude Code n'attend pas. Avant la v2.1.287, la valeur par défaut était `50`. Claude Code plafonne l'attente à `5000`. Nécessite Claude Code v2.1.233 ou ultérieur |214| `CLAUDE_AX_PREPARK_MS` | En [mode lecteur d'écran](/docs/fr/accessibility), nombre de millisecondes que Claude Code attend avant d'écrire une ligne nouvelle ou modifiée. Par défaut `0`, donc Claude Code n'attend pas. Avant la v2.1.287, la valeur par défaut était `50`. Claude Code plafonne l'attente à `5000`. Nécessite Claude Code v2.1.233 ou ultérieur |

215| `CLAUDE_AX_SCREEN_READER` | Définissez sur `1` pour produire une sortie adaptée aux lecteurs d'écran : texte brut sans bordures décoratives ni animations. Définissez sur `0` pour forcer la désactivation du mode lecteur d'écran même lorsque [`axScreenReader`](/docs/fr/settings-reference#axscreenreader) vaut `true`. Le flag [`--ax-screen-reader`](/docs/fr/cli-reference#cli-flags) est prioritaire. Nécessite Claude Code v2.1.181 ou ultérieur |215| `CLAUDE_AX_SCREEN_READER` | Définissez sur `1` pour produire une sortie adaptée aux lecteurs d'écran : texte brut sans bordures décoratives ni animations. Définissez sur `0` pour forcer la désactivation du mode lecteur d'écran même lorsque [`axScreenReader`](/docs/fr/settings-reference#axscreenreader) vaut `true`. Le flag [`--ax-screen-reader`](/docs/fr/cli-reference#cli-flags) est prioritaire. Nécessite Claude Code v2.1.181 ou ultérieur |

216| `CLAUDE_AX_STARTUP_QUIET_MS` | En [mode lecteur d'écran](/docs/fr/accessibility), nombre de millisecondes pendant lesquelles Claude Code retient le premier rendu de l'interface après la ligne de confirmation de démarrage, afin que votre lecteur d'écran puisse lire la ligne en entier avant qu'une nouvelle sortie ne l'interrompe. Par défaut `3000`. Définissez `0` pour un rendu immédiat. Claude Code plafonne cette attente à `600000` (10 minutes). Votre première frappe au clavier met fin à l'attente plus tôt. Nécessite Claude Code v2.1.217 ou ultérieur |216| `CLAUDE_AX_STARTUP_QUIET_MS` | En [mode lecteur d'écran](/docs/fr/accessibility), nombre de millisecondes pendant lesquelles Claude Code retient le premier rendu de l'interface après la ligne de confirmation de démarrage, afin que votre lecteur d'écran puisse lire la ligne en entier avant qu'une nouvelle sortie ne l'interrompe. Par défaut `3000`. Définissez `0` pour un rendu immédiat. Claude Code plafonne cette attente à `600000` (10 minutes). Votre première frappe au clavier met fin à l'attente plus tôt. Nécessite Claude Code v2.1.217 ou ultérieur |


285| `CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK` | Définissez sur `1` pour désactiver le [changement automatique de modèle lorsqu'un classifieur de sécurité signale une requête](/docs/fr/model-config#automatic-model-fallback), comportement que contrôle le paramètre [`switchModelsOnFlag`](/docs/fr/settings-reference#switchmodelsonflag) |285| `CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK` | Définissez sur `1` pour désactiver le [changement automatique de modèle lorsqu'un classifieur de sécurité signale une requête](/docs/fr/model-config#automatic-model-fallback), comportement que contrôle le paramètre [`switchModelsOnFlag`](/docs/fr/settings-reference#switchmodelsonflag) |

286| `CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS` | Définissez sur `1` pour empêcher Claude Code d'envoyer le champ de sortie structurée `output_config.format` et la valeur `anthropic-beta` qui lui est associée, pour une [passerelle LLM](/docs/fr/llm-gateway-protocol#feature-pass-through) dont le service en amont les rejette. Les autres capacités en préversion que [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/fr/llm-gateway-protocol#disable-pre-release-capabilities) désactive restent actives. Nécessite Claude Code v2.1.288 ou ultérieur |286| `CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS` | Définissez sur `1` pour empêcher Claude Code d'envoyer le champ de sortie structurée `output_config.format` et la valeur `anthropic-beta` qui lui est associée, pour une [passerelle LLM](/docs/fr/llm-gateway-protocol#feature-pass-through) dont le service en amont les rejette. Les autres capacités en préversion que [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/fr/llm-gateway-protocol#disable-pre-release-capabilities) désactive restent actives. Nécessite Claude Code v2.1.288 ou ultérieur |

287| `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT` | Définissez sur `1` pour désactiver la vérification de [chemin critique](/docs/fr/permission-modes#critical-paths) pour un `rm` récursif dont la cible est entièrement la sortie d'une substitution de commande, comme `rm -rf "$(pwd)"`. Les autres vérifications de chemins critiques continuent de s'exécuter. Définissez-la dans l'environnement qui lance Claude Code, car Claude Code ignore une copie fournie via un bloc `env` de paramètres. Nécessite Claude Code v2.1.281 ou ultérieur |287| `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT` | Définissez sur `1` pour désactiver la vérification de [chemin critique](/docs/fr/permission-modes#critical-paths) pour un `rm` récursif dont la cible est entièrement la sortie d'une substitution de commande, comme `rm -rf "$(pwd)"`. Les autres vérifications de chemins critiques continuent de s'exécuter. Définissez-la dans l'environnement qui lance Claude Code, car Claude Code ignore une copie fournie via un bloc `env` de paramètres. Nécessite Claude Code v2.1.281 ou ultérieur |

288| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Définissez sur `1` pour désactiver les mises à jour automatiques du titre du terminal en fonction du contexte de la conversation. Cela supprime également la requête en arrière-plan au modèle small/fast qui [génère un titre de session](/docs/fr/sessions#name-your-sessions) |288| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Définissez `1` pour désactiver les mises à jour automatiques du titre du terminal basées sur le contexte de la conversation. Cela ignore également la requête en arrière-plan au modèle small/fast qui [génère un titre de session](/docs/fr/sessions#name-your-sessions), et désactive les [rapports de statut vers votre terminal](/docs/fr/terminal-config#see-session-status-in-your-terminal) |

289| `CLAUDE_CODE_DISABLE_THINKING` | Définissez sur `1` pour omettre entièrement le paramètre `thinking` des requêtes API. Il s'agit d'une option de compatibilité pour les proxys et passerelles qui rejettent ce paramètre. Sur les modèles qui réfléchissent par défaut, omettre le paramètre signifie que le modèle peut toujours réfléchir. Pour désactiver explicitement la [réflexion étendue](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) sur l'API Anthropic, utilisez plutôt `MAX_THINKING_TOKENS=0`. Aucune des deux variables ne désactive la réflexion sur Opus 5.5, Sonnet 5.5, Haiku 5.5 ou les modèles Fable, sur lesquels la réflexion ne peut pas être désactivée. Chez les [fournisseurs tiers](/docs/fr/third-party-integrations), `MAX_THINKING_TOKENS=0` omet également le paramètre ; les deux variables s'y comportent donc de la même manière |289| `CLAUDE_CODE_DISABLE_THINKING` | Définissez sur `1` pour omettre entièrement le paramètre `thinking` des requêtes API. Il s'agit d'une option de compatibilité pour les proxys et passerelles qui rejettent ce paramètre. Sur les modèles qui réfléchissent par défaut, omettre le paramètre signifie que le modèle peut toujours réfléchir. Pour désactiver explicitement la [réflexion étendue](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) sur l'API Anthropic, utilisez plutôt `MAX_THINKING_TOKENS=0`. Aucune des deux variables ne désactive la réflexion sur Opus 5.5, Sonnet 5.5, Haiku 5.5 ou les modèles Fable, sur lesquels la réflexion ne peut pas être désactivée. Chez les [fournisseurs tiers](/docs/fr/third-party-integrations), `MAX_THINKING_TOKENS=0` omet également le paramètre ; les deux variables s'y comportent donc de la même manière |

290| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | Définissez sur `1` pour ignorer la [compaction automatique](/docs/fr/costs#reduce-token-usage) proactive lorsque Claude Code ne reconnaît pas l'ID du modèle, comme un alias de [passerelle LLM](/docs/fr/llm-gateway). Sans cette variable, Claude Code compacte à la fenêtre de contexte qu'il suppose pour cet ID. `CLAUDE_CODE_MAX_CONTEXT_TOKENS` peut plutôt corriger la fenêtre supposée ; voir [Corriger la fenêtre pour un ID de modèle de passerelle ou personnalisé](/docs/fr/model-config#correct-the-window-for-a-gateway-or-custom-model-id) pour savoir quand chaque variable s'applique. Nécessite Claude Code v2.1.223 ou ultérieur |290| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | Définissez sur `1` pour ignorer la [compaction automatique](/docs/fr/costs#reduce-token-usage) proactive lorsque Claude Code ne reconnaît pas l'ID du modèle, comme un alias de [passerelle LLM](/docs/fr/llm-gateway). Sans cette variable, Claude Code compacte à la fenêtre de contexte qu'il suppose pour cet ID. `CLAUDE_CODE_MAX_CONTEXT_TOKENS` peut plutôt corriger la fenêtre supposée ; voir [Corriger la fenêtre pour un ID de modèle de passerelle ou personnalisé](/docs/fr/model-config#correct-the-window-for-a-gateway-or-custom-model-id) pour savoir quand chaque variable s'applique. Nécessite Claude Code v2.1.223 ou ultérieur |

291| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Définissez sur `1` pour désactiver le défilement virtuel en [rendu plein écran](/docs/fr/fullscreen) et afficher chaque message de la transcription. Utilisez cette option si le défilement en mode plein écran affiche des zones vides là où des messages devraient apparaître |291| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Définissez sur `1` pour désactiver le défilement virtuel en [rendu plein écran](/docs/fr/fullscreen) et afficher chaque message de la transcription. Utilisez cette option si le défilement en mode plein écran affiche des zones vides là où des messages devraient apparaître |


309| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Durée en millisecondes à attendre après que la boucle de requêtes est devenue inactive avant de quitter automatiquement. Utile pour les workflows automatisés et les scripts utilisant le mode SDK |309| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Durée en millisecondes à attendre après que la boucle de requêtes est devenue inactive avant de quitter automatiquement. Utile pour les workflows automatisés et les scripts utilisant le mode SDK |

310| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Définir sur `1` pour activer les [équipes d'agents](/docs/fr/agent-teams). Les équipes d'agents sont expérimentales et désactivées par défaut |310| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Définir sur `1` pour activer les [équipes d'agents](/docs/fr/agent-teams). Les équipes d'agents sont expérimentales et désactivées par défaut |

311| `CLAUDE_CODE_EXTRA_BODY` | Objet JSON à fusionner au niveau supérieur du corps de chaque requête API. Utile pour transmettre des paramètres propres au fournisseur que Claude Code n'expose pas directement. Une valeur exportée dans votre shell s'applique également aux [sessions en arrière-plan](/docs/fr/agent-view) que vous lancez avec `claude agents` ou `--bg`. Avant la v2.1.206, les sessions en arrière-plan ignoraient une valeur exportée dans le shell et utilisaient la copie éventuellement héritée par le processus superviseur en arrière-plan |311| `CLAUDE_CODE_EXTRA_BODY` | Objet JSON à fusionner au niveau supérieur du corps de chaque requête API. Utile pour transmettre des paramètres propres au fournisseur que Claude Code n'expose pas directement. Une valeur exportée dans votre shell s'applique également aux [sessions en arrière-plan](/docs/fr/agent-view) que vous lancez avec `claude agents` ou `--bg`. Avant la v2.1.206, les sessions en arrière-plan ignoraient une valeur exportée dans le shell et utilisaient la copie éventuellement héritée par le processus superviseur en arrière-plan |

312| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Remplace la limite de tokens par défaut pour la lecture de fichiers. Utile lorsque vous devez lire intégralement des fichiers plus volumineux |312| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Remplace la limite de tokens par défaut pour les [lectures de fichiers](/docs/fr/tools-reference#large-files), qui est de 25 000 tokens. Utile lorsque vous devez lire des fichiers plus volumineux en entier. Une lecture que Claude effectue avec le paramètre `allow_large` peut dépasser cette limite lorsque la fenêtre de contexte dispose de suffisamment de place |

313| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | Définir sur `1` pour forcer la persistance de la transcription, l'historique des prompts et l'enregistrement auprès de `claude agents`, même lorsque ce `claude` a été lancé depuis une autre session Claude Code. À utiliser lorsqu'une valeur `CLAUDE_CODE_CHILD_SESSION` héritée, par exemple d'une session `screen` ou d'un lanceur en arrière-plan démarré initialement par l'outil Bash de Claude Code, fait qu'une véritable session de premier niveau est classée à tort comme imbriquée. Depuis la v2.1.178, Claude Code détecte automatiquement le cas de tmux et ignore le marqueur hérité ; tmux n'a donc plus besoin de cette variable. Également prise en compte dans les versions v2.1.169 et antérieures ; sans effet dans les v2.1.170 et v2.1.171, où la détection des sessions imbriquées qu'elle contourne avait été supprimée |313| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | Définir sur `1` pour forcer la persistance de la transcription, l'historique des prompts et l'enregistrement auprès de `claude agents`, même lorsque ce `claude` a été lancé depuis une autre session Claude Code. À utiliser lorsqu'une valeur `CLAUDE_CODE_CHILD_SESSION` héritée, par exemple d'une session `screen` ou d'un lanceur en arrière-plan démarré initialement par l'outil Bash de Claude Code, fait qu'une véritable session de premier niveau est classée à tort comme imbriquée. Depuis la v2.1.178, Claude Code détecte automatiquement le cas de tmux et ignore le marqueur hérité ; tmux n'a donc plus besoin de cette variable. Également prise en compte dans les versions v2.1.169 et antérieures ; sans effet dans les v2.1.170 et v2.1.171, où la détection des sessions imbriquées qu'elle contourne avait été supprimée |

314| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | Définir sur `1` pour forcer le rendu barré de `~~text~~` dans les réponses de Claude lorsque votre terminal le prend en charge sans être détecté automatiquement, par exemple via SSH sans transfert de `TERM_PROGRAM`. Sans cela, les terminaux non détectés affichent les marqueurs `~~` littéraux au lieu de rendre le texte barré. Nécessite Claude Code v2.1.186 ou ultérieur |314| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | Définir sur `1` pour forcer le rendu barré de `~~text~~` dans les réponses de Claude lorsque votre terminal le prend en charge sans être détecté automatiquement, par exemple via SSH sans transfert de `TERM_PROGRAM`. Sans cela, les terminaux non détectés affichent les marqueurs `~~` littéraux au lieu de rendre le texte barré. Nécessite Claude Code v2.1.186 ou ultérieur |

315| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | Définir sur `1` pour forcer l'activation de la [sortie synchronisée](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036) DEC private mode 2026 lorsque votre terminal la prend en charge sans être détecté automatiquement. Utile pour les émulateurs tels qu'Emacs `eat` qui implémentent BSU/ESU mais ne répondent pas à la sonde de capacités. Sans effet sous tmux. Contrairement à `CLAUDE_CODE_NO_FLICKER`, qui bascule vers le [rendu plein écran](/docs/fr/fullscreen), cette variable ne change pas le moteur de rendu |315| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | Définir sur `1` pour forcer l'activation de la [sortie synchronisée](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036) DEC private mode 2026 lorsque votre terminal la prend en charge sans être détecté automatiquement. Utile pour les émulateurs tels qu'Emacs `eat` qui implémentent BSU/ESU mais ne répondent pas à la sonde de capacités. Sans effet sous tmux. Contrairement à `CLAUDE_CODE_NO_FLICKER`, qui bascule vers le [rendu plein écran](/docs/fr/fullscreen), cette variable ne change pas le moteur de rendu |


340| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | Plafond des appels [WebSearch](/docs/fr/tools-reference#session-search-limit) (par défaut : 200). Lorsque Claude atteint le plafond, les appels WebSearch suivants renvoient un avis lui indiquant de continuer avec les informations déjà recueillies. Accepte un nombre entier positif sans borne supérieure. Toute autre valeur est ignorée et la valeur par défaut s'applique ; le plafond peut donc être relevé mais pas désactivé. Nécessite Claude Code v2.1.212 ou ultérieur |340| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | Plafond des appels [WebSearch](/docs/fr/tools-reference#session-search-limit) (par défaut : 200). Lorsque Claude atteint le plafond, les appels WebSearch suivants renvoient un avis lui indiquant de continuer avec les informations déjà recueillies. Accepte un nombre entier positif sans borne supérieure. Toute autre valeur est ignorée et la valeur par défaut s'applique ; le plafond peut donc être relevé mais pas désactivé. Nécessite Claude Code v2.1.212 ou ultérieur |

341| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | Définir sur `1` pour lancer les serveurs MCP stdio avec uniquement un environnement de base sûr plus l'`env` configuré du serveur, au lieu d'hériter de l'environnement de votre shell |341| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | Définir sur `1` pour lancer les serveurs MCP stdio avec uniquement un environnement de base sûr plus l'`env` configuré du serveur, au lieu d'hériter de l'environnement de votre shell |

342| `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` | Temps écoulé en millisecondes avant qu'un appel d'outil MCP toujours en cours [soit déplacé vers une tâche en arrière-plan](/docs/fr/mcp#automatic-backgrounding-of-long-tool-calls) (par défaut : 120000, soit 2 minutes). Définir sur `0` pour désactiver la mise en arrière-plan automatique. Nécessite Claude Code v2.1.212 ou ultérieur |342| `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` | Temps écoulé en millisecondes avant qu'un appel d'outil MCP toujours en cours [soit déplacé vers une tâche en arrière-plan](/docs/fr/mcp#automatic-backgrounding-of-long-tool-calls) (par défaut : 120000, soit 2 minutes). Définir sur `0` pour désactiver la mise en arrière-plan automatique. Nécessite Claude Code v2.1.212 ou ultérieur |

343| `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` | Durée en millisecondes pendant laquelle le premier tour d'une session [non interactive](/docs/fr/headless) attend les serveurs MCP encore en cours de connexion, à la place de l'[attente du premier tour](/docs/fr/agent-sdk/mcp#connection-timing) par défaut. Lorsqu'elle est définie, l'attente couvre tous les serveurs en attente. Définir sur `0` pour ignorer l'attente. Un serveur [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags) conserve sa propre attente `MCP_TIMEOUT` quelle que soit la valeur. Nécessite Claude Code v2.1.274 ou ultérieur |343| `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` | Durée en millisecondes pendant laquelle le premier tour d'une session [non interactive](/docs/fr/headless) attend les serveurs MCP encore en cours de connexion, à la place de l'[attente du premier tour](/docs/fr/agent-sdk/mcp#connection-timing) par défaut. Lorsqu'elle est définie, l'attente couvre tous les serveurs en attente ; dans un [environnement auto-hébergé](/docs/fr/self-hosted-environments-configuration#connection-timing), elle ne modifie que la durée de l'attente. Définissez sur `0` pour ignorer l'attente. Un serveur [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags) conserve sa propre attente `MCP_TIMEOUT`, quelle que soit la valeur. Nécessite Claude Code v2.1.274 ou ultérieur |

344| `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` | Délai d'inactivité en millisecondes pour les appels d'outils MCP. Lorsqu'un serveur MCP stdio, HTTP, SSE, WebSocket ou [connecteur claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai) n'envoie ni réponse ni notification de progression pendant cette durée, l'appel d'outil s'interrompt avec une erreur au lieu d'attendre le `MCP_TOOL_TIMEOUT` global. Remplace les valeurs par défaut propres à chaque transport, à savoir 300000 (5 minutes) pour les serveurs réseau et 1800000 (30 minutes) pour les serveurs stdio. Définir sur `0` pour désactiver la vérification d'inactivité. Les valeurs inférieures à 1000 sont portées à une seconde, et la valeur est plafonnée au `MCP_TOOL_TIMEOUT` effectif. Un `timeout` par serveur d'au moins 1000 dans `.mcp.json` porte la fenêtre d'inactivité de ce serveur à au moins la valeur de `timeout`. Ne s'applique pas aux serveurs IDE ni aux serveurs SDK in-process. Nécessite Claude Code v2.1.187 ou ultérieur. Avant la v2.1.203, les serveurs stdio étaient exemptés du délai d'inactivité |344| `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` | Délai d'inactivité en millisecondes pour les appels d'outils MCP. Lorsqu'un serveur MCP stdio, HTTP, SSE, WebSocket ou [connecteur claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai) n'envoie ni réponse ni notification de progression pendant cette durée, l'appel d'outil s'interrompt avec une erreur au lieu d'attendre le `MCP_TOOL_TIMEOUT` global. Remplace les valeurs par défaut propres à chaque transport, à savoir 300000 (5 minutes) pour les serveurs réseau et 1800000 (30 minutes) pour les serveurs stdio. Définir sur `0` pour désactiver la vérification d'inactivité. Les valeurs inférieures à 1000 sont portées à une seconde, et la valeur est plafonnée au `MCP_TOOL_TIMEOUT` effectif. Un `timeout` par serveur d'au moins 1000 dans `.mcp.json` porte la fenêtre d'inactivité de ce serveur à au moins la valeur de `timeout`. Ne s'applique pas aux serveurs IDE ni aux serveurs SDK in-process. Nécessite Claude Code v2.1.187 ou ultérieur. Avant la v2.1.203, les serveurs stdio étaient exemptés du délai d'inactivité |

345| `CLAUDE_CODE_MESSAGING_SOCKET` | Définie par Claude Code, pas par vous : dans les sessions qui lient un [socket de boîte de réception](/docs/fr/cross-session-messaging#the-sessions-inbox-socket), Claude Code exporte le chemin de ce socket vers les hooks et les commandes Bash au moment où il lie le socket. Dans une session qui démarre avec la messagerie activée, Claude Code lie le socket avant l'exécution de tout hook. Les autres sessions de la machine livrent les messages à ce chemin. Chaque session exporte son propre socket plutôt qu'un socket hérité d'un parent, et les messages qui y arrivent passent par les [contrôles entrants](/docs/fr/cross-session-messaging#control-inbound-messages) de la session. Les blocs `env` des paramètres ne peuvent pas la définir. Nécessite Claude Code v2.1.224 ou ultérieur |345| `CLAUDE_CODE_MESSAGING_SOCKET` | Définie par Claude Code, pas par vous : dans les sessions qui lient un [socket de boîte de réception](/docs/fr/cross-session-messaging#the-sessions-inbox-socket), Claude Code exporte le chemin de ce socket vers les hooks et les commandes Bash au moment où il lie le socket. Dans une session qui démarre avec la messagerie activée, Claude Code lie le socket avant l'exécution de tout hook. Les autres sessions de la machine livrent les messages à ce chemin. Chaque session exporte son propre socket plutôt qu'un socket hérité d'un parent, et les messages qui y arrivent passent par les [contrôles entrants](/docs/fr/cross-session-messaging#control-inbound-messages) de la session. Les blocs `env` des paramètres ne peuvent pas la définir. Nécessite Claude Code v2.1.224 ou ultérieur |

346| `CLAUDE_CODE_MESSAGING_TOKEN` | Définie par Claude Code, pas par vous : dans les sessions qui lient un [socket de boîte de réception](/docs/fr/cross-session-messaging#the-sessions-inbox-socket), Claude Code exporte ce jeton propre à la session vers les hooks et les commandes Bash, en plus de `CLAUDE_CODE_MESSAGING_SOCKET`. Un script qui publie sur le socket peut envoyer `{"type":"auth","token":"<token>"}` comme première ligne pour prouver qu'il appartient à la session. Sous Windows natif, Claude Code exige cette ligne et ferme toute connexion qui ne commence pas par une ligne valide. Les [règles relatives aux processus enfants propres](/docs/fr/cross-session-messaging#the-sessions-inbox-socket) indiquent quand Claude Code consulte le jeton. Chaque session exporte son propre jeton, jamais un jeton hérité d'une session parente. Les blocs `env` des paramètres ne peuvent pas la définir. Nécessite Claude Code v2.1.228 ou ultérieur |346| `CLAUDE_CODE_MESSAGING_TOKEN` | Définie par Claude Code, pas par vous : dans les sessions qui lient un [socket de boîte de réception](/docs/fr/cross-session-messaging#the-sessions-inbox-socket), Claude Code exporte ce jeton propre à la session vers les hooks et les commandes Bash, en plus de `CLAUDE_CODE_MESSAGING_SOCKET`. Un script qui publie sur le socket peut envoyer `{"type":"auth","token":"<token>"}` comme première ligne pour prouver qu'il appartient à la session. Sous Windows natif, Claude Code exige cette ligne et ferme toute connexion qui ne commence pas par une ligne valide. Les [règles relatives aux processus enfants propres](/docs/fr/cross-session-messaging#the-sessions-inbox-socket) indiquent quand Claude Code consulte le jeton. Chaque session exporte son propre jeton, jamais un jeton hérité d'une session parente. Les blocs `env` des paramètres ne peuvent pas la définir. Nécessite Claude Code v2.1.228 ou ultérieur |


443| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Définissez sur `1` pour forcer l'activation du watchdog d'inactivité de streaming au niveau des octets, ou sur `0` pour forcer sa désactivation. `0` désactive également le [délai du premier octet](/docs/fr/network-config#streaming-idle-watchdogs) sur les connexions où ce délai s'applique. Lorsqu'elle n'est pas définie, le watchdog est activé par défaut pour les connexions directes à l'API Anthropic et à [Claude Platform on AWS](/docs/fr/claude-platform-on-aws), ainsi que pour les réponses en streaming sur les connexions de [passerelle](/docs/fr/gateways) atteintes via `ANTHROPIC_BASE_URL` ou `ANTHROPIC_AWS_BASE_URL` ; avant la v2.1.222, il ne s'exécutait pas sur ces connexions de passerelle, de sorte que le watchdog au niveau des événements pouvait y signaler un blocage même pendant la réception de pings keep-alive. Pour les délais d'expiration et l'interaction entre les minuteurs, voir [Watchdogs d'inactivité de streaming](/docs/fr/network-config#streaming-idle-watchdogs) |443| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Définissez sur `1` pour forcer l'activation du watchdog d'inactivité de streaming au niveau des octets, ou sur `0` pour forcer sa désactivation. `0` désactive également le [délai du premier octet](/docs/fr/network-config#streaming-idle-watchdogs) sur les connexions où ce délai s'applique. Lorsqu'elle n'est pas définie, le watchdog est activé par défaut pour les connexions directes à l'API Anthropic et à [Claude Platform on AWS](/docs/fr/claude-platform-on-aws), ainsi que pour les réponses en streaming sur les connexions de [passerelle](/docs/fr/gateways) atteintes via `ANTHROPIC_BASE_URL` ou `ANTHROPIC_AWS_BASE_URL` ; avant la v2.1.222, il ne s'exécutait pas sur ces connexions de passerelle, de sorte que le watchdog au niveau des événements pouvait y signaler un blocage même pendant la réception de pings keep-alive. Pour les délais d'expiration et l'interaction entre les minuteurs, voir [Watchdogs d'inactivité de streaming](/docs/fr/network-config#streaming-idle-watchdogs) |

444| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | Définissez sur `1` pour activer le watchdog d'inactivité de streaming au niveau des octets sur les réponses `vnd.amazon.eventstream` d'Amazon Bedrock, ce qui active également le [délai du premier octet](/docs/fr/network-config#streaming-idle-watchdogs) sur les requêtes de streaming Bedrock. Désactivé par défaut. Configurez le délai d'expiration avec `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |444| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | Définissez sur `1` pour activer le watchdog d'inactivité de streaming au niveau des octets sur les réponses `vnd.amazon.eventstream` d'Amazon Bedrock, ce qui active également le [délai du premier octet](/docs/fr/network-config#streaming-idle-watchdogs) sur les requêtes de streaming Bedrock. Désactivé par défaut. Configurez le délai d'expiration avec `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |

445| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Définissez sur `0` pour forcer la désactivation du watchdog d'inactivité de streaming au niveau des événements, ou sur `1` pour forcer son activation. Lorsqu'elle n'est pas définie, le watchdog est activé par défaut pour tous les fournisseurs. Avant la v2.1.196, la valeur par défaut était contrôlée par le serveur sur l'API Anthropic directe et désactivée chez les autres fournisseurs. Configurez le délai d'expiration avec `CLAUDE_STREAM_IDLE_TIMEOUT_MS` ; pour les autres minuteurs de blocage qui s'exécutent en parallèle, voir [Watchdogs d'inactivité de streaming](/docs/fr/network-config#streaming-idle-watchdogs) |445| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Définissez sur `0` pour forcer la désactivation du watchdog d'inactivité de streaming au niveau des événements, ou sur `1` pour forcer son activation. Lorsqu'elle n'est pas définie, le watchdog est activé par défaut pour tous les fournisseurs. Avant la v2.1.196, la valeur par défaut était contrôlée par le serveur sur l'API Anthropic directe et désactivée chez les autres fournisseurs. Configurez le délai d'expiration avec `CLAUDE_STREAM_IDLE_TIMEOUT_MS` ; pour les autres minuteurs de blocage qui s'exécutent en parallèle, voir [Watchdogs d'inactivité de streaming](/docs/fr/network-config#streaming-idle-watchdogs) |

446| `CLAUDE_ENV_FILE` | Chemin vers un script shell dont Claude Code exécute le contenu avant chaque commande Bash dans le même processus shell, de sorte que les exports du fichier sont visibles par la commande. Utilisez-la pour conserver l'activation d'un virtualenv ou de conda d'une commande à l'autre. Également renseignée dynamiquement par les hooks [SessionStart](/docs/fr/hooks#persist-environment-variables), [Setup](/docs/fr/hooks#setup), [CwdChanged](/docs/fr/hooks#cwdchanged) et [FileChanged](/docs/fr/hooks#filechanged) |446| `CLAUDE_ENV_FILE` | Chemin vers un script shell dont Claude Code exécute le contenu avant chaque commande Bash dans le même processus shell, de sorte que les exports du fichier sont visibles par la commande. Utilisez-le pour conserver l'activation de virtualenv ou conda d'une commande à l'autre. Les commandes PowerShell reçoivent également ses variables, à partir de la v2.1.296, dans les conditions décrites dans [Variables persistées dans les commandes PowerShell](/docs/fr/hooks#persisted-variables-in-powershell-commands). Également renseigné dynamiquement par les hooks [SessionStart](/docs/fr/hooks#persist-environment-variables), [Setup](/docs/fr/hooks#setup), [CwdChanged](/docs/fr/hooks#cwdchanged) et [FileChanged](/docs/fr/hooks#filechanged) |

447| `CLAUDE_JOB_DIR` | Définie par Claude Code dans chaque [session en arrière-plan](/docs/fr/agent-view) sur le répertoire `~/.claude/jobs/<id>` de cette session. Les commandes shell exécutées par la session en héritent. Écrivez les fichiers temporaires dans [`$CLAUDE_JOB_DIR/tmp`](/docs/fr/agent-view#where-state-is-stored). Les appels `Write` et `Edit` de Claude à cet emplacement ne demandent pas de permission, et le répertoire est supprimé lorsque la session est supprimée |447| `CLAUDE_JOB_DIR` | Définie par Claude Code dans chaque [session en arrière-plan](/docs/fr/agent-view) sur le répertoire `~/.claude/jobs/<id>` de cette session. Les commandes shell exécutées par la session en héritent. Écrivez les fichiers temporaires dans [`$CLAUDE_JOB_DIR/tmp`](/docs/fr/agent-view#where-state-is-stored). Les appels `Write` et `Edit` de Claude à cet emplacement ne demandent pas de permission, et le répertoire est supprimé lorsque la session est supprimée |

448| `CLAUDE_PID` | Claude Code définit cette variable sur son propre identifiant de processus dans les sous-processus qu'il lance : les commandes des outils Bash et PowerShell et les commandes de hook. Sous Linux, l'intégration shell de l'outil Bash l'utilise pour refuser un motif `pkill` qui correspondrait au processus Claude Code lui-même ; voir [la référence des erreurs](/docs/fr/errors#pkill-pattern-matches-the-claude-code-process). Lisez-la depuis vos propres scripts pour identifier ou signaler délibérément le processus Claude Code parent. Nécessite Claude Code v2.1.214 ou ultérieur |448| `CLAUDE_PID` | Claude Code définit cette variable sur son propre identifiant de processus dans les sous-processus qu'il lance : les commandes des outils Bash et PowerShell et les commandes de hook. Sous Linux, l'intégration shell de l'outil Bash l'utilise pour refuser un motif `pkill` qui correspondrait au processus Claude Code lui-même ; voir [la référence des erreurs](/docs/fr/errors#pkill-pattern-matches-the-claude-code-process). Lisez-la depuis vos propres scripts pour identifier ou signaler délibérément le processus Claude Code parent. Nécessite Claude Code v2.1.214 ou ultérieur |

449| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Préfixe des noms de session [Remote Control](/docs/fr/remote-control) générés automatiquement lorsqu'aucun nom explicite n'est fourni. Par défaut, le nom d'hôte de votre machine, ce qui produit des noms comme `myhost-graceful-unicorn`. Le flag CLI `--remote-control-session-name-prefix` définit la même valeur pour une seule invocation |449| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Préfixe des noms de session [Remote Control](/docs/fr/remote-control) générés automatiquement lorsqu'aucun nom explicite n'est fourni. Par défaut, le nom d'hôte de votre machine, ce qui produit des noms comme `myhost-graceful-unicorn`. Le flag CLI `--remote-control-session-name-prefix` définit la même valeur pour une seule invocation |

errors.md +73 −10

Details

37| `Connection lost while your computer was asleep` | [Tentatives automatiques](#automatic-retries) |37| `Connection lost while your computer was asleep` | [Tentatives automatiques](#automatic-retries) |

38| `<model> is temporarily unavailable, so auto mode cannot determine the safety of...` | [Erreurs serveur](#auto-mode-cannot-determine-the-safety-of-an-action) |38| `<model> is temporarily unavailable, so auto mode cannot determine the safety of...` | [Erreurs serveur](#auto-mode-cannot-determine-the-safety-of-an-action) |

39| `Auto mode could not evaluate this action and is blocking it for safety` | [Erreurs serveur](#auto-mode-cannot-determine-the-safety-of-an-action) |39| `Auto mode could not evaluate this action and is blocking it for safety` | [Erreurs serveur](#auto-mode-cannot-determine-the-safety-of-an-action) |

40| `Not run · auto mode's check had no usable answer` | [Erreurs serveur](#auto-mode-cannot-determine-the-safety-of-an-action) |

40| `Auto mode classifier transcript exceeded context window` | [Erreurs serveur](#auto-mode-cannot-determine-the-safety-of-an-action) |41| `Auto mode classifier transcript exceeded context window` | [Erreurs serveur](#auto-mode-cannot-determine-the-safety-of-an-action) |

41| `Agent aborted: auto mode classifier request refused by the safety safeguard` | [Erreurs serveur](#auto-mode-cannot-determine-the-safety-of-an-action) |42| `Agent aborted: auto mode classifier request refused by the safety safeguard` | [Erreurs serveur](#auto-mode-cannot-determine-the-safety-of-an-action) |

42| `The server-side auto mode classifier gave no verdict` | [Erreurs serveur](#the-server-returned-no-safety-verdict) |43| `The server-side auto mode classifier gave no verdict` | [Erreurs serveur](#the-server-returned-no-safety-verdict) |


247| `Windows reported an error (EBADF) when Claude Code read this session's transcript file` | [Erreurs de ligne de commande](#windows-reported-an-error-ebadf) |248| `Windows reported an error (EBADF) when Claude Code read this session's transcript file` | [Erreurs de ligne de commande](#windows-reported-an-error-ebadf) |

248| `Cannot switch renderers in this session` | [Erreurs de ligne de commande](#cannot-switch-renderers-in-this-session) |249| `Cannot switch renderers in this session` | [Erreurs de ligne de commande](#cannot-switch-renderers-in-this-session) |

249| `Cannot switch renderers while work is running in the background` | [Erreurs de ligne de commande](#cannot-switch-renderers-in-this-session) |250| `Cannot switch renderers while work is running in the background` | [Erreurs de ligne de commande](#cannot-switch-renderers-in-this-session) |

251| `Claude Code couldn't restart` | [Erreurs de ligne de commande](#claude-code-couldnt-restart) |

250| `Couldn't open Claude Desktop` | [Erreurs de ligne de commande](#couldnt-open-claude-desktop) |252| `Couldn't open Claude Desktop` | [Erreurs de ligne de commande](#couldnt-open-claude-desktop) |

251| `Failed to open Claude Desktop. Please try opening it manually.` | [Erreurs de ligne de commande](#couldnt-open-claude-desktop) |253| `Failed to open Claude Desktop. Please try opening it manually.` | [Erreurs de ligne de commande](#couldnt-open-claude-desktop) |

252| `Couldn't read your Zed keymap` / `Couldn't back up your Zed keymap` / `Couldn't update your Zed keymap` | [Erreurs de ligne de commande](#terminal-setup-left-your-zed-keymap-unchanged) |254| `Couldn't read your Zed keymap` / `Couldn't back up your Zed keymap` / `Couldn't update your Zed keymap` | [Erreurs de ligne de commande](#terminal-setup-left-your-zed-keymap-unchanged) |


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

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

264| `Cannot add marketplace "<name>": Claude Code cannot install plugins from a marketplace with this name` | [Dépannage des plugins](/docs/fr/plugins/troubleshooting#cannot-install-plugins-from-a-marketplace-with-this-name) |266| `Cannot add marketplace "<name>": Claude Code cannot install plugins from a marketplace with this name` | [Dépannage des plugins](/docs/fr/plugins/troubleshooting#cannot-install-plugins-from-a-marketplace-with-this-name) |

267| `Cannot add marketplace "<name>": Claude Code reserves this name and cannot register a marketplace under it` | [Dépannage des plugins](/docs/fr/plugins/troubleshooting#claude-code-reserves-this-name) |

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

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

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


308| `Your disk quota is full on the filesystem with Claude Code's temp directory <dir> (EDQUOT)` | [Erreurs d'outil](#disk-quota-or-temp-filesystem-is-full) |311| `Your disk quota is full on the filesystem with Claude Code's temp directory <dir> (EDQUOT)` | [Erreurs d'outil](#disk-quota-or-temp-filesystem-is-full) |

309| `The filesystem with Claude Code's temp directory <dir>, or your disk quota on it, is full (ENOSPC)` | [Erreurs d'outil](#disk-quota-or-temp-filesystem-is-full) |312| `The filesystem with Claude Code's temp directory <dir>, or your disk quota on it, is full (ENOSPC)` | [Erreurs d'outil](#disk-quota-or-temp-filesystem-is-full) |

310| `Command output was lost: the temp filesystem at <dir> is full` / `is out of inodes` | [Erreurs d'outil](#disk-quota-or-temp-filesystem-is-full) |313| `Command output was lost: the temp filesystem at <dir> is full` / `is out of inodes` | [Erreurs d'outil](#disk-quota-or-temp-filesystem-is-full) |

314| `File is not valid UTF-8. It may use a legacy encoding such as Windows-1252, Shift-JIS or GBK, or be binary` | [Erreurs d'outil](#file-is-not-valid-utf-8) |

311| `the source file is not valid UTF-8 text` / `the source file is not valid UTF-16 text` | [Erreurs d'outil](#the-source-file-is-not-valid-utf-8-text) |315| `the source file is not valid UTF-8 text` / `the source file is not valid UTF-16 text` | [Erreurs d'outil](#the-source-file-is-not-valid-utf-8-text) |

312| `the source file has the replacement character U+FFFD` | [Erreurs d'outil](#the-source-file-is-not-valid-utf-8-text) |316| `the source file has the replacement character U+FFFD` | [Erreurs d'outil](#the-source-file-is-not-valid-utf-8-text) |

313| `Not published: that file is on a network share` | [Erreurs d'outil](#not-published-that-file-is-on-a-network-share) |317| `Not published: that file is on a network share` | [Erreurs d'outil](#not-published-that-file-is-on-a-network-share) |


334| `Session isn't responding` / `Press enter again to restart this session — it isn't responding` | [Erreurs de session en arrière-plan](#session-isnt-responding) |338| `Session isn't responding` / `Press enter again to restart this session — it isn't responding` | [Erreurs de session en arrière-plan](#session-isnt-responding) |

335| `Session <id> was stopped while the respawn was in flight` | [Erreurs de session en arrière-plan](#session-was-stopped-while-the-respawn-was-in-flight) |339| `Session <id> was stopped while the respawn was in flight` | [Erreurs de session en arrière-plan](#session-was-stopped-while-the-respawn-was-in-flight) |

336| `This session was running agent '<name>', which is no longer available` | [Erreurs de session en arrière-plan](#session-agent-no-longer-available) |340| `This session was running agent '<name>', which is no longer available` | [Erreurs de session en arrière-plan](#session-agent-no-longer-available) |

341| `This session restarted <time> after its next /loop wakeup was due, so that wakeup will not fire` | [Erreurs de session en arrière-plan](#restarted-after-its-next-loop-wakeup-was-due) |

337| `CLAUDE_CODE_PROCESS_WRAPPER: launcher ...` | [Erreurs de session en arrière-plan](#claude_code_process_wrapper-launcher-errors) |342| `CLAUDE_CODE_PROCESS_WRAPPER: launcher ...` | [Erreurs de session en arrière-plan](#claude_code_process_wrapper-launcher-errors) |

338| `EUNKNOWN: unknown error, uv_spawn` | [Erreurs de session en arrière-plan](#eunknown-when-starting-a-background-session) |343| `EUNKNOWN: unknown error, uv_spawn` | [Erreurs de session en arrière-plan](#eunknown-when-starting-a-background-session) |

339| `EACCES: permission denied, posix_spawn` | [Erreurs de session en arrière-plan](#eacces-when-starting-a-background-session) |344| `EACCES: permission denied, posix_spawn` | [Erreurs de session en arrière-plan](#eacces-when-starting-a-background-session) |


439| :- | :- | :- |444| :- | :- | :- |

440| [`CLAUDE_CODE_MAX_RETRIES`](/docs/fr/env-vars) | 10 | Nombre de nouvelles tentatives. Plafonné à 15 à partir de v2.1.186 ; à partir de v2.1.199 `CLAUDE_CODE_RETRY_WATCHDOG` augmente la valeur par défaut et supprime le plafond. Réduisez-le pour afficher les défaillances plus rapidement dans les scripts. |445| [`CLAUDE_CODE_MAX_RETRIES`](/docs/fr/env-vars) | 10 | Nombre de nouvelles tentatives. Plafonné à 15 à partir de v2.1.186 ; à partir de v2.1.199 `CLAUDE_CODE_RETRY_WATCHDOG` augmente la valeur par défaut et supprime le plafond. Réduisez-le pour afficher les défaillances plus rapidement dans les scripts. |

441| [`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. |446| [`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. |

447| [`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. |

442| [`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. |448| [`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. |

443| [`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). |449| [`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). |

444| [`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. |450| [`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. |


596<model> is temporarily unavailable, so auto mode cannot determine the safety of <tool> right now. Wait a moment and then try this action again.602<model> is temporarily unavailable, so auto mode cannot determine the safety of <tool> right now. Wait a moment and then try this action again.

597```603```

598 604 

605Dans une session interactive, une ligne estompée `Not run · auto mode's check had no usable answer` apparaît sous l'appel d'outil au lieu de ce message. Appuyez sur `Ctrl+O` pour lire le message dans la [visionneuse de transcription](/docs/fr/interactive-mode#transcript-viewer). Les refus décrits sous [Le serveur n'a retourné aucun verdict de sécurité](#the-server-returned-no-safety-verdict) affichent la même ligne. Avant v2.1.296, le message apparaissait sous l'appel sous forme d'erreur rouge.

606 

599Quand Claude Code peut déterminer la catégorie d'échec, il nomme la catégorie entre parenthèses après `temporarily unavailable`, par exemple `<model> is temporarily unavailable (rate-limited), so auto mode cannot determine the safety of <tool> right now`. Les catégories sont `(rate-limited)`, `(overloaded)`, `(server error)`, `(timed out)`, et `(connection failed)`. Si `(timed out)` ou `(connection failed)` se répète, vérifiez votre connexion ; voir [Impossible de se connecter à l'API](#unable-to-connect-to-api). Avant v2.1.229, le message ne nommait jamais une catégorie et lisait `Wait briefly and then try this action again`.607Quand Claude Code peut déterminer la catégorie d'échec, il nomme la catégorie entre parenthèses après `temporarily unavailable`, par exemple `<model> is temporarily unavailable (rate-limited), so auto mode cannot determine the safety of <tool> right now`. Les catégories sont `(rate-limited)`, `(overloaded)`, `(server error)`, `(timed out)`, et `(connection failed)`. Si `(timed out)` ou `(connection failed)` se répète, vérifiez votre connexion ; voir [Impossible de se connecter à l'API](#unable-to-connect-to-api). Avant v2.1.229, le message ne nommait jamais une catégorie et lisait `Wait briefly and then try this action again`.

600 608 

601Quand aucune catégorie ne convient, le message apparaît sans catégorie entre parenthèses ; plus d'un échec produit cette forme. Sur [Amazon Bedrock](/docs/fr/amazon-bedrock), y compris l'[endpoint Mantle](/docs/fr/amazon-bedrock#use-the-mantle-endpoint), il apparaît également quand votre compte AWS ne peut pas invoquer le modèle nommé dans le message, et cet échec se répète à chaque tentative jusqu'à ce que votre compte soit autorisé à accéder au modèle.609Quand aucune catégorie ne convient, le message apparaît sans catégorie entre parenthèses ; plus d'un échec produit cette forme. Sur [Amazon Bedrock](/docs/fr/amazon-bedrock), y compris l'[endpoint Mantle](/docs/fr/amazon-bedrock#use-the-mantle-endpoint), il apparaît également quand votre compte AWS ne peut pas invoquer le modèle nommé dans le message, et cet échec se répète à chaque tentative jusqu'à ce que votre compte soit autorisé à accéder au modèle.


1900 1908 

1901Claude Code ignore cette vérification lorsqu'un [fichier de paramètres gérés, une politique MDM ou un assistant de politique](/docs/fr/managed-settings) définit [`forceLoginMethod`](/docs/fr/settings-reference#forceloginmethod) sur `"gateway"`, ou définit [`forceLoginGatewayUrl`](/docs/fr/settings-reference#forcelogingatewayurl) sans `forceLoginMethod`. Avec l'une ou l'autre configuration, Claude Code ouvre l'étape de connexion sur l'écran **Cloud gateway** plutôt qu'une méthode de connexion Anthropic. Claude Code ignore également la vérification lorsqu'une source de paramètres gérés sur la machine existe mais ne peut pas être lue, car cette source peut contenir la configuration de la passerelle. Avant la v2.1.247, Claude Code exécutait la vérification sous cette configuration aussi, et se fermait avec cette erreur lorsque les endpoints d'Anthropic étaient inaccessibles.1909Claude Code ignore cette vérification lorsqu'un [fichier de paramètres gérés, une politique MDM ou un assistant de politique](/docs/fr/managed-settings) définit [`forceLoginMethod`](/docs/fr/settings-reference#forceloginmethod) sur `"gateway"`, ou définit [`forceLoginGatewayUrl`](/docs/fr/settings-reference#forcelogingatewayurl) sans `forceLoginMethod`. Avec l'une ou l'autre configuration, Claude Code ouvre l'étape de connexion sur l'écran **Cloud gateway** plutôt qu'une méthode de connexion Anthropic. Claude Code ignore également la vérification lorsqu'une source de paramètres gérés sur la machine existe mais ne peut pas être lue, car cette source peut contenir la configuration de la passerelle. Avant la v2.1.247, Claude Code exécutait la vérification sous cette configuration aussi, et se fermait avec cette erreur lorsque les endpoints d'Anthropic étaient inaccessibles.

1902 1910 

1911Claude Code ignore également la vérification sur une machine sans paramètres gérés lorsque votre propre `~/.claude/settings.json` [nomme une passerelle](/docs/fr/claude-apps-gateway#set-the-gateway-url-in-user-settings) avec `forceLoginMethod` et `forceLoginGatewayUrl`. Avant la v2.1.295, Claude Code exécutait la vérification dans ce cas.

1912 

1903**À faire :**1913**À faire :**

1904 1914 

1905* Si le message nomme une variable proxy, vérifiez que sa valeur pointe vers le bon proxy et demandez à votre équipe réseau d'autoriser les connexions HTTPS via celui-ci vers l'hôte du message. Consultez [Configuration réseau](/docs/fr/network-config).1915* Si le message nomme une variable proxy, vérifiez que sa valeur pointe vers le bon proxy et demandez à votre équipe réseau d'autoriser les connexions HTTPS via celui-ci vers l'hôte du message. Consultez [Configuration réseau](/docs/fr/network-config).


3412 3422 

3413Claude 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 :3423Claude 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 :

3414 3424 

3415* `Shell command permission check failed for pattern "..."` : la vérification de permission de la commande ne l'a pas autorisée. [Vérifications de permission sur les commandes injectées](/docs/fr/skills#permission-checks-on-injected-commands) explique quels résultats provoquent une interruption dans chaque mode de permission et comment pré-approuver une commande avec `allowed-tools`3425* `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`

3416* ``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)3426* ``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)

3417 3427 

3418**Que faire :**3428**Que faire :**


3562 3572 

3563* **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-dessus3573* **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

3564* **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>`)``3574* **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>`)``

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

3566 3576 

3567**Que faire :**3577**Que faire :**

3568 3578 


3756No conversation found with session ID: <session-id>3766No conversation found with session ID: <session-id>

3757```3767```

3758 3768 

3759Claude Code se termine avec le code 1 après avoir affiché le message. Claude Code [recherche l'ID d'abord dans le projet actuel, puis dans tous les autres projets de cette machine](/docs/fr/sessions#resume-a-session). Avant la v2.1.223, la recherche s'arrêtait au répertoire du projet actuel et à ses worktrees git ; reprenez donc la session depuis le répertoire dans lequel elle a travaillé en dernier.3769Claude Code se termine avec le code 1 après avoir affiché le message. Claude Code [recherche l'ID d'abord dans le projet actuel, puis dans tous les autres projets de cette machine](/docs/fr/sessions#where-the-session-picker-looks). Avant la v2.1.223, la recherche s'arrêtait au répertoire du projet actuel et à ses worktrees git ; reprenez donc la session depuis le répertoire dans lequel elle a travaillé en dernier.

3760 3770 

3761Causes courantes :3771Causes courantes :

3762 3772 


3816 3826 

3817* Dans une session démarrée sans ces restrictions, exécutez `/tui fullscreen`, ou `/tui default` pour revenir en arrière. Claude Code y enregistre le [paramètre `tui`](/docs/fr/settings-reference#tui)3827* Dans une session démarrée sans ces restrictions, exécutez `/tui fullscreen`, ou `/tui default` pour revenir en arrière. Claude Code y enregistre le [paramètre `tui`](/docs/fr/settings-reference#tui)

3818 3828 

3829<h3 id="claude-code-couldnt-restart">

3830 Claude Code couldn't restart

3831</h3>

3832 

3833Claude 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 :

3834 

3835```text theme={null}

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

3837```

3838 

3839Lorsque le redémarrage n'avait aucune conversation à rouvrir, par exemple parce que `/tui` était votre première saisie dans une nouvelle session, le message est `Claude Code couldn't restart. Start Claude Code again.`

3840 

3841**Que faire :**

3842 

3843* 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-la

3844* 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)

3845 

3819<h3 id="couldnt-open-claude-desktop">3846<h3 id="couldnt-open-claude-desktop">

3820 Impossible d'ouvrir Claude Desktop3847 Impossible d'ouvrir Claude Desktop

3821</h3>3848</h3>


4593* Ou redémarrez Claude Code avec [`CLAUDE_CODE_TMPDIR`](/docs/fr/env-vars) défini sur un répertoire sur un système de fichiers avec de la place4620* Ou redémarrez Claude Code avec [`CLAUDE_CODE_TMPDIR`](/docs/fr/env-vars) défini sur un répertoire sur un système de fichiers avec de la place

4594* Puis demandez à Claude d'exécuter la commande à nouveau. La sortie qu'elle a imprimée a été perdue, pas tronquée4621* Puis demandez à Claude d'exécuter la commande à nouveau. La sortie qu'elle a imprimée a été perdue, pas tronquée

4595 4622 

4623<h3 id="file-is-not-valid-utf-8">

4624 File is not valid UTF-8

4625</h3>

4626 

4627Claude a utilisé l'outil Edit ou NotebookEdit sur un fichier dont les octets ne se décodent pas en UTF-8, et Claude Code a refusé la modification. Rien n'a été écrit, donc le fichier est resté tel quel. Ces outils enregistrent l'intégralité du fichier en UTF-8, ce qui aurait transformé chaque octet qu'ils ne pouvaient pas décoder en caractère de remplacement `U+FFFD`. Le message apparaît dans le résultat de l'outil :

4628 

4629```text wrap theme={null}

4630File is not valid UTF-8. It may use a legacy encoding such as Windows-1252, Shift-JIS or GBK, or be binary. This tool saves the whole file as UTF-8, which would replace every byte it cannot decode with U+FFFD. Nothing was written. Make the change with a shell command that reads and writes the file in its own encoding, or ask the user whether to convert the file to UTF-8 first.

4631```

4632 

4633Un fichier censé être en UTF-8 reçoit également ce message dès qu'il contient ne serait-ce qu'une seule séquence d'octets invalide, car la vérification porte sur l'ensemble des octets du fichier.

4634 

4635**Que faire :**

4636 

4637* Pour conserver le fichier dans son encodage actuel, laissez Claude effectuer la modification avec une commande shell qui lit et écrit le fichier dans cet encodage, comme le message le lui indique

4638* Pour continuer à modifier le fichier avec l'outil Edit, convertissez-le en UTF-8, ou corrigez les octets invalides dans un fichier censé être en UTF-8, puis demandez à Claude d'effectuer à nouveau la modification

4639 

4640Avant la v2.1.296, Edit et NotebookEdit appliquaient une telle modification et enregistraient chaque octet qu'ils ne pouvaient pas décoder sous la forme `U+FFFD`. Sur ces versions, mettez à jour Claude Code.

4641 

4596<h3 id="the-source-file-is-not-valid-utf-8-text">4642<h3 id="the-source-file-is-not-valid-utf-8-text">

4597 The source file is not valid UTF-8 text4643 The source file is not valid UTF-8 text

4598</h3>4644</h3>


4752 Commande bloquée par les vérifications d'isolation worktree4798 Commande bloquée par les vérifications d'isolation worktree

4753</h3>4799</h3>

4754 4800 

4755Claude a exécuté une commande Bash ou Monitor dans une [session isolée dans un worktree](/docs/fr/worktrees#how-claude-code-enforces-isolation), et Claude Code l'a refusée pour l'une de deux raisons :4801Claude a exécuté une commande Bash, [PowerShell](/docs/fr/tools-reference#powershell-tool) ou [Monitor](/docs/fr/tools-reference#monitor-tool) dans une [session isolée dans un worktree](/docs/fr/worktrees#how-claude-code-enforces-isolation), et Claude Code l'a refusée pour l'une de ces raisons :

4756 4802 

4757* La commande pointe git vers le checkout principal.4803* La commande s'exécuterait dans le checkout principal ou dans un autre worktree. Le message indique que son répertoire de travail `resolved to the shared checkout` ou `is in a different worktree`.

4758* Claude Code ne peut pas vérifier à partir du texte de la commande que tout git que la commande exécute reste à l'intérieur du worktree. Une commande qui ne nomme jamais git peut toujours être refusée pour cette raison, car l'expansion d'une indirection de variable telle que `${!name}` ou l'exécution d'une substitution de fonction Bash telle que `${ command; }` produit une valeur à l'exécution qui peut elle-même être une commande.4804* Une commande Bash ou Monitor pointe git vers le checkout principal.

4805* Claude Code ne peut pas vérifier à partir du texte d'une commande Bash ou Monitor que tout git que la commande exécute reste à l'intérieur du worktree. Une commande qui ne nomme jamais git peut toujours être refusée pour cette raison, car l'expansion d'une indirection de variable telle que `${!name}` ou l'exécution d'une substitution de fonction Bash telle que `${ command; }` produit une valeur à l'exécution qui peut elle-même être une commande.

4759 4806 

4760Le milieu du message nomme ce qui n'a pas pu être vérifié :4807Le message indique `is isolated in the worktree <path>, but this command`, suivi de la raison, par exemple une commande dont Claude Code n'a pas pu vérifier le texte :

4761 4808 

4762```text wrap theme={null}4809```text wrap theme={null}

4763This session is isolated in the worktree /path/to/worktree, but this command evaluates ${!x@P} arithmetically inside a construct too complex to verify, which can run a command hidden in a variable's value. Refusing to run it — a worktree-isolated session's git operations must target its own worktree. Split it into plain, separate commands and run them from /path/to/worktree.4810This session is isolated in the worktree /path/to/worktree, but this command evaluates ${!x@P} arithmetically inside a construct too complex to verify, which can run a command hidden in a variable's value. Refusing to run it — a worktree-isolated session's git operations must target its own worktree. Split it into plain, separate commands and run them from /path/to/worktree.


4765 4812 

4766**Ce qu'il faut faire :**4813**Ce qu'il faut faire :**

4767 4814 

4768* Généralement rien : Claude lit le message et réécrit la commande de la manière que sa phrase finale demande4815* **Git pointé vers le checkout principal, ou texte de commande impossible à vérifier** : rien. Claude lit le message et réécrit la commande de la manière que sa phrase finale demande. Si une commande que vous avez demandée continue d'être refusée à cause d'une expansion dans son texte, orthographiez la valeur signalée littéralement et exécutez git comme sa propre commande simple à partir de l'intérieur du worktree

4769* Si une commande que vous avez demandée continue d'être refusée, orthographiez la valeur signalée littéralement : remplacez l'indirection ou la substitution par sa valeur, et exécutez git comme sa propre commande simple à partir de l'intérieur du worktree

4770* Pour agir sur le checkout principal à dessein, exécutez la commande vous-même dans un terminal en dehors de la session4816* Pour agir sur le checkout principal à dessein, exécutez la commande vous-même dans un terminal en dehors de la session

4771 4817 

4772<h3 id="this-session-has-no-saved-transcript">4818<h3 id="this-session-has-no-saved-transcript">


4946* Ou reprenez avec `--agent <name>` nommant un agent qui existe, pour exécuter la session en tant que cet agent à la place4992* Ou reprenez avec `--agent <name>` nommant un agent qui existe, pour exécuter la session en tant que cet agent à la place

4947* Si l'agent est limité au projet et vous n'avez pas approuvé le répertoire original de la session, exécutez Claude Code là une fois, acceptez le dialogue de confiance, puis reprenez à nouveau4993* Si l'agent est limité au projet et vous n'avez pas approuvé le répertoire original de la session, exécutez Claude Code là une fois, acceptez le dialogue de confiance, puis reprenez à nouveau

4948 4994 

4995<h3 id="restarted-after-its-next-loop-wakeup-was-due">

4996 Cette session a redémarré après l'échéance de son prochain réveil /loop

4997</h3>

4998 

4999Une [boucle `/loop` à rythme autonome](/docs/fr/scheduled-tasks#let-claude-choose-the-interval) dans une [session en arrière-plan](/docs/fr/agent-view) s'est arrêtée. Le processus de la session s'est terminé pendant que la boucle attendait son prochain réveil, et ce réveil est arrivé à échéance avant le démarrage du [processus suivant](/docs/fr/agent-view#the-supervisor-process) de la session. Le réveil manqué ne se déclenche pas en retard. La notification indique le retard du réveil au moment où la session a redémarré :

5000 

5001```text theme={null}

5002This session restarted 12m after its next /loop wakeup was due, so that wakeup will not fire. The loop stays stopped until Claude schedules it again: reply to continue it.

5003```

5004 

5005Avant v2.1.295, la boucle s'arrêtait dans cette situation sans notification.

5006 

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

5008 

5009* Pour continuer la boucle, [répondez à la session](/docs/fr/agent-view#peek-and-reply) en le précisant, par exemple `keep the loop running`. Claude lit la notification avec votre réponse et peut planifier le prochain réveil

5010* Si vous en avez terminé avec la boucle, ne faites rien. Elle s'est déjà arrêtée

5011 

4949<h3 id="claude_code_process_wrapper-launcher-errors">5012<h3 id="claude_code_process_wrapper-launcher-errors">

4950 Erreurs du lanceur CLAUDE\_CODE\_PROCESS\_WRAPPER5013 Erreurs du lanceur CLAUDE\_CODE\_PROCESS\_WRAPPER

4951</h3>5014</h3>


5343Les chemins que Claude Code refuse de cette façon incluent :5406Les chemins que Claude Code refuse de cette façon incluent :

5344 5407 

5345* Les partages UNC tels que `\\server\share`5408* Les partages UNC tels que `\\server\share`

5346* Les chemins de montage automatique tels que `/net/<host>`, sauf si vous avez lancé Claude Code à partir d'un répertoire sous le montage automatique de cet hôte5409* Les chemins de montage automatique tels que `/net/<host>`, sauf si vous avez lancé Claude Code à partir d'un répertoire sous le montage automatique de cet hôte. Les lectures sous ce montage automatique passent toujours par la [vérification des chemins réseau](/docs/fr/permissions#network-paths).

5347* Les chemins locaux qui atteignent un emplacement réseau via un lien symbolique ou une jonction5410* Les chemins locaux qui atteignent un emplacement réseau via un lien symbolique ou une jonction

5348 5411 

5349Les lettres de lecteur mappées et les chemins `\\wsl$` ne comptent pas comme des chemins réseau.5412Les lettres de lecteur mappées et les chemins `\\wsl$` ne comptent pas comme des chemins réseau.

Details

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

29| Marketplaces de plugins | ✅ Supporté | Les exigences en matière d'identifiants varient selon la surface. Voir [Marketplaces de plugins sur GHES](#plugin-marketplaces-on-ghes) |29| Marketplaces de plugins | ✅ Supporté | Les exigences en matière d'identifiants varient selon la surface. Voir [Marketplaces de plugins sur GHES](#plugin-marketplaces-on-ghes) |

30| Métriques de contribution | ✅ Supporté | Livrées via webhooks au [tableau de bord d'analyse](/docs/fr/analytics) |30| Métriques de contribution | ❌ Non supporté | Nécessite des dépôts hébergés sur github.com. Le [tableau de bord d'analyse](/docs/fr/analytics) affiche toujours les métriques d'utilisation pour le travail effectué dans les dépôts GHES |

31| GitHub Actions | ✅ Supporté | Nécessite une configuration manuelle du workflow ; `/install-github-app` est github.com uniquement |31| GitHub Actions | ✅ Supporté | Nécessite une configuration manuelle du workflow ; `/install-github-app` est github.com uniquement |

32| Serveur GitHub MCP | ❌ Non supporté | Le serveur GitHub MCP ne fonctionne pas avec les instances GHES |32| Serveur GitHub MCP | ❌ Non supporté | Le serveur GitHub MCP ne fonctionne pas avec les instances GHES |

33 33 


56 À partir de la page GitHub App sur votre instance GHES, installez l'application sur les dépôts ou organisations auxquels vous souhaitez que Claude accède. Vous pouvez commencer par un sous-ensemble et en ajouter d'autres plus tard.56 À partir de la page GitHub App sur votre instance GHES, installez l'application sur les dépôts ou organisations auxquels vous souhaitez que Claude accède. Vous pouvez commencer par un sous-ensemble et en ajouter d'autres plus tard.

57 </Step>57 </Step>

58 58 

59 <Step title="Activer les fonctionnalités">59 <Step title="Activer Code Review">

60 Allez à [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) et activez [Code Review](/docs/fr/code-review#set-up-code-review) et les [métriques de contribution](/docs/fr/analytics#enable-contribution-metrics) pour vos dépôts GHES en utilisant la même configuration que github.com.60 Allez à [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) et activez [Code Review](/docs/fr/code-review#set-up-code-review) pour vos dépôts GHES en utilisant la même configuration que github.com.

61 </Step>61 </Step>

62</Steps>62</Steps>

63 63 


65 Permissions de la GitHub App65 Permissions de la GitHub App

66</h3>66</h3>

67 67 

68Le manifeste configure la GitHub App avec les permissions et les événements webhook ci-dessous, qui couvrent ensemble les sessions cloud, Code Review, Claude Security, les marketplaces de plugins et les métriques de contribution :68Le manifeste configure la GitHub App avec les permissions et les événements webhook ci-dessous, qui couvrent ensemble les sessions cloud, Code Review, Claude Security et les marketplaces de plugins :

69 69 

70| Permission | Accès | Utilisé pour |70| Permission | Accès | Utilisé pour |

71| :- | :- | :- |71| :- | :- | :- |


270* [Claude Code sur le web](/docs/fr/claude-code-on-the-web) : exécutez les sessions Claude Code sur l'infrastructure cloud270* [Claude Code sur le web](/docs/fr/claude-code-on-the-web) : exécutez les sessions Claude Code sur l'infrastructure cloud

271* [Révision de code](/docs/fr/code-review) : révisions de PR automatisées271* [Révision de code](/docs/fr/code-review) : révisions de PR automatisées

272* [Marketplaces de plugins](/docs/fr/plugins/host-marketplace) : créer et distribuer des catalogues de plugins272* [Marketplaces de plugins](/docs/fr/plugins/host-marketplace) : créer et distribuer des catalogues de plugins

273* [Analyse](/docs/fr/analytics) : suivre l'utilisation et les métriques de contribution273* [Analyse](/docs/fr/analytics) : suivre l'utilisation de Claude Code dans votre organisation

274* [Paramètres gérés](/docs/fr/settings) : configuration de politique à l'échelle de l'organisation274* [Paramètres gérés](/docs/fr/settings) : configuration de politique à l'échelle de l'organisation

275* [Configuration réseau](/docs/fr/network-config) : exigences de pare-feu et de liste blanche IP275* [Configuration réseau](/docs/fr/network-config) : exigences de pare-feu et de liste blanche IP

headless.md +24 −22

Details

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

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

91 91 

92Lorsque stderr est un terminal et que l'exécution a attendu cinq secondes, Claude Code affiche sur stderr une ligne qui commence par `Waiting for background work to finish` et nomme le travail concerné. Avec une [sortie `json` ou `stream-json`](#get-structured-output), la ligne ne s'affiche que lorsque stdout n'est pas un terminal, de sorte que le JSON lu par votre script ne la contient jamais.

93 

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

93 95 

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


133Avec `--output-format json`, la charge utile de réponse inclut `total_cost_usd` et une ventilation des coûts par modèle, afin que les appelants scriptés puissent suivre les dépenses sans consulter le [tableau de bord d'utilisation](/docs/fr/costs). Lorsque vous continuez une conversation antérieure avec `--continue` ou `--resume`, l'exécution rapporte le total de la conversation, [les dépenses des exécutions antérieures incluses](/docs/fr/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). Les deux chiffres sont des [estimations côté client](/docs/fr/agent-sdk/cost-tracking) et peuvent différer de votre facture réelle.135Avec `--output-format json`, la charge utile de réponse inclut `total_cost_usd` et une ventilation des coûts par modèle, afin que les appelants scriptés puissent suivre les dépenses sans consulter le [tableau de bord d'utilisation](/docs/fr/costs). Lorsque vous continuez une conversation antérieure avec `--continue` ou `--resume`, l'exécution rapporte le total de la conversation, [les dépenses des exécutions antérieures incluses](/docs/fr/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). Les deux chiffres sont des [estimations côté client](/docs/fr/agent-sdk/cost-tracking) et peuvent différer de votre facture réelle.

134 136 

135<Note>137<Note>

136 L'entrée stdin transmise est limitée à 10 Mo. Si vous dépassez la limite, Claude Code se ferme avec une erreur claire et un statut non nul. Pour travailler avec des entrées plus volumineuses, écrivez le contenu dans un fichier et référencez le chemin du fichier dans votre invite au lieu de le transmettre.138 L'entrée stdin transmise est limitée à 10 Mo. Si vous dépassez la limite, Claude Code se ferme avec une erreur claire et un statut non nul. Pour travailler avec des entrées plus volumineuses, écrivez le contenu dans un fichier et référencez le chemin du fichier dans votre prompt au lieu de le transmettre.

137</Note>139</Note>

138 140 

139Si Claude Code ne peut pas lire stdin, par exemple parce que le processus qui l'a démarré a déconnecté son extrémité, Claude Code imprime un avertissement sur stderr et continue avec l'invite de la ligne de commande. Avant la v2.1.211, une stdin illisible sur Windows plantait la session ou la fermait silencieusement sans sortie.141Si Claude Code ne peut pas lire stdin, par exemple parce que le processus qui l'a démarré a déconnecté son extrémité, Claude Code imprime un avertissement sur stderr et continue avec le prompt de la ligne de commande. Avant la v2.1.211, une stdin illisible sur Windows plantait la session ou la fermait silencieusement sans sortie.

140 142 

141<h3 id="add-claude-to-a-build-script">143<h3 id="add-claude-to-a-build-script">

142 Ajouter Claude à un script de compilation144 Ajouter Claude à un script de compilation


203 Réponses en streaming205 Réponses en streaming

204</h3>206</h3>

205 207 

206Utilisez `--output-format stream-json` avec `--verbose` et `--include-partial-messages` pour recevoir les jetons au fur et à mesure qu'ils sont générés. Chaque ligne est un objet JSON représentant un événement :208Utilisez `--output-format stream-json` avec `--verbose` et `--include-partial-messages` pour recevoir les tokens au fur et à mesure qu'ils sont générés. Chaque ligne est un objet JSON représentant un événement :

207 209 

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

209claude -p "Explain recursion" --output-format stream-json --verbose --include-partial-messages211claude -p "Explain recursion" --output-format stream-json --verbose --include-partial-messages


257 Gérer les tentatives d'API259 Gérer les tentatives d'API

258</h4>260</h4>

259 261 

260Lorsqu'une requête API échoue avec une erreur réessayable, Claude Code émet un événement `system/api_retry` avant de réessayer. Sur la v2.1.246 ou ultérieur, lorsqu'un `401` ou `403` rejette une credential [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper), Claude Code effectue les deux premières tentatives silencieusement sans événement, puis émet l'événement comme d'habitude à partir de la troisième tentative consécutive. Les tentatives silencieuses comptent toujours vers `attempt`. Vous pouvez utiliser l'événement pour afficher la progression des tentatives dans votre propre interface.262Lorsqu'une requête API échoue avec une erreur réessayable, Claude Code émet un événement `system/api_retry` avant de réessayer. Sur la v2.1.246 ou ultérieur, lorsqu'un `401` ou `403` rejette des identifiants [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper), Claude Code effectue les deux premières tentatives silencieusement sans événement, puis émet l'événement comme d'habitude à partir de la troisième tentative consécutive. Les tentatives silencieuses comptent toujours vers `attempt`. Vous pouvez utiliser l'événement pour afficher la progression des tentatives dans votre propre interface.

261 263 

262| Champ | Type | Description |264| Champ | Type | Description |

263| - | - | - |265| - | - | - |


296 298 

297Lorsqu'un répertoire ou une archive `--plugin-dir` lui-même échoue à se charger, son entrée `plugin_errors` inclut le chemin absolu résolu en tant que `path`. Utilisez-le pour déterminer lequel de plusieurs valeurs `--plugin-dir` a échoué. Le champ `path` nécessite Claude Code v2.1.283 ou ultérieur.299Lorsqu'un répertoire ou une archive `--plugin-dir` lui-même échoue à se charger, son entrée `plugin_errors` inclut le chemin absolu résolu en tant que `path`. Utilisez-le pour déterminer lequel de plusieurs valeurs `--plugin-dir` a échoué. Le champ `path` nécessite Claude Code v2.1.283 ou ultérieur.

298 300 

299Utilisez les champs du serveur MCP de la même manière. Lorsque vous passez [`--mcp-config`](/docs/fr/cli-reference#cli-flags) avec `-p`, Claude Code attend les serveurs toujours en attente avant d'exécuter le premier tour, jusqu'au délai d'expiration de démarrage [`MCP_TIMEOUT`](/docs/fr/env-vars), 30 secondes par défaut. Un serveur distant avec une [liste d'outils mise en cache](/docs/fr/agent-sdk/mcp#connection-timing) ignore l'attente, affiche `pending` dans `system/init` et se connecte lors de son premier appel d'outil. L'attente nécessite Claude Code v2.1.221 ou ultérieur.301Utilisez les champs du serveur MCP de la même manière. Lorsque vous passez [`--mcp-config`](/docs/fr/cli-reference#cli-flags) avec `-p`, Claude Code attend les serveurs toujours en attente avant d'exécuter le premier tour, jusqu'au délai d'expiration de démarrage [`MCP_TIMEOUT`](/docs/fr/env-vars), 30 secondes par défaut. Un serveur distant avec une [liste d'outils mise en cache](/docs/fr/agent-sdk/mcp#connection-timing) ignore l'attente, affiche `pending` dans `system/init` et se connecte lors de son premier appel d'outil. Dans un [environnement auto-hébergé](/docs/fr/self-hosted-environments-configuration#connection-timing), une attente plus courte s'applique à la place. L'attente nécessite Claude Code v2.1.221 ou ultérieur.

300 302 

301Claude Code valide chaque entrée `--mcp-config` au démarrage et ignore les entrées qui échouent la validation, par exemple une entrée `url` sans `type`. L'exécution continue et se ferme correctement, vérifiez donc ces champs pour détecter un serveur qui ne s'est jamais chargé :303Claude Code valide chaque entrée `--mcp-config` au démarrage et ignore les entrées qui échouent la validation, par exemple une entrée `url` sans `type`. L'exécution continue et se ferme correctement, vérifiez donc ces champs pour détecter un serveur qui ne s'est jamais chargé :

302 304 


317| - | - | - |319| - | - | - |

318| `type` | `"system"` | type de message |320| `type` | `"system"` | type de message |

319| `subtype` | `"plugin_install"` | identifie ceci comme un événement d'installation de plugin |321| `subtype` | `"plugin_install"` | identifie ceci comme un événement d'installation de plugin |

320| `status` | `"started"`, `"installed"`, `"failed"` ou `"completed"` | `started` et `completed` encadrent l'installation globale ; `installed` et `failed` rapportent les marketplaces individuels |322| `status` | `"started"`, `"installed"`, `"failed"` ou `"completed"` | `started` et `completed` encadrent l'installation globale ; `installed` et `failed` rapportent les marketplaces individuelles |

321| `name` | chaîne, optionnel | nom du marketplace, présent sur `installed` et `failed` |323| `name` | chaîne, optionnel | nom de la marketplace, présent sur `installed` et `failed` |

322| `error` | chaîne, optionnel | message d'échec, présent sur `failed` |324| `error` | chaîne, optionnel | message d'échec, présent sur `failed` |

323| `uuid` | chaîne | identifiant d'événement unique |325| `uuid` | chaîne | identifiant d'événement unique |

324| `session_id` | chaîne | session à laquelle appartient l'événement |326| `session_id` | chaîne | session à laquelle appartient l'événement |


327 Approuver automatiquement les outils329 Approuver automatiquement les outils

328</h3>330</h3>

329 331 

330Utilisez `--allowedTools` pour permettre à Claude d'utiliser certains outils sans demander. Lister `Read` et `Edit` permet à Claude de lire et modifier des fichiers sans demander la permission. Lister `Bash` fait de même pour les commandes shell, sauf dans une exécution qui démarre en [mode auto](/docs/fr/permission-modes#how-auto-mode-evaluates-actions), où Claude Code supprime une entrée `Bash` nue comme règle d'autorisation large et le mode auto évalue chaque commande à la place. Cet exemple exécute une suite de tests et corrige les défaillances avec ces trois outils listés :332Utilisez `--allowedTools` pour permettre à Claude d'utiliser certains outils sans demander. Lister `Read` et `Edit` permet à Claude de lire et modifier des fichiers sans demander la permission, à l'exception des lectures depuis des [chemins réseau](/docs/fr/permissions#network-paths). Lister `Bash` fait de même pour les commandes shell, sauf dans une exécution qui démarre en [mode auto](/docs/fr/permission-modes#how-auto-mode-evaluates-actions), où Claude Code supprime une entrée `Bash` nue comme règle d'autorisation large et le mode auto évalue chaque commande à la place. Cet exemple exécute une suite de tests et corrige les défaillances avec ces trois outils listés :

331 333 

332```bash theme={null}334```bash theme={null}

333claude -p "Run the test suite and fix any failures" \335claude -p "Run the test suite and fix any failures" \


337Pour définir une base de référence pour la session entière au lieu de lister les outils individuels, passez un [mode de permission](/docs/fr/permission-modes). Une exécution où rien ne définit un mode de permission prend le [mode de permission de démarrage intégré](/docs/fr/permission-modes#which-mode-a-session-starts-in), qui peut être `auto`, donc passez celui que vous souhaitez :339Pour définir une base de référence pour la session entière au lieu de lister les outils individuels, passez un [mode de permission](/docs/fr/permission-modes). Une exécution où rien ne définit un mode de permission prend le [mode de permission de démarrage intégré](/docs/fr/permission-modes#which-mode-a-session-starts-in), qui peut être `auto`, donc passez celui que vous souhaitez :

338 340 

339* **`auto`** : passez `--permission-mode auto` pour qu'un classificateur examine la plupart des actions au lieu de vous341* **`auto`** : passez `--permission-mode auto` pour qu'un classificateur examine la plupart des actions au lieu de vous

340* **`dontAsk`** : Claude Code refuse chaque appel qui demanderait autrement, ce qui est utile pour les exécutions CI verrouillées. Les actions qui n'ont pas besoin d'approbation en mode Manual s'exécutent toujours, telles que les lectures de fichiers dans vos répertoires de travail et l'[ensemble de commandes en lecture seule](/docs/fr/permissions#read-only-commands), ainsi que les actions que vos entrées `--allowedTools` ou les règles `permissions.allow` couvrent. `AskUserQuestion`, les outils de connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools), et les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) sont refusés même lorsqu'une règle d'autorisation correspond342* **`dontAsk`** : Claude Code refuse chaque appel qui demanderait autrement, ce qui est utile pour les exécutions CI verrouillées. Les actions qui n'ont pas besoin d'approbation en mode Manual s'exécutent toujours, telles que les lectures de fichiers dans vos répertoires de travail et l'[ensemble de commandes en lecture seule](/docs/fr/permissions#read-only-commands), ainsi que les actions que vos entrées `--allowedTools` ou les règles `permissions.allow` couvrent. `AskUserQuestion`, les outils de connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools), les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) et les [lectures depuis des chemins réseau](/docs/fr/permissions#network-paths) sont refusés même lorsqu'une règle d'autorisation correspond

341* **`acceptEdits`** : Claude écrit les fichiers sans demander, et Claude Code approuve automatiquement les commandes de système de fichiers courants telles que `mkdir`, `touch`, `mv` et `cp`. Les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves) s'appliquent toujours. Hormis l'ensemble de commandes en lecture seule, les autres commandes shell et requêtes réseau ont toujours besoin d'une entrée `--allowedTools` ou d'une règle `permissions.allow`. Consultez [ce que `acceptEdits` approuve automatiquement](/docs/fr/permission-modes#auto-approve-file-edits-with-acceptedits-mode) pour la liste complète343* **`acceptEdits`** : Claude écrit les fichiers sans demander, et Claude Code approuve automatiquement les commandes de système de fichiers courantes telles que `mkdir`, `touch`, `mv` et `cp`. Les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves) s'appliquent toujours. Hormis l'ensemble de commandes en lecture seule, les autres commandes shell et requêtes réseau ont toujours besoin d'une entrée `--allowedTools` ou d'une règle `permissions.allow`. Consultez [ce que `acceptEdits` approuve automatiquement](/docs/fr/permission-modes#auto-approve-file-edits-with-acceptedits-mode) pour la liste complète

342 344 

343Cet exemple applique les corrections de lint avec `acceptEdits` comme base de référence :345Cet exemple applique les corrections de lint avec `acceptEdits` comme base de référence :

344 346 


347```349```

348 350 

349<h3 id="turn-off-permission-prompts-in-unattended-runs">351<h3 id="turn-off-permission-prompts-in-unattended-runs">

350 Désactiver les invites de permission dans les exécutions sans surveillance352 Désactiver les demandes de permission dans les exécutions sans surveillance

351</h3>353</h3>

352 354 

353Passez `--permission-prompts none` lorsque personne n'est disponible pour répondre aux invites de permission, par exemple dans une tâche planifiée. L'indicateur est plus important lorsque votre exécution a un hôte de permission : une application Agent SDK avec un rappel [`canUseTool`](/docs/fr/agent-sdk/user-input), ou un outil MCP que vous passez avec [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags). Sans l'indicateur, votre exécution attend que cet hôte réponde à chaque demande de permission.355Passez `--permission-prompts none` lorsque personne n'est disponible pour répondre aux demandes de permission, par exemple dans une tâche planifiée. Le flag est plus important lorsque votre exécution a un hôte de permission : une application Agent SDK avec un rappel [`canUseTool`](/docs/fr/agent-sdk/user-input), ou un outil MCP que vous passez avec [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags). Sans le flag, votre exécution attend que cet hôte réponde à chaque demande de permission.

354 356 

355Avec l'indicateur, votre exécution ne consulte pas l'hôte et n'attend pas. Tout ce qui demanderait est refusé sauf si un hook `PermissionRequest` l'autorise, Claude est informé que personne ne peut approuver la demande et ne pas la réessayer, et l'exécution continue. Dans une exécution `-p` sans hôte, ces demandes sont refusées de toute façon, et l'indicateur indique également à Claude de ne pas les réessayer. Les règles de permission, les hooks [`PermissionRequest`](/docs/fr/hooks#permissionrequest) et le mode de permission que vous définissez décident toujours de chaque appel en premier ; Claude Code refuse uniquement les demandes que rien d'autre ne résout.357Avec le flag, votre exécution ne consulte pas l'hôte et n'attend pas. Tout ce qui demanderait est refusé sauf si un hook `PermissionRequest` l'autorise, Claude est informé que personne ne peut approuver la demande et ne pas la réessayer, et l'exécution continue. Dans une exécution `-p` sans hôte, ces demandes sont refusées de toute façon, et le flag indique également à Claude de ne pas les réessayer. Les règles de permission, les hooks [`PermissionRequest`](/docs/fr/hooks#permissionrequest) et le mode de permission que vous définissez décident toujours de chaque appel en premier ; Claude Code refuse uniquement les demandes que rien d'autre ne résout.

356 358 

357Cet exemple exécute une tâche sans surveillance en [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode). Le classificateur examine chaque action comme d'habitude, et Claude Code refuse tout ce qui aurait autrement entraîné une invite :359Cet exemple exécute une tâche sans surveillance en [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode). Le classificateur examine chaque action comme d'habitude, et Claude Code refuse tout ce qui aurait autrement entraîné une demande de permission :

358 360 

359```bash theme={null}361```bash theme={null}

360claude -p "Update the dependency pins and run the tests" --permission-mode auto --permission-prompts none362claude -p "Update the dependency pins and run the tests" --permission-mode auto --permission-prompts none


365Avec `--output-format stream-json`, les refus apparaissent sous forme de messages système `permission_denied`, et le message de résultat final les énumère dans `permission_denials`.367Avec `--output-format stream-json`, les refus apparaissent sous forme de messages système `permission_denied`, et le message de résultat final les énumère dans `permission_denials`.

366 368 

367<Note>369<Note>

368 L'indicateur `--permission-prompts` nécessite Claude Code v2.1.259 ou ultérieur. Les versions antérieures le rejettent avec une erreur d'option inconnue.370 Le flag `--permission-prompts` nécessite Claude Code v2.1.259 ou ultérieur. Les versions antérieures le rejettent avec une erreur d'option inconnue.

369</Note>371</Note>

370 372 

371<h3 id="create-a-commit">373<h3 id="create-a-commit">

372 Créer un commit374 Créer un commit

373</h3>375</h3>

374 376 

375Cet exemple examine les modifications mises en scène et crée un commit avec un message approprié :377Cet exemple examine les modifications indexées et crée un commit avec un message approprié :

376 378 

377```bash theme={null}379```bash theme={null}

378claude -p "Look at my staged changes and create an appropriate commit" \380claude -p "Look at my staged changes and create an appropriate commit" \

379 --allowedTools "Bash(git diff *),Bash(git log *),Bash(git status *),Bash(git commit *)"381 --allowedTools "Bash(git diff *),Bash(git log *),Bash(git status *),Bash(git commit *)"

380```382```

381 383 

382L'indicateur `--allowedTools` utilise la [syntaxe de règle de permission](/docs/fr/settings-reference#permission-rule-syntax). Le ` *` de fin active la correspondance de préfixe, donc `Bash(git diff *)` autorise toute commande commençant par `git diff`. L'espace avant `*` est important : sans lui, `Bash(git diff*)` correspondrait également à `git diff-index`.384Le flag `--allowedTools` utilise la [syntaxe de règle de permission](/docs/fr/settings-reference#permission-rule-syntax). Le ` *` de fin active la correspondance de préfixe, donc `Bash(git diff *)` autorise toute commande commençant par `git diff`. L'espace avant `*` est important : sans lui, `Bash(git diff*)` correspondrait également à `git diff-index`.

383 385 

384<Note>386<Note>

385 Le support des commandes diffère en mode `-p` :387 Le support des commandes diffère en mode `-p` :

386 388 

387 * Les [compétences](/docs/fr/skills) invoquées par l'utilisateur et les commandes personnalisées fonctionnent. Incluez `/skill-name` dans la chaîne d'invite 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.

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

389 * `/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 nécessitent Claude Code v2.1.205 ou ultérieur et suivent les [notes de disponibilité de chaque commande](/docs/fr/commands#all-commands).

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


392</Note>394</Note>

393 395 

394<h3 id="customize-the-system-prompt">396<h3 id="customize-the-system-prompt">

395 Personnaliser l'invite système397 Personnaliser le prompt système

396</h3>398</h3>

397 399 

398Utilisez `--append-system-prompt` pour ajouter des instructions tout en conservant le comportement par défaut de Claude Code. Cet exemple transmet un diff PR à Claude et lui demande de vérifier les vulnérabilités de sécurité. Enregistrez-le en tant que script shell, par exemple `review.sh` :400Utilisez `--append-system-prompt` pour ajouter des instructions tout en conservant le comportement par défaut de Claude Code. Cet exemple transmet un diff PR à Claude et lui demande de vérifier les vulnérabilités de sécurité. Enregistrez-le en tant que script shell, par exemple `review.sh` :


405 407 

406Dans 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`.

407 409 

408Consultez les [indicateurs d'invite système](/docs/fr/cli-reference#system-prompt-flags) pour plus d'options, y compris `--system-prompt` pour remplacer complètement l'invite 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.

409 411 

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

411 Continuer les conversations413 Continuer les conversations

412</h3>414</h3>

413 415 

414Utilisez `--continue` pour continuer la conversation la plus récente, ou `--resume` avec un ID de session pour continuer une conversation spécifique. Sur Claude Code v2.1.257 ou ultérieur, lorsque vous passez `--continue`, Claude Code ouvre une [session en arrière-plan](/docs/fr/sessions#resume-a-session) qui a terminé, mais pas une qui s'exécute toujours. Cet exemple exécute un examen, puis envoie des invites de suivi :416Utilisez `--continue` pour continuer la conversation la plus récente, ou `--resume` avec un ID de session pour continuer une conversation spécifique. Sur Claude Code v2.1.257 ou ultérieur, lorsque vous passez `--continue`, Claude Code ouvre une [session en arrière-plan](/docs/fr/sessions#where-the-session-picker-looks) qui a terminé, mais pas une qui s'exécute toujours. Cet exemple exécute un examen, puis envoie des prompts de suivi :

415 417 

416```bash theme={null}418```bash theme={null}

417# First request419# First request


429claude -p "Continue that review" --resume "$session_id"431claude -p "Continue that review" --resume "$session_id"

430```432```

431 433 

432Vous pouvez exécuter les deux commandes à partir de répertoires différents : Claude Code [trouve la session par son ID](/docs/fr/sessions#resume-a-session) dans n'importe quel projet sur cette machine. Avant la v2.1.223, Claude Code recherchait l'ID uniquement dans le répertoire du projet actuel et ses git worktrees, vous deviez donc exécuter les deux commandes à partir du même répertoire.434Vous pouvez exécuter les deux commandes à partir de répertoires différents : Claude Code [trouve la session par son ID](/docs/fr/sessions#where-the-session-picker-looks) dans n'importe quel projet sur cette machine.

433 435 

434À la place de l'ID de session, vous pouvez passer à `--resume` le chemin absolu vers le fichier de [transcription](/docs/fr/sessions#where-transcripts-are-stored) `.jsonl` d'une session, et Claude Code continue la conversation stockée dans ce fichier.436À la place de l'ID de session, vous pouvez passer à `--resume` le chemin absolu vers le fichier de [transcription](/docs/fr/sessions#where-transcripts-are-stored) `.jsonl` d'une session, et Claude Code continue la conversation stockée dans ce fichier.

435 437 

hooks.md +40 −13

Details

302| :- | :- | :- |302| :- | :- | :- |

303| `"*"`, `""` ou omis | Correspondre à tous | se déclenche à chaque occurrence de l'événement |303| `"*"`, `""` ou omis | Correspondre à tous | se déclenche à chaque occurrence de l'événement |

304| Uniquement des lettres, des chiffres, `_`, `-`, des espaces, `,` et `\|` | Chaîne exacte ou liste de chaînes exactes séparées par `\|` ou `,` avec espaces blancs optionnels autour | `Bash` correspond uniquement à l'outil Bash ; `Edit\|Write` et `Edit, Write` correspondent chacun à l'un ou l'autre outil exactement ; `code-reviewer` correspond uniquement à ce type d'agent |304| Uniquement des lettres, des chiffres, `_`, `-`, des espaces, `,` et `\|` | Chaîne exacte ou liste de chaînes exactes séparées par `\|` ou `,` avec espaces blancs optionnels autour | `Bash` correspond uniquement à l'outil Bash ; `Edit\|Write` et `Edit, Write` correspondent chacun à l'un ou l'autre outil exactement ; `code-reviewer` correspond uniquement à ce type d'agent |

305| Contient tout autre caractère | Expression régulière JavaScript, non ancrée | `^Notebook` correspond à tout outil commençant par Notebook ; `mcp__memory__.*` correspond à chaque outil du serveur `memory` |305| Contient tout autre caractère | Expression régulière JavaScript, non ancrée | `^Notebook` correspond à tout outil dont le nom commence par `Notebook` ; `mcp__memory__.*` correspond à chaque outil du serveur `memory` |

306 306 

307Un matcher sur le chemin de l'expression régulière est testé avec `RegExp.prototype.test` de JavaScript, qui réussit sur une correspondance n'importe où dans la valeur. `Edit.*` correspond à la fois à `Edit` et à `NotebookEdit` ; enveloppez le modèle dans `^` et `$`, comme dans `^Edit$`, lorsque vous avez besoin d'une correspondance de chaîne entière.307Un matcher sur le chemin de l'expression régulière est testé avec `RegExp.prototype.test` de JavaScript, qui réussit sur une correspondance n'importe où dans la valeur. `Edit.*` correspond à la fois à `Edit` et à `NotebookEdit` ; enveloppez le modèle dans `^` et `$`, comme dans `^Edit$`, lorsque vous avez besoin d'une correspondance de chaîne entière.

308 308 


425 425 

426Tous les hooks correspondants s'exécutent en parallèle. Si vous définissez le même gestionnaire dans plus d'un fichier de paramètres, il s'exécute une fois. Une copie du même gestionnaire d'un plugin ou d'un skill reste séparée.426Tous les hooks correspondants s'exécutent en parallèle. Si vous définissez le même gestionnaire dans plus d'un fichier de paramètres, il s'exécute une fois. Une copie du même gestionnaire d'un plugin ou d'un skill reste séparée.

427 427 

428Les gestionnaires s'exécutent dans le répertoire courant avec l'environnement de Claude Code. Si le répertoire courant n'existe plus, par exemple un worktree ou un répertoire temporaire qu'un autre shell a supprimé en cours de session, Claude Code exécute les hooks de commande à partir du premier de ceux-ci qui existe toujours : le répertoire dans lequel la session a démarré, la racine du projet, votre répertoire personnel ou le répertoire temporaire du système. Claude Code enregistre un avertissement nommant le répertoire de secours dans le [journal de débogage](#debug-hooks).428Les gestionnaires s'exécutent dans le répertoire courant avec l'environnement de Claude Code. Si le répertoire courant n'existe plus, par exemple un worktree ou un répertoire temporaire qu'un autre shell a supprimé en cours de session, Claude Code exécute les hooks de commande à partir du premier de ceux-ci qui existe toujours : le répertoire dans lequel la session a démarré, la racine du projet, votre répertoire personnel ou le répertoire temporaire du système. Claude Code consigne un avertissement nommant le répertoire de secours dans le [journal de débogage](#debug-hooks). Pour une session worktree que vous démarrez depuis l'application de bureau, consultez [Ce que les worktrees partagent avec le checkout principal](/docs/fr/worktrees#what-worktrees-share-with-the-main-checkout).

429 429 

430La variable d'environnement `$CLAUDE_CODE_REMOTE` est `"true"` dans les environnements web distants et n'est pas définie dans le CLI local. Claude Code v2.1.199 et ultérieur définit [`$CLAUDE_CODE_BRIDGE_SESSION_ID`](/docs/fr/env-vars) à l'ID de session [Contrôle à distance](/docs/fr/remote-control) tandis que la session locale a une connexion Contrôle à distance active.430La variable d'environnement `$CLAUDE_CODE_REMOTE` est `"true"` dans les environnements web distants et n'est pas définie dans le CLI local. Claude Code v2.1.199 et ultérieur définit [`$CLAUDE_CODE_BRIDGE_SESSION_ID`](/docs/fr/env-vars) à l'ID de session [Contrôle à distance](/docs/fr/remote-control) tandis que la session locale a une connexion Contrôle à distance active.

431 431 


645 645 

646 * **`${CLAUDE_PROJECT_DIR}` reste en place** : il pointe toujours vers la racine du projet où la session a démarré, donc une commande comme `${CLAUDE_PROJECT_DIR}/.claude/hooks/check-style.sh` exécute toujours le script dans le checkout principal.646 * **`${CLAUDE_PROJECT_DIR}` reste en place** : il pointe toujours vers la racine du projet où la session a démarré, donc une commande comme `${CLAUDE_PROJECT_DIR}/.claude/hooks/check-style.sh` exécute toujours le script dans le checkout principal.

647 * **`cwd` suit Claude** : le champ `cwd` dans l'[entrée JSON](#common-input-fields) du hook est la racine du worktree après que Claude entre dans un worktree, et le nouveau répertoire après que Claude exécute `cd`. Lisez-le lorsqu'un hook a besoin de savoir dans quel répertoire Claude travaille.647 * **`cwd` suit Claude** : le champ `cwd` dans l'[entrée JSON](#common-input-fields) du hook est la racine du worktree après que Claude entre dans un worktree, et le nouveau répertoire après que Claude exécute `cd`. Lisez-le lorsqu'un hook a besoin de savoir dans quel répertoire Claude travaille.

648 

649 Pour une session worktree que vous démarrez depuis l'application de bureau, consultez [Ce que les worktrees partagent avec le checkout principal](/docs/fr/worktrees#what-worktrees-share-with-the-main-checkout) pour savoir vers où pointe `${CLAUDE_PROJECT_DIR}`.

648</Note>650</Note>

649 651 

650Préférez la [forme exec](#exec-form-and-shell-form) pour tout hook qui référence un placeholder de chemin. En forme shell, enveloppez chaque placeholder entre guillemets doubles.652Préférez la [forme exec](#exec-form-and-shell-form) pour tout hook qui référence un placeholder de chemin. En forme shell, enveloppez chaque placeholder entre guillemets doubles.


782| `effort` | Objet avec un champ `level` contenant le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) en vigueur lorsque le hook s'exécute : `"low"`, `"medium"`, `"high"`, `"xhigh"` ou `"max"`. Si vous définissez un niveau que le modèle actif ne supporte pas, `level` rapporte le niveau que Claude Code a exécuté à la place ; [Ajuster le niveau d'effort](/docs/fr/model-config#adjust-effort-level) explique comment il choisit ce niveau. L'objet correspond au champ `effort` de la [barre de statut](/docs/fr/statusline#available-data). Présent pour les événements qui se déclenchent dans un contexte d'utilisation d'outil, tels que `PreToolUse`, `PostToolUse`, `Stop` et `SubagentStop`, lorsque le modèle actuel supporte le paramètre d'effort. Le niveau est également disponible pour les commandes de hook et l'outil Bash en tant que variable d'environnement `$CLAUDE_EFFORT`. |784| `effort` | Objet avec un champ `level` contenant le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) en vigueur lorsque le hook s'exécute : `"low"`, `"medium"`, `"high"`, `"xhigh"` ou `"max"`. Si vous définissez un niveau que le modèle actif ne supporte pas, `level` rapporte le niveau que Claude Code a exécuté à la place ; [Ajuster le niveau d'effort](/docs/fr/model-config#adjust-effort-level) explique comment il choisit ce niveau. L'objet correspond au champ `effort` de la [barre de statut](/docs/fr/statusline#available-data). Présent pour les événements qui se déclenchent dans un contexte d'utilisation d'outil, tels que `PreToolUse`, `PostToolUse`, `Stop` et `SubagentStop`, lorsque le modèle actuel supporte le paramètre d'effort. Le niveau est également disponible pour les commandes de hook et l'outil Bash en tant que variable d'environnement `$CLAUDE_EFFORT`. |

783| `hook_event_name` | Nom de l'événement qui s'est déclenché |785| `hook_event_name` | Nom de l'événement qui s'est déclenché |

784 786 

785Lors de l'exécution avec `--agent` ou à l'intérieur d'un sous-agent, deux champs supplémentaires sont inclus :787`agent_id` et `agent_type` indiquent à votre script dans quel agent un hook s'est déclenché, comme un sous-agent, un [coéquipier en cours de processus](/docs/fr/agent-teams#choose-a-display-mode) ou l'agent que vous avez choisi avec `--agent` :

786 788 

787| Champ | Description |789| Champ | Description |

788| :- | :- |790| :- | :- |

789| `agent_id` | Identifiant unique pour le sous-agent. Présent uniquement lorsque le hook se déclenche à l'intérieur d'un appel de sous-agent. Utilisez ceci pour distinguer les appels de hook de sous-agent des appels du thread principal. |791| `agent_id` | Identifiant unique du sous-agent ou du coéquipier en cours de processus dans lequel le hook se déclenche. |

790| `agent_type` | Nom de l'agent (par exemple, `"Explore"` ou `"security-reviewer"`). Présent lorsque la session utilise `--agent` ou que le hook se déclenche à l'intérieur d'un sous-agent. Pour les sous-agents, le type du sous-agent a priorité sur la valeur `--agent` de la session. Consultez [SubagentStart](#subagentstart) pour les valeurs que les sous-agents personnalisés et fournis par un plugin rapportent et comment écrire un matcher contre un nom limité au plugin. |792| `agent_type` | Nom de l'agent (par exemple, `"Explore"` ou `"security-reviewer"`). Présent lorsque la session utilise `--agent` ou que le hook se déclenche à l'intérieur d'un sous-agent. Pour les sous-agents, le type du sous-agent a priorité sur la valeur `--agent` de la session. Consultez [SubagentStart](#subagentstart) pour les valeurs que les sous-agents personnalisés et fournis par un plugin rapportent et comment écrire un matcher contre un nom limité au plugin. |

791 793 

792Seuls les hooks [`SessionStart`](#sessionstart) peuvent recevoir un champ `model`, et Claude Code ne l'inclut pas toujours. Les hooks [`PreModelSwitch`](#premodelswitch) et [`PostModelSwitch`](#postmodelswitch) reçoivent `from_model` et `to_model` à la place, utilisez donc un hook PostModelSwitch pour suivre le modèle au fur et à mesure qu'il change pendant une session.794Seuls les hooks [`SessionStart`](#sessionstart) peuvent recevoir un champ `model`, et Claude Code ne l'inclut pas toujours. Les hooks [`PreModelSwitch`](#premodelswitch) et [`PostModelSwitch`](#postmodelswitch) reçoivent `from_model` et `to_model` à la place, utilisez donc un hook PostModelSwitch pour suivre le modèle au fur et à mesure qu'il change pendant une session.


855 857 

856Pour la plupart des événements, Claude Code écrit stdout dans le journal de débogage et ne l'affiche pas dans la transcription. Les exceptions sont `UserPromptSubmit`, `UserPromptExpansion`, `SessionStart` et `PostModelSwitch`, où Claude Code ajoute stdout en texte brut comme contexte que Claude peut voir et sur lequel agir.858Pour la plupart des événements, Claude Code écrit stdout dans le journal de débogage et ne l'affiche pas dans la transcription. Les exceptions sont `UserPromptSubmit`, `UserPromptExpansion`, `SessionStart` et `PostModelSwitch`, où Claude Code ajoute stdout en texte brut comme contexte que Claude peut voir et sur lequel agir.

857 859 

858Que Claude Code lise votre stdout comme [sortie JSON](#json-output) ou comme texte brut dépend de la façon dont il commence et se termine, en ignorant les espaces blancs environnants :860Pour un hook qui n'est pas [async](#how-async-hooks-execute), Claude Code analyse votre stdout comme [sortie JSON](#json-output) lorsque la sortie entière est un seul objet JSON entouré uniquement d'espaces blancs, et sinon comme du texte brut ou un échec d'analyse :

859 861 

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

861* **Commence par `{` mais ne se termine pas par `}`** : Claude Code le traite comme du texte brut.863* **Une sortie qui ne commence pas par `{`, ou qui commence par `{` et ne se termine pas par `}`** : texte brut. Un tableau JSON et une chaîne JSON entre guillemets sont du texte brut selon cette règle.

862* **Commence par n'importe quoi d'autre** : Claude Code le traite comme du texte brut, y compris s'il s'agit d'un tableau JSON ou d'une chaîne JSON entre guillemets.864* **Deux lignes ou plus qui s'analysent chacune comme JSON seules, la première commençant par `{` et la dernière se terminant par `}`** : texte brut lorsqu'aucune ligne n'est un objet de sortie JSON qui définit un champ, et échec d'analyse lorsque l'une d'elles l'est.

865* **Tout autre contenu qui commence par `{` et se termine par `}` mais n'est pas du JSON valide** : un échec d'analyse.

863 866 

864Lorsque Claude Code essaie d'analyser votre stdout comme JSON et ne peut pas, ou que l'objet analysé échoue la [validation du schéma](#json-output), l'exécution est une [erreur non-bloquante](#exit-code-output). L'avis `<hook name> hook error` porte le message d'analyse ou de validation. Sur les événements qui ajoutent stdout en texte brut comme contexte, Claude Code n'ajoute pas le stdout qu'il n'a pas pu analyser.867Lorsque Claude Code essaie d'analyser votre stdout comme JSON et ne peut pas, ou que l'objet analysé échoue la [validation du schéma](#json-output), l'exécution est une [erreur non-bloquante](#exit-code-output). L'avis `<hook name> hook error` porte le message d'analyse ou de validation. Sur les événements qui ajoutent stdout en texte brut comme contexte, Claude Code n'ajoute pas le stdout qu'il n'a pas pu analyser.

865 868 


1050 Choisissez une approche par hook : soit utiliser les codes de sortie seuls pour signaler, soit quitter 0 et imprimer JSON pour un contrôle structuré. Si vous les mélangez, exit 2 garde son [effet de blocage](#exit-code-2-behavior-per-event), et Claude Code lit toujours les champs JSON, avec l'exception d'élicitation unique notée sous [Exit code 2](#exit-code-2).1053 Choisissez une approche par hook : soit utiliser les codes de sortie seuls pour signaler, soit quitter 0 et imprimer JSON pour un contrôle structuré. Si vous les mélangez, exit 2 garde son [effet de blocage](#exit-code-2-behavior-per-event), et Claude Code lit toujours les champs JSON, avec l'exception d'élicitation unique notée sous [Exit code 2](#exit-code-2).

1051</Note>1054</Note>

1052 1055 

1053La sortie stdout de votre hook doit contenir uniquement l'objet JSON. Si votre profil shell imprime du texte au démarrage, cela peut interférer avec l'analyse JSON. Consultez [Hook JSON has no effect](/docs/fr/hooks-guide#hook-json-has-no-effect) dans le guide de dépannage.1056N'imprimez rien d'autre que l'objet JSON sur stdout. Pour un hook qui n'est pas [async](#how-async-hooks-execute), tout autre texte à cet endroit, comme une ligne que votre profil shell affiche au démarrage, empêche Claude Code de lire l'objet comme JSON, et [Hook JSON has no effect](/docs/fr/hooks-guide#hook-json-has-no-effect) montre comment trouver et supprimer ce texte.

1054 1057 

1055Les chaînes `additionalContext`, `systemMessage` et `initialUserMessage` d'un hook, ainsi que son stdout brut, sont plafonnées à 10 000 caractères :1058Les chaînes `additionalContext`, `systemMessage` et `initialUserMessage` d'un hook, ainsi que son stdout brut, sont plafonnées à 10 000 caractères :

1056 1059 


1142 1145 

1143Lorsque plusieurs hooks retournent `additionalContext` pour le même événement, Claude reçoit toutes les valeurs.1146Lorsque plusieurs hooks retournent `additionalContext` pour le même événement, Claude reçoit toutes les valeurs.

1144 1147 

1148Si votre chaîne contient une balise `<system-reminder>` ou `</system-reminder>`, Claude reçoit la chaîne avec le `<` de cette balise remplacé par `&lt;`.

1149 

1145Si une valeur dépasse 10 000 caractères, Claude Code écrit le texte dans un fichier du répertoire de session et transmet à Claude le chemin du fichier avec un aperçu de jusqu'à 2 000 premiers caractères à la place. Claude peut lire le fichier, mais Claude Code ne le lui demande pas.1150Si une valeur dépasse 10 000 caractères, Claude Code écrit le texte dans un fichier du répertoire de session et transmet à Claude le chemin du fichier avec un aperçu de jusqu'à 2 000 premiers caractères à la place. Claude peut lire le fichier, mais Claude Code ne le lui demande pas.

1146 1151 

1147Utilisez `additionalContext` pour les informations que Claude devrait connaître sur l'état actuel de votre environnement ou l'opération qui vient de s'exécuter :1152Utilisez `additionalContext` pour les informations que Claude devrait connaître sur l'état actuel de votre environnement ou l'opération qui vient de s'exécuter :


1364 Conserver les variables d'environnement1369 Conserver les variables d'environnement

1365</h4>1370</h4>

1366 1371 

1367Les 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 Bash suivantes.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.

1368 1373 

1369Pour 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 :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 :

1370 1375 


1399exit 01404exit 0

1400```1405```

1401 1406 

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

1408 

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

1410 

1411<h5 id="persisted-variables-in-powershell-commands">

1412 Variables conservées dans les commandes PowerShell

1413</h5>

1414 

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 :

1416 

1417* 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 inverse

1419 

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.

1421 

1402<Note>1422<Note>

1403 `CLAUDE_ENV_FILE` est disponible pour les hooks SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged) et [FileChanged](#filechanged). Les autres types de hooks n'ont pas accès à cette variable.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.

1404</Note>1424</Note>

1405 1425 

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


2030 2050 

2031| Champ | Description |2051| Champ | Description |

2032| :- | :- |2052| :- | :- |

2033| `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) ainsi que pour `AskUserQuestion` et `ExitPlanMode`, qui nécessitent [d'être associés à `updatedInput`](#allow-with-updatedinput). `"deny"` empêche l'appel d'outil. `"ask"` demande confirmation à l'utilisateur. `"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 |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 |

2034| `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) |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) |

2035| `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"` |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"` |

2036| `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) |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) |


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

2137 2157 

2138<Note>2158<Note>

2139 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. Si vous transmettez certains autres flags de lancement, l'exécution reprise ne revient pas en mode plan ; 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.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.

2140 2160 

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

2142</Note>2162</Note>


4304 4324 

4305Après la sortie du processus en arrière-plan, Claude Code livre les champs `additionalContext` et `systemMessage` de la réponse JSON du hook à Claude au tour de conversation suivant. Contrairement au `systemMessage` d'un hook synchrone, aucun de ces champs ne vous est montré.4325Après la sortie du processus en arrière-plan, Claude Code livre les champs `additionalContext` et `systemMessage` de la réponse JSON du hook à Claude au tour de conversation suivant. Contrairement au `systemMessage` d'un hook synchrone, aucun de ces champs ne vous est montré.

4306 4326 

4327Affichez la réponse JSON seule sur stdout ou sur une ligne à part :

4328 

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

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

4331 

4307Claude 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.4332Claude 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.

4308 4333 

4309Les 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`.4334Les 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`.


44572026-07-19T02:03:24.382Z [DEBUG] "Hook PostToolUse:Write (PostToolUse) success:\nhook-ran"44822026-07-19T02:03:24.382Z [DEBUG] "Hook PostToolUse:Write (PostToolUse) success:\nhook-ran"

4458```4483```

4459 4484 

4485Pour trouver un hook lent, recherchez dans le journal les lignes `Hooks:` qui se terminent par une durée. Dans Claude Code v2.1.296 ou ultérieur, chaque hook de type commande sur un événement d'outil, `UserPromptSubmit`, `SessionStart`, `Stop` et plusieurs autres événements en laisse une lorsqu'il se termine, quoi qu'il ait affiché. La ligne indique le nom de l'événement, relié par deux-points au nom de l'outil ou à une autre valeur sur laquelle le hook a été mis en correspondance, puis la commande du hook entre crochets, le plugin dont il provient le cas échéant, la façon dont l'exécution s'est terminée et sa durée, comme dans `Hooks: PostToolUse:Write [.claude/hooks/log-write.sh] finished with status 0 (31ms)`. Une exécution peut aussi se terminer par `timed out after <N>ms`, `cancelled`, `moved to the background` ou `failed to start`. Sur certains événements, tels que `Notification`, `SessionEnd` et `PreCompact`, un hook de type commande laisse plutôt une ligne `completed with status` sans durée.

4486 

4460Pour plus de détails granulaires sur la correspondance des hooks, définissez `CLAUDE_CODE_DEBUG_LOG_LEVEL=verbose` pour voir des lignes de journal supplémentaires telles que les comptes de matcher de hook et la correspondance de requête.4487Pour plus de détails granulaires sur la correspondance des hooks, définissez `CLAUDE_CODE_DEBUG_LOG_LEVEL=verbose` pour voir des lignes de journal supplémentaires telles que les comptes de matcher de hook et la correspondance de requête.

4461 4488 

4462Pour dépanner les problèmes courants comme les hooks qui ne se déclenchent pas, les hooks Stop qui continuent à bloquer, ou les erreurs de configuration, consultez [Limitations et dépannage](/docs/fr/hooks-guide#limitations-and-troubleshooting) dans le guide. Pour une procédure de diagnostic plus large couvrant `/context`, `/doctor` et la précédence des paramètres, consultez [Déboguer votre configuration](/docs/fr/debug-your-config).4489Pour dépanner les problèmes courants comme les hooks qui ne se déclenchent pas, les hooks Stop qui continuent à bloquer, ou les erreurs de configuration, consultez [Limitations et dépannage](/docs/fr/hooks-guide#limitations-and-troubleshooting) dans le guide. Pour une procédure de diagnostic plus large couvrant `/context`, `/doctor` et la précédence des paramètres, consultez [Déboguer votre configuration](/docs/fr/debug-your-config).

hooks-guide.md +15 −7

Details

664 664 

665Sur `PreToolUse`, Claude Code gère chaque valeur `permissionDecision` comme suit :665Sur `PreToolUse`, Claude Code gère chaque valeur `permissionDecision` comme suit :

666 666 

667* `"allow"` : ignorer l'invite de permission interactive. Les règles de refus et d'ask, y compris les listes de refus gérées par l'entreprise, s'appliquent toujours, tout comme les invites pour les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) et pour les outils de connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code667* `"allow"` : ignorer la demande de permission interactive. Les règles de refus et d'ask, y compris les listes de refus gérées par l'entreprise, s'appliquent toujours, tout comme les demandes pour les lectures depuis des [chemins réseau](/docs/fr/permissions#network-paths), pour les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) et pour les outils de connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code

668* `"deny"` : annuler l'appel d'outil et envoyer la raison à Claude668* `"deny"` : annuler l'appel d'outil et envoyer la raison à Claude

669* `"ask"` : afficher l'invite de permission à l'utilisateur comme d'habitude669* `"ask"` : afficher l'invite de permission à l'utilisateur comme d'habitude

670 670 


1015 1015 

1016Les hooks `PreToolUse` se déclenchent avant toute vérification du mode de permission, dans tous les [modes de permission](/docs/fr/permission-modes), y compris `dontAsk`. Un hook qui retourne `permissionDecision: "deny"` bloque l'outil même en mode `bypassPermissions` ou avec `--dangerously-skip-permissions`. Cela vous permet d'appliquer une politique que les utilisateurs ne peuvent pas contourner en changeant leur mode de permission.1016Les hooks `PreToolUse` se déclenchent avant toute vérification du mode de permission, dans tous les [modes de permission](/docs/fr/permission-modes), y compris `dontAsk`. Un hook qui retourne `permissionDecision: "deny"` bloque l'outil même en mode `bypassPermissions` ou avec `--dangerously-skip-permissions`. Cela vous permet d'appliquer une politique que les utilisateurs ne peuvent pas contourner en changeant leur mode de permission.

1017 1017 

1018L'inverse n'est pas vrai : un hook retournant `"allow"` ne contourne pas les règles de refus des paramètres, et il ne peut pas supprimer l'invite pour les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) ou pour les outils de connecteur [que votre organisation a défini sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code. Les hooks dans les fichiers de paramètres et dans le `hooks/hooks.json` d'un plugin peuvent renforcer les restrictions mais pas les assouplir au-delà de ce que les règles de permission permettent.1018L'inverse n'est pas vrai : un hook retournant `"allow"` ne contourne pas les règles de refus des paramètres, et il ne peut pas supprimer la demande de permission pour les lectures depuis des [chemins réseau](/docs/fr/permissions#network-paths), pour les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) ou pour les outils de connecteur [que votre organisation a défini sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code. Les hooks dans les fichiers de paramètres et dans le `hooks/hooks.json` d'un plugin peuvent renforcer les restrictions mais pas les assouplir au-delà de ce que les règles de permission permettent.

1019 1019 

1020Un [mod](/docs/fr/plugins/mods/overview) que vous installez et qui gère `tool.check` peut approuver un appel que votre hook `PreToolUse` a bloqué, sauf si le hook se trouve dans les paramètres gérés. [Étendre les permissions avec les hooks](/docs/fr/permissions#extend-permissions-with-hooks) énumère les règles qui prévalent sur un mod.1020Un [mod](/docs/fr/plugins/mods/overview) que vous installez et qui gère `tool.check` peut approuver un appel que votre hook `PreToolUse` a bloqué, sauf si le hook se trouve dans les paramètres gérés. [Étendre les permissions avec les hooks](/docs/fr/permissions#extend-permissions-with-hooks) énumère les règles qui prévalent sur un mod.

1021 1021 


1083 1083 

1084Votre hook imprime du JSON valide, mais la décision ne prend pas effet et aucune erreur n'apparaît dans la transcription. Vérifiez quelle cause s'applique :1084Votre hook imprime du JSON valide, mais la décision ne prend pas effet et aucune erreur n'apparaît dans la transcription. Vérifiez quelle cause s'applique :

1085 1085 

1086* **Sortie supplémentaire avant le JSON** : quelque chose d'autre écrit sur stdout en premier, généralement un `echo` inconditionnel dans votre profil shell, donc la sortie ne commence plus par `{` et Claude Code ne l'analyse pas en JSON. La cause et la correction suivent cette liste.1086* **Sortie supplémentaire avant le JSON** : quelque chose d'autre écrit sur stdout en premier, généralement un `echo` inconditionnel dans votre profil shell, donc la sortie ne commence plus par `{`. Consultez [Sortie du profil shell avant le JSON](#shell-profile-output-before-the-json).

1087* **Un champ au mauvais niveau** : comparez le placement de chaque champ par rapport au format [JSON output](/docs/fr/hooks#json-output). Par exemple, `permissionDecision` appartient à l'intérieur de `hookSpecificOutput`, pas au niveau supérieur.1087* **Un champ au mauvais niveau** : comparez le placement de chaque champ par rapport au format [JSON output](/docs/fr/hooks#json-output). Par exemple, `permissionDecision` appartient à l'intérieur de `hookSpecificOutput`, pas au niveau supérieur. Consultez [Champs au mauvais niveau](#fields-at-the-wrong-level).

1088 1088 

1089Lorsque Claude Code exécute un hook de commande sous forme de shell, un sans `args`, il génère `sh -c` sur macOS et Linux, Git Bash sur Windows, ou PowerShell lorsque Git Bash n'est pas installé par défaut. Ce shell est non-interactif, mais Git Bash et certaines configurations, comme `BASH_ENV` pointant vers `~/.bashrc`, sourcent toujours votre profil. Si ce profil contient des instructions `echo` inconditionnelles, la sortie est ajoutée au début de votre JSON du hook :1089<h4 id="shell-profile-output-before-the-json">

1090 Sortie du profil shell avant le JSON

1091</h4>

1092 

1093Les hooks s'exécutent dans des shells non interactifs, mais Git Bash et certaines configurations, comme `BASH_ENV` pointant vers `~/.bashrc`, sourcent toujours votre profil, et tout ce que le profil affiche arrive sur stdout avant le JSON de votre hook :

1090 1094 

1091```text theme={null}1095```text theme={null}

1092Shell ready on arm641096Shell ready on arm64

1093{"decision": "block", "reason": "Not allowed"}1097{"decision": "block", "reason": "Not allowed"}

1094```1098```

1095 1099 

1096La sortie combinée ne commence plus par `{`, donc Claude Code traite tout stdout comme du texte brut et ignore le JSON. À la sortie 0, rien n'est signalé dans la transcription ; la tentative d'analyse est enregistrée uniquement dans le [journal de débogage](/docs/fr/hooks#debug-hooks). Pour corriger cela, enveloppez les instructions echo dans votre profil shell afin qu'elles ne s'exécutent que dans les shells interactifs :1100Sauf si le hook est [asynchrone](/docs/fr/hooks#how-async-hooks-execute), Claude Code lit la sortie qui ne commence pas par `{` comme du texte brut, donc votre JSON est ignoré. Comme le hook s'est terminé avec le code 0, la transcription n'affiche pas non plus d'erreur. Pour vérifier cette cause, démarrez Claude Code avec `claude --debug`, déclenchez le hook et recherchez dans le [journal de débogage](/docs/fr/hooks#debug-hooks) `Hook output does not start with {`. Pour corriger cela, enveloppez les instructions `echo` dans votre profil afin qu'elles ne s'exécutent que dans les shells interactifs :

1097 1101 

1098```bash theme={null}1102```bash theme={null}

1099# In ~/.zshrc or ~/.bashrc1103# In ~/.zshrc or ~/.bashrc


1104 1108 

1105La variable `$-` contient les drapeaux du shell, et `i` signifie interactif. Les hooks s'exécutent dans des shells non-interactifs, donc l'echo est ignoré.1109La variable `$-` contient les drapeaux du shell, et `i` signifie interactif. Les hooks s'exécutent dans des shells non-interactifs, donc l'echo est ignoré.

1106 1110 

1111<h4 id="fields-at-the-wrong-level">

1112 Champs au mauvais niveau

1113</h4>

1114 

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

1108 1116 

1109<h3 id="check-what-a-hook-did">1117<h3 id="check-what-a-hook-did">


1119 1127 

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

1121 1129 

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

1123 1131 

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

1125 En savoir plus1133 En savoir plus

Details

22 22 

23| Raccourci | Description | Contexte |23| Raccourci | Description | Contexte |

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

25| `Ctrl+C` | Interrompre ou effacer l'entrée | Interrompt une opération en cours. Si rien ne s'exécute, la première pression efface l'entrée du prompt et une deuxième pression quitte Claude Code |25| `Ctrl+C` | Interrompre ou effacer l'entrée | Interrompt une opération en cours. Si rien ne s'exécute, la première pression efface l'entrée du prompt et une deuxième pression quitte Claude Code. Appuyez sur `Haut` tant que le prompt est encore vide pour récupérer le brouillon effacé, ce qui nécessite Claude Code v2.1.288 ou version ultérieure |

26| `Ctrl+X Ctrl+K` | Arrêter tous les [sous-agents en arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) dans cette session et désactiver les [réponses automatiques des artefacts](/docs/fr/artifacts#let-claude-reply-to-comments-on-its-own) pour le reste de celle-ci. Appuyez deux fois dans les 3 secondes pour confirmer. Vous pouvez appuyer sur ce raccourci pendant qu'une demande de permission d'un sous-agent en arrière-plan est ouverte | Contrôle des sous-agents |26| `Ctrl+X Ctrl+K` | Arrêter tous les [sous-agents en arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) dans cette session et désactiver les [réponses automatiques des artefacts](/docs/fr/artifacts#let-claude-reply-to-comments-on-its-own) pour le reste de celle-ci. Appuyez deux fois dans les 3 secondes pour confirmer. Vous pouvez appuyer sur ce raccourci pendant qu'une demande de permission d'un sous-agent en arrière-plan est ouverte | Contrôle des sous-agents |

27| `Ctrl+D` | Quitter la session Claude Code | La première pression affiche un indice de confirmation et une deuxième pression dans les 800 ms quitte. Lorsque le prompt contient du texte, `Ctrl+D` supprime le caractère après le curseur à la place |27| `Ctrl+D` | Quitter la session Claude Code | La première pression affiche un indice de confirmation et une deuxième pression dans les 800 ms quitte. Lorsque le prompt contient du texte, `Ctrl+D` supprime le caractère après le curseur à la place |

28| `Ctrl+G` ou `Ctrl+X Ctrl+E` | Ouvrir dans l'éditeur de texte par défaut | Modifiez votre prompt ou votre réponse personnalisée dans votre éditeur de texte par défaut. `Ctrl+X Ctrl+E` est la liaison native readline. Activez **Afficher la dernière réponse dans l'éditeur externe** dans `/config` pour ajouter la réponse précédente de Claude en tant que contexte commenté avec `#` au-dessus de votre prompt ; Claude Code supprime le bloc de commentaire lorsque vous enregistrez |28| `Ctrl+G` ou `Ctrl+X Ctrl+E` | Ouvrir dans l'éditeur de texte par défaut | Modifiez votre prompt ou votre réponse personnalisée dans votre éditeur de texte par défaut. `Ctrl+X Ctrl+E` est la liaison native readline. Activez **Afficher la dernière réponse dans l'éditeur externe** dans `/config` pour ajouter la réponse précédente de Claude en tant que contexte commenté avec `#` au-dessus de votre prompt ; Claude Code supprime le bloc de commentaire lorsque vous enregistrez |


442 442 

443Claude Code récupère les commandes shell en attente uniquement quand la zone de saisie est vide et que vous n'avez rien d'autre en attente, et il bascule la zone de saisie en mode shell quand il le fait. Sinon, il les laisse dans la file d'attente, listées avec leur préfixe `!`, et les exécute après la fin du tour.443Claude Code récupère les commandes shell en attente uniquement quand la zone de saisie est vide et que vous n'avez rien d'autre en attente, et il bascule la zone de saisie en mode shell quand il le fait. Sinon, il les laisse dans la file d'attente, listées avec leur préfixe `!`, et les exécute après la fin du tour.

444 444 

445Si vous récupérez du texte en attente pendant que `←` [attend de passer la session en arrière-plan](/docs/fr/agent-view#switch-sessions-without-leaving-the-terminal), le texte reste dans la zone de saisie et Claude Code annule le basculement. Si vous le récupérez au moment où la session bascule, le texte disparaît avec l'écran de premier plan : il n'a pas été envoyé. Chaque message que vous avez récupéré est enregistré comme une entrée distincte dans l'[historique des commandes](#command-history). Pour en retrouver un, rouvrez la session et appuyez sur `Haut` dans un prompt vide sans rien en attente.

446 

445<h2 id="prompt-suggestions">447<h2 id="prompt-suggestions">

446 Suggestions de prompt448 Suggestions de prompt

447</h2>449</h2>

Details

299 299 

300[Claude Code dans Slack](/docs/fr/slack) et les [sessions cloud](/docs/fr/claude-code-on-the-web) ne font pas partie d'un déploiement de passerelle. Les variables de passerelle définies dans la configuration d'environnement d'une session cloud ne sont pas appliquées. Si votre trafic doit rester sur la passerelle, n'activez pas ces surfaces pour ces utilisateurs.300[Claude Code dans Slack](/docs/fr/slack) et les [sessions cloud](/docs/fr/claude-code-on-the-web) ne font pas partie d'un déploiement de passerelle. Les variables de passerelle définies dans la configuration d'environnement d'une session cloud ne sont pas appliquées. Si votre trafic doit rester sur la passerelle, n'activez pas ces surfaces pour ces utilisateurs.

301 301 

302[Remote Control](/docs/fr/remote-control) et [la dictée vocale](/docs/fr/voice-dictation) dépendent tous deux d'une identité claude.ai : Remote Control pour appairer une session en direct avec votre compte, et la dictée vocale pour atteindre le point de terminaison de transcription claude.ai. Ils ne sont pas disponibles tandis que `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, ou un `apiKeyHelper` est actif. Remote Control est également désactivé tandis que `ANTHROPIC_BASE_URL` pointe vers un hôte non-Anthropic, de sorte que la connexion avec claude.ai n'est pas suffisante en soi. Avant la v2.1.196, une URL de base non-Anthropic ne bloquait pas Remote Control.302[Remote Control](/docs/fr/remote-control) et [la dictée vocale](/docs/fr/voice-dictation) dépendent tous deux d'une identité claude.ai : Remote Control pour appairer une session en direct avec votre compte, et la dictée vocale pour atteindre l'endpoint de transcription claude.ai. Ils ne sont pas disponibles tandis que `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, ou un `apiKeyHelper` est actif. Remote Control est également désactivé tandis que `ANTHROPIC_BASE_URL` pointe vers un hôte non-Anthropic, de sorte que la connexion avec claude.ai n'est pas suffisante en soi.

303 303 

304Pour restaurer l'une ou l'autre fonctionnalité, connectez-vous avec claude.ai et supprimez les variables de passerelle que la fonctionnalité vérifie. La section Remote Control de `claude doctor` nomme ce qui bloque actuellement Remote Control.304Pour restaurer l'une ou l'autre fonctionnalité, connectez-vous avec claude.ai et supprimez les variables de passerelle que la fonctionnalité vérifie. La section Remote Control de `claude doctor` nomme ce qui bloque actuellement Remote Control.

305 305 

mcp.md +4 −4

Details

283 Approbations des serveurs de projet et confiance de l'espace de travail283 Approbations des serveurs de projet et confiance de l'espace de travail

284</h4>284</h4>

285 285 

286À partir de la v2.1.196, `claude mcp list` et `claude mcp get` lisent les approbations `.mcp.json` uniquement à partir des fichiers de paramètres qui ne sont pas commités dans le dépôt jusqu'à ce que vous fassiez confiance à l'espace de travail en y exécutant `claude` et en acceptant la boîte de dialogue de confiance de l'espace de travail. Un dépôt cloné ne peut pas approuver ses propres serveurs : [`enableAllProjectMcpServers`](/docs/fr/settings-reference#enableallprojectmcpservers) ou [`enabledMcpjsonServers`](/docs/fr/settings-reference#enabledmcpjsonservers) commité dans le `.claude/settings.json` du projet est ignoré dans un dossier non approuvé, et le serveur reste à `⏸ Pending approval` au lieu d'être connecté et vérifié.286`claude mcp list` et `claude mcp get` lisent les approbations `.mcp.json` uniquement à partir des fichiers de paramètres qui ne sont pas commités dans le dépôt jusqu'à ce que vous fassiez confiance à l'espace de travail en y exécutant `claude` et en acceptant la boîte de dialogue de confiance de l'espace de travail. Un dépôt cloné ne peut pas approuver ses propres serveurs : [`enableAllProjectMcpServers`](/docs/fr/settings-reference#enableallprojectmcpservers) ou [`enabledMcpjsonServers`](/docs/fr/settings-reference#enabledmcpjsonservers) commité dans le `.claude/settings.json` du projet est ignoré dans un dossier non approuvé, et le serveur reste à `⏸ Pending approval` au lieu d'être connecté et vérifié.

287 287 

288Les approbations de ces sources s'appliquent toujours dans un dossier non approuvé :288Les approbations de ces sources s'appliquent toujours dans un dossier non approuvé :

289 289 


859 859 

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

861 861 

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. À partir de la v2.1.196, 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 au lieu de répondre comme si le serveur n'était pas configuré. Complétez la connexion à partir d'une session interactive avec `/mcp` ou `claude mcp login <name>`.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>`.

863 863 

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

865 865 


1048 1048 

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

1050 1050 

1051À partir de la v2.1.196, lorsque `oauth.scopes` n'est pas défini, Claude Code demande la portée fournie par l'en-tête `WWW-Authenticate` du serveur ou ses métadonnées de ressource protégée, et n'envoie aucun paramètre `scope` lorsque ni l'un ni l'autre ne fournit de portée. Il ne demande plus le catalogue complet `scopes_supported` à partir des métadonnées du serveur d'autorisation découvertes automatiquement. Demander ce catalogue a fait que les fournisseurs d'identité qui annoncent des portées réservées aux administrateurs ou des portées de modèle rejettent la demande d'autorisation avec une erreur `invalid_scope`. Les métadonnées récupérées à partir d'une `authServerMetadataUrl` configurée fournissent toujours ses `scopes_supported` comme portées demandées.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.

1052 1052 

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

1054 1054 


1141 1141 

1142À part les variables `GIT_CONFIG_KEY_<n>` de Git, Claude Code supprime chaque variable de votre environnement dont le nom ressemble à un identifiant, comme un nom avec `TOKEN`, `SECRET`, `PASSWORD`, `KEY` ou `AUTH` dedans en l'une ou l'autre casse, donc `ANTHROPIC_API_KEY` et `MY_REGISTRY_TOKEN` sont tous deux supprimés. Claude Code supprime également une liste fixe de variables d'identifiant dont les noms ne suivent pas ce modèle, telles que `ANTHROPIC_CUSTOM_HEADERS`.1142À part les variables `GIT_CONFIG_KEY_<n>` de Git, Claude Code supprime chaque variable de votre environnement dont le nom ressemble à un identifiant, comme un nom avec `TOKEN`, `SECRET`, `PASSWORD`, `KEY` ou `AUTH` dedans en l'une ou l'autre casse, donc `ANTHROPIC_API_KEY` et `MY_REGISTRY_TOKEN` sont tous deux supprimés. Claude Code supprime également une liste fixe de variables d'identifiant dont les noms ne suivent pas ce modèle, telles que `ANTHROPIC_CUSTOM_HEADERS`.

1143 1143 

1144Lorsque cela s'applique à votre assistant, faites en sorte que le script lise son identifiant à partir d'un fichier ou d'un magasin d'identifiants. Si l'`url` du serveur [développe l'une de ces variables](#environment-variable-expansion-in-mcp-json), la valeur `CLAUDE_CODE_MCP_SERVER_URL` que l'assistant reçoit a cette partie remplacée par `REDACTED` également.1144Lorsque cela s'applique à votre assistant, faites en sorte que le script lise son identifiant à partir d'un fichier ou d'un magasin d'identifiants. Si l'`url` du serveur [contient la valeur réelle de l'une de ces variables](#environment-variable-expansion-in-mcp-json), comme `MY_REGISTRY_TOKEN`, la valeur `CLAUDE_CODE_MCP_SERVER_URL` que l'assistant reçoit a également cette partie remplacée par `REDACTED`.

1145 1145 

1146<h4 id="trust-a-folder-before-its-headershelper-runs">1146<h4 id="trust-a-folder-before-its-headershelper-runs">

1147 Faire confiance à un dossier avant que son headersHelper s'exécute1147 Faire confiance à un dossier avant que son headersHelper s'exécute

Details

470 L'enveloppe des valeurs entre guillemets n'échappe pas aux espaces. Par exemple, `org.name="My Company"` résulte en la valeur littérale `"My Company"` avec les guillemets inclus, pas `My Company`.470 L'enveloppe des valeurs entre guillemets n'échappe pas aux espaces. Par exemple, `org.name="My Company"` résulte en la valeur littérale `"My Company"` avec les guillemets inclus, pas `My Company`.

471</Warning>471</Warning>

472 472 

473<h3 id="attribute-telemetry-to-desktop-ssh-sessions">

474 Attribuer la télémétrie aux sessions SSH Desktop

475</h3>

476 

477Pour savoir sur quelle machine distante une [session SSH Desktop](/docs/fr/desktop#ssh-sessions) s'est exécutée, nommez chaque machine dans un attribut personnalisé. Les métriques et les événements n'indiquent pas la machine sur laquelle une session s'est exécutée.

478 

479Sur chaque machine distante, ajoutez [`OTEL_RESOURCE_ATTRIBUTES`](#multi-team-organization-support) au bloc `env` qui active la télémétrie, dans le [fichier de paramètres gérés que lit la session](/docs/fr/desktop#managed-settings). Écrivez le nom en toutes lettres dans le fichier de chaque machine. Claude Code ne développe pas la valeur, donc `host.name=$(hostname)` arrive tel quel, avec ces caractères.

480 

481L'exemple suivant nomme la machine `build-7` :

482 

483```json theme={null}

484{

485 "env": {

486 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

487 "OTEL_METRICS_EXPORTER": "otlp",

488 "OTEL_LOGS_EXPORTER": "otlp",

489 "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",

490 "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317",

491 "OTEL_RESOURCE_ATTRIBUTES": "host.name=build-7"

492 }

493}

494```

495 

496Lorsque rien d'autre ne définit la variable, `host.name` arrive dans le bloc de ressource, dans les sessions SSH Desktop et dans la CLI sur cette machine. Pour connaître les autres emplacements où apparaissent les attributs personnalisés, consultez [Support des organisations multi-équipes](#multi-team-organization-support).

497 

498Si le nom n'arrive pas, vérifiez l'une de ces causes :

499 

500* **Vous l'avez défini sur l'ordinateur qui exécute Desktop** : Desktop ne transmet pas à la session SSH une valeur que vous y définissez

501* **Vous l'avez exporté dans un fichier de connexion** : seuls les shells de connexion lisent un fichier tel que `/etc/profile`. Une valeur que vous y définissez avec `export` atteint Claude Code lorsque vous le démarrez depuis un shell de connexion. Elle n'atteint pas une session SSH Desktop, car Desktop ne démarre pas Claude Code via un shell de connexion.

502* **Une valeur contient un espace** : Claude Code ne copie alors aucune des clés sur les événements ou les points de données et ne signale aucune erreur. [Retirez l'espace de la valeur](#multi-team-organization-support).

503* **Autre chose définit déjà la variable** : dans une session que l'application de bureau démarre, une variable déjà définie dans l'environnement de lancement [a priorité sur les fichiers de paramètres](/docs/fr/settings-reference#how-env-values-interact-with-your-shell). Le [journal de débogage](/docs/fr/debug-your-config) nomme chaque variable ignorée. Lorsqu'un déploiement Desktop tiers [indique un endpoint OTLP](#how-managed-settings-lock-the-otlp-destination) dans l'environnement qu'il fournit, cet environnement contient le propre `OTEL_RESOURCE_ATTRIBUTES` de Desktop.

504 

473<h3 id="example-configurations">505<h3 id="example-configurations">

474 Exemples de configurations506 Exemples de configurations

475</h3>507</h3>


1746 1778 

1747Toutes les métriques et tous les événements sont exportés avec les attributs de ressource suivants :1779Toutes les métriques et tous les événements sont exportés avec les attributs de ressource suivants :

1748 1780 

1749* `service.name` : `claude-code` pour les sessions de terminal, `claude-code-desktop` pour les sessions démarrées à partir de l'onglet Code dans l'[application Claude Desktop](/docs/fr/desktop)1781* `service.name` : `claude-code` pour les sessions de terminal, `claude-code-desktop` pour les sessions locales démarrées à partir de l'onglet Code dans l'[application Claude Desktop](/docs/fr/desktop)

1750* `service.version` : Version actuelle de Claude Code, ou la version de l'application Desktop pour les sessions de l'onglet Code1782* `service.version` : Version actuelle de Claude Code, ou la version de l'application Desktop pour les sessions locales de l'onglet Code

1751* `os.type` : Type de système d'exploitation (par exemple, `linux`, `darwin`, `windows`)1783* `os.type` : Type de système d'exploitation (par exemple, `linux`, `darwin`, `windows`)

1752* `os.version` : Chaîne de version du système d'exploitation1784* `os.version` : Chaîne de version du système d'exploitation

1753* `host.arch` : Architecture de l'hôte (par exemple, `amd64`, `arm64`)1785* `host.arch` : Architecture de l'hôte (par exemple, `amd64`, `arm64`)

1754* `wsl.version` : Numéro de version WSL (présent uniquement lors de l'exécution sur Windows Subsystem for Linux)1786* `wsl.version` : Numéro de version WSL (présent uniquement lors de l'exécution sur Windows Subsystem for Linux)

1755* Nom du compteur : `com.anthropic.claude_code`1787* Nom du compteur : `com.anthropic.claude_code`

1756 1788 

1757Si vos pipelines de collecteur ou vos tableaux de bord filtrent sur `service.name = claude-code`, ajoutez `claude-code-desktop` au filtre pour capturer également la télémétrie des sessions de l'onglet Code.1789Si vos pipelines de collecteur ou vos tableaux de bord filtrent sur `service.name = claude-code`, ajoutez `claude-code-desktop` au filtre pour capturer également la télémétrie des sessions locales de l'onglet Code.

1758 1790 

1759<h2 id="roi-measurement-resources">1791<h2 id="roi-measurement-resources">

1760 Ressources de mesure du ROI1792 Ressources de mesure du ROI

Details

183 Définir les variables réseau dans les paramètres, pas dans le shell183 Définir les variables réseau dans les paramètres, pas dans le shell

184</h3>184</h3>

185 185 

186Le superviseur est un processus unique partagé par chaque terminal. Il hérite de l'environnement du shell qui le démarre en premier, et un superviseur installé par le système d'exploitation ne reçoit aucun environnement shell du tout. Si vous exportez une variable proxy, chemin CA ou mTLS uniquement dans votre shell, elle atteint les agents en arrière-plan quand ce shell a démarré à froid le superviseur, et silencieusement ne le fait pas quand un shell différent l'a fait.186Le superviseur est un processus unique partagé par chaque terminal. Il hérite de l'environnement du shell qui le démarre en premier. Si vous exportez une variable proxy, chemin CA ou mTLS uniquement dans votre shell, elle atteint les agents en arrière-plan quand ce shell a démarré à froid le superviseur, et silencieusement ne le fait pas quand un shell différent l'a fait.

187 187 

188Mettez plutôt les mêmes variables dans le bloc `env` de `~/.claude/settings.json` ou [paramètres gérés](/docs/fr/settings). Chaque variable de cette page peut y être définie, et les paramètres sont la seule configuration qui atteint chaque session en arrière-plan sur chaque machine.188Mettez plutôt les mêmes variables dans le bloc `env` de `~/.claude/settings.json` ou [paramètres gérés](/docs/fr/settings). Chaque variable de cette page peut y être définie, et les paramètres sont la seule configuration qui atteint chaque session en arrière-plan sur chaque machine.

189 189 


196Définissez le paramètre [`processWrapper`](/docs/fr/settings-reference#processwrapper) pour préfixer le superviseur, ses workers et les autres processus en arrière-plan listés sous [Ce que le lanceur couvre](/docs/fr/corporate-launcher#what-the-launcher-covers) avec votre lanceur. La variable d'environnement [`CLAUDE_CODE_PROCESS_WRAPPER`](/docs/fr/env-vars) équivalente prend la priorité quand les deux sont définis, et elle est soumise à la même règle : livrez-la via les paramètres gérés ou `~/.claude/settings.json`, pas une export shell. [Exécuter Claude Code derrière un lanceur d'entreprise](/docs/fr/corporate-launcher) couvre le contrat que le lanceur doit satisfaire, ce qu'il fait et ne fait pas, et comment le déployer.196Définissez le paramètre [`processWrapper`](/docs/fr/settings-reference#processwrapper) pour préfixer le superviseur, ses workers et les autres processus en arrière-plan listés sous [Ce que le lanceur couvre](/docs/fr/corporate-launcher#what-the-launcher-covers) avec votre lanceur. La variable d'environnement [`CLAUDE_CODE_PROCESS_WRAPPER`](/docs/fr/env-vars) équivalente prend la priorité quand les deux sont définis, et elle est soumise à la même règle : livrez-la via les paramètres gérés ou `~/.claude/settings.json`, pas une export shell. [Exécuter Claude Code derrière un lanceur d'entreprise](/docs/fr/corporate-launcher) couvre le contrat que le lanceur doit satisfaire, ce qu'il fait et ne fait pas, et comment le déployer.

197 197 

198<Note>198<Note>

199 Un superviseur déjà en cours d'exécution conserve la configuration de lancement avec laquelle il a démarré. Après le déploiement du paramètre lanceur, exécutez [`claude daemon stop --any`](/docs/fr/agent-view#the-supervisor-process) pour que le prochain `claude agents` ou `--bg` démarre un superviseur qui le respecte. Un service installé prend `claude daemon stop` sans `--any`.199 Un superviseur déjà en cours d'exécution conserve la configuration de lancement avec laquelle il a démarré. Après le déploiement du paramètre lanceur, exécutez [`claude daemon stop --any`](/docs/fr/agent-view#the-supervisor-process) pour que le prochain `claude agents` ou `--bg` démarre un superviseur qui le respecte.

200</Note>200</Note>

201 201 

202<h2 id="streaming-idle-watchdogs">202<h2 id="streaming-idle-watchdogs">

Details

22| [`acceptEdits`](#auto-approve-file-edits-with-acceptedits-mode) | Lectures, modifications de fichiers et commandes courantes du système de fichiers (`mkdir`, `touch`, `mv`, `cp`, etc.) | Itération sur le code que vous examinez |22| [`acceptEdits`](#auto-approve-file-edits-with-acceptedits-mode) | Lectures, modifications de fichiers et commandes courantes du système de fichiers (`mkdir`, `touch`, `mv`, `cp`, etc.) | Itération sur le code que vous examinez |

23| [`plan`](#analyze-before-you-edit-with-plan-mode) | Lectures, plus commandes approuvées par le classificateur quand le [mode auto](#eliminate-prompts-with-auto-mode) est disponible | Explorer une base de code avant de la modifier |23| [`plan`](#analyze-before-you-edit-with-plan-mode) | Lectures, plus commandes approuvées par le classificateur quand le [mode auto](#eliminate-prompts-with-auto-mode) est disponible | Explorer une base de code avant de la modifier |

24| [`auto`](#eliminate-prompts-with-auto-mode) | Tout, avec des vérifications de sécurité en arrière-plan | Tâches longues, réduction de la fatigue des invites |24| [`auto`](#eliminate-prompts-with-auto-mode) | Tout, avec des vérifications de sécurité en arrière-plan | Tâches longues, réduction de la fatigue des invites |

25| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | Lectures et outils pré-approuvés ; tout ce qui déclencherait une invite est refusé | CI verrouillé et scripts |25| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | Lectures de fichiers dans vos répertoires de travail et outils pré-approuvés ; tout ce qui déclencherait une invite est refusé | CI verrouillé et scripts |

26| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | Tout | Conteneurs et machines virtuelles isolés uniquement |26| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | Tout | Conteneurs et machines virtuelles isolés uniquement |

27 27 

28Le mode qui examine chaque action s'appelle **Manual** dans la CLI, dans `claude --help`, dans les extensions VS Code et JetBrains, et dans l'application de bureau. Sa valeur de configuration est `default`, ce que les hooks et les intégrations SDK utilisent. La CLI accepte `manual` comme alias partout où vous tapez la valeur, par exemple `claude --permission-mode manual` ou `"defaultMode": "manual"`.28Le mode qui examine chaque action s'appelle **Manual** dans la CLI, dans `claude --help`, dans les extensions VS Code et JetBrains, et dans l'application de bureau. Sa valeur de configuration est `default`, ce que les hooks et les intégrations SDK utilisent. La CLI accepte `manual` comme alias partout où vous tapez la valeur, par exemple `claude --permission-mode manual` ou `"defaultMode": "manual"`.


466 La première lecture en dehors des répertoires de travail466 La première lecture en dehors des répertoires de travail

467</h3>467</h3>

468 468 

469Tant que [`permissions.blockReadsOutsideWorkingDirectories`](/docs/fr/settings-reference#permissions-blockreadsoutsideworkingdirectories) est désactivé, les lectures de fichiers s'exécutent sans demande de permission en mode auto, y compris les lectures en dehors des [répertoires de travail](/docs/fr/permissions#working-directories). La première fois que Claude utilise l'outil Read, Grep ou Glob sur un chemin en dehors de ceux-ci, Claude Code demande s'il faut autoriser cette lecture.469Tant que [`permissions.blockReadsOutsideWorkingDirectories`](/docs/fr/settings-reference#permissions-blockreadsoutsideworkingdirectories) est désactivé, les lectures de fichiers autres que les [lectures depuis des chemins réseau](/docs/fr/permissions#network-paths) s'exécutent sans demande de permission en mode auto, y compris les lectures en dehors des [répertoires de travail](/docs/fr/permissions#working-directories). La première fois que Claude utilise l'outil Read, Grep ou Glob sur un chemin en dehors de ceux-ci, Claude Code demande s'il faut autoriser cette lecture.

470 470 

471La demande n'apparaît pas dans les exécutions `-p` non interactives ni dans les sessions d'arrière-plan ; les lectures y s'exécutent comme avant.471La demande n'apparaît pas dans les exécutions `-p` non interactives ni dans les sessions d'arrière-plan ; les lectures y s'exécutent comme avant.

472 472 


530 Chaque action passe par un ordre de décision fixe. La première étape correspondante l'emporte :530 Chaque action passe par un ordre de décision fixe. La première étape correspondante l'emporte :

531 531 

532 1. Les actions correspondant à vos [règles allow, ask ou deny](/docs/fr/permissions#manage-permissions) sont résolues immédiatement, avec ces exceptions :532 1. Les actions correspondant à vos [règles allow, ask ou deny](/docs/fr/permissions#manage-permissions) sont résolues immédiatement, avec ces exceptions :

533 * Les écritures vers les [chemins protégés](#protected-paths) sont acheminées vers le classificateur même quand une règle allow correspond533 * Les écritures vers les [chemins protégés](#protected-paths) sont acheminées vers le classificateur même quand une règle allow correspond. Quand le chemin protégé est le fichier vers lequel pointe un fichier de paramètres en lien symbolique, l'écriture peut plutôt vous demander la permission, comme le décrit la liste des [chemins protégés](#protected-paths)

534 * Aucune règle allow n'approuve les suppressions `rm` et `rmdir` ciblant un [chemin critique](#critical-paths)534 * Aucune règle allow n'approuve les suppressions `rm` et `rmdir` ciblant un [chemin critique](#critical-paths)

535 * Les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) vous demandent directement la permission même quand une règle allow correspond, et il en va de même pour les outils de connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code535 * Les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) vous demandent directement la permission même quand une règle allow correspond, et il en va de même pour les outils de connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code

536 * Une commande shell qui porte des [domaines autorisés par commande](/docs/fr/sandboxing#per-command-allowed-domains-in-auto-mode) est également acheminée vers le classificateur même quand une règle allow correspond, car une règle approuve la commande, pas ses hôtes536 * Une commande shell qui porte des [domaines autorisés par commande](/docs/fr/sandboxing#per-command-allowed-domains-in-auto-mode) est également acheminée vers le classificateur même quand une règle allow correspond, car une règle approuve la commande, pas ses hôtes

537 * Les règles ask qui portent sur le contenu d'une commande, comme `Bash(git push *)`, se rabattent sur une demande de permission537 * Les règles ask qui portent sur le contenu d'une commande, comme `Bash(git push *)`, se rabattent sur une demande de permission

538 * Une écriture que la [vérification des liens symboliques](/docs/fr/permissions#symlinks) résout vers un chemin protégé vous demande la permission quand le chemin que Claude a demandé n'est pas lui-même protégé538 * Une écriture que la [vérification des liens symboliques](/docs/fr/permissions#symlinks) résout vers un chemin protégé vous demande la permission quand le chemin que Claude a demandé n'est pas lui-même protégé

539 * Une lecture depuis un [chemin réseau](/docs/fr/permissions#network-paths) vous demande la permission même quand une règle allow correspond

539 2. Les actions en lecture seule et les modifications de fichiers dans votre répertoire de travail sont approuvées automatiquement, sauf les écritures vers les [chemins protégés](#protected-paths) et [la première lecture en dehors des répertoires de travail](#first-read-outside-the-working-directories), qui vous demande la permission540 2. Les actions en lecture seule et les modifications de fichiers dans votre répertoire de travail sont approuvées automatiquement, sauf les écritures vers les [chemins protégés](#protected-paths) et [la première lecture en dehors des répertoires de travail](#first-read-outside-the-working-directories), qui vous demande la permission

540 * Dans une session avec [examen du classificateur côté serveur](#server-side-classifier-review), les commandes shell en lecture seule et [en sandbox](/docs/fr/sandboxing#sandbox-modes) attendent cet examen et sont bloquées s'il les signale541 * Dans une session avec [examen du classificateur côté serveur](#server-side-classifier-review), les commandes shell en lecture seule et [en sandbox](/docs/fr/sandboxing#sandbox-modes) attendent cet examen et sont bloquées s'il les signale

541 * Une écriture à l'intérieur de votre répertoire de travail que la [vérification des liens symboliques](/docs/fr/permissions#symlinks) résout vers un emplacement extérieur vous demande la permission542 * Une écriture à l'intérieur de votre répertoire de travail que la [vérification des liens symboliques](/docs/fr/permissions#symlinks) résout vers un emplacement extérieur vous demande la permission

542 * Quand Claude lit un [artefact créé par quelqu'un d'autre](/docs/fr/artifacts#read-an-artifact-shared-with-you), les cas d'approbation répertoriés dans cette section s'appliquent543 * Quand Claude lit un [artefact créé par quelqu'un d'autre](/docs/fr/artifacts#read-an-artifact-shared-with-you), les cas d'approbation répertoriés dans cette section s'appliquent

544 * Une lecture depuis un [chemin réseau](/docs/fr/permissions#network-paths) vous demande la permission

543 3. Tout le reste est envoyé au classificateur, à l'exception des [suppressions de chemins critiques](#critical-paths) sous leur gestion par défaut. Les outils de connecteur et les outils MCP `requiresUserInteraction` qui vous demandent directement la permission à l'étape 1 n'atteignent jamais le classificateur non plus, donc ni une approbation exigée par l'organisation ni une étape de consentement n'est approuvée automatiquement545 3. Tout le reste est envoyé au classificateur, à l'exception des [suppressions de chemins critiques](#critical-paths) sous leur gestion par défaut. Les outils de connecteur et les outils MCP `requiresUserInteraction` qui vous demandent directement la permission à l'étape 1 n'atteignent jamais le classificateur non plus, donc ni une approbation exigée par l'organisation ni une étape de consentement n'est approuvée automatiquement

544 4. Si le classificateur bloque, Claude reçoit la raison. Dans la plupart des sessions, la raison nomme la règle à laquelle le classificateur a fait correspondre l'action, comme `[Data Exfiltration]`, plutôt que de donner une explication rédigée ; voir [Examiner les refus](/docs/fr/auto-mode-config#review-denials)546 4. Si le classificateur bloque, Claude reçoit la raison. Dans la plupart des sessions, la raison nomme la règle à laquelle le classificateur a fait correspondre l'action, comme `[Data Exfiltration]`, plutôt que de donner une explication rédigée ; voir [Examiner les refus](/docs/fr/auto-mode-config#review-denials)

545 547 


593 595 

594Claude Code refuse les appels correspondant à vos [règles `ask` explicites](/docs/fr/permissions#manage-permissions) plutôt que de déclencher une invite. Il refuse également l'outil intégré `AskUserQuestion` même si vos règles allow les correspondent, et il en va de même pour les outils de connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code. Il refuse les outils MCP marqués [`_meta["anthropic/requiresUserInteraction"]`](/docs/fr/mcp#require-approval-for-a-specific-tool) de la même manière, car leur carte d'approbation nécessite une réponse que ce mode ne collecte jamais.596Claude Code refuse les appels correspondant à vos [règles `ask` explicites](/docs/fr/permissions#manage-permissions) plutôt que de déclencher une invite. Il refuse également l'outil intégré `AskUserQuestion` même si vos règles allow les correspondent, et il en va de même pour les outils de connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code. Il refuse les outils MCP marqués [`_meta["anthropic/requiresUserInteraction"]`](/docs/fr/mcp#require-approval-for-a-specific-tool) de la même manière, car leur carte d'approbation nécessite une réponse que ce mode ne collecte jamais.

595 597 

596Les suppressions `rm` et `rmdir` ciblant un [chemin critique](#critical-paths), comme `rm -rf /` et `rm -rf ~`, sont refusées même quand une règle allow les correspond ou qu'un hook `PreToolUse` les approuve.598Les suppressions `rm` et `rmdir` ciblant un [chemin critique](#critical-paths), comme `rm -rf /` et `rm -rf ~`, sont refusées même quand une règle allow les correspond ou qu'un hook `PreToolUse` les autorise. Une lecture depuis un [chemin réseau](/docs/fr/permissions#network-paths) est refusée de la même manière.

597 599 

598Les sessions cloud sur [Claude Code sur le web](/docs/fr/claude-code-on-the-web) ignorent `defaultMode: "dontAsk"` ; voir [bypassPermissions](#skip-all-checks-with-bypasspermissions-mode) pour les détails.600Les sessions cloud sur [Claude Code sur le web](/docs/fr/claude-code-on-the-web) ignorent `defaultMode: "dontAsk"` ; voir [bypassPermissions](#skip-all-checks-with-bypasspermissions-mode) pour les détails.

599 601 


639* **Si vous acceptez** : Claude Code définit `skipDangerousModePermissionPrompt` sur `true` dans `~/.claude/settings.json`, de sorte que les sessions ultérieures ignorent le dialogue. Pour voir le dialogue à nouveau, supprimez la clé de ce fichier ou définissez-la sur `false`. La [référence `skipDangerousModePermissionPrompt`](/docs/fr/settings-reference#skipdangerousmodepermissionprompt) énumère les autres fichiers de paramètres où vous ou votre organisation pouvez le définir.641* **Si vous acceptez** : Claude Code définit `skipDangerousModePermissionPrompt` sur `true` dans `~/.claude/settings.json`, de sorte que les sessions ultérieures ignorent le dialogue. Pour voir le dialogue à nouveau, supprimez la clé de ce fichier ou définissez-la sur `false`. La [référence `skipDangerousModePermissionPrompt`](/docs/fr/settings-reference#skipdangerousmodepermissionprompt) énumère les autres fichiers de paramètres où vous ou votre organisation pouvez le définir.

640* **Si vous refusez** : Claude Code quitte.642* **Si vous refusez** : Claude Code quitte.

641 643 

642En [mode non-interactif](/docs/fr/headless), aucun dialogue n'est affiché, et une [session en arrière-plan](/docs/fr/agent-view) démarrée avec `--bg` est refusée jusqu'à ce que vous ayez accepté le dialogue dans une session interactive.644En [mode non interactif](/docs/fr/headless), aucun dialogue n'est affiché. Une [session en arrière-plan](/docs/fr/agent-view) respecte votre acceptation lorsqu'elle est enregistrée dans les paramètres utilisateur ou les paramètres gérés :

645 

646* Sans acceptation enregistrée, `claude --bg --permission-mode bypassPermissions` est refusé jusqu'à ce que vous acceptiez le dialogue dans une session interactive.

647* Avec `skipDangerousModePermissionPrompt` défini uniquement dans `.claude/settings.local.json`, la session en arrière-plan démarre en ignorant la demande de contournement et épingle l'avis `Bypass permissions was requested at launch and ignored · if that was you, ~/.claude/settings.json needs "skipDangerousModePermissionPrompt": true`. Pour que le contournement soit pris en compte, ajoutez cette clé à `~/.claude/settings.json`, puis démarrez une nouvelle session en arrière-plan.

643 648 

644Sur Linux et macOS, Claude Code refuse de démarrer dans ce mode lors de l'exécution en tant que root ou sous `sudo` :649Sur Linux et macOS, Claude Code refuse de démarrer dans ce mode lors de l'exécution en tant que root ou sous `sudo` :

645 650 


708* `.devcontainer.json`713* `.devcontainer.json`

709* `.ripgreprc`, `pyrightconfig.json`714* `.ripgreprc`, `pyrightconfig.json`

710* `.mcp.json`, `.claude.json`715* `.mcp.json`, `.claude.json`

716* Le fichier vers lequel pointe votre [fichier de paramètres](/docs/fr/settings#settings-files-and-who-they-affect) utilisateur, de projet ou local lorsque ce fichier de paramètres est lui-même un lien symbolique, par exemple vers un dépôt de dotfiles. Dans les modes qui acheminent les écritures de chemins protégés vers le classificateur, une écriture vers ce fichier vous demande une confirmation à la place, même lorsqu'une règle d'autorisation correspond. Si le chemin propre du fichier est également celui d'un fichier de paramètres, tel que `.claude/settings.json` dans un autre dossier, l'écriture est acheminée vers le classificateur comme les autres écritures de chemins protégés

711 717 

712<h2 id="critical-paths">718<h2 id="critical-paths">

713 Chemins critiques719 Chemins critiques


727 733 

728* La racine du système de fichiers734* La racine du système de fichiers

729* Les répertoires de niveau supérieur, ce qui signifie tout enfant direct de la racine, comme `/usr`, `/etc`, ou `/data`735* Les répertoires de niveau supérieur, ce qui signifie tout enfant direct de la racine, comme `/usr`, `/etc`, ou `/data`

730* Votre répertoire personnel736* Votre répertoire personnel. Sous Windows, son nom court 8.3 compte aussi, comme `C:\Users\LONGNA~1`

731* Les racines des lecteurs Windows et leurs répertoires de niveau supérieur, comme `C:\` et `C:\Windows`737* Les racines des lecteurs Windows et leurs répertoires de niveau supérieur, comme `C:\` et `C:\Windows`. Des graphies comme `\\?\C:\` et `\\localhost\C$` comptent comme `C:\`

732* Votre répertoire de travail et ses parents738* Votre répertoire de travail et ses parents

733* Vos répertoires de travail supplémentaires et leurs parents, mais uniquement quand la suppression est un glob sous l'un d'eux, comme `rm -rf <dir>/*`. `rm -rf <dir>` sur le répertoire lui-même ne déclenche pas cette vérification739* Vos répertoires de travail supplémentaires et leurs parents, mais uniquement quand la suppression est un glob sous l'un d'eux, comme `rm -rf <dir>/*`. `rm -rf <dir>` sur le répertoire lui-même ne déclenche pas cette vérification

734 740 

741Les vérifications sur le nom court 8.3 du répertoire personnel et sur les graphies `\\?\C:\` et `\\localhost\C$` nécessitent Claude Code v2.1.292 ou ultérieur.

742 

735<h3 id="other-targets-that-count-as-critical-paths">743<h3 id="other-targets-that-count-as-critical-paths">

736 Autres cibles qui comptent comme des chemins critiques744 Autres cibles qui comptent comme des chemins critiques

737</h3>745</h3>


747| Une cible qui est uniquement la sortie d'une substitution de commande, quand le `rm` est récursif | `rm -rf "$(pwd)"` | Claude Code ne peut pas vérifier la cible avant que la commande s'exécute |755| Une cible qui est uniquement la sortie d'une substitution de commande, quand le `rm` est récursif | `rm -rf "$(pwd)"` | Claude Code ne peut pas vérifier la cible avant que la commande s'exécute |

748| Une substitution de commande finale après un chemin critique | `rm -rf ~/$(cmd)` | Claude Code vérifie le chemin qui resterait si la substitution se développait vide, ici votre répertoire personnel |756| Une substitution de commande finale après un chemin critique | `rm -rf ~/$(cmd)` | Claude Code vérifie le chemin qui resterait si la substitution se développait vide, ici votre répertoire personnel |

749| Une cible qui est uniquement des barres obliques inverses | `rm -rf "\\"` | Git Bash sur Windows lit une barre oblique inverse seule comme la racine du lecteur actuel, donc la vérification s'applique sur chaque plateforme |757| Une cible qui est uniquement des barres obliques inverses | `rm -rf "\\"` | Git Bash sur Windows lit une barre oblique inverse seule comme la racine du lecteur actuel, donc la vérification s'applique sur chaque plateforme |

758| Un chemin Windows qui désigne un volume par GUID au lieu d'une lettre de lecteur | `rm -rf '\\?\Volume{GUID}\work\build'` | Le chemin n'indique pas sur quel lecteur il se trouve, il pourrait donc s'agir d'un chemin critique. Nécessite Claude Code v2.1.292 ou ultérieur |

750| Certaines cibles qui se terminent par `/*` ou `/*/` | `rm -rf logs/*/*`, `rm -rf logs/*/`, `cd logs && rm -rf a/*` | Claude Code ne peut pas déterminer, avant que la commande s'exécute, quels répertoires elles atteignent |759| Certaines cibles qui se terminent par `/*` ou `/*/` | `rm -rf logs/*/*`, `rm -rf logs/*/`, `cd logs && rm -rf a/*` | Claude Code ne peut pas déterminer, avant que la commande s'exécute, quels répertoires elles atteignent |

751 760 

752Pour désactiver la vérification sur une cible qui est uniquement la sortie d'une substitution de commande, définissez [`CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1`](/docs/fr/env-vars#variables) dans l'environnement qui lance Claude Code.761Pour désactiver la vérification sur une cible qui est uniquement la sortie d'une substitution de commande, définissez [`CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1`](/docs/fr/env-vars#variables) dans l'environnement qui lance Claude Code.

permissions.md +175 −144

Details

36 36 

37Avant la v2.1.211, Claude Code enregistrait toujours la règle dans le répertoire de démarrage, donc une approbation accordée dans un worktree ou un sous-répertoire ne s'appliquait pas au reste du référentiel. Les règles que les versions antérieures ont enregistrées dans un sous-répertoire ou un worktree s'appliquent toujours aux sessions démarrées là.37Avant la v2.1.211, Claude Code enregistrait toujours la règle dans le répertoire de démarrage, donc une approbation accordée dans un worktree ou un sous-répertoire ne s'appliquait pas au reste du référentiel. Les règles que les versions antérieures ont enregistrées dans un sous-répertoire ou un worktree s'appliquent toujours aux sessions démarrées là.

38 38 

39Parfois, une invite d'autorisation n'offre qu'une approbation unique, sans option « ne pas demander à nouveau » et sans option pour autoriser l'action pour le reste de la session. Claude Code n'offre ces options que lorsque l'invite peut vous montrer tout ce qu'elles autoriseraient, donc une règle que vous enregistrez à partir d'une invite couvre uniquement ce que son option nommée. Lorsqu'une invite n'offre que l'approbation unique, approuvez l'action une fois, ou ajoutez la règle vous-même dans [`/permissions`](#manage-permissions).39Parfois, une demande de permission n'offre qu'une approbation unique, sans option « ne pas demander à nouveau » et sans option pour autoriser l'action pour le reste de la session. Claude Code n'offre ces options que lorsque la demande peut vous montrer tout ce qu'elles autoriseraient, donc une règle que vous enregistrez à partir d'une demande couvre uniquement ce que son option indiquait. Lorsqu'une demande n'offre que l'approbation unique, approuvez l'action une fois, ou ajoutez la règle vous-même dans [`/permissions`](#manage-permissions). Pour ne plus recevoir de demandes pour une commande qui commence par un wrapper d'exécution tel que `watch`, ou pour une commande `find` avec une action telle que `-delete`, consultez [Wrappers d'exécution et actions `find`](#exec-wrappers-and-find-actions).

40 40 

41<h3 id="add-a-comment-when-you-answer-a-permission-prompt">41<h3 id="add-a-comment-when-you-answer-a-permission-prompt">

42 Ajouter un commentaire lorsque vous répondez à une invite d'autorisation42 Ajouter un commentaire lorsque vous répondez à une invite d'autorisation


46 46 

47Avec le champ ouvert, tapez le commentaire puis appuyez sur l'une de ces touches :47Avec le champ ouvert, tapez le commentaire puis appuyez sur l'une de ces touches :

48 48 

49* `Entrée` : soumet votre réponse avec le commentaire joint. Si vous laissez le champ vide, Claude Code soumet la réponse sans commentaire.49* `Enter` : soumet votre réponse avec le commentaire joint. Si vous laissez le champ vide, Claude Code soumet la réponse sans commentaire.

50* `Tab` : ferme le champ sans répondre. Claude Code conserve le texte que vous avez tapé et l'envoie toujours si vous répondez avec cette option.50* `Tab` : ferme le champ sans répondre. Claude Code conserve le texte que vous avez tapé et l'envoie toujours si vous répondez avec cette option.

51* `Maj+Tab` : sur une invite de fichier, comme une invite Édition ou Écriture, ferme le champ de la même manière que `Tab`. Avant la v2.1.235, appuyer sur `Maj+Tab` à l'intérieur du champ sélectionnait plutôt l'option qui autorise l'action pour le reste de la session, donc Claude Code approuvait l'action pour le reste de la session et supprimait le commentaire.51* `Shift+Tab` : sur une demande de fichier, comme une demande Edit ou Write, ferme le champ de la même manière que `Tab`. Avant la v2.1.235, appuyer sur `Shift+Tab` à l'intérieur du champ sélectionnait plutôt l'option qui autorise l'action pour le reste de la session, donc Claude Code approuvait l'action pour le reste de la session et supprimait le commentaire.

52 52 

53Claude Code livre le commentaire différemment selon la façon dont vous avez répondu :53Claude Code livre le commentaire différemment selon la façon dont vous avez répondu :

54 54 


91| `acceptEdits` | Accepte automatiquement les éditions de fichiers et les commandes courantes du système de fichiers telles que `mkdir`, `touch`, `mv` et `cp` pour les chemins du répertoire de travail ou `additionalDirectories` |91| `acceptEdits` | Accepte automatiquement les éditions de fichiers et les commandes courantes du système de fichiers telles que `mkdir`, `touch`, `mv` et `cp` pour les chemins du répertoire de travail ou `additionalDirectories` |

92| `plan` | Claude lit les fichiers et exécute les commandes shell en lecture seule pour explorer mais n'édite pas vos fichiers source ; avec le [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) disponible, les commandes approuvées par le classificateur s'exécutent également. Étiqueté Plan dans l'interface de ligne de commande et l'extension VS Code |92| `plan` | Claude lit les fichiers et exécute les commandes shell en lecture seule pour explorer mais n'édite pas vos fichiers source ; avec le [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) disponible, les commandes approuvées par le classificateur s'exécutent également. Étiqueté Plan dans l'interface de ligne de commande et l'extension VS Code |

93| `auto` | S'exécute sans invites de routine ; avant que des actions telles que les commandes shell et les demandes réseau s'exécutent, un [classificateur](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) en arrière-plan vérifie qu'elles s'alignent avec votre demande |93| `auto` | S'exécute sans invites de routine ; avant que des actions telles que les commandes shell et les demandes réseau s'exécutent, un [classificateur](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) en arrière-plan vérifie qu'elles s'alignent avec votre demande |

94| `dontAsk` | Refuse automatiquement chaque appel qui demanderait autrement une autorisation ; les lectures de fichiers dans vos répertoires de travail et autres actions qui ne nécessitent aucune approbation s'exécutent toujours, tout comme les outils pré-approuvés via `/permissions` ou les règles `permissions.allow`. `AskUserQuestion`, les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool), et les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code sont refusés même si vous les avez autorisés |94| `dontAsk` | Refuse automatiquement chaque appel qui demanderait autrement une permission ; les lectures de fichiers dans vos répertoires de travail et autres actions qui ne nécessitent aucune approbation s'exécutent toujours, tout comme les outils pré-approuvés via `/permissions` ou les règles `permissions.allow`. `AskUserQuestion`, les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool), [les lectures depuis des chemins réseau](#network-paths), et les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code sont refusés même si vous les avez autorisés |

95| `bypassPermissions` | Ignore les invites d'autorisation, sauf pour les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves) |95| `bypassPermissions` | Ignore les invites d'autorisation, sauf pour les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves) |

96 96 

97<Warning>97<Warning>


233L'étiquette affichée pour un outil dans la transcription et la boîte de dialogue d'autorisation peut différer de son nom canonique. Par exemple, l'outil étiqueté `Stop Task` dans la transcription a le nom canonique `TaskStop`. Les règles d'autorisation et les [correspondances de hook](/docs/fr/hooks) ne correspondent pas à l'étiquette, donc une règle écrite comme `Stop Task` ne correspond pas. Pour les règles de refus et de demande, l'avertissement au démarrage ci-dessus détecte l'inadéquation. Utilisez les noms canoniques listés dans la [référence des outils](/docs/fr/tools-reference).233L'étiquette affichée pour un outil dans la transcription et la boîte de dialogue d'autorisation peut différer de son nom canonique. Par exemple, l'outil étiqueté `Stop Task` dans la transcription a le nom canonique `TaskStop`. Les règles d'autorisation et les [correspondances de hook](/docs/fr/hooks) ne correspondent pas à l'étiquette, donc une règle écrite comme `Stop Task` ne correspond pas. Pour les règles de refus et de demande, l'avertissement au démarrage ci-dessus détecte l'inadéquation. Utilisez les noms canoniques listés dans la [référence des outils](/docs/fr/tools-reference).

234 234 

235<h2 id="tool-specific-permission-rules">235<h2 id="tool-specific-permission-rules">

236 Règles d'autorisation spécifiques aux outils236 Règles de permission spécifiques aux outils

237</h2>237</h2>

238 238 

239<h3 id="bash">239<h3 id="bash">

240 Bash240 Bash

241</h3>241</h3>

242 242 

243Les règles Bash correspondent à l'ensemble du texte de la commande, avec `*` représentant n'importe quel texte. [Les modèles de caractères génériques](#wildcard-patterns) montrent quelles commandes chaque forme de règle correspond et où placer le `*`. Le reste de cette section couvre comment Claude Code correspond aux commandes composées et aux wrappers, ce qu'une règle ne correspond pas, les commandes en lecture seule et les redirections.243Les règles Bash correspondent au texte complet de la commande, `*` représentant n'importe quel texte. [Modèles avec caractères génériques](#wildcard-patterns) indique quelles commandes chaque forme de règle fait correspondre et où placer le `*`. Le reste de cette section explique comment Claude Code fait correspondre les commandes composées et les wrappers, quels wrappers et quelles actions `find` une règle de préfixe ne peut pas approuver, ce qu'une règle ne fait pas correspondre, les commandes en lecture seule et les redirections.

244 244 

245<h4 id="compound-commands">245<h4 id="compound-commands">

246 Commandes composées246 Commandes composées

247</h4>247</h4>

248 248 

249<Tip>249<Tip>

250 Claude Code est conscient des opérateurs shell, donc une règle comme `Bash(safe-cmd *)` ne lui donnera pas la permission d'exécuter la commande `safe-cmd && other-cmd`. Les séparateurs de commande reconnus sont `&&`, `||`, `;`, `|`, `|&`, `&` et les sauts de ligne. Une règle doit correspondre à chaque sous-commande indépendamment.250 Claude Code connaît les opérateurs du shell. Une règle comme `Bash(safe-cmd *)` ne lui donne donc pas la permission d'exécuter la commande `safe-cmd && other-cmd`. Les séparateurs de commandes reconnus sont `&&`, `||`, `;`, `|`, `|&`, `&` et les sauts de ligne. Une règle doit correspondre à chaque sous-commande indépendamment.

251</Tip>251</Tip>

252 252 

253Les règles de refus et de demande s'appliquent lorsqu'une sous-commande les correspond, y compris une commande imbriquée à l'intérieur d'une sous-coquille, une substitution de commande ou un corps de contrôle de flux tel qu'une boucle `for`. Une règle de demande comme `Bash(git clean *)` vous invite toujours pour `cd /tmp && git clean -f` ou `echo "$(git clean -f)"`, même en [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode).253Les règles deny et ask s'appliquent dès qu'une sous-commande leur correspond, y compris une commande imbriquée dans un sous-shell, une substitution de commande ou le corps d'une structure de contrôle comme une boucle `for`. Une règle ask comme `Bash(git clean *)` vous demande toujours une confirmation pour `cd /tmp && git clean -f` ou `echo "$(git clean -f)"`, même en [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode).

254 254 

255Lorsque `&&` ou `||` n'a rien après lui, comme dans `npm test &&`, Claude Code traite la commande comme non analysable et ne la divise pas en sous-commandes pour la correspondance des règles d'autorisation, donc une règle telle que `Bash(npm *)` ne l'approuve pas.255Lorsque `&&` ou `||` n'est suivi de rien, comme dans `npm test &&`, Claude Code considère la commande comme impossible à analyser et ne la divise pas en sous-commandes pour la correspondance avec les règles allow. Une règle comme `Bash(npm *)` ne l'approuve donc pas.

256 256 

257Lorsque vous approuvez une commande composée avec « Oui, ne pas demander à nouveau », Claude Code enregistre une règle séparée pour chaque sous-commande qui nécessite une approbation, plutôt qu'une seule règle pour la chaîne composée complète. Par exemple, approuver `git status && npm test` enregistre une règle pour `npm test`, donc les invocations futures de `npm test` sont reconnues indépendamment de ce qui précède le `&&`. Les sous-commandes comme `cd` dans un répertoire en dehors de vos répertoires de travail génèrent leur propre règle Read pour ce chemin. Jusqu'à 5 règles peuvent être enregistrées pour une seule commande composée.257Lorsque vous approuvez une commande composée avec « Yes, and don't ask again », Claude Code enregistre une règle distincte pour chaque sous-commande nécessitant une approbation, plutôt qu'une règle unique pour la chaîne composée complète. Par exemple, approuver `git status && npm test` enregistre une règle pour `npm test`, de sorte que les invocations futures de `npm test` sont reconnues quel que soit ce qui précède le `&&`. Les sous-commandes comme un `cd` vers un répertoire situé en dehors de vos répertoires de travail génèrent leur propre règle Read pour ce chemin. Jusqu'à 5 règles peuvent être enregistrées pour une seule commande composée.

258 258 

259<h4 id="process-wrappers">259<h4 id="process-wrappers">

260 Wrappers260 Wrappers

261</h4>261</h4>

262 262 

263Avant de correspondre aux règles Bash, Claude Code supprime un ensemble fixe de wrappers, donc une règle comme `Bash(npm test *)` correspond également à `timeout 30 npm test`. Les wrappers supprimés sont `timeout`, `time`, `nice`, `nohup` et `stdbuf`, plus les builtins shell `command` et `builtin`, et `noglob` de zsh. Chacun exécute son argument comme la commande réelle. Deux formes connexes ne sont pas supprimées : la forme de requête `command -v`, qui recherche une commande plutôt que de l'exécuter, et `nocorrect` de zsh.263Avant de faire correspondre les règles Bash, Claude Code supprime un ensemble fixe de wrappers. Une règle comme `Bash(npm test *)` correspond donc aussi à `timeout 30 npm test`. Les wrappers supprimés sont `timeout`, `time`, `nice`, `nohup` et `stdbuf`, ainsi que les builtins du shell `command` et `builtin`, et `noglob` de zsh. Chacun exécute son argument comme la commande réelle. Deux formes apparentées ne sont pas supprimées : la forme de requête `command -v`, qui recherche une commande au lieu d'en exécuter une, et `nocorrect` de zsh.

264 264 

265Claude Code supprime également une affectation initiale de certaines variables d'environnement connues comme sûres, donc `Bash(npm test *)` correspond à `NODE_ENV=test npm test`. Une règle d'autorisation ne correspondra pas au-delà d'une affectation de toute autre variable. Une règle de refus ou de demande correspond au-delà de toute affectation initiale, donc `Bash(rm *)` en refus correspond toujours à `FOO=bar rm -rf tmp/`.265Claude Code supprime également une affectation initiale de certaines variables d'environnement connues comme sûres, de sorte que `Bash(npm test *)` correspond à `NODE_ENV=test npm test`. Une règle allow ne fait pas de correspondance au-delà d'une affectation de toute autre variable. Une règle deny ou ask fait correspondre au-delà de toute affectation initiale, de sorte que `Bash(rm *)` dans deny correspond toujours à `FOO=bar rm -rf tmp/`.

266 266 

267Le `xargs` nu est également supprimé, donc `Bash(grep *)` correspond à `xargs grep pattern`. La suppression s'applique uniquement lorsque `xargs` n'a pas de drapeaux : une invocation comme `xargs -n1 grep pattern` est mise en correspondance en tant que commande `xargs`, donc les règles écrites pour la commande interne ne la couvrent pas.267Un `xargs` nu est également supprimé, de sorte que `Bash(grep *)` correspond à `xargs grep pattern`. La suppression ne s'applique que lorsque `xargs` n'a aucun flag : une invocation comme `xargs -n1 grep pattern` est traitée comme une commande `xargs`, et les règles écrites pour la commande interne ne la couvrent pas.

268 268 

269Cette liste de wrappers est intégrée et n'est pas configurable. Les exécuteurs d'environnement de développement tels que `direnv exec`, `devbox run`, `mise exec`, `npx` et `docker exec` ne figurent pas dans la liste. Parce que ces outils exécutent leurs arguments en tant que commande, une règle comme `Bash(devbox run *)` correspond à tout ce qui vient après `run`, y compris `devbox run rm -rf .`. Pour approuver le travail à l'intérieur d'un exécuteur d'environnement, écrivez une règle spécifique qui inclut à la fois l'exécuteur et la commande interne, comme `Bash(devbox run npm test)`. Ajoutez une règle par commande interne que vous souhaitez autoriser.269Cette liste de wrappers est intégrée et n'est pas configurable. Les exécuteurs d'environnements de développement comme `direnv exec`, `devbox run`, `mise exec`, `npx` et `docker exec` ne figurent pas dans la liste. Comme ces outils exécutent leurs arguments en tant que commande, une règle comme `Bash(devbox run *)` correspond à tout ce qui suit `run`, y compris `devbox run rm -rf .`. Pour approuver du travail à l'intérieur d'un exécuteur d'environnement, écrivez une règle spécifique qui inclut à la fois l'exécuteur et la commande interne, comme `Bash(devbox run npm test)`. Ajoutez une règle par commande interne que vous souhaitez autoriser.

270 270 

271Les wrappers exec tels que `watch`, `setsid`, `ionice` et `flock` ne peuvent pas être approuvés automatiquement par une règle de préfixe comme `Bash(watch *)`, donc en mode Manuel ils demandent toujours. Il en va de même pour `find` avec `-exec` ou `-delete` : une règle `Bash(find *)` ne couvre pas ces formes. Pour approuver une invocation spécifique, écrivez une règle de correspondance exacte pour la chaîne de commande complète.271<h4 id="exec-wrappers-and-find-actions">

272 Wrappers d'exécution et actions `find`

273</h4>

274 

275Une règle de préfixe comme `Bash(watch *)` ou `Bash(find *)` ne peut pas approuver automatiquement les commandes suivantes. En mode Manual, elles déclenchent donc une demande de permission :

276 

277* **Wrappers d'exécution** : comme `watch`, `setsid`, `ionice` et `flock`

278* **`find`** : avec une action qui exécute des commandes, supprime des fichiers ou écrit des fichiers, comme `-exec`, `-delete` ou `-fprint`, ou avec `-files0-from`, qui lit dans un fichier les chemins à rechercher

279 

280Pour approuver une invocation spécifique qui ne contient pas de `*`, écrivez une règle de correspondance exacte pour la chaîne de commande complète, comme `Bash(find build -type f -delete)`.

281 

282Lorsque la commande contient un `*`, comme dans `find . -name '*.tmp' -delete`, Claude Code interprète la règle comme un [modèle avec caractères génériques](#wildcard-patterns), et non comme une correspondance exacte, de sorte que la commande déclenche toujours une demande. Approuvez-la à chaque demande, ou utilisez un [hook PreToolUse](/docs/fr/hooks#pretooluse-decision-control) qui renvoie `"allow"` pour celle-ci.

272 283 

273<h4 id="bash-rule-limits">284<h4 id="bash-rule-limits">

274 Ce qu'une règle Bash ne correspond pas285 Ce qu'une règle Bash ne fait pas correspondre

275</h4>286</h4>

276 287 

277Une règle Bash correspond au texte de la commande que Claude écrit, après que Claude Code divise les [commandes composées](#compound-commands) et supprime les [wrappers](#process-wrappers). Elle ne correspond pas au même programme invoqué sous une forme différente, donc une règle de refus ou de demande couvre l'invocation que Claude produit généralement et n'est pas une limite de sécurité autour du programme. Ces règles en `deny` ou `ask` arrêtent la première forme et pas les autres :288Une règle Bash correspond au texte de la commande écrite par Claude, après que Claude Code a divisé les [commandes composées](#compound-commands) et supprimé les [wrappers](#process-wrappers). Elle ne fait pas correspondre le même programme invoqué sous une autre forme. Une règle deny ou ask couvre donc l'invocation que Claude produit habituellement et ne constitue pas une frontière de sécurité autour du programme. Placées dans `deny` ou `ask`, ces règles arrêtent la première forme, mais pas les autres :

278 289 

279| Règle | Arrête | N'arrête pas |290| Règle | Arrête | N'arrête pas |

280| :- | :- | :- |291| :- | :- | :- |


282| `Bash(rm *)` | `rm -rf build/` | `/bin/rm -rf build/`, `bash -c 'rm -rf build/'` |293| `Bash(rm *)` | `rm -rf build/` | `/bin/rm -rf build/`, `bash -c 'rm -rf build/'` |

283| `Bash(git push *)` | `git push origin main` | `git -C . push origin main`, `git -c push.default=current push origin main`, `git 'push' origin main` |294| `Bash(git push *)` | `git push origin main` | `git -C . push origin main`, `git -c push.default=current push origin main`, `git 'push' origin main` |

284 295 

285Vos autres règles et le mode d'autorisation décident les commandes dans la dernière colonne.296Vos autres règles et le mode de permission décident du sort des commandes de la dernière colonne.

286 297 

287Pour l'application du système de fichiers et du réseau qui ne dépend pas du texte de la commande, utilisez le [sandboxing](/docs/fr/sandboxing). Pour inspecter le texte de commande complet avec votre propre logique avant son exécution, utilisez un hook [PreToolUse](#extend-permissions-with-hooks).298Pour une application au niveau du système de fichiers et du réseau qui ne dépend pas du texte de la commande, utilisez le [sandboxing](/docs/fr/sandboxing). Pour inspecter le texte complet de la commande avec votre propre logique avant son exécution, utilisez un [hook PreToolUse](#extend-permissions-with-hooks).

288 299 

289<h4 id="read-only-commands">300<h4 id="read-only-commands">

290 Commandes en lecture seule301 Commandes en lecture seule

291</h4>302</h4>

292 303 

293Claude Code reconnaît un ensemble intégré de commandes Bash comme étant en lecture seule et les exécute sans invite d'autorisation dans tous les modes, sauf pour un chemin que [`permissions.blockReadsOutsideWorkingDirectories`](/docs/fr/settings-reference#permissions-blockreadsoutsideworkingdirectories) protège. L'ensemble inclut `ls`, `cat`, `echo`, `pwd`, `head`, `tail`, `grep`, `find`, `wc`, `which`, `diff`, `stat`, `du`, `cd` et les formes en lecture seule de `git`. L'ensemble n'est pas configurable ; pour exiger une invite pour l'une de ces commandes, ajoutez une règle `ask` ou `deny` pour celle-ci. En mode auto, ces commandes peuvent également attendre l'examen du classificateur ; voir [comment le classificateur évalue les actions](/docs/fr/permission-modes#how-the-classifier-evaluates-actions).304Claude Code reconnaît un ensemble intégré de commandes Bash comme étant en lecture seule et les exécute sans demande de permission dans tous les modes, sauf dans la mesure où [`permissions.blockReadsOutsideWorkingDirectories`](/docs/fr/settings-reference#permissions-blockreadsoutsideworkingdirectories) modifie ce comportement pour les chemins situés en dehors de vos répertoires de travail. L'ensemble comprend `ls`, `cat`, `echo`, `pwd`, `head`, `tail`, `grep`, `find`, `wc`, `which`, `diff`, `stat`, `du`, `cd` et les formes en lecture seule de `git`. L'ensemble n'est pas configurable ; pour exiger une demande pour l'une de ces commandes, ajoutez une règle `ask` ou `deny` pour celle-ci. En mode auto, ces commandes peuvent aussi attendre l'examen du classifieur ; consultez [comment le classifieur évalue les actions](/docs/fr/permission-modes#how-the-classifier-evaluates-actions).

294 305 

295Une redirection telle que `ls > out.txt` ajoute une vérification sur la cible. Voir [Redirections](#redirections).306Une redirection comme `ls > out.txt` ajoute une vérification de la cible. Consultez [Redirections](#redirections).

296 307 

297Les modèles glob non cités sont autorisés pour les commandes dont chaque drapeau est en lecture seule, donc `ls *.ts` et `wc -l src/*.py` s'exécutent sans invite.308Les motifs glob sans guillemets sont autorisés pour les commandes dont tous les flags sont en lecture seule, de sorte que `ls *.ts` et `wc -l src/*.py` s'exécutent sans demande.

298 309 

299En mode Manuel, les commandes de cet ensemble demandent toujours dans ces cas :310En mode Manual, les commandes de cet ensemble déclenchent tout de même une demande dans les cas suivants :

300 311 

301* **Globs non cités pour les commandes avec drapeaux capables d'écriture** : les commandes avec des drapeaux capables d'écriture ou d'exécution, tels que `find`, `sort`, `sed` et `git`, demandent lorsqu'un glob non cité est présent, car le glob pourrait s'étendre à un drapeau comme `-delete`.312* **Globs sans guillemets pour les commandes avec des flags capables d'écrire** : les commandes dotées de flags capables d'écrire ou d'exécuter, comme `find`, `sort`, `sed` et `git`, déclenchent une demande en présence d'un glob sans guillemets, car le glob pourrait s'étendre en un flag comme `-delete`.

302* **`docker` pointant vers un autre daemon** : les formes en lecture seule de `docker` demandent lorsque la commande porte un drapeau qui sélectionne un daemon différent, tel que `-H`, `--context` ou `--url` et `--connection` de Podman.313* **`docker` pointant vers un autre daemon** : les formes en lecture seule de `docker` déclenchent une demande lorsque la commande comporte un flag qui sélectionne un autre daemon, comme `-H`, `--context`, ou `--url` et `--connection` de Podman.

303* **`file` avec des drapeaux d'ouverture de chemin** : `file` demande lorsqu'il passe `-m`/`--magic-file` ou `-f`/`--files-from`, car ces drapeaux font que `file` ouvre les chemins nommés dans la valeur du drapeau.314* **`file` avec des flags qui ouvrent des chemins** : `file` déclenche une demande lorsqu'il reçoit `-m`/`--magic-file` ou `-f`/`--files-from`, car ces flags font ouvrir à `file` les chemins nommés dans la valeur du flag.

304* **Chemins réseau sur Windows** : une commande dont les arguments incluent un chemin réseau (UNC), tel que `\\server\share\file`, demande car l'accès à un chemin réseau peut envoyer vos identifiants Windows à l'hôte qu'il nomme. La même vérification s'applique aux commandes de l'[outil PowerShell](/docs/fr/tools-reference#powershell-tool).315* **`ps` susceptible d'afficher des variables d'environnement** : `ps` déclenche une demande lorsque l'un de ses arguments pourrait agir comme l'option `e`, comme dans `ps auxe` ou `ps aux -e`, car cette option affiche les variables d'environnement des processus. `ps aux` et `ps -ef` s'exécutent sans demande. La vérification des formes avec tiret comme `ps aux -e` nécessite Claude Code v2.1.290 ou ultérieur.

305* **Écritures vers des variables shell spéciales** : une commande qui définit, annule ou boucle sur certaines variables shell spéciales, telles que `PATH` ou `IFS`, demande même lorsque le reste de la commande est en lecture seule.316* **Chemins réseau sous Windows** : une commande dont les arguments incluent un chemin réseau (UNC), comme `\\server\share\file`, déclenche une demande, car l'accès à un chemin réseau peut envoyer vos identifiants Windows à l'hôte qu'il désigne. La même vérification s'applique aux commandes de l'[outil PowerShell](/docs/fr/tools-reference#powershell-tool).

306* **Commandes que l'analyse ne peut pas analyser** : lorsque Claude Code ne peut pas analyser complètement une commande, il demande une approbation au lieu de traiter la commande comme en lecture seule. Les commandes plus longues que 10 000 caractères demandent toujours car elles dépassent ce que l'analyse analyse.317* **Écritures dans des variables spéciales du shell** : une commande qui définit, supprime ou parcourt certaines variables spéciales du shell, comme `PATH` ou `IFS`, déclenche une demande même lorsque le reste de la commande est en lecture seule.

318* **Commandes que l'analyse ne peut pas interpréter** : lorsque Claude Code ne parvient pas à analyser entièrement une commande, il demande une approbation au lieu de considérer la commande comme étant en lecture seule. Les commandes de plus de 10 000 caractères déclenchent toujours une demande, car elles dépassent ce que l'analyse prend en charge.

307 319 

308Un `cd` dans un chemin à l'intérieur de votre répertoire de travail ou d'un [répertoire supplémentaire](#working-directories) est également en lecture seule, et une commande composée comme `cd packages/api && ls` s'exécute sans invite lorsque chaque partie se qualifie seule. Ces combinaisons demandent même lorsque chaque partie est en lecture seule :320Un `cd` vers un chemin situé dans votre répertoire de travail ou dans un [répertoire supplémentaire](#working-directories) est également en lecture seule, et une commande composée comme `cd packages/api && ls` s'exécute sans demande lorsque chaque partie remplit les conditions à elle seule. Les combinaisons suivantes déclenchent une demande même lorsque chaque partie est en lecture seule :

309 321 

310* **`cd` avec `git`** : demande lorsque le `cd` change dans un répertoire différent, car exécuter `git` dans un nouveau répertoire peut exécuter les hooks de ce répertoire. Un `cd` dont la cible se résout au répertoire de travail courant est une non-opération et ne déclenche pas l'invite.322* **`cd` avec `git`** : déclenche une demande lorsque le `cd` passe dans un autre répertoire, car exécuter `git` dans un nouveau répertoire peut exécuter les hooks de ce répertoire. Un `cd` dont la cible correspond au répertoire de travail actuel n'a aucun effet et ne déclenche pas de demande.

311* **`cd` avec une redirection** : demande lorsque Claude Code ne peut pas déterminer le répertoire dans lequel la cible de redirection se résout après l'exécution de `cd`. Une commande dont la seule cible de redirection est `/dev/null`, telle que `cd app; grep -r pattern . 2>/dev/null`, ne demande pas, car `/dev/null` ne dépend pas du répertoire de travail.323* **`cd` avec une redirection** : déclenche une demande lorsque Claude Code ne peut pas déterminer par rapport à quel répertoire la cible de la redirection est résolue après l'exécution du `cd`. Une commande dont la seule cible de redirection est `/dev/null`, comme `cd app; grep -r pattern . 2>/dev/null`, ne déclenche pas de demande, car `/dev/null` ne dépend pas du répertoire de travail.

312 324 

313<Warning>325<Warning>

314 Les modèles d'autorisation Bash qui tentent de contraindre les arguments de commande sont fragiles. Par exemple, `Bash(curl http://github.com/ *)` a l'intention de restreindre curl aux URL GitHub, mais ne correspondra pas aux variations comme :326 Les modèles de permission Bash qui tentent de restreindre les arguments des commandes sont fragiles. Par exemple, `Bash(curl http://github.com/ *)` vise à limiter curl aux URL GitHub, mais ne correspondra pas à des variantes comme :

315 327 

316 * Options avant l'URL : `curl -X GET http://github.com/...`328 * Options avant l'URL : `curl -X GET http://github.com/...`

317 * Protocole différent : `curl https://github.com/...`329 * Protocole différent : `curl https://github.com/...`

318 * Redirections : `curl -L http://short.example.com/xyz`, qui redirige vers GitHub330 * Redirections : `curl -L http://short.example.com/xyz`, qui redirige vers GitHub

319 * Variables : `URL=http://github.com && curl $URL`331 * Variables : `URL=http://github.com && curl $URL`

320 332 

321 Pour un filtrage d'URL plus fiable, envisagez :333 Pour un filtrage d'URL plus fiable, envisagez les options suivantes :

322 334 

323 * **Restreindre les outils réseau Bash** : utilisez les règles de refus pour bloquer `curl`, `wget` et les commandes similaires, puis utilisez l'outil WebFetch avec l'autorisation `WebFetch(domain:github.com)` pour les domaines autorisés. Une règle de refus ne correspond pas au même programme par chemin ou à l'intérieur de `sh -c`, donc associez-la à la [liste d'autorisation du réseau sandbox](/docs/fr/sandboxing#network-isolation) lorsque la restriction doit tenir ; voir [ce qu'une règle Bash ne correspond pas](#bash-rule-limits)335 * **Restreindre les outils réseau de Bash** : utilisez des règles deny pour bloquer `curl`, `wget` et les commandes similaires, puis utilisez l'outil WebFetch avec la permission `WebFetch(domain:github.com)` pour les domaines autorisés. Une règle deny ne fait pas correspondre le même programme invoqué par son chemin ou à l'intérieur de `sh -c` ; associez-la donc à la [liste d'autorisation réseau du sandbox](/docs/fr/sandboxing#network-isolation) lorsque la restriction doit être garantie. Consultez [ce qu'une règle Bash ne fait pas correspondre](#bash-rule-limits)

324 * **Utiliser les hooks PreToolUse** : implémentez un hook qui valide les URL dans les commandes Bash et bloque les domaines non autorisés336 * **Utiliser des hooks PreToolUse** : implémentez un hook qui valide les URL dans les commandes Bash et bloque les domaines non autorisés

325 * **Ajouter des conseils CLAUDE.md** : décrivez vos modèles curl autorisés dans `CLAUDE.md`. Cela façonne ce que Claude essaie mais n'applique pas une limite, donc associez-le à l'une des options ci-dessus337 * **Ajouter des consignes dans CLAUDE.md** : décrivez vos modèles curl autorisés dans `CLAUDE.md`. Cela oriente ce que Claude tente de faire, mais n'impose aucune limite ; associez-le donc à l'une des options ci-dessus

326 338 

327 Notez que l'utilisation de WebFetch seul n'empêche pas l'accès au réseau. Si Bash est autorisé, Claude peut toujours utiliser `curl`, `wget` ou d'autres outils pour atteindre n'importe quelle URL.339 Notez que l'utilisation de WebFetch seul n'empêche pas l'accès au réseau. Si Bash est autorisé, Claude peut toujours utiliser `curl`, `wget` ou d'autres outils pour atteindre n'importe quelle URL.

328</Warning>340</Warning>


331 Redirections343 Redirections

332</h4>344</h4>

333 345 

334Lorsqu'une commande redirige la sortie ou l'entrée, Claude Code vérifie la cible de redirection par rapport à vos règles de fichier comme si Claude avait écrit ou lu ce fichier directement :346Lorsqu'une commande redirige une sortie ou une entrée, Claude Code vérifie la cible de la redirection par rapport à vos règles de fichiers, comme si Claude écrivait ou lisait ce fichier directement :

335 347 

336* **Redirections de sortie** : pour `> file`, `>> file` ou `2> file`, la vérification couvre vos règles d'autorisation et de refus `Edit`, les [chemins protégés](/docs/fr/permission-modes#protected-paths) et les [répertoires de travail](#working-directories). Une règle telle que `Bash(git commit *)` autorise la commande, pas la cible. Une cible qui commence par `~` ou contient un caractère glob nécessite votre approbation.348* **Redirections de sortie** : pour `> file`, `>> file` ou `2> file`, la vérification couvre vos règles `Edit` allow et deny, les [chemins protégés](/docs/fr/permission-modes#protected-paths) et les [répertoires de travail](#working-directories). Une règle comme `Bash(git commit *)` autorise la commande, pas la cible. Une cible qui commence par `~` ou contient un caractère glob nécessite votre approbation.

337* **Redirections d'entrée** : pour `< file`, la vérification couvre vos règles d'autorisation et de refus `Read` et les répertoires de travail. Une cible en dehors des répertoires de travail nécessite votre approbation sauf si une règle d'autorisation la couvre. Une cible qui contient un modèle glob ou un chemin relatif qui suit un `cd` dans la même commande nécessite votre approbation même lorsqu'une règle d'autorisation la couvre. Claude Code vérifie les cibles d'entrée en v2.1.257 et ultérieur.349* **Redirections d'entrée** : pour `< file`, la vérification couvre vos règles `Read` allow et deny ainsi que les répertoires de travail. Une cible située en dehors des répertoires de travail nécessite votre approbation, sauf si une règle allow la couvre. Une cible qui contient un motif glob, ou un chemin relatif qui suit un `cd` dans la même commande, nécessite votre approbation même lorsqu'une règle allow la couvre. Claude Code vérifie les cibles d'entrée à partir de la v2.1.257.

338 350 

339Les cibles sans fichier derrière elles ne sont pas vérifiées : `/dev/null`, les formes de descripteur de fichier telles que `2>&1` et `<&3`, et les here-docs et here-strings.351Les cibles qui ne correspondent à aucun fichier ne sont pas vérifiées : `/dev/null`, les formes de descripteur de fichier comme `2>&1` et `<&3`, ainsi que les here-docs et here-strings.

340 352 

341Claude Code vérifie également les fichiers qu'une commande `tee` écrit, y compris dans un pipeline tel que `make | tee build.log`. La vérification couvre vos règles d'autorisation et de refus `Edit`, les [chemins protégés](/docs/fr/permission-modes#protected-paths) et les [répertoires de travail](#working-directories). Une règle d'autorisation telle que `Bash(tee *)` ne couvre pas une destination en dehors des répertoires de travail. Claude Code vérifie les cibles `tee` en v2.1.269 et ultérieur.353Claude Code vérifie également les fichiers qu'écrit une commande `tee`, y compris dans un pipeline comme `make | tee build.log`. La vérification couvre vos règles `Edit` allow et deny, les [chemins protégés](/docs/fr/permission-modes#protected-paths) et les [répertoires de travail](#working-directories). Une règle allow comme `Bash(tee *)` ne couvre pas une destination située en dehors des répertoires de travail. Claude Code vérifie les cibles de `tee` à partir de la v2.1.269.

342 354 

343<h3 id="powershell">355<h3 id="powershell">

344 PowerShell356 PowerShell

345</h3>357</h3>

346 358 

347Les règles d'autorisation PowerShell utilisent la même forme que les règles Bash. Les caractères génériques avec `*` correspondent à n'importe quelle position, le suffixe `:*` est équivalent à un ` *` de fin, et un `PowerShell` nu ou `PowerShell(*)` correspond à chaque commande. Cette configuration permet les commandes `Get-ChildItem` et `git commit` tout en bloquant `Remove-Item` :359Les règles de permission PowerShell ont la même forme que les règles Bash. Les caractères génériques `*` correspondent à n'importe quelle position, le suffixe `:*` équivaut à un ` *` final, et un `PowerShell` ou `PowerShell(*)` nu correspond à toutes les commandes. Cette configuration autorise les commandes `Get-ChildItem` et `git commit` tout en bloquant `Remove-Item` :

348 360 

349```json theme={null}361```json theme={null}

350{362{


360}372}

361```373```

362 374 

363Les alias courants sont canonicalisés avant la correspondance. Une règle écrite pour le nom de la cmdlet correspond également à ses alias, donc `PowerShell(Get-ChildItem *)` correspond à `gci`, `ls` et `dir` aussi. La correspondance est insensible à la casse.375Les alias courants sont normalisés avant la correspondance. Une règle écrite pour le nom de la cmdlet correspond aussi à ses alias, de sorte que `PowerShell(Get-ChildItem *)` correspond également à `gci`, `ls` et `dir`. La correspondance ne tient pas compte de la casse.

364 376 

365Claude Code analyse l'AST PowerShell et vérifie chaque commande dans une commande composée indépendamment. Les opérateurs de pipeline `|`, les séparateurs d'instruction `;` et sur PowerShell 7+ les opérateurs de chaîne `&&` et `||` divisent une commande composée en sous-commandes. Une règle doit correspondre à chaque sous-commande pour que la commande composée soit autorisée.377Claude Code analyse l'AST PowerShell et vérifie indépendamment chaque commande d'une commande composée. Les opérateurs de pipeline `|`, les séparateurs d'instructions `;` et, sur PowerShell 7+, les opérateurs de chaînage `&&` et `||` divisent une commande composée en sous-commandes. Une règle doit correspondre à chaque sous-commande pour que la commande composée soit autorisée.

366 378 

367<h3 id="read-and-edit">379<h3 id="read-and-edit">

368 Read et Edit380 Read et Edit

369</h3>381</h3>

370 382 

371Pour bloquer les outils de fichier de Claude de lire un fichier ou un répertoire, ajoutez une règle de refus `Read` pour son chemin, telle que `Read(./.env)` ou `Read(./secrets/**)` ; [Exclure les fichiers sensibles](/docs/fr/settings-reference#exclude-sensitive-files) a un exemple prêt à coller. Si votre projet contient un fichier `.claudeignore`, celui-ci n'a aucun effet ; déplacez donc ses entrées dans des règles de refus `Read`.383Pour empêcher les outils de fichiers de Claude de lire un fichier ou un répertoire, ajoutez une règle `Read` deny pour son chemin, comme `Read(./.env)` ou `Read(./secrets/**)` ; [Exclure les fichiers sensibles](/docs/fr/settings-reference#exclude-sensitive-files) propose un exemple prêt à coller. Si votre projet contient un fichier `.claudeignore`, celui-ci n'a aucun effet ; déplacez donc ses entrées dans des règles `Read` deny.

372 384 

373Les règles `Edit` s'appliquent à tous les outils intégrés qui éditent les fichiers. Claude fait un effort raisonnable pour appliquer les règles `Read` à tous les outils intégrés qui lisent les fichiers comme Grep et Glob, aux mentions `@file` dans vos invites et à la sélection et au contexte de fichier ouvert qu'un [IDE](/docs/fr/vs-code#the-built-in-ide-mcp-server) connecté partage avec Claude.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.

374 386 

375Une règle de refus `Read` 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 là-bas. NotebookEdit n'est pas couvert, donc ajoutez une règle de refus `Edit` pour les chemins qu'aucun outil ne peut modifier. La vérification nécessite Claude Code v2.1.208 ou ultérieur sur les éditions, et v2.1.228 ou ultérieur sur les écritures.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.

376 388 

377Claude Code vérifie les autorisations de fichier uniquement par rapport aux règles `Edit(path)` et `Read(path)`. Si vous écrivez une règle de chemin pour `Write`, `NotebookEdit`, `Glob` ou l'outil hérité `MultiEdit` à la place, Claude Code accepte la règle mais ne la consulte jamais, et [avertit 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'avertit pas à propos d'une règle de nom d'outil sans chemin, telle qu'une règle de refus pour `Write` ; elle correspond à cette règle au niveau de l'outil partout. Nécessite Claude Code v2.1.210 ou ultérieur.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.

378 390 

379<Warning>391<Warning>

380 Les règles de refus Read et Edit s'appliquent aux outils de fichier intégrés de Claude, aux commandes de fichier que Claude Code reconnaît dans Bash, telles que `cat`, `head`, `tail`, `sed` et `tee`, et aux cibles des [redirections](#redirections) Bash telles que `> file` et `< file`. Elles ne s'appliquent pas à une commande qui lit les fichiers sans les nommer, telle que `grep -r pattern .` exécutée à partir du répertoire qui contient le fichier, ou aux sous-processus arbitraires qui lisent ou écrivent des fichiers indirectement, comme un script Python ou Node qui ouvre des fichiers lui-même. Pour une application au niveau du système d'exploitation qui bloque tous les processus d'accéder à un chemin, [activez le sandbox](/docs/fr/sandboxing).392 Les règles Read et Edit deny s'appliquent aux outils de fichiers intégrés de Claude, aux commandes de fichiers que Claude Code reconnaît dans Bash, comme `cat`, `head`, `tail`, `sed` et `tee`, et aux cibles des [redirections](#redirections) Bash comme `> file` et `< file`. Elles ne s'appliquent pas à une commande qui lit des fichiers sans les nommer, comme `grep -r pattern .` exécuté depuis le répertoire qui contient le fichier, ni aux sous-processus arbitraires qui lisent ou écrivent des fichiers indirectement, comme un script Python ou Node qui ouvre lui-même des fichiers. Pour une application au niveau du système d'exploitation qui empêche tous les processus d'accéder à un chemin, [activez le sandbox](/docs/fr/sandboxing).

381</Warning>393</Warning>

382 394 

383Les règles Read et Edit utilisent toutes deux la syntaxe de modèle [gitignore](https://git-scm.com/docs/gitignore) avec quatre types de modèles distincts ; pour les modèles de répertoire à segment unique, la profondeur de correspondance dépend également du type de règle, décrit plus loin dans cette section :395Les règles Read et Edit utilisent toutes deux la syntaxe de motifs [gitignore](https://git-scm.com/docs/gitignore) avec quatre types de motifs distincts ; pour les motifs de répertoire à un seul segment, la profondeur de correspondance dépend aussi du type de règle, comme décrit plus loin dans cette section :

384 396 

385| Modèle | Signification | Exemple | Correspond |397| Motif | Signification | Exemple | Correspond à |

386| - | - | - | - |398| - | - | - | - |

387| `//path` | Chemin absolu à partir de la racine du système de fichiers | `Read(//Users/alice/secrets/**)` | `/Users/alice/secrets/**` |399| `//path` | Chemin absolu depuis la racine du système de fichiers | `Read(//Users/alice/secrets/**)` | `/Users/alice/secrets/**` |

388| `~/path` | Chemin à partir du répertoire home | `Read(~/Documents/*.pdf)` | `/Users/alice/Documents/*.pdf` |400| `~/path` | Chemin depuis le répertoire personnel | `Read(~/Documents/*.pdf)` | `/Users/alice/Documents/*.pdf` |

389| `/path` | Chemin relatif à la source des paramètres | `Edit(/src/**/*.ts)` | `<répertoire de travail principal>/src/**/*.ts` dans les paramètres du projet |401| `/path` | Chemin relatif à la source des paramètres | `Edit(/src/**/*.ts)` | `<primary working directory>/src/**/*.ts` dans les paramètres du projet |

390| `path` ou `./path` | Chemin relatif au répertoire courant | `Read(*.env)` | `<cwd>/*.env` |402| `path` ou `./path` | Chemin relatif au répertoire actuel | `Read(*.env)` | `<cwd>/*.env` |

391 403 

392<Warning>404<Warning>

393 Un modèle comme `/Users/alice/file` n'est pas un chemin absolu. La barre oblique unique en début ancre à la source des paramètres, pas à la racine du système de fichiers. Utilisez `//Users/alice/file` pour les chemins absolus.405 Un motif comme `/Users/alice/file` n'est pas un chemin absolu. La barre oblique initiale unique ancre le motif à la source des paramètres, et non à la racine du système de fichiers. Utilisez `//Users/alice/file` pour les chemins absolus.

394</Warning>406</Warning>

395 407 

396Un modèle `/path` s'ancre à un répertoire associé à la source des paramètres qui le définit, donc la même règle correspond à des emplacements différents selon l'endroit où vous la placez :408Un motif `/path` est ancré à un répertoire associé à la source des paramètres qui le définit. La même règle correspond donc à des emplacements différents selon l'endroit où vous la placez :

397 409 

398| Règle définie dans | `/path` se résout à |410| Règle définie dans | `/path` est résolu en |

399| :- | :- |411| :- | :- |

400| Paramètres du projet à `.claude/settings.json` | `<répertoire de travail principal>/path` |412| Paramètres du projet dans `.claude/settings.json` | `<primary working directory>/path` |

401| Paramètres locaux à `.claude/settings.local.json` | `<répertoire de travail principal>/path` |413| Paramètres locaux dans `.claude/settings.local.json` | `<primary working directory>/path` |

402| Paramètres utilisateur à `~/.claude/settings.json` | `~/.claude/path` |414| Paramètres utilisateur dans `~/.claude/settings.json` | `~/.claude/path` |

403| Un fichier passé avec `--settings <file>` | `<répertoire du fichier>/path` |415| Un fichier passé avec `--settings <file>` | `<directory of file>/path` |

404| Drapeaux CLI ou règles de session | `<répertoire de travail principal>/path` |416| Flags CLI ou règles de session | `<primary working directory>/path` |

405 417 

406Une règle que vous ajoutez via `/permissions` suit la ligne pour le fichier de paramètres dans lequel vous l'enregistrez.418Une règle que vous ajoutez via `/permissions` suit la ligne correspondant au fichier de paramètres dans lequel vous l'enregistrez.

407 419 

408Les règles de paramètres locaux s'ancrent au [répertoire de travail principal](#working-directories) de la session, pas à la racine du référentiel où Claude Code [stocke le fichier](#permission-system) en v2.1.211 et ultérieur. Dans une session démarrée à la racine du référentiel, les deux répertoires sont les mêmes ; dans une session [worktree](/docs/fr/worktrees), une règle partagée telle que `Edit(/src/**)` correspond au répertoire `src/` propre de ce worktree.420À partir de la v2.1.211, les règles des paramètres locaux sont ancrées au [répertoire de travail principal](#working-directories) de la session, et non à la racine du dépôt où Claude Code [stocke le fichier](#permission-system). Dans une session démarrée à la racine du dépôt, les deux répertoires sont identiques ; dans une session de [worktree](/docs/fr/worktrees), une règle partagée comme `Edit(/src/**)` correspond au répertoire `src/` propre à ce worktree.

409 421 

410Une règle de refus telle que `Read(/secrets/**)` dans les paramètres utilisateur bloque `~/.claude/secrets/**`, pas un répertoire `secrets` dans votre projet. Pour écrire une règle dans les paramètres utilisateur qui s'applique à l'intérieur de chaque projet, utilisez plutôt un chemin absolu `//` ou un chemin relatif à home `~/`.422Une règle deny comme `Read(/secrets/**)` dans les paramètres utilisateur bloque `~/.claude/secrets/**`, et non un répertoire `secrets` de votre projet. Pour écrire dans les paramètres utilisateur une règle qui s'applique dans chaque projet, utilisez plutôt un chemin absolu `//` ou un chemin relatif au répertoire personnel `~/`.

411 423 

412Sur Windows, les chemins sont normalisés en forme POSIX avant la correspondance. `C:\Users\alice` devient `/c/Users/alice`, donc utilisez `//c/**/.env` pour correspondre aux fichiers `.env` n'importe où sur ce lecteur. Pour correspondre sur tous les lecteurs, utilisez `//**/.env`.424Sous Windows, les chemins sont normalisés au format POSIX avant la correspondance. `C:\Users\alice` devient `/c/Users/alice` ; utilisez donc `//c/**/.env` pour faire correspondre les fichiers `.env` n'importe où sur ce lecteur. Pour faire correspondre sur tous les lecteurs, utilisez `//**/.env`.

413 425 

414Exemples :426Exemples :

415 427 

416* `Edit(/docs/**)` : édite dans `<répertoire de travail principal>/docs/`, pas `/docs/` ou `<répertoire de travail principal>/.claude/docs/`428* `Edit(/docs/**)` : modifications dans `<primary working directory>/docs/`, et non dans `/docs/` ou `<primary working directory>/.claude/docs/`

417* `Read(~/.zshrc)` : lit le `.zshrc` de votre répertoire home429* `Read(~/.zshrc)` : lit le fichier `.zshrc` de votre répertoire personnel

418* `Edit(//tmp/scratch.txt)` : édite le chemin absolu `/tmp/scratch.txt`430* `Edit(//tmp/scratch.txt)` : modifie le chemin absolu `/tmp/scratch.txt`

419* `Read(src/**)` : en tant que règle d'autorisation, lit à partir de `<répertoire courant>/src/` uniquement ; en tant que règle de refus ou de demande, correspond à un répertoire `src` à n'importe quelle profondeur sous le répertoire courant431* `Read(src/**)` : en tant que règle allow, lit uniquement depuis `<current-directory>/src/` ; en tant que règle deny ou ask, correspond à un répertoire `src` à n'importe quelle profondeur sous le répertoire actuel

420 432 

421Une règle ne correspond qu'aux fichiers sous son ancrage ; dans cette limite, la profondeur de correspondance dépend de la forme du modèle et, pour les modèles de répertoire à segment unique, du type de règle, décrit ci-dessous. Les noms de fichiers nus suivent la sémantique gitignore et correspondent à n'importe quelle profondeur, donc `Read(.env)` et `Read(**/.env)` sont équivalents :433Une règle ne correspond qu'aux fichiers situés sous son ancre ; dans cette limite, la profondeur de correspondance dépend de la forme du motif et, pour les motifs de répertoire à un seul segment, du type de règle, comme décrit ci-dessous. Les noms de fichiers nus suivent la sémantique gitignore et correspondent à n'importe quelle profondeur, de sorte que `Read(.env)` et `Read(**/.env)` sont équivalents :

422 434 

423| Règle de refus | Bloque | Ne bloque pas |435| Règle deny | Bloque | Ne bloque pas |

424| - | - | - |436| - | - | - |

425| `Read(.env)` ou `Read(**/.env)` | tout `.env` au ou sous le répertoire courant | `.env` dans un répertoire parent ou un autre projet |437| `Read(.env)` ou `Read(**/.env)` | tout fichier `.env` dans ou sous le répertoire actuel | un `.env` dans un répertoire parent ou dans un autre projet |

426| `Read(//**/.env)` | tout `.env` n'importe où sur le système de fichiers | rien ; la règle est ancrée à la racine du système de fichiers |438| `Read(//**/.env)` | tout fichier `.env` n'importe où sur le système de fichiers | rien ; la règle est ancrée à la racine du système de fichiers |

427 439 

428Un modèle relatif avec un segment de répertoire unique, tel que `src/**`, correspond à des profondeurs différentes selon le type de règle :440Un motif relatif comportant un seul segment de répertoire, comme `src/**`, correspond à des profondeurs différentes selon le type de règle :

429 441 

430* **Règles d'autorisation** : `Edit(src/**)` correspond uniquement à `<cwd>/src` et aux fichiers sous celui-ci. Pour autoriser un nom de répertoire à n'importe quelle profondeur, écrivez `Edit(**/src/**)`.442* **Règles allow** : `Edit(src/**)` correspond uniquement à `<cwd>/src` et aux fichiers qu'il contient. Pour autoriser un nom de répertoire à n'importe quelle profondeur, écrivez `Edit(**/src/**)`.

431* **Règles de refus et de demande** : `Read(secrets/**)` correspond à un répertoire nommé `secrets` à n'importe quelle profondeur sous le répertoire courant, donc la règle s'applique également aux copies imbriquées.443* **Règles deny et ask** : `Read(secrets/**)` correspond à un répertoire nommé `secrets` à n'importe quelle profondeur sous le répertoire actuel, de sorte que la règle s'applique aussi aux copies imbriquées.

432 444 

433Chaque autre forme de modèle correspond à la même profondeur dans chaque type de règle : `Edit(/src/**)` et `Edit(src/components/**)` correspondent uniquement à leur emplacement ancré, tandis que `Edit(**/src/**)` correspond à n'importe quelle profondeur.445Toutes les autres formes de motifs correspondent à la même profondeur quel que soit le type de règle : `Edit(/src/**)` et `Edit(src/components/**)` ne correspondent qu'à leur emplacement ancré, tandis que `Edit(**/src/**)` correspond à n'importe quelle profondeur.

434 446 

435L'exemple suivant montre chaque forme de modèle par rapport à un projet avec un répertoire `src/` de niveau supérieur et une copie imbriquée sous `vendor/` :447L'exemple suivant montre chaque forme de motif appliquée à un projet comportant un répertoire `src/` de premier niveau et une copie imbriquée sous `vendor/` :

436 448 

437```text theme={null}449```text theme={null}

438<répertoire courant>/450<current-directory>/

439├── src/451├── src/

440│ └── app.ts452│ └── app.ts

441└── vendor/453└── vendor/


446 458 

447| Règle | Correspond à `src/app.ts` | Correspond à `vendor/pkg/src/lib.js` |459| Règle | Correspond à `src/app.ts` | Correspond à `vendor/pkg/src/lib.js` |

448| :- | :- | :- |460| :- | :- | :- |

449| `Edit(src/**)` en tant que règle d'autorisation | Oui | Non |461| `Edit(src/**)` en tant que règle allow | Oui | Non |

450| `Edit(src/**)` en tant que règle de refus ou de demande | Oui | Oui |462| `Edit(src/**)` en tant que règle deny ou ask | Oui | Oui |

451| `Edit(/src/**)` dans n'importe quel type de règle | Oui | Non |463| `Edit(/src/**)` dans tout type de règle | Oui | Non |

452| `Edit(**/src/**)` dans n'importe quel type de règle | Oui | Oui |464| `Edit(**/src/**)` dans tout type de règle | Oui | Oui |

453 465 

454<Note>466<Note>

455 Dans les modèles gitignore, `*` correspond dans un seul segment de chemin et peut apparaître à n'importe quelle position du modèle, tandis que `**` correspond sur les répertoires.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.

456</Note>468</Note>

457 469 

458Lorsque vous approuvez un chemin de fichier avec « Oui, ne pas demander à nouveau », Claude Code échappe les caractères de modèle gitignore dans ce chemin, tels que `[`, `]` et `*`, afin que la règle générée ne corresponde 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 non échappé, donc une règle générée pour un répertoire nommé `[2024-06] Reports` pouvait échouer à correspondre à son propre chemin ou correspondre à des répertoires frères non intentionnels.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.

459 471 

460Vous n'avez pas besoin d'échapper les parenthèses dans un chemin, donc `Edit(./Finance (2024)/**)` correspond au dossier `Finance (2024)` tel qu'épelé.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.

461 473 

462Une règle de refus ou de demande dont le chemin n'est pas utilisable comme modèle gitignore protège toujours ce chemin exact. Une règle d'autorisation avec un modèle inutilisable n'approuve rien.474Une règle deny ou ask dont le chemin n'est pas utilisable comme motif gitignore protège tout de même ce chemin exact. Une règle allow avec un motif inutilisable n'approuve rien.

463 475 

464Une règle de refus ou de demande dont le chemin commence par `!` est une négation gitignore. Elle découpe les chemins qu'elle correspond hors des règles `path` ou `./path` énumérées avant elle. Dans la liste `deny` d'un fichier de paramètres, `Read(*.env)` suivi de `Read(!sample.env)` bloque chaque fichier dont le nom se termine par `.env` à n'importe quelle profondeur, sauf les fichiers nommés `sample.env`. Une règle `!` énumérée en premier ne découpe rien.476Un motif deny ou ask qui commence par `!` est une négation gitignore. Il exclut les chemins auxquels il correspond des règles `path` ou `./path` listées avant lui. Dans la liste `deny` d'un même fichier de paramètres, `Read(*.env)` suivi de `Read(!sample.env)` bloque tout fichier dont le nom se termine par `.env` à n'importe quelle profondeur, sauf les fichiers nommés `sample.env`. Une règle `!` listée en premier n'exclut rien.

465 477 

466La découpe ne s'étend qu'aux règles de la même source. Un `Read(!.env)` dans les paramètres du projet ou dans `--disallowedTools` n'annule pas un refus `Read(./.env)` des paramètres gérés ou de tout autre fichier de paramètres.478L'exclusion ne concerne que les règles provenant de la même source. Un `Read(!.env)` dans les paramètres du projet ou dans `--disallowedTools` n'annule pas une règle deny `Read(./.env)` provenant des paramètres gérés ou de tout autre fichier de paramètres.

467 479 

468Deux limites réduisent ce qu'un modèle `!` peut découper :480Deux limites restreignent ce qu'un motif `!` peut exclure :

469 481 

470* Claude Code lit un modèle `!` relatif au répertoire courant même lorsque `/`, `~/` ou `//` suit le `!`, donc le modèle ne peut pas atteindre une règle ancrée avec l'un de ces préfixes. `Read(!~/notes/public/**)` ne découpe rien hors de `Read(~/notes/**)`.482* Claude Code interprète un motif `!` par rapport au répertoire actuel même lorsque `/`, `~/` ou `//` suit le `!`, de sorte que le motif ne peut pas atteindre une règle ancrée avec l'un de ces préfixes. `Read(!~/notes/public/**)` n'exclut rien de `Read(~/notes/**)`.

471* Une découpe ne peut pas rouvrir un fichier à l'intérieur d'un répertoire qu'une règle bloque dans son ensemble. Avec `Read(secrets/**)` et `Read(!secrets/public/**)`, Claude Code bloque toujours `secrets/public` avec le reste de `secrets`.483* Une exclusion ne peut pas rouvrir un fichier situé dans un répertoire qu'une règle bloque dans son ensemble. Avec `Read(secrets/**)` et `Read(!secrets/public/**)`, Claude Code bloque toujours `secrets/public` ainsi que le reste de `secrets`.

472 484 

473<h4 id="symlinks">485<h4 id="symlinks">

474 Liens symboliques486 Liens symboliques

475</h4>487</h4>

476 488 

477Lorsqu'un chemin de fichier que Claude demande passe par un lien symbolique, la vérification d'autorisation couvre deux chemins : celui que Claude a demandé et le fichier vers lequel il se résout. Cela s'applique aux liens symboliques sur macOS, Linux et Windows, et aux jonctions de répertoires sur Windows.489Lorsqu'un chemin de fichier demandé par Claude passe par un lien symbolique, la vérification des permissions porte sur deux chemins : celui que Claude a demandé et le fichier vers lequel il est résolu. Cela s'applique aux liens symboliques sous macOS, Linux et Windows, ainsi qu'aux jonctions de répertoires sous Windows.

478 490 

479<h5 id="how-rules-match-a-symlinked-path">491<h5 id="how-rules-match-a-symlinked-path">

480 Comment les règles correspondent à un chemin lié symboliquement492 Comment les règles correspondent à un chemin passant par un lien symbolique

481</h5>493</h5>

482 494 

483Les règles d'autorisation et de refus traitent le chemin demandé et le fichier vers lequel il se résout différemment :495Les règles allow et deny traitent différemment le chemin demandé et le fichier vers lequel il est résolu :

484 496 

485* **Règles d'autorisation** : s'appliquent uniquement lorsque le chemin demandé et le fichier vers lequel il se résout correspondent tous les deux. Une lecture via un lien symbolique à l'intérieur d'un répertoire autorisé qui pointe vers l'extérieur ne correspond pas à la règle.497* **Règles allow** : ne s'appliquent que lorsque le chemin demandé et le fichier vers lequel il est résolu correspondent tous les deux. Une lecture via un lien symbolique situé dans un répertoire autorisé et pointant en dehors de celui-ci ne correspond pas à la règle.

486* **Règles de refus** : s'appliquent lorsque le chemin demandé ou le fichier vers lequel il se résout correspond. Un lien symbolique qui pointe vers un fichier refusé est lui-même refusé. Par exemple, avec `Read(./project/**)` autorisé et `Read(~/.ssh/**)` refusé, un lien symbolique à `./project/key` pointant vers `~/.ssh/id_rsa` est bloqué : la cible échoue à la règle d'autorisation et correspond à la règle de refus.498* **Règles deny** : s'appliquent lorsque le chemin demandé ou le fichier vers lequel il est résolu correspond. Un lien symbolique qui pointe vers un fichier refusé est lui-même refusé. Par exemple, avec `Read(./project/**)` autorisé et `Read(~/.ssh/**)` refusé, un lien symbolique situé à `./project/key` et pointant vers `~/.ssh/id_rsa` est bloqué : la cible ne satisfait pas la règle allow et correspond à la règle deny.

487 499 

488Sur macOS et Linux, une règle de refus ou de demande écrite via un répertoire lié symboliquement avec un modèle `//`, `~/` ou `/` s'applique également à l'emplacement réel du répertoire. Par exemple, sur macOS, où `/etc` se résout à `/private/etc`, `Read(//etc/**)` bloque également `/private/etc/hosts`. Avant la v2.1.268, une règle de refus ou de demande écrite via un répertoire lié symboliquement ne s'appliquait pas à un chemin donné par son emplacement réel.500Sous macOS et Linux, une règle deny ou ask écrite via un répertoire qui est un lien symbolique avec un motif `//`, `~/` ou `/` s'applique également à l'emplacement réel du répertoire. Par exemple, sous macOS, où `/etc` est résolu en `/private/etc`, `Read(//etc/**)` bloque aussi `/private/etc/hosts`. Avant la v2.1.268, une règle deny ou ask écrite via un répertoire qui est un lien symbolique ne s'appliquait pas à un chemin indiqué par son emplacement réel.

489 501 

490Grep et Glob recherchent le répertoire auquel l'argument `path` se résout. Claude Code applique les règles de refus `Read` à ce répertoire.502Grep et Glob effectuent leur recherche dans le répertoire vers lequel l'argument `path` est résolu. Claude Code applique les règles `Read` deny à ce répertoire.

491 503 

492<h5 id="writes-through-a-symlink">504<h5 id="writes-through-a-symlink">

493 Écritures via un lien symbolique505 Écritures via un lien symbolique

494</h5>506</h5>

495 507 

496Si le chemin que Claude demande d'éditer ou d'écrire est lui-même un lien symbolique, les outils Edit et Write [refusent l'écriture et dirigent Claude vers la cible du lien](/docs/fr/errors#refusing-after-a-symlink-changed).508Si le chemin que Claude demande de modifier ou d'écrire est lui-même un lien symbolique, les outils Edit et Write [refusent l'écriture et redirigent Claude vers la cible du lien](/docs/fr/errors#refusing-after-a-symlink-changed).

497 509 

498Une écriture peut toujours passer par un lien symbolique lorsqu'un répertoire sur le chemin du fichier est un lien symbolique, ou lorsqu'une commande Bash ou PowerShell fait l'écriture. Pour ces écritures, ce qui se passe dépend de l'endroit où le fichier vers lequel l'écriture se résout se situe par rapport à vos [répertoires de travail](#working-directories) et aux [chemins protégés](/docs/fr/permission-modes#protected-paths) :510Une écriture peut tout de même passer par un lien symbolique lorsqu'un répertoire sur le chemin du fichier est un lien symbolique, ou lorsqu'une commande Bash ou PowerShell effectue l'écriture. Pour ces écritures, le comportement dépend de l'emplacement du fichier vers lequel l'écriture est résolue par rapport à vos [répertoires de travail](#working-directories) et aux [chemins protégés](/docs/fr/permission-modes#protected-paths) :

499 511 

500* **Se résout en dehors des répertoires de travail** : lorsque le chemin demandé est à l'intérieur de vos répertoires de travail et que le fichier vers lequel il se résout ne l'est pas, l'écriture n'est pas approuvée automatiquement en [mode `acceptEdits`](/docs/fr/permission-modes#auto-approve-file-edits-with-acceptedits-mode). En [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), sauf si une règle d'autorisation approuve l'écriture, vous êtes invité à la place du classificateur qui décide. L'invite nomme le chemin vers lequel l'écriture se résout.512* **Résolution en dehors des répertoires de travail** : lorsque le chemin demandé se trouve dans vos répertoires de travail et que le fichier vers lequel il est résolu n'y est pas, l'écriture n'est pas approuvée automatiquement en [mode `acceptEdits`](/docs/fr/permission-modes#auto-approve-file-edits-with-acceptedits-mode). En [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), sauf si une règle allow approuve l'écriture, une demande vous est présentée au lieu de laisser le classifieur décider. La demande indique le chemin vers lequel l'écriture est résolue.

501* **Se résout à un chemin protégé que le chemin demandé ne nomme pas** : le [tableau des chemins protégés](/docs/fr/permission-modes#protected-paths) donne le résultat pour chaque mode d'autorisation, sauf que là où le tableau route l'écriture vers le classificateur, cette écriture vous invite à la place.513* **Résolution vers un chemin protégé que le chemin demandé ne désigne pas** : le [tableau des chemins protégés](/docs/fr/permission-modes#protected-paths) indique le résultat pour chaque mode de permission, sauf que là où le tableau confie l'écriture au classifieur, cette écriture vous est soumise sous forme de demande.

502 514 

503<h5 id="paths-that-can’t-be-resolved-or-that-change">515<h5 id="paths-that-can’t-be-resolved-or-that-change">

504 Chemins qui ne peuvent pas être résolus ou qui changent516 Chemins impossibles à résoudre ou qui changent

505</h5>517</h5>

506 518 

507Lorsque Claude Code ne peut pas déterminer où un chemin mène sur le disque, par exemple parce que les liens symboliques sur celui-ci forment une boucle, les outils Read, Edit et Write [refusent l'opération](/docs/fr/errors#refusing-after-a-symlink-changed).519Lorsque Claude Code ne peut pas déterminer où un chemin mène sur le disque, par exemple parce que des liens symboliques sur ce chemin forment une boucle, les outils Read, Edit et Write [refusent l'opération](/docs/fr/errors#refusing-after-a-symlink-changed).

520 

521Lorsqu'un outil ouvre ensuite le fichier approuvé, il [vérifie que le chemin est toujours résolu vers l'emplacement approuvé par la vérification des permissions](/docs/fr/errors#refusing-after-a-symlink-changed).

522 

523<h4 id="network-paths">

524 Chemins réseau

525</h4>

526 

527Lorsque les outils de lecture de fichiers de Claude, comme Read, Grep et Glob, lisent depuis un chemin réseau, la lecture fait l'objet de sa propre vérification de permission. Un chemin réseau est un chemin qui peut atteindre un autre ordinateur : sous Windows, un chemin UNC comme `\\server\share\file`, et sous macOS et Linux, un chemin d'automontage `/net` comme `/net/fileserver/notes.txt`. La résolution d'un tel chemin peut contacter l'hôte qu'il désigne et, sous Windows, ce contact peut envoyer vos identifiants à l'hôte. Les commandes shell ont leur propre vérification : en mode Manual, une commande Bash ou PowerShell en lecture seule dont les arguments incluent un chemin UNC [déclenche toujours une demande sous Windows](#read-only-commands).

528 

529À partir de Claude Code v2.1.292, aucun des éléments suivants ne supprime la demande :

530 

531* **Règles allow** : une règle ne pré-approuve pas la lecture, y compris une règle pour l'outil entier, comme `Read`

532* **Hooks PreToolUse** : un [hook](#extend-permissions-with-hooks) qui renvoie `"allow"` ne contourne pas la demande

533* **Mode auto** : la demande vous est présentée, et le [classifieur](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) ne décide pas de la lecture

534 

535En mode `dontAsk`, Claude Code refuse la lecture au lieu de vous la demander. En mode `bypassPermissions`, ainsi que dans les sessions de terminal interactives en mode plan où [bypass permissions](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) est disponible, la lecture s'exécute sans cette demande.

536 

537Pour lire des fichiers sur un partage réseau sans cette demande, donnez d'abord au partage un chemin local :

508 538 

509Lorsqu'un outil ouvre ensuite le fichier approuvé, il [confirme que le chemin se résout toujours à l'emplacement que la vérification d'autorisation a approuvé](/docs/fr/errors#refusing-after-a-symlink-changed).539* **Windows** : mappez le partage à une lettre de lecteur et passez ce lecteur avec `--add-dir` lorsque vous lancez Claude Code, comme décrit dans [Répertoires de travail](#working-directories)

540* **macOS et Linux** : montez le partage sur un chemin local, comme un répertoire sous `/mnt` ou `/Volumes`, et lisez les fichiers depuis cet emplacement, comme décrit dans [Working directory is a network path](/docs/fr/errors#working-directory-is-a-network-path)

510 541 

511<h3 id="webfetch">542<h3 id="webfetch">

512 WebFetch543 WebFetch

513</h3>544</h3>

514 545 

515Les règles WebFetch utilisent un préfixe `domain:` et correspondent au nom d'hôte de l'URL demandée. La correspondance est insensible à la casse, prend en charge les caractères génériques `*` et supprime un point final des deux côtés de la règle et du nom d'hôte afin que `example.com.` et `example.com` soient traités de la même manière.546Les règles WebFetch utilisent un préfixe `domain:` et sont comparées au nom d'hôte de l'URL demandée. La correspondance ne tient pas compte de la casse, prend en charge les caractères génériques `*` et supprime un `.` final à la fois dans la règle et dans le nom d'hôte, de sorte que `example.com.` et `example.com` sont traités de la même façon.

516 547 

517* `WebFetch(domain:example.com)` correspond aux demandes vers `example.com`548* `WebFetch(domain:example.com)` correspond uniquement aux requêtes vers `example.com`. Pour couvrir aussi les sous-domaines comme `api.example.com`, ajoutez une règle `WebFetch(domain:*.example.com)`

518* `WebFetch(domain:*.example.com)` correspond à tout sous-domaine à n'importe quelle profondeur, comme `api.example.com` ou `a.b.example.com`, mais pas à `example.com` lui-même549* `WebFetch(domain:*.example.com)` correspond à tout sous-domaine, quelle que soit sa profondeur, comme `api.example.com` ou `a.b.example.com`, mais pas à `example.com` lui-même

519* `WebFetch(domain:*)` correspond à chaque domaine. Ce n'est pas la même chose qu'une règle `WebFetch` nu ; voir [Autoriser ou refuser chaque fetch](#allow-or-deny-every-fetch)550* `WebFetch(domain:*)` correspond à tous les domaines. Ce n'est pas l'équivalent d'une règle `WebFetch` nue ; consultez [Autoriser ou refuser toutes les récupérations](#allow-or-deny-every-fetch)

520 551 

521À n'importe quelle position autre qu'un `*.` initial ou un `*` nu, le caractère générique correspond uniquement au texte entre deux points. `WebFetch(domain:example.*)` correspond à `example.org`, où `*` devient `org`, mais pas à `example.evil.com`, où `*` devrait devenir `evil.com` et traverser un point. Cela empêche un caractère générique de fin de correspondre à des domaines qu'un attaquant pourrait enregistrer.552À toute position autre qu'un `*.` initial ou un `*` seul, le caractère générique ne correspond qu'au texte situé entre deux points. `WebFetch(domain:example.*)` correspond à `example.org`, où `*` devient `org`, mais pas à `example.evil.com`, où `*` devrait devenir `evil.com` et franchir un point. Cela empêche un caractère générique final de correspondre à des domaines qu'un attaquant pourrait enregistrer.

522 553 

523Les caractères génériques dans les règles `WebFetch` nécessitent Claude Code v2.1.172 ou ultérieur pour correspondre aux fetches.554Les caractères génériques dans les règles `WebFetch` nécessitent Claude Code v2.1.172 ou ultérieur pour correspondre aux récupérations.

524 555 

525<h4 id="allow-or-deny-every-fetch">556<h4 id="allow-or-deny-every-fetch">

526 Autoriser ou refuser chaque fetch557 Autoriser ou refuser toutes les récupérations

527</h4>558</h4>

528 559 

529Une règle `WebFetch` nu est le nom de l'outil sans partie `domain:`, telle que `"deny": ["WebFetch"]`. À la fois elle et `WebFetch(domain:*)` couvrent chaque URL, mais Claude Code les applique différemment, et seule la forme `domain:` ajoute également son domaine à la [liste de domaines autorisés ou refusés](/docs/fr/sandboxing#network-isolation) du sandbox. Cette section énumère les formes de caractères génériques que le sandbox honore et la version qui a ajouté le `*` nu.560Une règle `WebFetch` nue est le nom de l'outil sans partie `domain:`, comme `"deny": ["WebFetch"]`. Elle et `WebFetch(domain:*)` couvrent toutes les URL, mais Claude Code les applique différemment, et seule la forme `domain:` ajoute aussi son domaine à la [liste des domaines autorisés ou refusés](/docs/fr/sandboxing#network-isolation) du sandbox. Cette section liste les formes de caractères génériques prises en compte par le sandbox et la version qui a ajouté le `*` seul.

530 561 

531Chaque ligne montre ce qu'une règle fait dans la liste `allow` et dans la liste `deny` :562Chaque ligne indique l'effet d'une règle dans la liste `allow` et dans la liste `deny` :

532 563 

533| Règle | Dans `allow` | Dans `deny` |564| Règle | Dans `allow` | Dans `deny` |

534| :- | :- | :- |565| :- | :- | :- |

535| `WebFetch` | Claude fetch sans vous inviter. Ne change pas quels hôtes les commandes en sandbox peuvent atteindre. | Claude Code supprime l'outil `WebFetch`, donc Claude ne peut pas fetch du tout. Ne change pas quels hôtes les commandes en sandbox peuvent atteindre. |566| `WebFetch` | Claude effectue les récupérations sans vous demander de permission. Ne modifie pas les hôtes que les commandes en sandbox peuvent atteindre. | Claude Code retire l'outil `WebFetch`, de sorte que Claude ne peut rien récupérer. Ne modifie pas les hôtes que les commandes en sandbox peuvent atteindre. |

536| `WebFetch(domain:*)` | Claude fetch sans vous inviter, et les commandes en sandbox peuvent atteindre n'importe quel hôte. | Claude Code garde l'outil et refuse chaque fetch, et les commandes en sandbox ne peuvent atteindre aucun hôte. |567| `WebFetch(domain:*)` | Claude effectue les récupérations sans vous demander de permission, et les commandes en sandbox peuvent atteindre n'importe quel hôte. | Claude Code conserve l'outil et refuse chaque récupération, et les commandes en sandbox ne peuvent atteindre aucun hôte. |

537 568 

538Les deux formes diffèrent également sur les lectures des [artifacts](/docs/fr/artifacts), les pages que l'outil Artifact publie sur claude.ai. Une règle de refus ou de demande `WebFetch` nu ne s'applique pas à ces lectures. Une règle `domain:` couvrant `claude.ai` ou l'hôte de contenu `*.claudeusercontent.com`, telle que `WebFetch(domain:claude.ai)` ou `WebFetch(domain:*)`, refuse chaque lecture ou demande avant celle-ci. Une règle [`Artifact`](/docs/fr/artifacts#disable-artifacts) fait la même chose.569Les deux formes diffèrent également pour les lectures d'[artefacts](/docs/fr/artifacts), les pages que l'outil Artifact publie sur claude.ai. Une règle `WebFetch` deny ou ask nue ne s'applique pas à ces lectures. Une règle `domain:` couvrant `claude.ai` ou l'hôte de contenu `*.claudeusercontent.com`, comme `WebFetch(domain:claude.ai)` ou `WebFetch(domain:*)`, refuse chaque lecture ou déclenche une demande avant celle-ci. Une [règle `Artifact`](/docs/fr/artifacts#disable-artifacts) a le même effet.

539 570 

540Lorsqu'une règle bloque une lecture, le refus nomme la règle. Avant la v2.1.268, une règle de refus `WebFetch` nu bloquait chaque lecture d'artifact, et une règle de demande nu demandait avant chacune.571Lorsqu'une règle bloque une lecture, le refus indique le nom de la règle. Avant la v2.1.268, une règle `WebFetch` deny nue bloquait toutes les lectures d'artefacts, et une règle ask nue déclenchait une demande avant chacune d'elles.

541 572 

542Pour laisser Claude fetch librement tout en gardant la liste d'autorisation du sandbox telle qu'elle est, utilisez la forme nu. Ce `settings.json` fait cela :573Pour laisser Claude effectuer des récupérations librement tout en conservant la liste d'autorisation du sandbox telle quelle, utilisez la forme nue. Ce `settings.json` fait exactement cela :

543 574 

544```json theme={null}575```json theme={null}

545{576{


549}580}

550```581```

551 582 

552Lorsque vous demandez à Claude de fetch une page, il fetch sans invite. Lorsque vous lui demandez d'exécuter un `curl` [en sandbox](/docs/fr/sandboxing) contre un hôte en dehors de la liste d'autorisation du sandbox, Claude Code vous invite toujours pour cet hôte, car la règle nu n'a pas ajouté l'hôte à la liste d'autorisation.583Lorsque vous demandez à Claude de récupérer une page, il le fait sans demande de permission. Lorsque vous lui demandez d'exécuter un `curl` [en sandbox](/docs/fr/sandboxing) vers un hôte qui ne figure pas dans la liste d'autorisation du sandbox, Claude Code vous demande toujours une permission pour cet hôte, car la règle nue n'a pas ajouté l'hôte à la liste d'autorisation.

553 584 

554En [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), Claude nomme plutôt l'hôte dans les [domaines autorisés par commande](/docs/fr/sandboxing#per-command-allowed-domains-in-auto-mode) de la commande pour que le classificateur examine.585En [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode), Claude indique plutôt l'hôte dans les [domaines autorisés par commande](/docs/fr/sandboxing#per-command-allowed-domains-in-auto-mode) pour que le classifieur l'examine.

555 586 

556<h3 id="mcp">587<h3 id="mcp">

557 MCP588 MCP

558</h3>589</h3>

559 590 

560Les règles MCP utilisent le nom du serveur tel que configuré dans Claude Code, optionnellement suivi du nom d'un outil de ce serveur.591Les règles MCP utilisent le nom du serveur tel que configuré dans Claude Code, éventuellement suivi du nom d'un outil de ce serveur.

561 592 

562* `mcp__puppeteer` correspond à tout outil fourni par le serveur `puppeteer`593* `mcp__puppeteer` correspond à tout outil fourni par le serveur `puppeteer`

563* `mcp__puppeteer__*` utilise la syntaxe de caractère générique et correspond également à tous les outils du serveur `puppeteer`594* `mcp__puppeteer__*` utilise la syntaxe des caractères génériques et correspond également à tous les outils du serveur `puppeteer`

564* `mcp__puppeteer__puppeteer_navigate` correspond à l'outil `puppeteer_navigate` fourni par le serveur `puppeteer`595* `mcp__puppeteer__puppeteer_navigate` correspond à l'outil `puppeteer_navigate` fourni par le serveur `puppeteer`

565 596 

566Si votre organisation a défini un outil de connecteur [claude.ai](/docs/fr/mcp#organization-controls-on-connector-tools) sur `ask` et que ce paramètre atteint Claude Code dans votre session, les règles d'autorisation pour cet outil ne prennent pas effet : Claude Code demande à chaque appel, même en modes `auto` et `bypassPermissions`. En mode `dontAsk`, qui ne demande jamais, Claude Code refuse l'appel à la place. Les outils de connecteur que Claude Code récupère lui-même apparaissent comme `mcp__claude_ai_<server>__<tool>`.597Si votre organisation a défini un outil de [connecteur claude.ai](/docs/fr/mcp#organization-controls-on-connector-tools) sur `ask` et que ce paramètre parvient à Claude Code dans votre session, les règles allow pour cet outil ne prennent pas effet : Claude Code demande une permission à chaque appel, même dans les modes `auto` et `bypassPermissions`. En mode `dontAsk`, qui ne demande jamais de permission, Claude Code refuse plutôt l'appel. Les outils des connecteurs que Claude Code récupère lui-même apparaissent sous la forme `mcp__claude_ai_<server>__<tool>`.

567 598 

568Dans une session [Cowork](https://claude.com/docs/cowork/overview) dans l'application Claude Desktop, Claude exécute les commandes shell via l'outil `mcp__workspace__bash` de Cowork plutôt que l'outil `Bash` intégré, et Cowork fournit également `mcp__workspace__web_fetch` pour les web fetches. Claude Code applique également les règles de refus qui nomment l'outil entier `Bash` ou `WebFetch` à ces outils Cowork, donc une règle de refus `Bash` gérée empêche Claude d'exécuter des commandes shell dans Cowork. Lorsque Claude Code bloque un tel appel, le message nomme l'outil Cowork : `Permission to use mcp__workspace__bash has been denied.` Les règles d'autorisation ne se reportent pas : Claude Code n'applique jamais une règle d'autorisation `Bash` à `mcp__workspace__bash`.599Dans une session [Cowork](https://claude.com/docs/cowork/overview) de l'application Claude Desktop, Claude exécute les commandes shell via l'outil `mcp__workspace__bash` de Cowork plutôt que via l'outil intégré `Bash`, et Cowork fournit de même `mcp__workspace__web_fetch` pour les récupérations web. Claude Code applique aussi à ces outils Cowork les règles deny qui désignent l'outil `Bash` ou `WebFetch` dans son ensemble, de sorte qu'une règle deny `Bash` gérée empêche Claude d'exécuter des commandes shell dans Cowork. Lorsque Claude Code bloque un tel appel, le message indique l'outil Cowork : `Permission to use mcp__workspace__bash has been denied.` Les règles allow ne sont pas reportées : Claude Code n'applique jamais une règle allow `Bash` à `mcp__workspace__bash`.

569 600 

570<h3 id="agent-subagents">601<h3 id="agent-subagents">

571 Agent (subagents)602 Agent (sous-agents)

572</h3>603</h3>

573 604 

574Utilisez les règles `Agent(AgentName)` pour contrôler quels [subagents](/docs/fr/sub-agents) Claude peut utiliser :605Utilisez des règles `Agent(AgentName)` pour contrôler les [sous-agents](/docs/fr/sub-agents) que Claude peut utiliser :

575 606 

576* `Agent(Explore)` correspond au subagent Explore607* `Agent(Explore)` correspond au sous-agent Explore

577* `Agent(Plan)` correspond au subagent Plan608* `Agent(Plan)` correspond au sous-agent Plan

578* `Agent(my-custom-agent)` correspond à un subagent personnalisé nommé `my-custom-agent`609* `Agent(my-custom-agent)` correspond à un sous-agent personnalisé nommé `my-custom-agent`

579 610 

580Ajoutez ces règles au tableau `deny` dans vos paramètres ou utilisez l'indicateur CLI `--disallowedTools` pour désactiver des agents spécifiques. Pour désactiver l'agent Explore :611Ajoutez ces règles au tableau `deny` de vos paramètres ou utilisez le flag CLI `--disallowedTools` pour désactiver des agents spécifiques. Pour désactiver l'agent Explore :

581 612 

582```json theme={null}613```json theme={null}

583{614{


591 Cd622 Cd

592</h3>623</h3>

593 624 

594Les règles `Cd` contrôlent les répertoires vers lesquels la [commande `/cd`](/docs/fr/commands) peut déplacer la session. `Cd` n'est pas un outil invocable par le modèle : Claude ne peut pas l'appeler, et les règles s'appliquent uniquement lorsque vous exécutez `/cd` vous-même.625Les règles `Cd` contrôlent les répertoires vers lesquels la [commande `/cd`](/docs/fr/commands) peut déplacer la session. `Cd` n'est pas un outil que le modèle peut invoquer : Claude ne peut pas l'appeler, et les règles ne s'appliquent que lorsque vous exécutez `/cd` vous-même.

595 626 

596Une règle de refus `Cd` nu désactive `/cd` entièrement. Une règle de refus `Cd(<path-pattern>)` bloque les cibles correspondantes. Les règles de refus vérifient chaque orthographe de la cible, y compris chaque saut de lien symbolique qu'elle résout, donc une règle écrite pour un chemin bloque également les cibles qui s'y résolvent.627Une règle `Cd` deny nue désactive entièrement `/cd`. Une règle deny `Cd(<path-pattern>)` bloque les cibles correspondantes. Les règles deny vérifient toutes les écritures possibles de la cible, y compris chaque étape de lien symbolique par laquelle elle est résolue, de sorte qu'une règle écrite pour un chemin bloque aussi les cibles qui sont résolues vers celui-ci.

597 628 

598L'ajout de toute règle d'autorisation `Cd` bascule `/cd` en mode liste blanche : le répertoire cible résolu doit correspondre à l'une de vos règles d'autorisation, ou `/cd` refuse. Sans règles `Cd` configurées, `/cd` conserve son comportement par défaut et vous invite à faire confiance à un répertoire inconnu.629L'ajout de toute règle `Cd` allow fait passer `/cd` en mode liste d'autorisation : le répertoire cible résolu doit correspondre à l'une de vos règles allow, sinon `/cd` refuse. Sans règle `Cd` configurée, `/cd` conserve son comportement par défaut et vous demande de faire confiance à un répertoire inconnu.

599 630 

600Les modèles de chemin partagent les ancrages `//`, `~/` et `/` des [règles Read et Edit](#read-and-edit), mais la correspondance est ancrée au chemin du répertoire entier plutôt qu'au style gitignore. `*` correspond à exactement un segment de chemin et `**` correspond sur les segments. Un `/**` de fin correspond également à sa racine nommée.631Les motifs de chemin partagent les ancres `//`, `~/` et `/` des [règles Read et Edit](#read-and-edit), mais la correspondance porte sur le chemin complet du répertoire plutôt que de suivre le style gitignore. `*` correspond exactement à un segment de chemin et `**` correspond à travers plusieurs segments. Un `/**` final correspond aussi à la racine qu'il nomme.

601 632 

602| Règle | Correspond | Ne correspond pas |633| Règle | Correspond à | Ne correspond pas à |

603| - | - | - |634| - | - | - |

604| `Cd(~/code/*)` | `~/code/app` | `~/code/app/src`, `~/code` |635| `Cd(~/code/*)` | `~/code/app` | `~/code/app/src`, `~/code` |

605| `Cd(~/code/**)` | `~/code` et tout répertoire sous celui-ci | répertoires en dehors de `~/code` |636| `Cd(~/code/**)` | `~/code` et tout répertoire situé sous celui-ci | les répertoires situés en dehors de `~/code` |

606| `Cd(**/node_modules)` | tout répertoire `node_modules` à n'importe quelle profondeur sous le répertoire actuel | `node_modules/pkg` |637| `Cd(**/node_modules)` | tout répertoire `node_modules` à n'importe quelle profondeur sous le répertoire actuel | `node_modules/pkg` |

607 638 

608<h2 id="extend-permissions-with-hooks">639<h2 id="extend-permissions-with-hooks">


622 653 

623Consultez [Décider si vous faites confiance à un mod](/docs/fr/plugins/mods/overview#decide-whether-to-trust-a-mod), ou [Gérer les mods pour votre organisation](/docs/fr/plugins/mods/admin#know-what-happens-by-default) si vous déployez des paramètres gérés.654Consultez [Décider si vous faites confiance à un mod](/docs/fr/plugins/mods/overview#decide-whether-to-trust-a-mod), ou [Gérer les mods pour votre organisation](/docs/fr/plugins/mods/admin#know-what-happens-by-default) si vous déployez des paramètres gérés.

624 655 

625Les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) demandent également toujours une invite lorsqu'un hook retourne `"allow"`, tout comme les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code.656Pour un [outil qui nécessite une interaction de l'utilisateur](/docs/fr/permission-modes#actions-no-mode-auto-approves), tel que `AskUserQuestion` ou un outil MCP marqué `requiresUserInteraction`, l'approbation `tool.check` d'un mod n'ignore pas l'invite. Nécessite Claude Code v2.1.292 ou une version ultérieure. Les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) demandent également toujours une invite lorsqu'un hook retourne `"allow"`, tout comme les lectures depuis des [chemins réseau](#network-paths) et les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code.

626 657 

627Un hook de blocage prend également la priorité sur les règles d'autorisation. Un hook qui se termine avec le code 2 arrête l'appel d'outil avant que les règles d'autorisation ne soient évaluées, donc le blocage s'applique même lorsqu'une règle d'autorisation permettrait autrement l'appel. Pour exécuter toutes les commandes Bash sans invites sauf pour quelques-unes que vous voulez bloquer, ajoutez `"Bash"` à votre liste d'autorisation et enregistrez un hook PreToolUse qui rejette ces commandes spécifiques. Consultez [Bloquer les éditions des fichiers protégés](/docs/fr/hooks-guide#block-edits-to-protected-files) pour un script de hook que vous pouvez adapter.658Un hook de blocage prend également la priorité sur les règles d'autorisation. Un hook qui se termine avec le code 2 arrête l'appel d'outil avant que les règles d'autorisation ne soient évaluées, donc le blocage s'applique même lorsqu'une règle d'autorisation permettrait autrement l'appel. Pour exécuter toutes les commandes Bash sans invites sauf pour quelques-unes que vous voulez bloquer, ajoutez `"Bash"` à votre liste d'autorisation et enregistrez un hook PreToolUse qui rejette ces commandes spécifiques. Consultez [Bloquer les éditions des fichiers protégés](/docs/fr/hooks-guide#block-edits-to-protected-files) pour un script de hook que vous pouvez adapter.

628 659 


636* **Pendant la session** : utilisez la commande `/add-dir`667* **Pendant la session** : utilisez la commande `/add-dir`

637* **Configuration persistante** : ajoutez à `additionalDirectories` dans les [fichiers de paramètres](/docs/fr/settings#where-settings-live)668* **Configuration persistante** : ajoutez à `additionalDirectories` dans les [fichiers de paramètres](/docs/fr/settings#where-settings-live)

638 669 

639Les fichiers dans les répertoires supplémentaires suivent les mêmes règles d'autorisation que le répertoire de travail d'origine : ils deviennent lisibles sans invites, et les autorisations d'édition de fichiers suivent le mode d'autorisation actuel.670Les fichiers dans les répertoires supplémentaires suivent les mêmes règles de permission que le répertoire de travail d'origine : ils deviennent lisibles sans demande de permission, hormis la vérification des [chemins réseau](#network-paths), et les permissions d'édition de fichiers suivent le mode de permission actuel.

640 671 

641Vous ne pouvez pas ajouter la plupart des [chemins réseau](/docs/fr/errors#working-directory-is-a-network-path), tels que le partage UNC `\\server\share`, comme répertoires de travail, car leur recherche peut contacter l'hôte qu'ils désignent. Sur Windows, mappez plutôt le partage à une lettre de lecteur et transmettez le lecteur avec `--add-dir` au lancement.672Vous ne pouvez pas ajouter la plupart des [chemins réseau](/docs/fr/errors#working-directory-is-a-network-path), tels que le partage UNC `\\server\share`, comme répertoires de travail, car leur recherche peut contacter l'hôte qu'ils désignent. Sur Windows, mappez plutôt le partage à une lettre de lecteur et transmettez le lecteur avec `--add-dir` au lancement.

642 673 


648 Déplacer la session vers un autre répertoire679 Déplacer la session vers un autre répertoire

649</h3>680</h3>

650 681 

651Pour déplacer la session vers un répertoire de travail principal différent, plutôt que d'[ajouter un répertoire](#working-directories) à côté du répertoire actuel, exécutez `/cd <path>`. Claude Code conserve la conversation, charge le `CLAUDE.md` du nouveau répertoire, et vous demande de [faire confiance à l'espace de travail](#project-allow-rules-and-workspace-trust) si vous n'y avez pas travaillé auparavant. Ensuite, Claude Code [trouve la session déplacée](/docs/fr/sessions#resume-a-session) lorsque vous exécutez `--resume` à partir du nouveau répertoire.682Pour déplacer la session vers un répertoire de travail principal différent, plutôt que d'[ajouter un répertoire](#working-directories) à côté du répertoire actuel, exécutez `/cd <path>`. Claude Code conserve la conversation, charge le `CLAUDE.md` du nouveau répertoire, et vous demande de [faire confiance à l'espace de travail](#project-allow-rules-and-workspace-trust) si vous n'y avez pas travaillé auparavant. Ensuite, Claude Code [trouve la session déplacée](/docs/fr/sessions#where-the-session-picker-looks) lorsque vous exécutez `--resume` à partir du nouveau répertoire.

652 683 

653Dès que vous vous déplacez, Claude Code applique la configuration de projet du nouveau répertoire :684Dès que vous vous déplacez, Claude Code applique la configuration de projet du nouveau répertoire :

654 685 

Details

790 790 

791Les hooks dans `hooks/hooks.json` et dans la clé de manifeste `hooks` chargent tous les deux. Pour chaque événement et sa charge utile, consultez [Événements de hook](/docs/fr/hooks#hook-events).791Les hooks dans `hooks/hooks.json` et dans la clé de manifeste `hooks` chargent tous les deux. Pour chaque événement et sa charge utile, consultez [Événements de hook](/docs/fr/hooks#hook-events).

792 792 

793Lorsqu'un autre plugin activé porte le même nom, l'un des deux enregistre les hooks de son `hooks/hooks.json` et ceux de l'autre sont laissés de côté. Consultez [Hooks lorsque deux plugins activés partagent un nom](/docs/fr/plugins/loading#hooks-when-two-enabled-plugins-share-a-name) pour savoir lequel, ainsi que pour la note dans `/plugin` qui vous en informe.

794 

793Pour écrire des hooks comme des fonctions JavaScript qui s'exécutent à l'intérieur de Claude Code et peuvent dessiner dans son interface, listez un fichier de module sous une clé `modules` dans le même `hooks/hooks.json`. Un plugin avec un est un mod. Consultez [Créer un mod](/docs/fr/plugins/mods/create).795Pour écrire des hooks comme des fonctions JavaScript qui s'exécutent à l'intérieur de Claude Code et peuvent dessiner dans son interface, listez un fichier de module sous une clé `modules` dans le même `hooks/hooks.json`. Un plugin avec un est un mod. Consultez [Créer un mod](/docs/fr/plugins/mods/create).

794 796 

795<h4 id="when-plugin-hooks-fire">797<h4 id="when-plugin-hooks-fire">

Details

209* **Plugin avec son propre référentiel** : l'installation échoue avec un message contenant `Dependency "secrets-vault@your-marketplace" has no git tag satisfying`.209* **Plugin avec son propre référentiel** : l'installation échoue avec un message contenant `Dependency "secrets-vault@your-marketplace" has no git tag satisfying`.

210* **Plugin référencé par un chemin relatif** : l'installation utilise la copie actuelle de la place de marché à la place, et la contrainte est vérifiée lorsque le plugin charge. Si cette copie est en dehors de la plage, le plugin dépendant reste désactivé et `claude plugin list` affiche `Requires "secrets-vault@your-marketplace" ~2.1.0, installed 3.0.0`.210* **Plugin référencé par un chemin relatif** : l'installation utilise la copie actuelle de la place de marché à la place, et la contrainte est vérifiée lorsque le plugin charge. Si cette copie est en dehors de la plage, le plugin dépendant reste désactivé et `claude plugin list` affiche `Requires "secrets-vault@your-marketplace" ~2.1.0, installed 3.0.0`.

211 211 

212Pour un plugin que la place de marché référence par un chemin relatif, une place de marché que vous avez ajoutée comme chemin de dossier local résout également les contraintes par rapport aux balises git de ce dossier, lorsque le dossier est un référentiel git. Cela nécessite Claude Code v2.1.196 ou ultérieur. Un dossier local qui n'est pas un référentiel git n'a pas de balises, donc Claude Code installe la dépendance à partir du contenu actuel du dossier à la place.212Pour un plugin que la marketplace référence par un chemin relatif, une marketplace que vous avez ajoutée comme chemin de dossier local résout également les contraintes par rapport aux balises git de ce dossier, lorsque le dossier est un dépôt git. Un dossier local qui n'est pas un dépôt git n'a pas de balises, donc Claude Code installe la dépendance à partir du contenu actuel du dossier à la place.

213 213 

214<h3 id="confirm-the-resolved-version">214<h3 id="confirm-the-resolved-version">

215 Confirmer la version résolue215 Confirmer la version résolue

Details

144Ces sources d'entrée n'ont pas besoin de compte git :144Ces sources d'entrée n'ont pas besoin de compte git :

145 145 

146* **`archive`** : un zip téléchargé sur HTTPS. Les utilisateurs n'ont besoin ni de `git` ni de compte, seulement d'accès réseau à l'URL. Nécessite Claude Code v2.1.224 ou ultérieur. Épinglez chaque archive avec `sha256` pour que Claude Code refuse un téléchargement modifié. Pour envoyer des identifiants avec le téléchargement, voir [Authentifier les téléchargements d'archive](#authenticate-archive-downloads).146* **`archive`** : un zip téléchargé sur HTTPS. Les utilisateurs n'ont besoin ni de `git` ni de compte, seulement d'accès réseau à l'URL. Nécessite Claude Code v2.1.224 ou ultérieur. Épinglez chaque archive avec `sha256` pour que Claude Code refuse un téléchargement modifié. Pour envoyer des identifiants avec le téléchargement, voir [Authentifier les téléchargements d'archive](#authenticate-archive-downloads).

147* **Un référentiel git public** : Claude Code clone une source `url` ou `git-subdir` publique sur HTTPS sans identifiants quand l'entrée donne une URL `https://`. Pour une source `github`, ou une source `git-subdir` écrite comme `owner/repo`, les utilisateurs sans clé SSH GitHub définissent `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`.147* **Un dépôt git public** : Claude Code clone une source `url` ou `git-subdir` publique sur HTTPS sans identifiants quand l'entrée donne une URL `https://`. Pour une source `github`, ou une source `git-subdir` écrite comme `owner/repo`, dites aux utilisateurs sans clé SSH GitHub de définir `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`.

148 

149Conservez `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1` dans vos instructions même si `claude plugin install` réussit sans cette variable depuis le shell sur une machine sans clé SSH. Pour une source `github`, cette commande peut basculer d'elle-même sur HTTPS, en affichant `SSH not configured, cloning via HTTPS`. Les installations depuis `/plugin` au sein d'une session et les mises à jour de plugins ne basculent pas, donc sans la variable elles échouent pour les utilisateurs qui n'ont pas de clé SSH GitHub.

148 150 

149Pour une équipe sur un réseau, une marketplace `directory` sur un système de fichiers partagé fonctionne aussi sans comptes git. Les utilisateurs ont besoin seulement d'accès en lecture au chemin.151Pour une équipe sur un réseau, une marketplace `directory` sur un système de fichiers partagé fonctionne aussi sans comptes git. Les utilisateurs ont besoin seulement d'accès en lecture au chemin.

150 152 

Details

80 80 

81Une session cloud n'ajoute pas les marchés qu'un référentiel liste sous [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces), car cela nécessite la boîte de dialogue de confiance de l'espace de travail, qu'une session cloud ne montre jamais.81Une session cloud n'ajoute pas les marchés qu'un référentiel liste sous [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces), car cela nécessite la boîte de dialogue de confiance de l'espace de travail, qu'une session cloud ne montre jamais.

82 82 

83Un plugin de répertoire de compétences de portée de projet se charge uniquement à partir du `.claude/skills/` du [répertoire de travail principal](/docs/fr/permissions#working-directories) de la session, et seulement après que vous acceptiez la [boîte de dialogue de confiance de l'espace de travail](/docs/fr/permissions#what-runs-before-you-trust-a-folder) pour ce dossier. Il ne [recherche pas les répertoires parents jusqu'à la racine du référentiel](/docs/fr/skills#discovery-from-parent-and-nested-directories) comme le font les compétences et commandes ordinaires. Si vous lancez à partir d'un sous-répertoire, un plugin à la racine du référentiel ne se charge pas. Lancez plutôt à partir de la racine du référentiel, ou [déplacez la session là avec `/cd`](/docs/fr/permissions#move-the-session-to-another-directory) sur v2.1.246 ou ultérieur.83Si un plugin dans le `.claude/skills/` de votre dépôt ne se charge pas, vérifiez où vous avez démarré la session et si vous avez fait confiance au dossier :

84 

85* **Dans un sous-répertoire** : un plugin à la racine du dépôt ne se charge pas. Claude Code lit le `.claude/skills/` du [répertoire de travail principal](/docs/fr/permissions#working-directories) de la session et, contrairement aux skills et commandes ordinaires, ne [recherche pas dans les répertoires parents](/docs/fr/skills#discovery-from-parent-and-nested-directories) pour trouver des plugins. Lancez plutôt à partir de la racine du dépôt, ou [déplacez la session là avec `/cd`](/docs/fr/permissions#move-the-session-to-another-directory) sur v2.1.246 ou ultérieur

86* **Depuis l'application de bureau, dans un worktree** : le plugin se charge à partir du `.claude/skills/` du checkout principal plutôt que de celui du worktree. Voir [Ce que les worktrees partagent avec le checkout principal](/docs/fr/worktrees#what-worktrees-share-with-the-main-checkout)

87* **Dans un dossier auquel vous n'avez pas fait confiance** : le plugin se charge uniquement après que vous avez accepté la [boîte de dialogue de confiance de l'espace de travail](/docs/fr/permissions#what-runs-before-you-trust-a-folder) pour ce dossier

84 88 

85Un plugin de portée de projet est archivé dans le référentiel et atteint chaque collaborateur qui le clone. Parce que ce contenu provient du référentiel plutôt que de vous, il se charge seulement après la même vérification de confiance qui s'applique aux règles d'autorisation de projet dans `.claude/settings.json`. Faire confiance à un dossier parent ou exécuter avec `-p` ne suffit pas. Les composants qui exécutent du code sont restreints davantage :89Un plugin de portée de projet est archivé dans le référentiel et atteint chaque collaborateur qui le clone. Parce que ce contenu provient du référentiel plutôt que de vous, il se charge seulement après la même vérification de confiance qui s'applique aux règles d'autorisation de projet dans `.claude/settings.json`. Faire confiance à un dossier parent ou exécuter avec `-p` ne suffit pas. Les composants qui exécutent du code sont restreints davantage :

86 90 


421 425 

422Parce que l'ordre compare les noms de manifeste, un plugin `--plugin-dir` nommé `hello-plugin` remplace `hello@example-marketplace` quand ce plugin's manifeste dit aussi `"name": "hello-plugin"`.426Parce que l'ordre compare les noms de manifeste, un plugin `--plugin-dir` nommé `hello-plugin` remplace `hello@example-marketplace` quand ce plugin's manifeste dit aussi `"name": "hello-plugin"`.

423 427 

428<h3 id="hooks-when-two-enabled-plugins-share-a-name">

429 Hooks lorsque deux plugins activés partagent un nom

430</h3>

431 

432Lorsque vous installez et activez deux plugins portant le même nom de manifeste depuis des marketplaces différentes, les deux apparaissent comme activés dans `/plugin`, mais les hooks de l'un d'eux sont laissés de côté. Un seul plugin par nom enregistre les hooks de son `hooks/hooks.json`, et un seul plugin par nom charge un [module de hooks](/docs/fr/plugins/mods/overview). Lorsque les paramètres gérés de votre organisation activent l'une des copies, c'est cette copie qui détient le nom. Sinon, c'est la copie que Claude Code charge en premier qui le détient.

433 

434Pour voir quelle copie détient le nom, exécutez `/plugin` dans votre session et ouvrez l'onglet **Errors**. Une note y figure pour la copie dont les hooks ont été laissés de côté : elle nomme la copie qui détient le nom, et les détails de la copie laissée de côté affichent la même note. Pour les hooks `hooks/hooks.json`, la note commence par `Its hooks.json hooks do not run`, et pour un module de hooks, elle commence par `Its hooks module does not load`. La note nécessite Claude Code v2.1.296 ou une version ultérieure.

435 

436Pour exécuter plutôt les hooks de la copie laissée de côté, désactivez ou désinstallez la copie qui détient le nom, puis exécutez `/reload-plugins` dans votre session. Le rechargement enregistre les hooks de la copie restante et efface la note. Lorsque la copie qui détient le nom est activée par vos paramètres gérés, vous ne pouvez pas la désactiver, et les hooks de l'autre copie restent désactivés tant que les deux sont installées.

437 

424<h3 id="keep-a-session-only-plugin-from-loading">438<h3 id="keep-a-session-only-plugin-from-loading">

425 Empêcher un plugin de session uniquement de se charger439 Empêcher un plugin de session uniquement de se charger

426</h3>440</h3>

Details

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

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 commençant par `claudeai-`** : réservés pour les marketplaces hébergées sur claude.ai. `claude plugin marketplace add` refuse toute autre marketplace qui en utilise un avec `Cannot add marketplace "<name>": names starting with "claudeai-" are reserved for marketplaces hosted on claude.ai`.55* **Noms commençant par `claudeai-`** : réservés pour les marketplaces hébergées sur claude.ai. `claude plugin marketplace add` refuse toute autre marketplace qui en utilise un avec `Cannot add marketplace "<name>": names starting with "claudeai-" are reserved for marketplaces hosted on claude.ai`.

55* **Le dossier de téléchargement d'une marketplace GitHub enregistrée, `<owner>-<repo>`** : Claude Code télécharge une marketplace ajoutée à partir d'une source `github` telle que `acme/x-tools` via un dossier nommé `acme-x-tools`, quel que soit le `name` propre à cette marketplace. Tant que cette marketplace est enregistrée sous un nom autre que `acme-x-tools`, `claude plugin marketplace add` refuse une autre marketplace nommée `acme-x-tools` après l'avoir téléchargée, et signale `Can't use the marketplace name "acme-x-tools"`. Cette vérification nécessite Claude Code v2.1.290 ou ultérieure.56* **Le dossier de téléchargement d'une marketplace GitHub enregistrée, `<owner>-<repo>`** : Claude Code télécharge une marketplace ajoutée à partir d'une source `github` telle que `acme/x-tools` via un dossier nommé `acme-x-tools`, quel que soit le `name` propre à cette marketplace. Tant que cette marketplace est enregistrée sous un nom autre que `acme-x-tools`, `claude plugin marketplace add` refuse une autre marketplace nommée `acme-x-tools` après l'avoir téléchargée, et signale `Can't use the marketplace name "acme-x-tools"`. Cette vérification nécessite Claude Code v2.1.290 ou ultérieure.

56 57 

Details

68* **La garde protège ce que vous gérez.** Le mod d'un utilisateur ne peut pas changer ce que vos hooks gérés reçoivent ou décident, l'invite système, votre `CLAUDE.md` géré et autres instructions gérées, ce que n'importe quel mod lit comme paramètres, ou les outils et descriptions de vos serveurs MCP gérés.68* **La garde protège ce que vous gérez.** Le mod d'un utilisateur ne peut pas changer ce que vos hooks gérés reçoivent ou décident, l'invite système, votre `CLAUDE.md` géré et autres instructions gérées, ce que n'importe quel mod lit comme paramètres, ou les outils et descriptions de vos serveurs MCP gérés.

69* **Tout le reste est autorisé.** La garde n'ajoute aucune autre restriction. Le mod d'un utilisateur peut toujours lire et écrire des fichiers, démarrer des processus, faire des demandes réseau, réécrire les appels d'outils et les invites, refuser un appel d'outil, approuver un qui demanderait autrement, et dessiner dans l'interface, tout avec les permissions de cet utilisateur.69* **Tout le reste est autorisé.** La garde n'ajoute aucune autre restriction. Le mod d'un utilisateur peut toujours lire et écrire des fichiers, démarrer des processus, faire des demandes réseau, réécrire les appels d'outils et les invites, refuser un appel d'outil, approuver un qui demanderait autrement, et dessiner dans l'interface, tout avec les permissions de cet utilisateur.

70* **Les règles de refus et vos hooks gérés ont la priorité.** Là où la garde se charge, le mod d'un utilisateur ne peut pas approuver un appel qu'une règle `deny` refuse, quel que soit le fichier de paramètres qui contient la règle. Un blocage d'un hook `PreToolUse` dans les paramètres gérés est aussi final. Les deux s'appliquent aux appels d'outils de Claude. Aucun ne s'applique aux appels [`$.fs` et `$.process` propres à un mod](/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) : avec `Read(.env)` refusé, un mod peut toujours lire ce fichier avec `$.fs.read` ou démarrer un programme qui le fait. Pour limiter ces appels, empêchez le mod de se charger ou gérez l'appel dans un [mod de politique](#enforce-a-policy-with-a-mod-of-your-own).70* **Les règles de refus et vos hooks gérés ont la priorité.** Là où la garde se charge, le mod d'un utilisateur ne peut pas approuver un appel qu'une règle `deny` refuse, quel que soit le fichier de paramètres qui contient la règle. Un blocage d'un hook `PreToolUse` dans les paramètres gérés est aussi final. Les deux s'appliquent aux appels d'outils de Claude. Aucun ne s'applique aux appels [`$.fs` et `$.process` propres à un mod](/docs/fr/plugins/mods/api#reach-files-processes-and-the-network) : avec `Read(.env)` refusé, un mod peut toujours lire ce fichier avec `$.fs.read` ou démarrer un programme qui le fait. Pour limiter ces appels, empêchez le mod de se charger ou gérez l'appel dans un [mod de politique](#enforce-a-policy-with-a-mod-of-your-own).

71* **Les autres vérifications de permission peuvent être contournées.** Le mod d'un utilisateur qui approuve les appels d'outils peut approuver un appel qu'une règle `ask` demanderait, ou qu'un hook `PreToolUse` en dehors des paramètres gérés a bloqué. En mode auto, un appel que le mod approuve s'exécute sans vérification de classificateur.71* **Les autres vérifications de permission peuvent être contournées.** Le mod d'un utilisateur qui approuve les appels d'outils peut approuver un appel pour lequel une règle `ask` déclencherait une demande, ou qu'un hook `PreToolUse` en dehors des paramètres gérés a bloqué. En mode auto, un appel que le mod approuve s'exécute sans vérification du classifieur. Pour les demandes de permission qu'une approbation `tool.check` d'un mod ne contourne pas, voir [Étendre les permissions avec des hooks](/docs/fr/permissions#extend-permissions-with-hooks).

72 72 

73La source de la garde est publique dans le [répertoire `mods/sec-default` du référentiel Claude Code](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).73La source de la garde est publique dans le [répertoire `mods/sec-default` du référentiel Claude Code](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).

74 74 


81* **Les hooks de paramètres continuent de fonctionner.** Les hooks de commande, HTTP, d'invite, et d'agent dans les fichiers de paramètres et dans le `hooks/hooks.json` des plugins s'exécutent comme avant, aux côtés des mods. Rien à leur sujet n'est déprécié.81* **Les hooks de paramètres continuent de fonctionner.** Les hooks de commande, HTTP, d'invite, et d'agent dans les fichiers de paramètres et dans le `hooks/hooks.json` des plugins s'exécutent comme avant, aux côtés des mods. Rien à leur sujet n'est déprécié.

82* **Les règles de refus ont la priorité là où la garde se charge.** Le mod d'un utilisateur ne peut pas approuver un appel qu'une règle `deny` refuse, sauf si vous définissez [`allowModsToOverrideDenyRules`](#set-options-on-the-built-in-guard).82* **Les règles de refus ont la priorité là où la garde se charge.** Le mod d'un utilisateur ne peut pas approuver un appel qu'une règle `deny` refuse, sauf si vous définissez [`allowModsToOverrideDenyRules`](#set-options-on-the-built-in-guard).

83* **Les hooks gérés s'exécutent en premier.** Un hook `PreToolUse` dans les paramètres gérés s'exécute avant que n'importe quel mod ne voie l'appel d'outil, et son bloc est final. Si un mod réécrit ensuite l'appel, vos hooks gérés s'exécutent à nouveau sur l'appel réécrit, donc un bloc s'applique toujours. Les hooks `PreToolUse` d'autres fichiers de paramètres et de plugins s'exécutent après le dernier mod, donc un mod qui retourne son propre résultat à la place d'exécuter l'outil les empêche de s'exécuter. Voir [L'ordre dans lequel les mods s'exécutent](/docs/fr/plugins/mods/events#the-order-mods-run-in).83* **Les hooks gérés s'exécutent en premier.** Un hook `PreToolUse` dans les paramètres gérés s'exécute avant que n'importe quel mod ne voie l'appel d'outil, et son bloc est final. Si un mod réécrit ensuite l'appel, vos hooks gérés s'exécutent à nouveau sur l'appel réécrit, donc un bloc s'applique toujours. Les hooks `PreToolUse` d'autres fichiers de paramètres et de plugins s'exécutent après le dernier mod, donc un mod qui retourne son propre résultat à la place d'exécuter l'outil les empêche de s'exécuter. Voir [L'ordre dans lequel les mods s'exécutent](/docs/fr/plugins/mods/events#the-order-mods-run-in).

84* **La politique réseau couvre `$.http.fetch`.** Si votre organisation désactive la récupération web, ou si le trafic réseau non essentiel est désactivé pour la session, Claude Code refuse une demande réseau qu'un mod fait avec `$.http.fetch`. La politique ne couvre pas un programme que le mod démarre avec `$.process.run`. Ce programme atteint le réseau avec l'accès propre de l'utilisateur.84* **La politique réseau couvre `$.http.fetch`.**

85 

86 * **La politique de votre organisation n'autorise pas WebFetch** : Claude Code refuse également toutes les requêtes `$.http.fetch` de chaque mod. Voir [Disponibilité de WebFetch](/docs/fr/tools-reference#webfetch-availability).

87 * **Vous définissez [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/fr/env-vars)** : un mod que vous ou vos utilisateurs installez peut toujours effectuer ces requêtes. La variable n'arrête que les [mods intégrés à Claude Code](/docs/fr/plugins/mods/overview#mods-built-into-claude-code), ainsi que toute requête `$.http.fetch` qui transporte les identifiants Anthropic de la session. Avant la v2.1.288, la variable arrêtait toutes les requêtes `$.http.fetch` de chaque mod.

88 

89 Aucun des deux ne couvre un programme que le mod démarre avec `$.process.run`, qui atteint le réseau avec l'accès propre de l'utilisateur.

85* **Les contrôles de plugin couvrent les mods.** Un mod est un plugin, donc les [paramètres qui limitent ce que les utilisateurs peuvent installer](/docs/fr/plugins/org#restrict-what-users-can-install), comme `strictKnownMarketplaces`, décident s'il peut être installé du tout.90* **Les contrôles de plugin couvrent les mods.** Un mod est un plugin, donc les [paramètres qui limitent ce que les utilisateurs peuvent installer](/docs/fr/plugins/org#restrict-what-users-can-install), comme `strictKnownMarketplaces`, décident s'il peut être installé du tout.

86* **Les mods ne peuvent pas changer l'invite de permission.** Un mod peut redessiner une grande partie de l'interface de Claude Code, mais pas l'invite de permission, donc il ne peut pas changer ce qu'une invite affiche. Un mod peut toujours approuver ou refuser un appel d'outil avant que l'invite n'apparaisse, comme [Savoir ce qui se passe par défaut](#know-what-happens-by-default) le décrit.91* **Les mods ne peuvent pas changer l'invite de permission.** Un mod peut redessiner une grande partie de l'interface de Claude Code, mais pas l'invite de permission, donc il ne peut pas changer ce qu'une invite affiche. Un mod peut toujours approuver ou refuser un appel d'outil avant que l'invite n'apparaisse, comme [Savoir ce qui se passe par défaut](#know-what-happens-by-default) le décrit.

87* **Les invites de confiance viennent en premier.** Dans une session interactive dans un répertoire que l'utilisateur n'a pas encore approuvé, aucun mod ne se charge jusqu'à ce qu'il réponde à l'invite de confiance.92* **Les invites de confiance viennent en premier.** Dans une session interactive dans un répertoire que l'utilisateur n'a pas encore approuvé, aucun mod ne se charge jusqu'à ce qu'il réponde à l'invite de confiance.

Details

303| `$.session` | `messages()` retourne la transcription comme une liste de `{ role, text, toolUses }`. Aussi le répertoire de travail, le modèle, et plus. [`usage()`](/docs/fr/plugins/mods/reference#mods-api-methods) retourne l'utilisation de la fenêtre de contexte et les limites du plan. |303| `$.session` | `messages()` retourne la transcription comme une liste de `{ role, text, toolUses }`. Aussi le répertoire de travail, le modèle, et plus. [`usage()`](/docs/fr/plugins/mods/reference#mods-api-methods) retourne l'utilisation de la fenêtre de contexte et les limites du plan. |

304| `$.mcp` | `call` un outil sur un serveur MCP connecté |304| `$.mcp` | `call` un outil sur un serveur MCP connecté |

305 305 

306Les fichiers et processus ont quelques règles qui leur sont propres :306Les fichiers, processus et requêtes ont quelques règles qui leur sont propres :

307 307 

308* **Chemins** : un chemin relatif est résolu par rapport au répertoire de travail de la session308* **Chemins** : un chemin relatif est résolu par rapport au répertoire de travail de la session, ou du sous-agent dont le hook traite l'événement

309* **`$.fs.list`** : retourne les entrées d'un répertoire comme `{ name, kind, size, isLink }` et ne descend pas dans les sous-répertoires309* **`$.fs.list`** : retourne les entrées d'un répertoire comme `{ name, kind, size, isLink }` et ne descend pas dans les sous-répertoires

310* **`$.process.run`** : prend une liste d'arguments et n'utilise pas de shell. Il se résout en `{ exitCode, stdout, stderr }` quel que soit le code de sortie. Il rejette si le programme ne peut pas démarrer ou s'exécute toujours au délai d'expiration, qui est de 30 secondes par défaut, donc enveloppez-le dans `try` et `catch`.310* **`$.process.run`** : prend une liste d'arguments et n'utilise pas de shell. Il se résout en `{ exitCode, stdout, stderr }` quel que soit le code de sortie. Il rejette si le programme ne peut pas démarrer ou s'exécute toujours au délai d'expiration, qui est de 30 secondes par défaut, donc enveloppez-le dans `try` et `catch`.

311* **`$.http.fetch`** : suit jusqu'à cinq redirections. Lors d'une redirection vers une origine différente, il ne conserve que les en-têtes de requête `accept`, `accept-language`, `content-type` et `user-agent` que vous avez définis et supprime les autres. Une requête qui dépend d'un autre en-tête, comme `Authorization`, peut donc échouer après cette redirection. Les [limites](/docs/fr/plugins/mods/reference#limits) indiquent son délai d'expiration et les tailles de corps.

311 312 

312Chacun de ces appels est lui-même un événement, nommé pour son espace de noms et sa méthode sans le `$.`, comme `fs.read` pour `$.fs.read`. Un mod [plus tôt dans la chaîne](/docs/fr/plugins/mods/events#the-order-mods-run-in) peut observer, réécrire ou refuser votre appel, c'est ainsi qu'une organisation restreint ce que les mods atteignent.313Chacun de ces appels est lui-même un événement, nommé pour son espace de noms et sa méthode sans le `$.`, comme `fs.read` pour `$.fs.read`. Un mod [plus tôt dans la chaîne](/docs/fr/plugins/mods/events#the-order-mods-run-in) peut observer, réécrire ou refuser votre appel, c'est ainsi qu'une organisation restreint ce que les mods atteignent.

313 314 

Details

148| `agent.offer` | Un type de sous-agent est proposé à Claude | `{ isOffered: false }` pour le retenir |148| `agent.offer` | Un type de sous-agent est proposé à Claude | `{ isOffered: false }` pour le retenir |

149| `agent.spawn` | Un sous-agent ou un coéquipier d'une [équipe d'agents](/docs/fr/agent-teams) est sur le point de démarrer. Pour un coéquipier, `e.isTeammate` vaut `true`. | `next({ ...e, model })` pour choisir son modèle, ou `{ deny: reason }` |149| `agent.spawn` | Un sous-agent ou un coéquipier d'une [équipe d'agents](/docs/fr/agent-teams) est sur le point de démarrer. Pour un coéquipier, `e.isTeammate` vaut `true`. | `next({ ...e, model })` pour choisir son modèle, ou `{ deny: reason }` |

150 150 

151Lorsque Claude reprend un sous-agent avec l'outil [`SendMessage`](/docs/fr/sub-agents#resume-subagents), votre hook `agent.spawn` ne s'exécute pas à nouveau. Pour refuser les appels `SendMessage` qui reprennent un sous-agent, ciblez cet outil dans un hook [`tool.call`](/docs/fr/plugins/mods/events#guard-or-change-a-tool-call).

152 

151<h3 id="interface">153<h3 id="interface">

152 Interface154 Interface

153</h3>155</h3>


175| [`plugin.register`](/docs/fr/plugins/mods/admin#enforce-a-policy-with-a-mod-of-your-own) | Un module de hooks est sur le point de se charger. `e.uses` liste ses événements, ses appels à l'API des mods, ses variables d'environnement et son état, tels que `claude plugin validate` les affiche. Chaque appel est écrit sans le préfixe `$.`, comme `fs.read`. | `{ refuse: reason }` |177| [`plugin.register`](/docs/fr/plugins/mods/admin#enforce-a-policy-with-a-mod-of-your-own) | Un module de hooks est sur le point de se charger. `e.uses` liste ses événements, ses appels à l'API des mods, ses variables d'environnement et son état, tels que `claude plugin validate` les affiche. Chaque appel est écrit sans le préfixe `$.`, comme `fs.read`. | `{ refuse: reason }` |

176| `engine.create` | L'API des mods est en cours de construction pour ce mod | Une API des mods modifiée, pour ajouter un namespace. Un mod en dehors du [niveau](#the-hook-function) `user` peut également en retenir un. |178| `engine.create` | L'API des mods est en cours de construction pour ce mod | Une API des mods modifiée, pour ajouter un namespace. Un mod en dehors du [niveau](#the-hook-function) `user` peut également en retenir un. |

177 179 

180Lorsque le hook d'un autre mod appelle une méthode sur un namespace que vous avez ajouté dans `engine.create`, les appels `$` de votre méthode s'exécutent dans le contexte de ce hook jusqu'à ce que chaque hook sur cet événement ait renvoyé son résultat. Par exemple, un chemin relatif est résolu par rapport au répertoire de travail de ce hook, et `$.prompt.submit` est rejeté tant que le tour attend ce hook. Les appels que votre méthode effectue ensuite s'exécutent dans le contexte propre de votre mod.

181 

178<h3 id="telemetry">182<h3 id="telemetry">

179 Télémétrie183 Télémétrie

180</h3>184</h3>


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

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

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

324| Le corps de la requête d'un `$.http.fetch` | 4 Mio, comptés en caractères. Un appel avec un corps plus volumineux est rejeté. |

325| Le corps de la réponse d'un `$.http.fetch` | 4 Mio. `text` contient les 4 premiers Mio et le reste n'est pas lu. Lorsque l'en-tête `Content-Length` déclare davantage, l'appel est rejeté à la place, avec une raison qui se termine par `is over the 4194304-byte limit`, sauf lorsque la dernière requête après d'éventuelles redirections utilise la méthode `HEAD`. L'exemption `HEAD` nécessite Claude Code v2.1.296 ou une version ultérieure. |

326| Un appel `$.http.fetch`, redirections et corps compris | 30 secondes |

327| Redirections suivies par un appel `$.http.fetch` | 5 |

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

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

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

Details

78| `disableAllHooks in managed settings` | Votre organisation a désactivé les hooks des plugins installés |78| `disableAllHooks in managed settings` | Votre organisation a désactivé les hooks des plugins installés |

79| `only managed plugins and built-in plugins run` | `allowManagedHooksOnly` est défini, ou `disableAllHooks` est défini dans un fichier de paramètres autre que les paramètres gérés |79| `only managed plugins and built-in plugins run` | `allowManagedHooksOnly` est défini, ou `disableAllHooks` est défini dans un fichier de paramètres autre que les paramètres gérés |

80| `installed plugins that are not managed load no hooks module in this mode (--bare)` | Vous avez démarré Claude Code avec `--bare` |80| `installed plugins that are not managed load no hooks module in this mode (--bare)` | Vous avez démarré Claude Code avec `--bare` |

81| `another plugin of that name loads first` | Deux plugins partagent un nom. Le plugin géré, ou celui chargé en premier, est utilisé. |81| `another plugin of that name loads first` | Un autre plugin activé porte le même nom que votre mod et [détient ce nom](/docs/fr/plugins/loading#hooks-when-two-enabled-plugins-share-a-name), donc votre module de hooks ne se charge pas |

82 82 

83<h3 id="messages-from-the-built-in-guard">83<h3 id="messages-from-the-built-in-guard">

84 Messages du garde intégré84 Messages du garde intégré


191 191 

192Avant la v2.1.292, l'appel s'exécutait une seconde fois, de sorte que le prompt était soumis, la commande exécutée ou le sous-agent démarré deux fois.192Avant la v2.1.292, l'appel s'exécutait une seconde fois, de sorte que le prompt était soumis, la commande exécutée ou le sous-agent démarré deux fois.

193 193 

194<h3 id="$-agent-register-refused-the-hooks-module-that-made-the-call-is-no-longer-loaded">

195 `$.agent.register refused: the hooks module that made the call is no longer loaded`

196</h3>

197 

198La ligne commence par le nom de votre mod, comme dans `first-mod: $.agent.register refused: the hooks module that made the call is no longer loaded (it was reloaded or removed)`, et l'agent n'est pas enregistré. Votre mod a été rechargé ou déchargé avant l'appel. Un rechargement charge une nouvelle copie du module de hooks, et cet appel provenait de code qui s'exécutait encore dans l'ancienne copie, comme un hook qui n'avait pas encore retourné.

199 

200Si ce hook n'intercepte pas le rejet, il échoue et Claude Code [l'ignore](#hook-skipped). Pour enregistrer l'agent depuis la copie qui reste chargée, effectuez l'appel dans votre hook [`session.start`](/docs/fr/plugins/mods/reference#session), qui s'exécute à nouveau dans chaque nouvelle copie après un rechargement.

201 

194<h3 id="mods-that-run-in-the-hooks-worker-are-off-for-this-session">202<h3 id="mods-that-run-in-the-hooks-worker-are-off-for-this-session">

195 `mods that run in the hooks worker are off for this session`203 `mods that run in the hooks worker are off for this session`

196</h3>204</h3>

Details

256 256 

257Avant la v2.1.295, Claude Code signalait l'ajout de cet exemple comme réussi.257Avant la v2.1.295, Claude Code signalait l'ajout de cet exemple comme réussi.

258 258 

259<h3 id="claude-code-reserves-this-name">

260 `Cannot add marketplace "<name>": Claude Code reserves this name and cannot register a marketplace under it`

261</h3>

262 

263Vous avez ajouté une marketplace, et le [`name`](/docs/fr/plugins/marketplace-reference#top-level-fields) de son `marketplace.json` est l'un des noms de membres que possède tout objet JavaScript, tels que `constructor`, `toString` ou `valueOf`. Claude Code réserve ces noms, il refuse donc l'ajout et n'enregistre rien. La section [Noms réservés](/docs/fr/plugins/marketplace-reference#reserved-names) les répertorie.

264 

265Dans cet exemple, la marketplace s'appelle `constructor` :

266 

267```text theme={null}

268Cannot add marketplace "constructor": Claude Code reserves this name and cannot register a marketplace under it. The name is set by "name" in the marketplace's marketplace.json; ask its maintainer to change it.

269```

270 

271Si un fichier de paramètres déclare la marketplace sous [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces), la tentative de Claude Code de l'ajouter au démarrage échoue de la même manière, et le message apparaît dans l'onglet **Erreurs** de `/plugin`.

272 

273Donnez un autre nom à la marketplace, puis ajoutez-la à nouveau :

274 

275* **Vous possédez la marketplace** : modifiez `name` dans `marketplace.json`

276* **Quelqu'un d'autre l'héberge** : demandez au propriétaire de modifier le nom

277 

278Avant la v2.1.296, l'ajout d'une telle marketplace échouait avec une erreur interne au lieu de ce message.

279 

259<h3 id="ssh-authentication-failed-or-https-authentication-failed">280<h3 id="ssh-authentication-failed-or-https-authentication-failed">

260 `SSH authentication failed` ou `HTTPS authentication failed`281 `SSH authentication failed` ou `HTTPS authentication failed`

261</h3>282</h3>


907 Le hook charge mais ne se déclenche jamais928 Le hook charge mais ne se déclenche jamais

908</h4>929</h4>

909 930 

910Si un hook charge sans erreur mais ne se déclenche jamais, vérifiez sa définition puis regardez-le s'exécuter :931Si un hook charge sans erreur mais ne se déclenche jamais, exécutez d'abord `/plugin` dans votre session et ouvrez les détails du plugin. Une note qui y commence par `Its hooks.json hooks do not run` signifie qu'un autre plugin activé portant le même nom a enregistré ses hooks à la place, et [Hooks lorsque deux plugins activés partagent un nom](/docs/fr/plugins/loading#hooks-when-two-enabled-plugins-share-a-name) indique de quelle copie il s'agit et comment basculer. Sinon, vérifiez la définition du hook puis regardez-le s'exécuter :

911 932 

912<Steps>933<Steps>

913 <Step title="Vérifiez le nom de l'événement">934 <Step title="Vérifiez le nom de l'événement">

routines.md +4 −4

Details

85 L'entrée d'invite inclut un sélecteur de modèle. Claude utilise le modèle sélectionné à chaque exécution.85 L'entrée d'invite inclut un sélecteur de modèle. Claude utilise le modèle sélectionné à chaque exécution.

86 </Step>86 </Step>

87 87 

88 <Step title="Sélectionner les référentiels">88 <Step title="Sélectionner les dépôts">

89 Ajoutez un ou plusieurs référentiels GitHub pour que Claude y travaille. Chaque référentiel est cloné au début d'une exécution, en commençant par la branche par défaut. Claude crée des branches préfixées par `claude/` pour ses modifications.89 Ajoutez un ou plusieurs dépôts GitHub pour que Claude y travaille. Chaque dépôt est cloné au début d'une exécution. Claude crée des branches préfixées par `claude/` pour ses modifications.

90 </Step>90 </Step>

91 91 

92 <Step title="Sélectionner un environnement">92 <Step title="Sélectionner un environnement">


359 Référentiels et permissions de branche359 Référentiels et permissions de branche

360</h3>360</h3>

361 361 

362Les routines ont besoin d'un accès GitHub pour cloner les référentiels. Lorsque vous créez une routine à partir de la CLI avec `/schedule`, Claude vérifie si votre compte a accès à GitHub pour le référentiel à partir duquel vous l'avez exécuté et, si ce n'est pas le cas, ajoute une note de configuration indiquant comment l'accorder. Consultez [Options d'authentification GitHub](/docs/fr/claude-code-on-the-web#github-authentication-options) pour les deux façons d'accorder l'accès.362Les routines ont besoin d'un accès GitHub pour cloner les dépôts. Lorsque vous créez une routine à partir de la CLI avec `/schedule`, Claude vérifie si votre compte a accès à GitHub pour le dépôt à partir duquel vous l'avez exécuté et, si ce n'est pas le cas, ajoute une note de configuration indiquant comment l'accorder. Consultez [Options d'authentification GitHub](/docs/fr/claude-code-on-the-web#github-authentication-options) pour les deux façons d'accorder l'accès. Sur les forfaits Team et Enterprise, un [propriétaire](/docs/fr/server-managed-settings#access-control) de votre organisation Claude doit activer chaque méthode avant que vous puissiez l'utiliser ; consultez [Connecter GitHub](/docs/fr/web-quickstart#connect-github).

363 363 

364Si votre connexion GitHub est manquante ou expirée au moment où une exécution est prévue, la routine ignore les exécutions jusqu'à ce que vous vous reconnectiez, pendant une durée maximale de 72 heures. Reconnectez GitHub dans cette fenêtre et la routine reprend d'elle-même. Après 72 heures sans connexion, la routine s'éteint, et vous la réactivez après vous être reconnecté à GitHub.364Si votre connexion GitHub est manquante ou expirée au moment où une exécution est prévue, la routine ignore les exécutions jusqu'à ce que vous vous reconnectiez, pendant une durée maximale de 72 heures. Reconnectez GitHub dans cette fenêtre et la routine reprend d'elle-même. Après 72 heures sans connexion, la routine s'éteint, et vous la réactivez après vous être reconnecté à GitHub.

365 365 

366Chaque référentiel que vous ajoutez est cloné à chaque exécution. Claude commence à partir de la branche par défaut du référentiel sauf si votre invite spécifie le contraire.366Chaque dépôt que vous ajoutez est cloné à chaque exécution. Claude commence à partir de la branche par défaut du dépôt sauf si votre prompt spécifie le contraire. Si un [événement de pull request GitHub](#add-a-github-trigger) déclenche l'exécution et que le dépôt de la pull request est le premier dépôt de la routine, ce dépôt démarre plutôt à partir du commit de tête de la pull request.

367 367 

368Claude pousse son travail vers une branche préfixée par `claude/`, sauf si votre prompt lui demande de pousser vers une autre branche. Pour contrôler les branches vers lesquelles une exécution peut pousser, utilisez des règles de protection de branche ou des rulesets sur GitHub. Pour les exécutions sur l'infrastructure gérée par Anthropic, ainsi que pour les exécutions auto-hébergées qui poussent via le [proxy git d'Anthropic](/docs/fr/self-hosted-environments-deploy#use-the-anthropic-git-proxy), GitHub les applique à l'accès GitHub que vous avez connecté, de sorte qu'une règle que cet accès peut contourner ne bloque pas la poussée d'une exécution. Une exécution auto-hébergée qui pousse avec les identifiants git fournis par votre déploiement est plutôt vérifiée par rapport à ceux-ci. Consultez [Configurer git](/docs/fr/self-hosted-environments-deploy#configure-git).368Claude pousse son travail vers une branche préfixée par `claude/`, sauf si votre prompt lui demande de pousser vers une autre branche. Pour contrôler les branches vers lesquelles une exécution peut pousser, utilisez des règles de protection de branche ou des rulesets sur GitHub. Pour les exécutions sur l'infrastructure gérée par Anthropic, ainsi que pour les exécutions auto-hébergées qui poussent via le [proxy git d'Anthropic](/docs/fr/self-hosted-environments-deploy#use-the-anthropic-git-proxy), GitHub les applique à l'accès GitHub que vous avez connecté, de sorte qu'une règle que cet accès peut contourner ne bloque pas la poussée d'une exécution. Une exécution auto-hébergée qui pousse avec les identifiants git fournis par votre déploiement est plutôt vérifiée par rapport à ceux-ci. Consultez [Configurer git](/docs/fr/self-hosted-environments-deploy#configure-git).

369 369 

sandboxing.md +1 −0

Details

203* Les commandes `rm` ou `rmdir` qui ciblent un [chemin critique](/docs/fr/permission-modes#critical-paths) passent toujours par le flux de permission standard203* Les commandes `rm` ou `rmdir` qui ciblent un [chemin critique](/docs/fr/permission-modes#critical-paths) passent toujours par le flux de permission standard

204* Les [règles de demande](/docs/fr/permissions) ciblant un contenu, comme `Bash(git push *)`, imposent toujours une demande, même pour les commandes en sandbox204* Les [règles de demande](/docs/fr/permissions) ciblant un contenu, comme `Bash(git push *)`, imposent toujours une demande, même pour les commandes en sandbox

205* Une règle de demande `Bash` seule, ou sa forme équivalente `Bash(*)`, est ignorée pour les commandes exécutées en sandbox ; elle s'applique toujours aux commandes qui se rabattent sur le flux de permission standard. En [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode), la règle n'est pas ignorée : elle déclenche aussi une demande pour les commandes en sandbox, y compris celles en lecture seule205* Une règle de demande `Bash` seule, ou sa forme équivalente `Bash(*)`, est ignorée pour les commandes exécutées en sandbox ; elle s'applique toujours aux commandes qui se rabattent sur le flux de permission standard. En [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode), la règle n'est pas ignorée : elle déclenche aussi une demande pour les commandes en sandbox, y compris celles en lecture seule

206* Les commandes de l'[outil Monitor](/docs/fr/tools-reference#monitor-tool) ne sont pas approuvées automatiquement, bien qu'elles s'exécutent toujours dans le sandbox. Pour éviter la demande, ajoutez une [règle d'autorisation](/docs/fr/permissions#bash) qui correspond à la commande, comme `Bash(npm run *)`

206 207 

207<Info>208<Info>

208 Le mode d'approbation automatique fonctionne indépendamment de votre paramètre de mode de permission, à trois exceptions près : le [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode), une commande en mode auto qui comporte des [domaines autorisés par commande](#per-command-allowed-domains-in-auto-mode), et l'[examen par le classifieur côté serveur](/docs/fr/permission-modes#how-the-classifier-evaluates-actions) des commandes en sandbox en mode auto. Même si vous n'êtes pas en mode « accept edits », les commandes Bash en sandbox s'exécutent automatiquement lorsque l'approbation automatique est activée. Cela signifie que les commandes Bash qui modifient des fichiers dans les limites du sandbox s'exécutent sans demande, même en mode Manual, où les outils de modification de fichiers déclencheraient une demande.209 Le mode d'approbation automatique fonctionne indépendamment de votre paramètre de mode de permission, à trois exceptions près : le [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode), une commande en mode auto qui comporte des [domaines autorisés par commande](#per-command-allowed-domains-in-auto-mode), et l'[examen par le classifieur côté serveur](/docs/fr/permission-modes#how-the-classifier-evaluates-actions) des commandes en sandbox en mode auto. Même si vous n'êtes pas en mode « accept edits », les commandes Bash en sandbox s'exécutent automatiquement lorsque l'approbation automatique est activée. Cela signifie que les commandes Bash qui modifient des fichiers dans les limites du sandbox s'exécutent sans demande, même en mode Manual, où les outils de modification de fichiers déclencheraient une demande.

Details

132Le runner et ses sessions établissent plusieurs types de connexion sortante, et aucune connectivité entrante d'Anthropic n'est requise :132Le runner et ses sessions établissent plusieurs types de connexion sortante, et aucune connectivité entrante d'Anthropic n'est requise :

133 133 

134* **Plan de contrôle** : le runner interroge `api.anthropic.com` pour le travail et publie les événements de progression de configuration et d'échec, tous HTTPS sortants. L'interrogation sert également de battement cardiaque du runner.134* **Plan de contrôle** : le runner interroge `api.anthropic.com` pour le travail et publie les événements de progression de configuration et d'échec, tous HTTPS sortants. L'interrogation sert également de battement cardiaque du runner.

135* **Connecteur SCM** : l'orchestrateur optionnel [connecteur SCM](/docs/fr/self-hosted-environments-reference#scm-connector-flags) tunnel est la seule connexion WebSocket.135* **Git** : le runner clone à partir de votre hôte git et y pousse sur HTTPS ou SSH, authentifié avec les identifiants que votre déploiement fournit. Consultez [Configurer git](/docs/fr/self-hosted-environments-deploy#configure-git) pour les options, y compris les identifiants générés par session. Avec le [proxy git Anthropic](/docs/fr/self-hosted-environments-deploy#use-the-anthropic-git-proxy), le trafic git pour les dépôts sur github.com passe plutôt par `api.anthropic.com`.

136* **Git** : le runner clone à partir de et pousse vers votre hôte git sur HTTPS ou SSH, authentifié avec les identifiants que votre déploiement fournit ; [Configurer git](/docs/fr/self-hosted-environments-deploy#configure-git) couvre les options, y compris les identifiants frappés par session et la [passerelle git Anthropic](/docs/fr/self-hosted-environments-deploy#use-the-anthropic-git-proxy), qui route git via `api.anthropic.com` à la place.136* **Enfant de session** : le processus Claude Code enfant maintient le flux d'événements de la session à `api.anthropic.com`, et fait ses propres appels sortants pour l'inférence du modèle et pour les commandes git exécutées pendant la session. Dans une session qui utilise [git géré par Anthropic](/docs/fr/self-hosted-environments-deploy#use-the-anthropic-git-proxy), l'enfant envoie son trafic `git` et `gh` pour github.com via une connexion WebSocket qu'il ouvre vers `api.anthropic.com`.

137* **Enfant de session** : le processus Claude Code enfant maintient le flux d'événements de la session à `api.anthropic.com`, et fait ses propres appels sortants pour l'inférence du modèle et pour les commandes git exécutées pendant la session. Consultez [Exigences réseau](/docs/fr/self-hosted-environments-deploy#network-requirements) pour la liste complète des sorties. Le [diagramme ci-dessus](#how-self-hosted-environments-work) montre ces chemins, à part le connecteur SCM optionnel.137* **Connecteur SCM** : le [connecteur SCM](/docs/fr/self-hosted-environments-reference#scm-connector-flags) optionnel de l'orchestrateur n'est pas disponible, donc son tunnel ne s'ouvre pas. Le tunnel est une connexion WebSocket vers `api.anthropic.com`.

138 

139Consultez [Exigences réseau](/docs/fr/self-hosted-environments-deploy#network-requirements) pour la liste complète des sorties. Le [diagramme ci-dessus](#how-self-hosted-environments-work) montre ces chemins, à part le connecteur SCM optionnel et la connexion git gérée par Anthropic.

138 140 

139Par défaut, l'inférence du modèle utilise l'API Anthropic. Le plan de contrôle livre l'endpoint de l'API à chaque session, et la session s'authentifie avec un jeton OAuth émis par Anthropic et limité à la session. Pour envoyer plutôt les requêtes de modèle vers votre propre compte cloud, consultez [Envoyer les requêtes de modèle vers Bedrock ou Agent Platform](/docs/fr/self-hosted-environments-configuration#send-model-requests-to-bedrock-or-agent-platform).141Par défaut, l'inférence du modèle utilise l'API Anthropic. Le plan de contrôle livre l'endpoint de l'API à chaque session, et la session s'authentifie avec un jeton OAuth émis par Anthropic et limité à la session. Pour envoyer plutôt les requêtes de modèle vers votre propre compte cloud, consultez [Envoyer les requêtes de modèle vers Bedrock ou Agent Platform](/docs/fr/self-hosted-environments-configuration#send-model-requests-to-bedrock-or-agent-platform).

140 142 

Details

31| Variable | Description |31| Variable | Description |

32| :- | :- |32| :- | :- |

33| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Le JWT de session, préfixé `sk-ant-cc-`. Sa revendication `act` identifie le créateur de la session, avec l'email du créateur quand la surface de création l'a enregistré. La valeur est le token au moment du spawn ; les actualisations arrivent sur stdin de l'enfant, donc un wrapper ne voit que la valeur initiale. Voir [Vérifier l'identité de la session](/docs/fr/self-hosted-environments-identity). |33| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Le JWT de session, préfixé `sk-ant-cc-`. Sa revendication `act` identifie le créateur de la session, avec l'email du créateur quand la surface de création l'a enregistré. La valeur est le token au moment du spawn ; les actualisations arrivent sur stdin de l'enfant, donc un wrapper ne voit que la valeur initiale. Voir [Vérifier l'identité de la session](/docs/fr/self-hosted-environments-identity). |

34| `CCR_SESSION_ACCOUNT_EMAIL` | L'email du créateur de la session, pré-extrait par le runner de la revendication `act.email` du token sans vérification de signature. Approprié pour l'étiquetage, comme les trailers de commit. Quand l'email contrôle l'émission d'identifiants, vérifiez le token et lisez la revendication à partir de celui-ci à la place ; voir [Provisionner les identifiants limités au créateur de la session](#provision-credentials-scoped-to-the-session-creator). Non défini quand le token ne porte pas d'email de créateur. Traiter comme des informations d'identification personnelle. |34| `CCR_SESSION_ACCOUNT_EMAIL` | L'email du créateur de la session, pré-extrait par le runner de la revendication `act.email` du token sans vérification de signature. Approprié pour l'étiquetage, comme les trailers de commit. Quand l'email contrôle l'émission d'identifiants, vérifiez le token et lisez la revendication à partir de celui-ci à la place. Voir [Provisionner les identifiants limités au créateur de la session](#provision-credentials-scoped-to-the-session-creator). Non défini quand le token ne porte pas d'email de créateur, par exemple dans les sessions créées par l'identité de service de votre organisation. Traiter comme des données personnelles identifiables. |

35| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La surface client qui a créé la session, comme `web_claude_ai`, `desktop_app`, `ios`, `claude_code_cli` ou `scheduled_trigger`. Anthropic enregistre la valeur une fois à la création de la session, donc le wrapper et chaque hook de cycle de vie voient la même valeur. Utilisez-la pour l'analyse d'adoption et l'étiquetage uniquement, pas comme signal d'autorisation. Non défini quand la session n'a pas de surface enregistrée ou reconnue, donc référencez-la comme `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}` sous `set -u`. Nécessite Claude Code v2.1.229 ou ultérieur. |35| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La surface client qui a créé la session, comme `web_claude_ai`, `desktop_app`, `ios`, `claude_code_cli` ou `scheduled_trigger`. Anthropic enregistre la valeur une fois à la création de la session, donc le wrapper et chaque hook de cycle de vie voient la même valeur. Utilisez-la pour l'analyse d'adoption et l'étiquetage uniquement, pas comme signal d'autorisation. Non défini quand la session n'a pas de surface enregistrée ou reconnue. Nécessite Claude Code v2.1.229 ou ultérieur. |

36| `CLAUDE_RUNNER_CLAUDE_BIN` | Chemin absolu vers le binaire Claude Code du runner lui-même. Terminez votre wrapper avec `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` pour passer au binaire épinglé sans coder en dur un chemin d'installation. |36| `CLAUDE_RUNNER_CLAUDE_BIN` | Chemin absolu vers le binaire Claude Code du runner lui-même. Terminez votre wrapper avec `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` pour passer au binaire épinglé sans coder en dur un chemin d'installation. |

37| `CLAUDE_CODE_REMOTE_SESSION_ID` | ID de session sous la forme balisée `cse_...`. C'est la même session que les [hooks de cycle de vie](#lifecycle-hooks) voient comme `CLAUDE_RUNNER_SESSION_ID` sous la forme `session_...` ; les variables UUID correspondent entre les deux, et remplacer le préfixe `cse_` par `session_` donne l'ID affiché dans l'URL de la session. |37| `CLAUDE_CODE_REMOTE_SESSION_ID` | ID de session sous la forme balisée `cse_...`. C'est la même session que les [hooks de cycle de vie](#lifecycle-hooks) voient comme `CLAUDE_RUNNER_SESSION_ID` sous la forme `session_...` ; les variables UUID correspondent entre les deux, et remplacer le préfixe `cse_` par `session_` donne l'ID affiché dans l'URL de la session. |

38| `CLAUDE_CODE_REMOTE_SESSION_UUID` | Le même ID de session sous la forme UUID canonique, pour les systèmes qui utilisent des UUIDs comme clé. |38| `CLAUDE_CODE_REMOTE_SESSION_UUID` | Le même ID de session sous la forme UUID canonique, pour les systèmes qui utilisent des UUIDs comme clé. |

39| `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` | Pour une session [Claude Tag](https://claude.com/docs/claude-tag/overview) qui appartient à un fil Slack, le lien vers ce fil. Non défini pour les autres sessions, et peut aussi être non défini pour une session de fil. |

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

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

40| `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). |

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


43 45 

44Le wrapper hérite également du reste de l'environnement géré de l'enfant, y compris toutes les variables d'environnement fournies par le serveur. `exec` propage tout automatiquement ; si votre wrapper lance l'enfant d'une autre manière, transmettez l'environnement complet.46Le wrapper hérite également du reste de l'environnement géré de l'enfant, y compris toutes les variables d'environnement fournies par le serveur. `exec` propage tout automatiquement ; si votre wrapper lance l'enfant d'une autre manière, transmettez l'environnement complet.

45 47 

48`CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` et `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` parviennent à votre wrapper ou à votre [hook `command`](#command). Elles parviennent aussi à ce que la session exécute, comme les commandes shell, les hooks git et les hooks Claude Code. Les hooks `checkout`, `post-session` et `spawn-runner` ne les reçoivent pas.

49 

50<h3 id="give-a-default-to-variables-that-can-be-unset">

51 Donner une valeur par défaut aux variables qui peuvent être non définies

52</h3>

53 

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 

56Partout où un shell développe le lien du fil Slack, prenez ces précautions :

57 

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:-}"`.

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.

60 

46<h3 id="keep-stdin-and-file-descriptor-3-attached">61<h3 id="keep-stdin-and-file-descriptor-3-attached">

47 Garder stdin et le descripteur de fichier 3 attachés62 Garder stdin et le descripteur de fichier 3 attachés

48</h3>63</h3>

49 64 

50stdin de l'enfant est le canal de contrôle du runner. Les rotations de token et les signaux de fin de session arrivent dessus. Le runner ouvre également un tuyau sur le descripteur de fichier 3 et lit les signaux d'activité de l'enfant à partir de celui-ci pour piloter les délais d'inactivité et de démarrage. Un simple `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` préserve les deux automatiquement.65stdin de l'enfant est le canal de contrôle du runner. Les rotations de token et les signaux de fin de session arrivent dessus. Le runner ouvre également un tuyau sur le descripteur de fichier 3 et lit les signaux d'activité de l'enfant à partir de celui-ci pour piloter les délais d'inactivité et de démarrage. Un simple `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"` préserve les deux automatiquement.

51 66 

52Si votre wrapper met l'enfant en arrière-plan avec un simple `&`, il coupe stdin de l'enfant : la session semble saine jusqu'à ce que la durée de vie du token OAuth initial d'environ 30 minutes expire, puis chaque appel API échoue avec `401 authentication_error`. Si votre wrapper doit mettre l'enfant en arrière-plan, par exemple pour garder un trap de démontage actif, enregistrez stdin sur le descripteur de fichier 4 ou supérieur et réattachez-le explicitement :67Si votre wrapper met l'enfant en arrière-plan avec un simple `&`, il coupe stdin de l'enfant. La session semble saine jusqu'à ce que la durée de vie du token OAuth initial d'environ 30 minutes expire, puis chaque appel API qui utilise le token échoue avec `401 authentication_error`. Si votre wrapper doit mettre l'enfant en arrière-plan, par exemple pour garder un trap de démontage actif, enregistrez stdin sur le descripteur de fichier 4 ou supérieur et réattachez-le explicitement :

53 68 

54```bash theme={null}69```bash theme={null}

55exec 4<&070exec 4<&0


59wait "$CHILD"74wait "$CHILD"

60```75```

61 76 

62Ne fermez pas ou ne réutilisez pas le descripteur de fichier 3 dans le wrapper. Rediriger stdout et stderr de l'enfant est correct.77Vous pouvez rediriger stdout de l'enfant. Gardez le descripteur de fichier 3 et stderr attachés au runner :

78 

79* **Descripteur de fichier 3** : transporte les signaux d'activité de l'enfant vers le runner. Ne le fermez pas et ne le réutilisez pas dans le wrapper.

80* **stderr** : lorsque le wrapper ou l'enfant se termine avec un code non nul, le runner publie les dernières lignes de stderr dans la session et les affiche dans son propre log. L'utilisateur de la session voit ces lignes, donc n'affichez pas de secrets sur stderr, et retirez `set -x` avant de déployer le wrapper. Si vous redirigez stderr, les sessions s'exécutent toujours, mais le runner signale un échec avec le seul code de sortie.

63 81 

64<h3 id="pass-the-system-prompt-flags-through">82<h3 id="pass-the-system-prompt-flags-through">

65 Transmettre les flags de prompt système83 Transmettre les flags de prompt système


108 checkout126 checkout

109</h3>127</h3>

110 128 

111S'exécute une fois par dépôt, à la place du clone et de la récupération intégrés du runner. Utilisez le hook pour cloner à partir d'un miroir de lecture directe, amorcer un arbre de travail à partir d'une archive ou appliquer une authentification git par session. Le runner définit ces variables, et peut définir d'autres variables `CLAUDE_RUNNER_` que le tableau ne répertorie pas :129S'exécute une fois par dépôt, à la place du clone et de la récupération intégrés du runner. Utilisez le hook pour cloner à partir d'un miroir de lecture directe accessible via HTTPS ou SSH, amorcer un arbre de travail à partir d'une archive ou appliquer une authentification git par session. Le runner définit ces variables, et peut définir d'autres variables `CLAUDE_RUNNER_` que le tableau ne répertorie pas :

112 130 

113| Variable | Description |131| Variable | Description |

114| :- | :- |132| :- | :- |

115| `CLAUDE_RUNNER_REPO_URL` | URL du référentiel à cloner, après que tout `--git-host-rewrite` et `--git-ssh-rewrite` aient été appliqués |133| `CLAUDE_RUNNER_REPO_URL` | URL du référentiel à cloner, après que tout `--git-host-rewrite` et `--git-ssh-rewrite` aient été appliqués |

116| `CLAUDE_RUNNER_REPO_REF` | Révision à vérifier : branche, tag ou SHA de commit comme la session l'a demandé. Vide signifie la branche par défaut du référentiel. |134| `CLAUDE_RUNNER_REPO_REF` | Révision à extraire, telle que la session l'a demandée : une branche, un tag, un SHA de commit ou un nom de référence complet comme `refs/pull/<number>/head`. Vide signifie la branche par défaut du dépôt. |

117| `CLAUDE_RUNNER_CHECKOUT_PATH` | Chemin absolu où l'arbre de travail doit être laissé |135| `CLAUDE_RUNNER_CHECKOUT_PATH` | Chemin absolu où l'arbre de travail doit être laissé |

118| `CLAUDE_RUNNER_SESSION_ID` | ID de session sous la forme balisée `session_...`, pour la journalisation et la corrélation |136| `CLAUDE_RUNNER_SESSION_ID` | ID de session sous la forme balisée `session_...`, pour la journalisation et la corrélation |

119| `CLAUDE_RUNNER_SESSION_UUID` | Le même ID de session sous la forme UUID canonique |137| `CLAUDE_RUNNER_SESSION_UUID` | Le même ID de session sous la forme UUID canonique |

120| `CLAUDE_RUNNER_API_BASE_URL` | URL de base de l'API Anthropic pour les appels limités à la session |138| `CLAUDE_RUNNER_API_BASE_URL` | URL de base de l'API Anthropic pour les appels limités à la session |

121| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La surface client qui a créé la session, comme `web_claude_ai`, `desktop_app` ou `ios`. Non défini quand la session n'a pas de surface enregistrée ou reconnue. |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. |

122| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Le token d'accès de session, pour les appels API limités à la session |140| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Le token d'accès de session, pour les appels API limités à la session |

123| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Paramètres git que le runner fixe pour le git que votre hook exécute. [Configuration git dans les hooks de cycle de vie](#git-configuration-inside-lifecycle-hooks) les décrit. Nécessite Claude Code v2.1.280 ou ultérieur. |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. |

124 142 

125Le script doit laisser un arbre de travail à `CLAUDE_RUNNER_CHECKOUT_PATH` vérifié à la révision demandée. HEAD détaché est correct ; le runner crée la branche de travail de la session par-dessus. Le runner vérifie que le chemin contient un `.git` après ; si votre hook matérialise une source non-git comme Perforce ou une archive dépaquetée, définissez `CLAUDE_RUNNER_SKIP_GIT_VERIFY=1` dans l'environnement du runner pour ignorer cette vérification. Les flux basés sur git comme la création de branche de travail et l'envoi de résultats nécessitent un checkout git, donc exportez les résultats à partir d'arbres non-git avec un hook [`post-session`](#post-session).143Le script doit laisser un arbre de travail à `CLAUDE_RUNNER_CHECKOUT_PATH` extrait à la révision demandée. Un HEAD détaché convient, car le runner crée la branche de travail de la session par-dessus.

126 144 

127Le runner ne transmet pas un identifiant git au hook. À la place, frappez un identifiant de clone par session à partir de l'identité de la session : vérifiez `CLAUDE_CODE_SESSION_ACCESS_TOKEN` avec une bibliothèque JWT standard par rapport au point de terminaison JWKS sous `CLAUDE_RUNNER_API_BASE_URL`, comme décrit dans [Vérifier le token à partir de votre service](/docs/fr/self-hosted-environments-identity#verify-the-token-from-your-service), puis faites en sorte que votre service d'identifiants émette un identifiant de clone de courte durée pour l'identité dans la revendication `act` du token. `CLAUDE_RUNNER_CLAUDE_BIN` n'est pas défini dans l'environnement du hook de checkout, donc la sous-commande `decode-token` n'est pas disponible ici. Revenir à tout ce que l'authentification git de l'hôte a déjà, comme un agent SSH, un helper d'identifiants ou `.netrc`, est aussi une option.145Après le retour de votre hook, le runner vérifie que `CLAUDE_RUNNER_CHECKOUT_PATH` contient un `.git`. Si votre hook matérialise une source non-git comme Perforce ou une archive tarball dépaquetée, définissez `CLAUDE_RUNNER_SKIP_GIT_VERIFY=1` dans l'environnement du runner pour ignorer cette vérification. Les flux basés sur git comme la création de branche de travail et l'envoi des résultats nécessitent un checkout git, donc exportez les résultats des arbres non-git avec un [hook `post-session`](#post-session).

128 146 

129Quand le hook se termine avec un code non-zéro, ou se termine avec 0 sans laisser un checkout utilisable derrière, ce que le runner fait dépend du référentiel :147<h4 id="get-git-credentials-in-the-hook">

148 Obtenir des identifiants git dans le hook

149</h4>

130 150 

131* **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.151Le runner ne transmet pas d'identifiants git au hook. La sous-commande `decode-token` n'est pas non plus disponible ici, car `CLAUDE_RUNNER_CLAUDE_BIN` n'est pas défini dans l'environnement du hook de checkout. Générez plutôt des identifiants de clone par session à partir de l'identité de la session, ou revenez à l'authentification git propre à l'hôte :

132* **Un référentiel que la session lit uniquement**, comme un référentiel ajouté à une session en cours d'exécution : le runner enregistre une ligne `[runner:warn]` avec le détail de l'échec, affiche une étape `Skipped` à la session, supprime ce que le hook a laissé au chemin de checkout et continue avec les référentiels restants. Quand le runner ne peut pas supprimer le chemin immédiatement, il réessaie la suppression à la fin de la session. Si ignorer laisse la session sans aucun référentiel du tout, le runner échoue la session de toute façon.

133 152 

134Avant v2.1.228, le runner échouait la session sur un échec de hook pour tout référentiel, donc un référentiel en lecture seule que le hook ne pouvait pas servir échouait la session à nouveau sur chaque nouveau runner sur lequel la session reprenait.153* **Identifiants de clone par session** : vérifiez `CLAUDE_CODE_SESSION_ACCESS_TOKEN` avec une bibliothèque JWT standard par rapport à l'endpoint JWKS sous `CLAUDE_RUNNER_API_BASE_URL`, comme décrit dans [Vérifier le token à partir de votre service](/docs/fr/self-hosted-environments-identity#verify-the-token-from-your-service). Faites ensuite émettre par votre service d'identifiants des identifiants de clone de courte durée pour l'identité figurant dans la revendication `act` du jeton. Associez ces identifiants à `act.sub`, et n'exigez pas `act.email`.

154* **Authentification git de l'hôte** : utilisez l'authentification git dont l'hôte dispose déjà, comme un agent SSH, un helper d'identifiants ou `.netrc`.

135 155 

136Le runner supprime le chemin de checkout après la fin de la session.156<h4 id="when-the-hook-fails">

157 Quand le hook échoue

158</h4>

159 

160Le hook échoue lorsqu'il se termine avec un code non nul, ou se termine avec 0 sans laisser de checkout utilisable :

161 

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.

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.

164 

165Lorsque le hook réussit, le runner supprime le chemin de checkout après la fin de la session.

137 166 

138<h3 id="post-session">167<h3 id="post-session">

139 post-session168 post-session


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

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

153| `CLAUDE_RUNNER_API_BASE_URL` | URL de base de l'API Anthropic pour les appels limités à la session |182| `CLAUDE_RUNNER_API_BASE_URL` | URL de base de l'API Anthropic pour les appels limités à la session |

154| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La surface client qui a créé la session, comme `web_claude_ai`, `desktop_app` ou `ios`. Non défini quand la session n'a pas de surface enregistrée ou reconnue. Nécessite Claude Code v2.1.229 ou ultérieur. |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. |

155| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Le token d'accès de session, pour les appels API limités à la session |184| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Le token d'accès de session, pour les appels API limités à la session |

156| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Paramètres git que le runner fixe pour le git que votre hook exécute. [Configuration git dans les hooks de cycle de vie](#git-configuration-inside-lifecycle-hooks) les décrit. Nécessite Claude Code v2.1.280 ou ultérieur. |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. |

157 186 

158`CLAUDE_RUNNER_EXIT_REASON` prend l'une des quatre valeurs :187`CLAUDE_RUNNER_EXIT_REASON` prend l'une des quatre valeurs :

159 188 

160* `completed` : la session s'est terminée proprement. Le processus Claude Code s'est terminé normalement, ou la session a été archivée ou supprimée pendant qu'elle était toujours en cours d'exécution.189* `completed` : la session s'est terminée proprement. Le processus Claude Code s'est terminé normalement, ou s'est terminé de lui-même après l'archivage ou la suppression de la session.

161* `failed` : le processus Claude Code s'est écrasé, ou la configuration a échoué après son démarrage.190* `failed` : le processus Claude Code s'est écrasé, ou la configuration a échoué après son démarrage.

162* `interrupted` : le runner a arrêté la session. Il a libéré la session pour libérer l'emplacement, la session a expiré au démarrage, le serveur a déplacé la session hors de ce runner, le runner était en drainage, ou la session a dépassé sa limite [`--kill-session-after-min`](/docs/fr/self-hosted-environments-reference#runner-cli-flags).191* `interrupted` : le runner a arrêté la session, dans l'un des cas suivants :

192 * Le runner a libéré la session pour libérer l'emplacement.

193 * La session a expiré au démarrage.

194 * Le serveur a déplacé la session hors de ce runner.

195 * L'interrogation du runner a détecté un archivage ou une suppression avant la sortie du processus.

196 * Le runner était en drainage.

197 * La session a dépassé sa limite [`--kill-session-after-min`](/docs/fr/self-hosted-environments-reference#runner-cli-flags).

163* `abandoned` : réservé à une session qu'un autre runner a revendiquée. Le hook ne se déclenche actuellement pas dans ce cas.198* `abandoned` : réservé à une session qu'un autre runner a revendiquée. Le hook ne se déclenche actuellement pas dans ce cas.

164 199 

165Les [compteurs de cycle de vie de la session](/docs/fr/self-hosted-environments-reference#session-lifecycle-counter-semantics) comptent une libération, un délai d'expiration au démarrage et un déplacement du serveur comme `completed` plutôt que `interrupted`, car le runner a remis l'emplacement proprement. Attendez-vous à cette différence si vous comparez les reçus de hook avec les compteurs.200Si vous comparez les reçus de hook avec les [compteurs de cycle de vie de la session](/docs/fr/self-hosted-environments-reference#session-lifecycle-counter-semantics), attendez-vous à ce que certains reçus `interrupted` y soient comptés comme `completed`. Les compteurs comptent comme `completed` une libération, un délai d'expiration au démarrage, un déplacement du serveur, ainsi qu'un archivage ou une suppression détectés en premier par l'interrogation du runner, car le runner a remis l'emplacement proprement.

166 201 

167Le statut de sortie du hook n'affecte jamais le résultat de la session ; un échec est enregistré et ignoré. Le runner attend jusqu'à `--post-session-hook-timeout-sec`, 60 secondes par défaut, à chaque fin de session y compris l'arrêt du runner. Cet exemple sauvegarde le travail non commis dans une branche de secours :202Le statut de sortie du hook n'affecte jamais le résultat de la session ; un échec est enregistré et ignoré. Le runner attend jusqu'à `--post-session-hook-timeout-sec`, 60 secondes par défaut, à chaque fin de session y compris l'arrêt du runner. Cet exemple sauvegarde le travail non commis dans une branche de secours :

168 203 

169```bash theme={null}204```bash theme={null}

170#!/usr/bin/env bash205#!/usr/bin/env bash

171set -u206set -u

207export GIT_ALLOW_PROTOCOL=${GIT_ALLOW_PROTOCOL:-https:http:ssh}

172IFS=':'208IFS=':'

173# Les remplacements -c l'emportent sur les paramètres locaux au dépôt, empêchant la configuration209# Les remplacements -c l'emportent sur les paramètres locaux au dépôt, empêchant la configuration

174# fsmonitor, hook-path et gpg-program écrite par la session d'exécuter du code avec les210# fsmonitor, hook-path et gpg-program écrite par la session d'exécuter du code avec les

175# privilèges du hook. -c commit.gpgsign=false laisse aussi ces commits de secours211# privilèges du hook. -c commit.gpgsign=false laisse aussi ces commits de secours

176# non signés sous --configure-git.212# non signés sous --configure-git.

177# credential.helper et pushurl locaux au dépôt s'appliquent toujours, ainsi que213# credential.helper et pushurl locaux au dépôt s'appliquent toujours, ainsi que

178# core.sshCommand sur un runner antérieur à v2.1.280 ; si le hook détient des identifiants214# core.sshCommand sur un runner antérieur à v2.1.280 ; lisez la note sous le script

179# que la session n'avait pas, voir la note sous le script.215# avant de fournir des identifiants à ce push.

180g() { git -c core.fsmonitor=false -c core.hooksPath=/dev/null \216g() { git -c core.fsmonitor=false -c core.hooksPath=/dev/null \

181 -c commit.gpgsign=false "$@"; }217 -c commit.gpgsign=false "$@"; }

182for ws in $CLAUDE_RUNNER_WORKSPACE_PATHS; do218for ws in $CLAUDE_RUNNER_WORKSPACE_PATHS; do


188done224done

189```225```

190 226 

191Le hook envoie avec les identifiants git disponibles dans son propre environnement sur l'hôte du runner. Sous la [posture sans identifiants dans l'image](/docs/fr/self-hosted-environments-deploy#configure-git), y compris quand le clone intégré passe par le proxy git Anthropic, il n'y en a pas, donc générez des identifiants de push de courte durée à l'intérieur du hook avant d'envoyer : échangez le jeton de session que le hook reçoit dans `CLAUDE_CODE_SESSION_ACCESS_TOKEN` avec votre propre service de jetons, en le vérifiant comme [Vérifier l'identité de la session](/docs/fr/self-hosted-environments-identity) le décrit. Quand le hook détient des identifiants que la session n'avait pas, remplacez `origin` par une URL fournie par l'opérateur et passez `-c credential.helper=` plus votre propre helper. [Configuration git dans les hooks de cycle de vie](#git-configuration-inside-lifecycle-hooks) décrit ce que la configuration écrite par la session peut encore affecter.227La ligne `GIT_ALLOW_PROTOCOL` du script limite git aux remotes HTTPS, HTTP et SSH. Si l'environnement du runner définit déjà sa propre liste `GIT_ALLOW_PROTOCOL` non vide, le script conserve cette liste.

228 

229Le hook envoie avec les identifiants git disponibles dans son propre environnement sur l'hôte du runner. Sous la [posture sans identifiants dans l'image](/docs/fr/self-hosted-environments-deploy#configure-git), y compris quand le clone intégré passe par le proxy git Anthropic, il n'y en a pas, donc générez des identifiants de push de courte durée à l'intérieur du hook avant d'envoyer : échangez le jeton de session que le hook reçoit dans `CLAUDE_CODE_SESSION_ACCESS_TOKEN` avec votre propre service de jetons, en le vérifiant comme [Vérifier l'identité de la session](/docs/fr/self-hosted-environments-identity) le décrit.

230 

231Traitez tous les identifiants que votre hook fournit à git comme des identifiants qu'une session peut obtenir, et générez-les de sorte qu'ils ne puissent rien faire de plus que ce push. Git dans votre hook lit des fichiers de configuration qu'une session peut écrire, et un helper d'identifiants ou un filter driver désigné dans l'un d'eux s'exécute avec les privilèges de votre hook. Les paramètres de ces fichiers peuvent aussi modifier la destination d'un push, quel que soit le remote que vous indiquez. Pour les paramètres git que le runner fixe dans votre hook et ceux qu'il laisse à ces fichiers, voir [Configuration git dans les hooks de cycle de vie](#git-configuration-inside-lifecycle-hooks).

192 232 

193<h4 id="hook-timing-when-the-runner-releases-a-session">233<h4 id="hook-timing-when-the-runner-releases-a-session">

194 Timing du hook quand le runner libère une session234 Timing du hook quand le runner libère une session


264| `CLAUDE_RUNNER_ORDER_ID` | Clé d'idempotence opaque, unique par demande de spawn et sûre pour les noms de ressources Kubernetes. Utilisez-la comme clé de déduplication de votre approvisionneur. |304| `CLAUDE_RUNNER_ORDER_ID` | Clé d'idempotence opaque, unique par demande de spawn et sûre pour les noms de ressources Kubernetes. Utilisez-la comme clé de déduplication de votre approvisionneur. |

265| `CLAUDE_RUNNER_SESSION_ID` | La session pour laquelle cette demande est. Elle se répète à chaque re-demande pour la session, donc utilisez-la pour la journalisation et l'acheminement, pas comme clé de déduplication. Vide pour les demandes de pré-réchauffage, qui démarrent un runner de secours avant toute session spécifique quand [`--min-idle`](/docs/fr/self-hosted-environments-reference#orchestrator-cli-flags) est défini, donc ne supposez pas que la variable est définie. |305| `CLAUDE_RUNNER_SESSION_ID` | La session pour laquelle cette demande est. Elle se répète à chaque re-demande pour la session, donc utilisez-la pour la journalisation et l'acheminement, pas comme clé de déduplication. Vide pour les demandes de pré-réchauffage, qui démarrent un runner de secours avant toute session spécifique quand [`--min-idle`](/docs/fr/self-hosted-environments-reference#orchestrator-cli-flags) est défini, donc ne supposez pas que la variable est définie. |

266| `CLAUDE_RUNNER_SESSION_UUID` | Le même ID de session sous la forme UUID canonique. Vide pour les demandes de pré-réchauffage. |306| `CLAUDE_RUNNER_SESSION_UUID` | Le même ID de session sous la forme UUID canonique. Vide pour les demandes de pré-réchauffage. |

267| `CLAUDE_RUNNER_ATTEMPT` | Combien de demandes de spawn cette session a eues. `0` pour les demandes de pré-réchauffage. |307| `CLAUDE_RUNNER_ATTEMPT` | Un compteur par session à utiliser pour la journalisation. Ce n'est ni un nombre de nouvelles tentatives ni un nombre de demandes. `0` pour les demandes de pré-réchauffage, bien qu'une demande pour une session puisse aussi porter `0`. |

268| `CLAUDE_RUNNER_ORDER_SERVER_TIME` | Heure du serveur à partir de l'en-tête HTTP `Date` de la réponse du sondage. Quand le hook vérifie le `exp` du JWT du bon de travail, comparez par rapport à cette valeur au lieu de l'horloge locale pour tolérer l'asymétrie. Vide quand la passerelle a omis l'en-tête. |308| `CLAUDE_RUNNER_ORDER_SERVER_TIME` | Heure du serveur à partir de l'en-tête HTTP `Date` de la réponse du sondage. Quand le hook vérifie le `exp` du JWT du bon de travail, comparez par rapport à cette valeur au lieu de l'horloge locale pour tolérer l'asymétrie. Vide quand la passerelle a omis l'en-tête. |

269| `CLAUDE_RUNNER_POOL_ID` | L'ID de l'environnement auquel le nouveau runner doit se joindre, sous la forme `ccpool_...` |309| `CLAUDE_RUNNER_POOL_ID` | L'ID de l'environnement auquel le nouveau runner doit se joindre, sous la forme `ccpool_...` |

270| `CLAUDE_RUNNER_ACCOUNT_ID` | ID balisé du compte qui a mis en attente la session, pour l'acheminement par compte, le quota ou la rétrofacturation. Vide quand indisponible, et toujours vide pour les sessions du canal Claude Tag, qu'aucun compte ne met en attente. |310| `CLAUDE_RUNNER_ACCOUNT_ID` | ID balisé du compte qui a mis en attente la session, pour l'acheminement par compte, le quota ou la rétrofacturation. Vide quand indisponible, et toujours vide pour les sessions du canal Claude Tag, qu'aucun compte ne met en attente. |

271| `CLAUDE_RUNNER_ACCOUNT_EMAIL` | Email du compte qui a mis en attente la session. Vide quand indisponible. Traitez l'email comme des informations d'identification personnelle et ne le consignez pas. |311| `CLAUDE_RUNNER_ACCOUNT_EMAIL` | Email du compte qui a mis en attente la session. Vide quand indisponible. Traitez l'email comme des informations d'identification personnelle et ne le consignez pas. |

272| `CLAUDE_RUNNER_PRIMARY_REPO_URL` | URL de la première source git de la session, pour l'acheminement vers un runner avec ce référentiel pré-réchauffé. Vide quand la session n'a pas de sources git. |312| `CLAUDE_RUNNER_PRIMARY_REPO_URL` | URL de la première source git de la session, pour l'acheminement vers un runner avec ce référentiel pré-réchauffé. Vide quand la session n'a pas de sources git. |

273| `CLAUDE_RUNNER_PRIMARY_REPO_REVISION` | Révision de la première source git de la session : branche, SHA ou tag. Vide quand non spécifié. |313| `CLAUDE_RUNNER_PRIMARY_REPO_REVISION` | Révision de la première source git de la session : branche, SHA, tag ou nom de référence complet. Vide quand non spécifié. |

274| `CLAUDE_RUNNER_REPO_SOURCES` | Tableau JSON de `{url, revision}` pour toutes les sources git de la session, pour les hooks qui acheminent sur un référentiel secondaire. Vide quand il n'y a pas de sources. |314| `CLAUDE_RUNNER_REPO_SOURCES` | Tableau JSON de `{url, revision}` pour toutes les sources git de la session, pour les hooks qui acheminent sur un référentiel secondaire. Vide quand il n'y a pas de sources. |

275| `CLAUDE_RUNNER_CORRELATION_ID` | L'ID de corrélation fourni à la création de la session, renvoyé afin que le hook puisse mapper ce bon de travail à la demande qui a créé la session. Vide quand la session n'en a pas. |315| `CLAUDE_RUNNER_CORRELATION_ID` | L'ID de corrélation fourni à la création de la session, renvoyé afin que le hook puisse mapper ce bon de travail à la demande qui a créé la session. Vide quand la session n'en a pas. |

276| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La surface client qui a créé la session, comme `web_claude_ai`, `desktop_app`, `ios` ou `scheduled_trigger`, pour l'analyse d'adoption. Non défini quand la session n'a pas de surface enregistrée ou reconnue, et pour les demandes de pré-réchauffage ; vérifiez-le avec `[ -n "${CLAUDE_RUNNER_CLIENT_PLATFORM:-}" ]`, qui reste sûr sous `set -u`. |316| `CLAUDE_RUNNER_CLIENT_PLATFORM` | La surface client qui a créé la session, comme `web_claude_ai`, `desktop_app`, `ios` ou `scheduled_trigger`, pour l'analyse d'adoption. Non défini quand la session n'a pas de surface enregistrée ou reconnue, et pour les demandes de pré-réchauffage ; vérifiez-le avec `[ -n "${CLAUDE_RUNNER_CLIENT_PLATFORM:-}" ]`, qui reste sûr sous `set -u`. |


282* **Utilisez `--capacity 1` sur les runners générés** : un bon de travail lié à une session enregistre exactement un runner lié à cette session, donc une capacité plus élevée ajoute des emplacements qui ne reçoivent jamais de travail, et le runner enregistre un avertissement au démarrage.322* **Utilisez `--capacity 1` sur les runners générés** : un bon de travail lié à une session enregistre exactement un runner lié à cette session, donc une capacité plus élevée ajoute des emplacements qui ne reçoivent jamais de travail, et le runner enregistre un avertissement au démarrage.

283* **Les bons de travail de pré-réchauffage s'enregistrent sans liaison** : le runner de secours n'est pas lié à une session et revendique le travail en attente comme un runner de flotte fixe.323* **Les bons de travail de pré-réchauffage s'enregistrent sans liaison** : le runner de secours n'est pas lié à une session et revendique le travail en attente comme un runner de flotte fixe.

284 324 

285Le contrat a quatre règles agnostiques de l'approvisionneur :325Le contrat a quatre règles, quelle que soit la plateforme sur laquelle votre hook effectue l'approvisionnement :

286 326 

2871. **Soyez idempotent sur `CLAUDE_RUNNER_ORDER_ID`.** La redélivraison de la même demande doit générer au maximum un runner. Dérivez un nom de ressource déterministe à partir de l'ID et laissez votre plateforme rejeter le doublon. Ne clé pas sur `CLAUDE_RUNNER_SESSION_ID` à la place. Chaque re-demande pour une session porte le même ID de session avec un nouvel ID de commande, donc une charge de travail nommée ou dédupliquée par l'ID de session est créée une fois et jamais à nouveau pour cette session.3271. **Soyez idempotent sur `CLAUDE_RUNNER_ORDER_ID`.** La redélivraison de la même demande doit générer au maximum un runner. Dérivez un nom de ressource déterministe à partir de l'ID et laissez votre plateforme rejeter le doublon. Ne clé pas sur `CLAUDE_RUNNER_SESSION_ID` à la place. Chaque re-demande pour une session porte le même ID de session avec un nouvel ID de commande, donc une charge de travail nommée ou dédupliquée par l'ID de session est créée une fois et jamais à nouveau pour cette session.

2882. **Ne réessayez pas la charge de travail.** Un ID de commande signifie au maximum une charge de travail créée. Si le runner ne s'enregistre jamais, Anthropic re-demande avec un ID de commande frais après `--expected-spawn-seconds`.3282. **Ne réessayez pas la charge de travail.** Un ID de commande signifie au maximum une charge de travail créée. Si le runner ne s'enregistre jamais, Anthropic re-demande avec un ID de commande frais après `--expected-spawn-seconds`.

2893. **Utilisez le contrat du code de sortie.** Sortie 0 signifie soumis. Sortie 1 signifie échec réessayable ; la session recule et est re-proposée. Sortie 2 ou supérieure signifie non-réessayable ; la session est bloquée du spawning à nouveau jusqu'à ce qu'un [Owner](/docs/fr/cloud-environments#organization-shared-environments) sélectionne **Retry** sur elle dans l'onglet **Activity** de l'environnement. Sur une sortie non-zéro, la queue du stderr du hook apparaît là comme la raison de l'échec, donc écrivez l'erreur exploitable sur stderr et jamais les secrets. Pour une demande de pré-réchauffage il n'y a pas de session à échouer : l'orchestrateur enregistre une sortie non-zéro localement uniquement, et le serveur re-demande le spawn après le bail.3293. **Utilisez le contrat du code de sortie.** Sortez avec le statut qui correspond au résultat :

2904. **Définissez `--expected-spawn-seconds` à au moins votre temps de démarrage p99.** C'est le bail côté serveur. Toutes les répliques d'orchestrateur doivent utiliser la même valeur.330 

331 * **Sortie 0** : soumis.

332 * **Sortie 1** : é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.

334 

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

336 

337 Une demande de pré-réchauffage n'a pas de session à faire échouer : l'orchestrateur consigne une sortie non nulle localement uniquement, et le serveur re-demande le spawn après l'expiration du bail `--expected-spawn-seconds`.

3384. **Définissez `--expected-spawn-seconds` à au moins votre temps p99 entre la demande de spawn et l'enregistrement du runner.** Mesurez à partir du moment où l'orchestrateur reçoit la demande de spawn, et incluez toute attente de capacité sur votre plateforme ainsi que le temps de démarrage. Cette valeur est le bail côté serveur, et le bon de travail expire avec lui, donc un runner dont la charge de travail prend plus de temps ne peut pas s'enregistrer. Toutes les répliques d'orchestrateur doivent utiliser la même valeur.

291 339 

292Tout ce que le hook écrit sur stdout ou stderr apparaît dans le journal de l'orchestrateur avec les identifiants automatiquement supprimés. Si les sessions restent en attente, vérifiez le corps `/healthz` de l'orchestrateur pour les compteurs de file d'attente, puis ouvrez l'onglet **Activity** de votre environnement sur la [page d'administration **Cloud environments**](https://claude.ai/admin-settings/cloud-environments) : développez une session échouée là pour son erreur de spawn, et sélectionnez **Retry** pour la re-demander.340Tout ce que le hook écrit sur stdout ou stderr apparaît dans le journal de l'orchestrateur avec les identifiants automatiquement supprimés. Si les sessions restent en attente, vérifiez le corps `/healthz` de l'orchestrateur pour les compteurs de file d'attente, puis ouvrez l'onglet **Activity** de votre environnement sur la [page d'administration **Cloud environments**](https://claude.ai/admin-settings/cloud-environments) : développez une session échouée là pour son erreur de spawn, et sélectionnez **Retry** pour la re-demander.

293 341 

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

295 343 

344<h4 id="keep-transient-failures-retryable-in-a-shell-hook">

345 Garder les échecs transitoires réessayables dans un hook shell

346</h4>

347 

348Dans un hook shell qui utilise `set -e`, un échec qu'une nouvelle tentative aurait pu résoudre peut bloquer la session. Le hook s'arrête à la commande en échec et sort avec le statut propre à cette commande, et l'orchestrateur applique le contrat du code de sortie à ce statut. De nombreux échecs renvoient un statut de 2 ou plus, comme `127` quand une commande n'est pas installée et `22` de `curl --fail` sur une erreur HTTP, de sorte qu'ils bloquent la session dès son premier échec.

349 

350Une session que le hook a déjà bloquée reste bloquée jusqu'à ce qu'un utilisateur lui envoie un nouveau message ou qu'un [Owner](/docs/fr/cloud-environments#organization-shared-environments) sélectionne **Retry** sur elle dans l'onglet **Activity** de l'environnement.

351 

352Pour transformer un tel échec en sortie 1, placez ces lignes directement sous la ligne `#!` du hook, au-dessus de tout ce qui peut échouer :

353 

354```bash theme={null}

355set -e

356PERMANENT=; permanent() { printf '%s\n' "$*" >&2; PERMANENT=1; exit 2; }

357trap 'rc=$?; [ "$rc" -eq 0 ] || [ -n "${PERMANENT:-}" ] || exit 1' EXIT

358```

359 

360Ces lignes modifient le comportement du reste du hook, donc vérifiez-le pour chacun de ces motifs après les avoir ajoutées :

361 

362* **`exit 2` ou supérieur isolé** : avec le trap défini, il devient une sortie 1. Pour une erreur qu'aucune nouvelle tentative ne peut corriger, appelez plutôt `permanent` avec la raison, comme `permanent "namespace claude-runners does not exist"`. Appelez-le dans le shell principal, pas à l'intérieur de `$( )`, `( )` ou d'un pipe.

363* **`exec`** : ne commencez pas la dernière commande du hook par `exec`, car `exec` remplace le shell et le trap ne s'exécute pas.

364* **Second trap `EXIT`** : un second `trap ... EXIT` remplace le premier, donc fusionnez les deux en un seul trap. Placez vos commandes de nettoyage directement après `rc=$?;` et terminez chacune par `|| true;`. Le nettoyage s'exécute alors en cas d'échec comme en cas de succès, et une commande de nettoyage en échec ne définit pas le statut de sortie du hook. Ce trap fusionné illustre la forme, `your-cleanup-command` représentant votre propre commande :

365 

366 ```bash theme={null}

367 trap 'rc=$?; your-cleanup-command || true; [ "$rc" -eq 0 ] || [ -n "${PERMANENT:-}" ] || exit 1' EXIT

368 ```

369* **Commandes autorisées à échouer** : si le hook n'utilisait pas `set -e` auparavant, il s'arrête désormais à la première commande qui renvoie une valeur non nulle, comme une recherche qui ne trouve rien ou une soumission en double que votre plateforme rejette. Si le hook agit sur le résultat, faites de cette commande la condition d'un `if`. S'il ignore le résultat, faites suivre la commande de `|| true`.

370 

371Pour confirmer que le trap fonctionne, ajoutez directement sous la ligne `trap` une ligne qui appelle une commande inexistante, comme `no-such-command`. Exécutez le fichier du hook depuis votre shell et vérifiez que `echo $?` affiche `1`, puis supprimez la ligne.

372 

296<h2 id="send-model-requests-to-bedrock-or-agent-platform">373<h2 id="send-model-requests-to-bedrock-or-agent-platform">

297 Envoyer les requêtes de modèle vers Bedrock ou Agent Platform374 Envoyer les requêtes de modèle vers Bedrock ou Agent Platform

298</h2>375</h2>


381Une session qui envoie des requêtes de modèle à Amazon Bedrock ou à Agent Platform de Google Cloud diffère d'une session sur l'API Anthropic sur les points suivants :458Une session qui envoie des requêtes de modèle à Amazon Bedrock ou à Agent Platform de Google Cloud diffère d'une session sur l'API Anthropic sur les points suivants :

382 459 

383* **Stratégie depuis claude.ai** : les [paramètres gérés par le serveur](/docs/fr/server-managed-settings) n'atteignent pas ces sessions. Les stratégies d'organisation qu'un Owner définit dans les paramètres d'administration de Claude Code ne les atteignent pas non plus ; Claude Code ne les applique donc pas à l'intérieur de la session. Placez les règles sur lesquelles vous comptez dans le [fichier de paramètres gérés](/docs/fr/managed-settings#delivery-mechanisms) de l'image du runner.460* **Stratégie depuis claude.ai** : les [paramètres gérés par le serveur](/docs/fr/server-managed-settings) n'atteignent pas ces sessions. Les stratégies d'organisation qu'un Owner définit dans les paramètres d'administration de Claude Code ne les atteignent pas non plus ; Claude Code ne les applique donc pas à l'intérieur de la session. Placez les règles sur lesquelles vous comptez dans le [fichier de paramètres gérés](/docs/fr/managed-settings#delivery-mechanisms) de l'image du runner.

461* **Skills du compte** : ces sessions ne téléchargent pas les skills activés pour le compte claude.ai d'une personne. Consultez [Comment la configuration de chaque session est assemblée](#how-each-session’s-config-is-assembled).

384* **Fichiers** : les fichiers que les utilisateurs joignent à une session dans claude.ai ou dans l'application mobile ou de bureau ne l'atteignent pas, et Claude ne peut pas renvoyer de fichiers avec l'[outil `SendUserFile`](/docs/fr/tools-reference). Placez plutôt les fichiers d'entrée dans le dépôt ou sur le runner.462* **Fichiers** : les fichiers que les utilisateurs joignent à une session dans claude.ai ou dans l'application mobile ou de bureau ne l'atteignent pas, et Claude ne peut pas renvoyer de fichiers avec l'[outil `SendUserFile`](/docs/fr/tools-reference). Placez plutôt les fichiers d'entrée dans le dépôt ou sur le runner.

385* **Sélection du modèle** : le plan de contrôle d'Anthropic envoie le modèle de chaque session, et lorsqu'une session démarre sans modèle, Claude Code utilise son modèle par défaut pour le fournisseur. Le runner supprime `ANTHROPIC_MODEL` et `ANTHROPIC_DEFAULT_MODEL` de l'environnement qu'il transmet aux sessions. Les exemples des pages des fournisseurs définissent `ANTHROPIC_MODEL`, mais dans l'environnement du runner, aucune de ces variables n'a d'effet. Les variables par famille décrites dans Épingler les versions de modèle pour [Amazon Bedrock](/docs/fr/amazon-bedrock#4-pin-model-versions) et [Agent Platform](/docs/fr/google-vertex-ai#5-pin-model-versions) atteignent bien les sessions. Elles déterminent ce vers quoi un alias comme `opus` est résolu, et non ce vers quoi un ID de modèle complet est résolu.463* **Sélection du modèle** : le plan de contrôle d'Anthropic envoie le modèle de chaque session, et lorsqu'une session démarre sans modèle, Claude Code utilise son modèle par défaut pour le fournisseur. Vous ne pouvez pas choisir le modèle avec `ANTHROPIC_MODEL` ou `ANTHROPIC_DEFAULT_MODEL` dans l'environnement du runner, mais vous pouvez épingler ce vers quoi un alias est résolu :

464 * **`ANTHROPIC_MODEL` et `ANTHROPIC_DEFAULT_MODEL`** : le runner les supprime de l'environnement qu'il transmet aux sessions, même si les exemples des pages des fournisseurs définissent `ANTHROPIC_MODEL`.

465 * **Variables d'épinglage par famille** : les variables décrites dans Épingler les versions de modèle pour [Amazon Bedrock](/docs/fr/amazon-bedrock#4-pin-model-versions) et [Agent Platform](/docs/fr/google-vertex-ai#5-pin-model-versions) atteignent bien les sessions. Elles déterminent ce vers quoi un alias comme `opus` est résolu, et non ce vers quoi un ID de modèle complet est résolu.

386* **Modèles que votre compte ne fournit pas** : une session peut échouer sur un message avec une erreur qui nomme le modèle. Activez les modèles que vos développeurs peuvent choisir, le modèle d'arrière-plan décrit dans Épingler les versions de modèle, ainsi que le modèle de classifieur utilisé par le [mode auto](/docs/fr/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry). Sur Amazon Bedrock, autorisez chacun d'eux dans votre stratégie.466* **Modèles que votre compte ne fournit pas** : une session peut échouer sur un message avec une erreur qui nomme le modèle. Activez les modèles que vos développeurs peuvent choisir, le modèle d'arrière-plan décrit dans Épingler les versions de modèle, ainsi que le modèle de classifieur utilisé par le [mode auto](/docs/fr/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry). Sur Amazon Bedrock, autorisez chacun d'eux dans votre stratégie.

387* **Recherche web et mode rapide** : la [recherche web](/docs/fr/tools-reference#websearch-tool-behavior) n'est pas disponible sur Amazon Bedrock, et le [mode rapide](/docs/fr/fast-mode) n'est disponible sur aucun des deux fournisseurs. Pour les autres fonctionnalités qui varient selon le fournisseur, consultez [Fonctionnalités de la CLI qui varient selon le fournisseur](/docs/fr/feature-availability#cli-capabilities-that-vary-by-provider).467* **Recherche web et mode rapide** : la [recherche web](/docs/fr/tools-reference#websearch-tool-behavior) n'est pas disponible sur Amazon Bedrock, et le [mode rapide](/docs/fr/fast-mode) n'est disponible sur aucun des deux fournisseurs. Pour les autres fonctionnalités qui varient selon le fournisseur, consultez [Fonctionnalités de la CLI qui varient selon le fournisseur](/docs/fr/feature-availability#cli-capabilities-that-vary-by-provider).

388 468 


411 491 

412Les sessions héritent de l'environnement du runner ; définissez donc [`ENABLE_TOOL_SEARCH`](/docs/fr/mcp#scale-with-mcp-tool-search) à ce niveau pour contrôler la recherche d'outils MCP pour chaque session lancée par un runner ; la page MCP décrit les valeurs possibles.492Les sessions héritent de l'environnement du runner ; définissez donc [`ENABLE_TOOL_SEARCH`](/docs/fr/mcp#scale-with-mcp-tool-search) à ce niveau pour contrôler la recherche d'outils MCP pour chaque session lancée par un runner ; la page MCP décrit les valeurs possibles.

413 493 

494<a id="connection-timing" />

495 

496<h3 id="wait-for-mcp-servers-before-the-first-turn">

497 Attendre les serveurs MCP avant le premier tour

498</h3>

499 

500Une session auto-hébergée attend brièvement les serveurs MCP qui sont encore en cours de connexion, à deux moments distincts. Un serveur qui manque une attente voit ses outils absents au début du premier tour ; ils deviennent disponibles plus tard sans aucune action de votre part. Les deux attentes sont les suivantes :

501 

502* **Démarrage de la session** : avant que la liste des outils ne soit établie pour la première fois, la session attend par défaut jusqu'à 5 secondes un serveur HTTP ou SSE dont l'entrée définit [`alwaysLoad: true`](/docs/fr/mcp#exempt-a-server-from-deferral), ou tous les serveurs lorsque vous définissez [`MCP_CONNECTION_NONBLOCKING=0`](/docs/fr/env-vars) dans l'environnement du runner. Sinon, les serveurs HTTP et SSE se connectent en arrière-plan. Pendant cette attente, la session s'initialise plus lentement. [`MCP_CONNECT_TIMEOUT_MS`](/docs/fr/env-vars) modifie la valeur par défaut de 5 secondes.

503* **Premier tour** : après l'arrivée du message, le premier tour attend jusqu'à 2 secondes les serveurs stdio qui sont encore en cours de connexion. Pendant cette attente, la première réponse est plus lente. Pour modifier la durée de cette attente, définissez [`CLAUDE_CODE_MCP_STARTUP_WAIT_MS`](/docs/fr/env-vars) dans l'environnement du runner. Cela ne modifie pas les serveurs couverts par l'attente. Nécessite Claude Code v2.1.274 ou une version ultérieure.

504 

505`claude mcp add` n'a pas de flag `alwaysLoad`. Pour définir cette clé, ajoutez plutôt le serveur avec `claude mcp add-json`, qui la reçoit dans le JSON du serveur et l'écrit dans `.claude.json`. Dans votre Dockerfile :

506 

507```dockerfile theme={null}

508RUN claude mcp add-json core '{"type":"http","url":"https://mcp.example.com/mcp","alwaysLoad":true}' --scope user

509```

510 

511Si les outils d'un serveur n'apparaissent pas non plus lors des tours suivants, vérifiez si le serveur a bien atteint la session, comme décrit dans [Serveurs MCP](#mcp-servers).

512 

414<h3 id="turn-off-built-in-session-tools">513<h3 id="turn-off-built-in-session-tools">

415 Désactiver les outils de session intégrés514 Désactiver les outils de session intégrés

416</h3>515</h3>


578 677 

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

580 679 

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

681 

682* **Paramètres du projet** : un `.claude/settings.json` commité dans le dépôt se superpose à la ligne de base au niveau utilisateur. Dans une session avec plusieurs dépôts, [le fichier d'au plus un dépôt prend effet](#repository-settings-in-sessions-with-several-repositories).

683* **Paramètres gérés** : les sessions lisent [`managed-settings.json`](/docs/fr/settings#where-settings-live) à partir du chemin système standard dans votre image runner. Pour savoir si ses clés s'appliquent aux côtés des [paramètres gérés par le serveur](/docs/fr/server-managed-settings), voir [comment Claude Code combine les sources gérées](/docs/fr/managed-settings#how-claude-code-combines-managed-sources).

684 

685Pour l'ordre dans lequel ces sources s'appliquent, voir [priorité des paramètres](/docs/fr/settings#settings-precedence).

582 686 

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

584 688 


586* **Qui les crée** : le plan de contrôle remplit les scripts à partir de constantes fixes dans son propre déploiement, jamais à partir d'entrées par session ou tierces.690* **Qui les crée** : le plan de contrôle remplit les scripts à partir de constantes fixes dans son propre déploiement, jamais à partir d'entrées par session ou tierces.

587* **Ce qui les gouverne toujours** : les hooks livrés via `--settings` entrent dans la configuration de hook fusionnée ordinaire, pas le niveau géré, donc vos paramètres gérés s'appliquent toujours. `disableAllHooks` les désactive, et ils ne font pas partie des catégories que [`allowManagedHooksOnly`](/docs/fr/settings-reference#allowmanagedhooksonly) garde chargées.691* **Ce qui les gouverne toujours** : les hooks livrés via `--settings` entrent dans la configuration de hook fusionnée ordinaire, pas le niveau géré, donc vos paramètres gérés s'appliquent toujours. `disableAllHooks` les désactive, et ils ne font pas partie des catégories que [`allowManagedHooksOnly`](/docs/fr/settings-reference#allowmanagedhooksonly) garde chargées.

588 692 

693Quand une personne démarre sa propre session, Claude Code télécharge aussi les [skills activés pour son compte claude.ai](/docs/fr/skills#skills-in-cowork-and-cloud-sessions) dans le répertoire de configuration de cette session. Une exécution de [routine](/docs/fr/routines) ne reçoit pas les skills de son propriétaire, et une session qui [envoie des requêtes de modèle à Bedrock ou Agent Platform](#send-model-requests-to-bedrock-or-agent-platform) n'en télécharge aucun. Pour un skill dont ces sessions ont besoin, commitez-le dans le `.claude/skills/` du dépôt ou ajoutez-le à votre image runner.

694 

589En dehors des sessions [Claude Tag](https://claude.com/docs/claude-tag/overview), une session dans un environnement auto-hébergé s'exécute avec la [mémoire automatique](/docs/fr/memory#auto-memory) désactivée par défaut. Pour les instructions qui doivent persister d'une session à l'autre, utilisez le `CLAUDE.md` de votre image runner ou du dépôt.695En dehors des sessions [Claude Tag](https://claude.com/docs/claude-tag/overview), une session dans un environnement auto-hébergé s'exécute avec la [mémoire automatique](/docs/fr/memory#auto-memory) désactivée par défaut. Pour les instructions qui doivent persister d'une session à l'autre, utilisez le `CLAUDE.md` de votre image runner ou du dépôt.

590 696 

591L'instantané du `~/.claude/` de l'hôte pris par le runner exclut le répertoire `projects/`. L'emplacement de stockage par défaut de la mémoire automatique se trouve sous ce répertoire. Si vous y placez des fichiers de mémoire, le runner ne les sème pas dans les sessions, et ils n'activent pas la mémoire automatique.697L'instantané du `~/.claude/` de l'hôte pris par le runner exclut le répertoire `projects/`. L'emplacement de stockage par défaut de la mémoire automatique se trouve sous ce répertoire. Si vous y placez des fichiers de mémoire, le runner ne les sème pas dans les sessions, et ils n'activent pas la mémoire automatique.

Details

20 20 

21* **Conteneurs éphémères, par session** : exécutez chaque processus runner dans un conteneur ou une VM fraîche qui est détruite lorsque le processus se termine, avec `--capacity 1` et la valeur par défaut `--drain-grace-sec 0` afin que chaque conteneur serve exactement une session. À une capacité plus élevée, ou avec une période de drainage positive, un conteneur sert plusieurs sessions du même [propriétaire verrouillé](/docs/fr/self-hosted-environments#key-concepts) ; voir [Cycle de vie du runner](/docs/fr/self-hosted-environments#runner-lifecycle). Ne réutilisez pas un système de fichiers entre les redémarrages du runner, sauf dans la configuration délibérée [checkout pré-chauffé](#reuse-a-pre-warmed-checkout), et jamais entre les propriétaires.21* **Conteneurs éphémères, par session** : exécutez chaque processus runner dans un conteneur ou une VM fraîche qui est détruite lorsque le processus se termine, avec `--capacity 1` et la valeur par défaut `--drain-grace-sec 0` afin que chaque conteneur serve exactement une session. À une capacité plus élevée, ou avec une période de drainage positive, un conteneur sert plusieurs sessions du même [propriétaire verrouillé](/docs/fr/self-hosted-environments#key-concepts) ; voir [Cycle de vie du runner](/docs/fr/self-hosted-environments#runner-lifecycle). Ne réutilisez pas un système de fichiers entre les redémarrages du runner, sauf dans la configuration délibérée [checkout pré-chauffé](#reuse-a-pre-warmed-checkout), et jamais entre les propriétaires.

22 * <span id="processes-a-stopped-session-leaves" />Lorsque le runner arrête une session, il n'envoie aucun signal à un processus encore en cours d'exécution après la fin de sa commande shell, comme un service passé en mode daemon. La destruction du conteneur ou de la VM met fin à ce processus.22 * <span id="processes-a-stopped-session-leaves" />Lorsque le runner arrête une session, il n'envoie aucun signal à un processus encore en cours d'exécution après la fin de sa commande shell, comme un service passé en mode daemon. La destruction du conteneur ou de la VM met fin à ce processus.

23* **Pas de larges identifiants dans l'image** : n'incluez pas de clés SSH de longue durée, d'identifiants de fournisseur cloud, ou de jetons d'accès personnel qui accordent plus que ce qu'une session a besoin. Générez les identifiants utilisés pendant une session, tels que les jetons push ou API, par session à partir de votre [script wrapper](/docs/fr/self-hosted-environments-configuration#wrapper-scripts). Pour le clone initial, qui se produit avant l'exécution du wrapper, utilisez un [hook de cycle de vie `checkout`](/docs/fr/self-hosted-environments-configuration#checkout) ou [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) ; voir [Configurer git](#configure-git).23* **Pas de larges identifiants dans l'image** : n'incluez pas de clés SSH de longue durée, d'identifiants de fournisseur cloud, ou de jetons d'accès personnel qui accordent plus que ce qu'une session a besoin. Générez les identifiants utilisés pendant une session, tels que les jetons push ou API, par session à partir de votre [script wrapper](/docs/fr/self-hosted-environments-configuration#wrapper-scripts). Le clone initial se produit avant l'exécution du wrapper ; gérez-le donc avec un [hook de cycle de vie `checkout`](/docs/fr/self-hosted-environments-configuration#checkout), ou avec [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) lorsque tous les dépôts d'une session se trouvent sur github.com. Pour ces deux options, voir [Configurer git](#configure-git).

24* **Tenez les identifiants GitHub de l'hôte à l'écart des sessions** : Claude peut utiliser tout identifiant GitHub qu'une session peut lire, avec l'accès que cet identifiant accorde. Tenez les identifiants GitHub à portée étendue propres à l'hôte runner hors de tout ce qu'une session peut lire. Un tel identifiant peut être un jeton d'accès personnel, le jeton que `gh auth login` enregistre pour votre compte, ou un `GH_TOKEN` dans l'environnement du runner.

25 * **Avec [git géré par Anthropic](#use-the-anthropic-git-proxy)** : avec un tel identifiant, Claude atteint GitHub directement au lieu de passer par git géré par Anthropic.

26 * **Sans git géré par Anthropic** : un identifiant de clone peut rester dans l'image si vous limitez sa portée aussi strictement que le décrit [Intégrer la configuration git dans votre image](#ship-git-config-in-your-image).

24* **Gardez le secret de l'environnement loin des hôtes exécutant les sessions** : le secret de l'environnement peut enregistrer des runners et récupérer toute session mise en file d'attente sur l'environnement. Sur une flotte fixe, il réside sur chaque hôte runner, où le code de toute session peut lire le fichier secret. Préférez les [runners à la demande](/docs/fr/self-hosted-environments-configuration#on-demand-runners), où le secret reste sur l'hôte orchestrateur, qui n'exécute jamais de code utilisateur, et chaque runner reçoit un bon de travail à usage unique qui enregistre exactement un runner. Sur une flotte fixe, traitez le fichier secret-environnement comme lisible par toute session et faites tourner le secret après tout compromis de session suspecté.27* **Gardez le secret de l'environnement loin des hôtes exécutant les sessions** : le secret de l'environnement peut enregistrer des runners et récupérer toute session mise en file d'attente sur l'environnement. Sur une flotte fixe, il réside sur chaque hôte runner, où le code de toute session peut lire le fichier secret. Préférez les [runners à la demande](/docs/fr/self-hosted-environments-configuration#on-demand-runners), où le secret reste sur l'hôte orchestrateur, qui n'exécute jamais de code utilisateur, et chaque runner reçoit un bon de travail à usage unique qui enregistre exactement un runner. Sur une flotte fixe, traitez le fichier secret-environnement comme lisible par toute session et faites tourner le secret après tout compromis de session suspecté.

25* **Sortie réseau par défaut-refuser** : limitez le trafic sortant du conteneur runner et session à votre propre limite réseau sur chaque environnement ; [Sortie par défaut-refuser](#default-deny-egress) couvre ce qu'il faut autoriser et pourquoi.28* **Sortie réseau par défaut-refuser** : limitez le trafic sortant du conteneur runner et session à votre propre limite réseau sur chaque environnement ; [Sortie par défaut-refuser](#default-deny-egress) couvre ce qu'il faut autoriser et pourquoi.

26* **IAM hôte avec privilèges minimaux** : l'identité de calcul attachée à l'hôte runner, telle qu'un profil d'instance ou un compte de service de nœud, ne devrait accorder que ce dont le runner lui-même a besoin. Les sessions devraient obtenir leurs propres identifiants via votre script wrapper plutôt que d'hériter de ceux de l'hôte.29* **IAM hôte avec privilèges minimaux** : l'identité de calcul attachée à l'hôte runner, telle qu'un profil d'instance ou un compte de service de nœud, ne devrait accorder que ce dont le runner lui-même a besoin. Les sessions devraient obtenir leurs propres identifiants via votre script wrapper plutôt que d'hériter de ceux de l'hôte.


42 La garde s'exécute indépendamment de [`--trust-workspace`](/docs/fr/self-hosted-environments-reference#runner-cli-flags), et ne couvre pas les hooks de dépôt, `.mcp.json`, ou les règles Bash ; voir [Permissions et approbation des outils](/docs/fr/self-hosted-environments-configuration#permissions-and-tool-approval) pour savoir où ces autorisations doivent se trouver.45 La garde s'exécute indépendamment de [`--trust-workspace`](/docs/fr/self-hosted-environments-reference#runner-cli-flags), et ne couvre pas les hooks de dépôt, `.mcp.json`, ou les règles Bash ; voir [Permissions et approbation des outils](/docs/fr/self-hosted-environments-configuration#permissions-and-tool-approval) pour savoir où ces autorisations doivent se trouver.

43 46 

44<Note>47<Note>

45 La liste d'autorisation IP de votre organisation ne couvre pas le trafic du runner auto-hébergé par défaut. Ne vous fiez pas à elle comme contrôle réseau pour le trafic du runner ou de la session ; appliquez plutôt une sortie par défaut-refuser à votre propre limite réseau, et contactez votre équipe de compte Anthropic si vous souhaitez l'application de la liste d'autorisation IP pour votre organisation.48 Si votre organisation a activé la [liste d'autorisation IP](https://support.claude.com/en/articles/13200993-restrict-access-to-claude-with-ip-allowlisting), ajoutez les adresses de sortie publiques de vos runners et conteneurs de session à la liste d'autorisation avant de les démarrer. Si vous exécutez des [runners à la demande](/docs/fr/self-hosted-environments-configuration#on-demand-runners), ajoutez également l'adresse de l'hôte orchestrateur. Ne vous fiez pas à la liste d'autorisation comme contrôle réseau pour le trafic du runner ou de la session. Appliquez plutôt une sortie par défaut-refuser à votre propre limite réseau.

46</Note>49</Note>

47 50 

48<h2 id="network-requirements">51<h2 id="network-requirements">


55 58 

56| Hôte | Port | Utilisé pour |59| Hôte | Port | Utilisé pour |

57| :- | :- | :- |60| :- | :- | :- |

58| `api.anthropic.com` | 443, HTTPS ; WSS pour le connecteur SCM uniquement | Plan de contrôle du runner et streaming de session, inférence de modèle, drapeaux de fonctionnalités, analytique de produit, récupérations de clés [JWKS](/docs/fr/self-hosted-environments-identity), signature de commit, le proxy git quand `--use-anthropic-git-proxy` est défini, et le tunnel [connecteur SCM](/docs/fr/self-hosted-environments-reference#scm-connector-flags) de l'orchestrateur quand `--scm-connector-host` est défini |61| `api.anthropic.com` | 443, HTTPS ; WSS pour le [git géré par Anthropic](#use-the-anthropic-git-proxy) | Plan de contrôle du runner et streaming de session, inférence de modèle, feature flags, analytique de produit, récupérations de clés [JWKS](/docs/fr/self-hosted-environments-identity), signature de commit, et git géré par Anthropic quand `--use-anthropic-git-proxy` est défini |

59| Votre hôte git, tel que `github.com` ou votre hôte GitHub Enterprise | 443 ou 22 | Clonage et push de référentiels. Non nécessaire si le runner utilise `--use-anthropic-git-proxy`, qui route le trafic git via `api.anthropic.com`. |62| Votre hôte git, tel que `github.com` ou votre hôte GitHub Enterprise | 443 ou 22 | Clonage et push de dépôts sur chaque hôte git utilisé par les sessions du runner. Sur un runner qui utilise [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), consultez [quand le chemin `github.com` reste nécessaire](#github-com-egress-with-the-anthropic-git-proxy). |

63 

64<span id="github-com-egress-with-the-anthropic-git-proxy" />Un runner qui utilise [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) route son trafic git `github.com` via `api.anthropic.com`, il n'a donc pas besoin du chemin vers l'hôte git pour `github.com`. Il a toutefois besoin de ce chemin si vous définissez `--push-outcome-on-release` ou si vous effectuez un push depuis un hook `post-session`.

60 65 

61Que ces hôtes soient nécessaires dépend de votre configuration :66Que ces hôtes soient nécessaires dépend de votre configuration :

62 67 


71| `browser-intake-us5-datadoghq.com` | 443 | Téléchargements de rapports d'erreurs Anthropic, envoyés uniquement quand [le rapport d'erreurs](/docs/fr/data-usage#telemetry-services) est activé pour le compte de la session. Supprimé par `DISABLE_ERROR_REPORTING=1` ou `DISABLE_TELEMETRY=1`. |76| `browser-intake-us5-datadoghq.com` | 443 | Téléchargements de rapports d'erreurs Anthropic, envoyés uniquement quand [le rapport d'erreurs](/docs/fr/data-usage#telemetry-services) est activé pour le compte de la session. Supprimé par `DISABLE_ERROR_REPORTING=1` ou `DISABLE_TELEMETRY=1`. |

72| Les endpoints de votre fournisseur cloud pour les requêtes de modèle, les recherches de modèles et le renouvellement des identifiants, tels que `bedrock-runtime.us-east-1.amazonaws.com` ou `aiplatform.googleapis.com` | 443 | Uniquement quand le runner [envoie les requêtes de modèle à Amazon Bedrock ou à Agent Platform de Google Cloud](/docs/fr/self-hosted-environments-configuration#send-model-requests-to-bedrock-or-agent-platform) |77| Les endpoints de votre fournisseur cloud pour les requêtes de modèle, les recherches de modèles et le renouvellement des identifiants, tels que `bedrock-runtime.us-east-1.amazonaws.com` ou `aiplatform.googleapis.com` | 443 | Uniquement quand le runner [envoie les requêtes de modèle à Amazon Bedrock ou à Agent Platform de Google Cloud](/docs/fr/self-hosted-environments-configuration#send-model-requests-to-bedrock-or-agent-platform) |

73 78 

74Le runner n'atteint pas `statsig.anthropic.com`, `*.sentry.io`, `claude.ai`, ou `platform.claude.com`. Ces hôtes apparaissent dans certaines listes de contrôle réseau d'entreprise plus anciennes, mais vous n'avez pas besoin de les autoriser pour le trafic du runner ou de la session : les récupérations de drapeaux de fonctionnalités vont à `api.anthropic.com`, et le runner s'authentifie avec le secret de l'environnement plutôt qu'avec OAuth interactif. Deux flux côté hôte atteignent `claude.ai`, donc exécutez-les à partir d'un hôte dont la sortie le permet plutôt que d'élargir la sortie du conteneur de session : l'installateur d'une ligne récupère `install.sh` depuis `claude.ai` au moment de l'installation, et `claude auth login` interactif, que le [guide de configuration](/docs/fr/self-hosted-environments-quickstart#set-up-an-environment-and-runner), le mode signé du `doctor`, et [la dispatch CI](/docs/fr/self-hosted-environments-testing#authenticate-from-ci) utilisent, se connecte via `claude.ai`, `claude.com`, et `platform.claude.com`. `mcp-proxy.anthropic.com` n'est pas requis non plus : les sessions auto-hébergées ne l'utilisent pas, et la livraison de vos connecteurs claude.ai d'organisation aux sessions, quand activée pour votre organisation, route via `api.anthropic.com`. Consultez [Serveurs MCP](/docs/fr/self-hosted-environments-configuration#mcp-servers).79Vous n'avez pas besoin d'ajouter ces hôtes à la liste d'autorisation pour le trafic du runner ou de la session :

80 

81* **`statsig.anthropic.com`, `*.sentry.io`, `claude.ai` et `platform.claude.com`** : ces hôtes apparaissent dans certaines listes de contrôle réseau d'entreprise plus anciennes, mais le runner ne les atteint pas. Les récupérations de feature flags vont à `api.anthropic.com`, et le runner s'authentifie avec le secret de l'environnement plutôt qu'avec OAuth interactif.

82* **`mcp-proxy.anthropic.com`** : les sessions auto-hébergées ne l'utilisent pas. Quand la livraison des connecteurs est activée pour votre organisation, les connecteurs claude.ai de votre organisation atteignent les sessions via `api.anthropic.com`. Consultez [Serveurs MCP](/docs/fr/self-hosted-environments-configuration#mcp-servers).

83 

84Ces flux côté hôte atteignent bien `claude.ai`, donc exécutez-les à partir d'un hôte dont la sortie le permet plutôt que d'élargir la sortie du conteneur de session :

85 

86* **L'installateur d'une ligne** : récupère `install.sh` depuis `claude.ai` au moment de l'installation.

87* **`claude auth login` interactif** : se connecte via `claude.ai`, `claude.com` et `platform.claude.com`. La [configuration guidée](/docs/fr/self-hosted-environments-quickstart#run-the-guided-setup), le mode connecté de `doctor` et [le dispatch CI](/docs/fr/self-hosted-environments-testing#authenticate-from-ci) l'utilisent. Le navigateur avec lequel vous vous connectez charge également les vérifications de navigateur de la page de connexion claude.ai depuis `hcaptcha.com`, `*.hcaptcha.com` et `challenges.cloudflare.com`.

75 88 

76<h3 id="default-deny-egress">89<h3 id="default-deny-egress">

77 Sortie par défaut-refuser90 Sortie par défaut-refuser


127* **Laisser le runner configurer git** : démarrez le runner avec `--configure-git` pour qu'il écrive la même identité et configuration de signature de commit que les sessions hébergées par Anthropic utilisent140* **Laisser le runner configurer git** : démarrez le runner avec `--configure-git` pour qu'il écrive la même identité et configuration de signature de commit que les sessions hébergées par Anthropic utilisent

128* **Livrer la configuration git dans votre image** : définissez l'identité et les identifiants push vous-même, par exemple pour committer sous votre propre identité de bot141* **Livrer la configuration git dans votre image** : définissez l'identité et les identifiants push vous-même, par exemple pour committer sous votre propre identité de bot

129 142 

143Pour les dépôts sur github.com, vous pouvez également démarrer le runner avec [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), ou définir `CLAUDE_RUNNER_USE_GIT_PROXY=1`, pour demander à Anthropic de servir git pour les sessions du runner.

144 

130Planchers de version Git sur l'hôte runner : [`--configure-git`](#let-the-runner-configure-git) la signature de commit SSH nécessite Git 2.34 ou plus récent, [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) nécessite 2.32 ou plus récent, et reprendre les sessions à partir de branches poussées par [`--push-outcome-on-release`](/docs/fr/self-hosted-environments-reference#runner-cli-flags) nécessite 2.29 ou plus récent. Git 2.24 est suffisant si vous omettez les trois et gérez l'identité git vous-même.145Planchers de version Git sur l'hôte runner : [`--configure-git`](#let-the-runner-configure-git) la signature de commit SSH nécessite Git 2.34 ou plus récent, [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) nécessite 2.32 ou plus récent, et reprendre les sessions à partir de branches poussées par [`--push-outcome-on-release`](/docs/fr/self-hosted-environments-reference#runner-cli-flags) nécessite 2.29 ou plus récent. Git 2.24 est suffisant si vous omettez les trois et gérez l'identité git vous-même.

131 146 

132<h3 id="let-the-runner-configure-git">147<h3 id="let-the-runner-configure-git">


138* `user.name = Claude` et `user.email = noreply@anthropic.com`, correspondant aux sessions hébergées par Anthropic153* `user.name = Claude` et `user.email = noreply@anthropic.com`, correspondant aux sessions hébergées par Anthropic

139* Signature de commit et de tag au format SSH, routée via un shim géré par le runner qui signe chaque commit via le service de signature d'Anthropic en utilisant les identifiants de la session. Les signatures sont vérifiables sur GitHub par rapport à la clé de signature SSH publiée d'Anthropic.154* Signature de commit et de tag au format SSH, routée via un shim géré par le runner qui signe chaque commit via le service de signature d'Anthropic en utilisant les identifiants de la session. Les signatures sont vérifiables sur GitHub par rapport à la clé de signature SSH publiée d'Anthropic.

140* `push.negotiate = true`, donc git demande à votre hôte git quels commits il possède déjà avant de préparer un push. Nécessite Claude Code v2.1.257 ou plus récent.155* `push.negotiate = true`, donc git demande à votre hôte git quels commits il possède déjà avant de préparer un push. Nécessite Claude Code v2.1.257 ou plus récent.

141* `core.hooksPath` pointant vers un répertoire de hooks géré par le runner. Ses hooks `commit-msg` et `prepare-commit-msg` ajoutent une remorque `Co-authored-by:` pour le créateur de la session à chaque commit, construite à partir de l'email dans [`CCR_SESSION_ACCOUNT_EMAIL`](/docs/fr/self-hosted-environments-configuration#wrapper-scripts) et omise quand cette variable n'est pas définie. Si votre image définit déjà `core.hooksPath`, le runner laisse votre paramètre en place, ignore l'installation de ces hooks, et affiche un avertissement `[runner:git]`.156* `core.hooksPath` pointant vers un répertoire de hooks géré par le runner. Ses hooks `commit-msg` et `prepare-commit-msg` ajoutent une remorque `Co-authored-by:` pour le créateur de la session à chaque commit. La remorque est construite à partir de l'email dans [`CCR_SESSION_ACCOUNT_EMAIL`](/docs/fr/self-hosted-environments-configuration#wrapper-scripts) et omise quand cette variable n'est pas définie. Si votre image définit déjà `core.hooksPath` et que le runner n'utilise pas [git géré par Anthropic](#use-the-anthropic-git-proxy), le runner laisse votre paramètre en place, ignore l'installation de ces hooks, et affiche un avertissement `[runner:git]`.

142 157 

143La signature de commit nécessite git 2.34 ou plus récent ; le runner vérifie au démarrage et quitte avec une erreur si votre git est plus ancien. Ce drapeau ne configure pas les identifiants push, que vous fournissez toujours dans l'image.158La signature de commit nécessite git 2.34 ou plus récent ; le runner vérifie au démarrage et quitte avec une erreur si votre git est plus ancien. Ce drapeau ne configure pas les identifiants push, que vous fournissez toujours dans l'image.

144 159 

145Sur un runner en v2.1.280 ou plus récent, les commits que vous créez depuis un hook de cycle de vie `checkout` ou `post-session` sont également signés au nom de la session, sans la remorque `Co-authored-by:`. [Configuration git dans les hooks de cycle de vie](/docs/fr/self-hosted-environments-configuration#git-configuration-inside-lifecycle-hooks) décrit les paramètres git que le runner impose dans ces hooks.160Sur un runner en v2.1.280 ou plus récent, les commits que vous créez depuis un hook de cycle de vie `checkout` ou `post-session` sont également signés au nom de la session, sans la remorque `Co-authored-by:`. [Configuration git dans les hooks de cycle de vie](/docs/fr/self-hosted-environments-configuration#git-configuration-inside-lifecycle-hooks) décrit les paramètres git que le runner impose dans ces hooks.

146 161 

162Avec ou sans `--configure-git`, Claude Code demande à Claude de terminer ses messages de commit par une remorque `Claude-Session: <url>` et ses descriptions de pull request par l'URL de la session. Pour omettre les deux, définissez [`attribution.sessionUrl`](/docs/fr/settings-reference#attribution-sessionurl) sur `false` dans le fichier [`~/.claude/settings.json`](/docs/fr/self-hosted-environments-configuration#how-each-session’s-config-is-assembled) de l'hôte runner, puis redémarrez le runner.

163 

147<h3 id="ship-git-config-in-your-image">164<h3 id="ship-git-config-in-your-image">

148 Livrer la configuration git dans votre image165 Livrer la configuration git dans votre image

149</h3>166</h3>


186 Utiliser le proxy git Anthropic203 Utiliser le proxy git Anthropic

187</h3>204</h3>

188 205 

189Démarrez le runner avec `--use-anthropic-git-proxy`, ou définissez `CLAUDE_RUNNER_USE_GIT_PROXY=1`, pour qu'il clone via le proxy git d'Anthropic, authentifié avec le jeton court-durée de la session. Pour les sessions utilisateur ordinaires, le proxy utilise le jeton OAuth GitHub ou GitHub Enterprise stocké pour le créateur de session ; pour les sessions de bot et d'agent, il utilise le jeton d'installation GitHub App de votre organisation. De toute façon, l'image runner n'a besoin d'aucun identifiant git : pas de clés SSH, pas de credential helper, pas de `.netrc`. C'est le même chemin d'authentification que les environnements hébergés par Anthropic utilisent.206Avec le proxy git Anthropic, également appelé git géré par Anthropic, l'image du runner n'a besoin d'aucune clé SSH, d'aucun credential helper, d'aucun `.netrc` ni d'aucun autre identifiant git pour la session elle-même. À la place, le runner demande à Anthropic de servir git pour ses sessions. Pour la session d'un utilisateur qu'Anthropic sert, le clone du runner ainsi que les récupérations et les pushs propres à la session passent par Anthropic, qui utilise le jeton OAuth GitHub stocké pour le créateur de la session. [Comment Anthropic sert git pour une session](#how-anthropic-serves-git-for-a-session) couvre les sessions de bot et d'agent.

207 

208Le proxy git est désactivé tant que vous ne l'[activez](#turn-the-anthropic-git-proxy-on) pas. Un runner qui atteint votre hôte git avec ses propres identifiants n'en a pas besoin, et son git fonctionne avec n'importe quel hôte git.

209 

210En contrepartie, le proxy git limite ce que le runner prend en charge et modifie ce dont il a besoin :

211 

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.

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

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.

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

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 

221<span id="git-proxy-replaces-global-git-config" />

222 

223<Warning>

224 Lorsque `--use-anthropic-git-proxy` est défini, le runner supprime et remplace la configuration git globale de l'utilisateur sous lequel il s'exécute, sans conserver de sauvegarde. Il le fait au démarrage et avant chaque session. Un identifiant de connexion ou un credential helper que vous y conserviez est perdu. Les paramètres écrits par [`--configure-git`](#let-the-runner-configure-git) sont conservés. Exécutez le runner en tant qu'utilisateur dédié ou dans un conteneur, jamais sous votre propre utilisateur.

225</Warning>

226 

227Conservez les paramètres git qui ne sont pas secrets, comme l'identité et `safe.directory`, dans la configuration git système.

228 

229<h4 id="turn-the-anthropic-git-proxy-on">

230 Activer le proxy git Anthropic

231</h4>

232 

233Avant de démarrer le runner avec `--use-anthropic-git-proxy`, vérifiez que l'hôte runner satisfait chacune de ces exigences. Le runner refuse de démarrer lorsque l'exigence de capacité ou de git n'est pas satisfaite :

190 234 

191Le proxy nécessite `--capacity 1` car l'URL du proxy est par session, et git 2.32 ou plus récent car les anciennes versions de git ignorent le mécanisme de configuration que le proxy utilise pour isoler les sessions les unes des autres. Le runner refuse de démarrer si l'une ou l'autre exigence n'est pas satisfaite. Parce que le proxy récupère du côté d'Anthropic, votre hôte git doit être accessible depuis l'infrastructure Anthropic, la même exigence que les sessions hébergées par Anthropic ont ; pour un hôte git qui n'est routable que dans votre réseau, utilisez un [hook de cycle de vie `checkout`](/docs/fr/self-hosted-environments-configuration#checkout) à la place. Chaque processus runner gère une session à la fois, donc exécutez plus de répliques pour le parallélisme. Quand le proxy est activé, `--git-host-rewrite` et `--git-ssh-rewrite` n'ont aucun effet : l'URL du proxy pointe vers `api.anthropic.com`, pas votre hôte git.235* **Claude Code v2.1.267 ou plus récent** : les versions antérieures acceptent le flag mais ne transmettent pas la demande pour qu'Anthropic serve git et n'affichent pas la ligne `Registering as opted in`, donc Anthropic ne sert pas leurs sessions.

236* **`--capacity 1`, la valeur par défaut** : chaque processus runner gère une session à la fois, donc exécutez plus de répliques pour le parallélisme.

237* **Git 2.32 ou plus récent** : les anciennes versions de git ignorent la configuration git par session que le runner met en place pour le proxy git.

192 238 

193<Warning>239<Warning>

194 Les recettes [Kubernetes](#kubernetes) et [Docker Compose](#docker-compose) sur cette page utilisent `--capacity 4`. Si vous ajoutez `--use-anthropic-git-proxy` ou `CLAUDE_RUNNER_USE_GIT_PROXY=1` à l'une d'elles sans changer la capacité à `1`, le runner quitte au démarrage chaque fois que votre orchestrateur le redémarre. Définissez `--capacity 1` et exécutez plus de répliques pour le parallélisme. [When the runner exits](#when-the-runner-exits) affiche la ligne que le runner imprime.240 Les recettes [Kubernetes](#kubernetes) et [Docker Compose](#docker-compose) sur cette page utilisent `--capacity 4`. Si vous ajoutez `--use-anthropic-git-proxy` ou `CLAUDE_RUNNER_USE_GIT_PROXY=1` à l'une d'elles sans changer la capacité à `1`, le runner quitte au démarrage chaque fois que votre orchestrateur le redémarre. Définissez `--capacity 1` et exécutez plus de répliques pour le parallélisme. [When the runner exits](#when-the-runner-exits) affiche la ligne que le runner imprime.

195</Warning>241</Warning>

196 242 

197Le runner signale également l'adhésion à Anthropic quand il s'enregistre, affichant `Registering as opted in to Anthropic-managed git (--use-anthropic-git-proxy)` au démarrage. Signaler l'adhésion nécessite Claude Code v2.1.267 ou plus récent, et les versions antérieures acceptent le drapeau sans le signaler ou afficher cette ligne. Chaque session sur un runner ayant adhéré utilise ensuite soit git géré par Anthropic, soit l'URL du proxy par session. Quand une session utilise l'URL du proxy par session, le runner enregistre une ligne `[runner:warn]` indiquant cela.243Pour activer le proxy git, ajoutez `--use-anthropic-git-proxy` à la commande du runner, ou définissez `CLAUDE_RUNNER_USE_GIT_PROXY=1` dans l'environnement du runner. Cette commande, exécutée dans un shell sur l'hôte runner, démarre le runner du [démarrage rapide](/docs/fr/self-hosted-environments-quickstart#set-up-manually) avec le proxy git activé :

244 

245```bash theme={null}

246claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>' --use-anthropic-git-proxy

247```

248 

249Au démarrage, le runner affiche `Registering as opted in to Anthropic-managed git (--use-anthropic-git-proxy)`. Anthropic décide ensuite pour chaque session de ce runner s'il sert son git. Pour chaque session qu'il sert, le runner journalise une ligne `[runner:session]` contenant `governed git ACTIVE`. Si une session ne démarre pas, consultez [Quand des sessions ne démarrent pas sur un runner avec le proxy git](#when-anthropic-doesnt-serve-a-session).

250 

251<h4 id="how-anthropic-serves-git-for-a-session">

252 Comment Anthropic sert git pour une session

253</h4>

254 

255Pour une session qu'Anthropic sert, le clone du runner ainsi que les récupérations et les pushs propres à la session passent par Anthropic, authentifiés avec le jeton de courte durée propre à la session :

256 

257* **Sessions utilisateur** : Anthropic utilise le jeton OAuth GitHub stocké pour le créateur de la session.

258* **Sessions de bot et d'agent** : Anthropic utilise le jeton d'installation GitHub App de votre organisation.

259* **Réécritures d'URL** : `--git-host-rewrite` et `--git-ssh-rewrite` n'ont aucun effet sur un dépôt que le proxy git sert.

260 

261<h4 id="when-anthropic-doesnt-serve-a-session">

262 Quand des sessions ne démarrent pas sur un runner avec le proxy git

263</h4>

264 

265Sur un runner démarré avec `--use-anthropic-git-proxy`, une session ne démarre pas lorsqu'Anthropic ne sert pas son git. Recherchez dans le log du runner une erreur git qui nomme une adresse `api.anthropic.com` contenant `/git_proxy/`.

266 

267Pour chaque session, un runner sur Claude Code v2.1.267 ou plus récent journalise également soit une ligne `[runner:session]` contenant `governed git ACTIVE` lorsqu'Anthropic sert le git de la session, soit une ligne `[runner:warn]` contenant `the server withheld Anthropic-managed git for this session` lorsqu'il ne le sert pas. Trouvez la ligne que vous voyez parmi ces cas :

268 

269* **Ni `governed git ACTIVE` ni la ligne `withheld`** : un runner antérieur à Claude Code v2.1.267 ne journalise aucune des deux lignes, et Anthropic ne sert pas ses sessions. Mettez à jour le runner vers v2.1.267 ou plus récent en suivant [Épingler la version](#pin-the-version).

270* **La ligne `withheld`** : Anthropic n'a pas servi la session. Un runner qui fonctionnait auparavant avec le proxy git peut échouer ainsi sans aucun changement de votre côté.

271 * **Un dépôt n'est pas sur github.com** : une session ayant ne serait-ce qu'un dépôt sur un autre hôte git, comme GitHub Enterprise Server, n'est pas servie, y compris ses dépôts github.com. [Désactivez le proxy git Anthropic](#turn-the-anthropic-git-proxy-off) pour les runners de cet environnement.

272 * **Tous les dépôts sont sur github.com** : signalez l'échec à [votre équipe de compte Anthropic](#report-an-issue) avec l'identifiant de session figurant dans la ligne `withheld`. Anthropic enregistre la raison de son côté.

273* **Une ligne contenant `remote: access denied by the git proxy`** : une session qu'Anthropic sert peut tout de même être refusée, par exemple lorsque la politique de l'organisation refuse l'accès git pour la session, ou que la session n'est pas autorisée pour le dépôt. Le log du runner affiche alors une ligne contenant `remote: access denied by the git proxy`, et le reste de cette ligne en indique la raison.

274* <span id="creator-has-no-github-connection" />**`GitHub authentication required`** : ce message apparaît lorsque le créateur de la session n'a pas de connexion GitHub fonctionnelle sur claude.ai. Le clone de la session échoue, et l'erreur git indique `GitHub authentication required. Please reconnect your GitHub account.` Demandez à cette personne de connecter ou reconnecter GitHub dans ses paramètres claude.ai.

275 

276Après avoir corrigé la cause, redémarrez les sessions qui ont échoué.

277 

278<h4 id="turn-the-anthropic-git-proxy-off">

279 Désactiver le proxy git Anthropic

280</h4>

281 

282Si des sessions d'un environnement utilisent un dépôt sur un hôte git autre que github.com, comme GitHub Enterprise Server, désactivez `--use-anthropic-git-proxy` pour les runners de cet environnement.

283 

284<Steps>

285 <Step title="Retirer le flag">

286 Retirez `--use-anthropic-git-proxy` de la commande du runner. Si vous avez défini `CLAUDE_RUNNER_USE_GIT_PROXY` dans l'environnement du runner, comme une spécification de pod ou un fichier Compose, retirez-la à cet endroit. Dans un shell, supprimez sa définition :

287 

288 ```bash theme={null}

289 unset CLAUDE_RUNNER_USE_GIT_PROXY

290 ```

291 </Step>

292 

293 <Step title="Fournir des identifiants git au runner">

294 Fournissez des identifiants qui fonctionnent sans invite pour chaque hôte git utilisé par les sessions des runners, github.com compris. Tout identifiant qui se trouvait dans la configuration git globale de l'utilisateur du runner a disparu, car le runner a supprimé cette configuration tant que `--use-anthropic-git-proxy` était défini. [Livrez les identifiants dans votre image](#ship-git-config-in-your-image) ou utilisez un [hook de cycle de vie `checkout`](/docs/fr/self-hosted-environments-configuration#checkout).

295 </Step>

296 

297 <Step title="Ouvrir le chemin réseau">

298 Autorisez le runner à atteindre chaque hôte git utilisé par les sessions des runners sur le port 443 ou 22. Consultez la ligne relative à l'hôte git dans [Exigences réseau](#network-requirements).

299 </Step>

300 

301 <Step title="Redémarrer les runners">

302 Redémarrez les runners pour qu'ils s'enregistrent sans le proxy git. Puis redémarrez chaque session qui a échoué.

303 </Step>

304</Steps>

198 305 

199<h4 id="github-api-access-without-the-github-cli">306<h4 id="github-api-access-without-the-github-cli">

200 Accès à l'API GitHub sans la GitHub CLI307 Accès à l'API GitHub sans la GitHub CLI


266```dockerfile theme={null}373```dockerfile theme={null}

267FROM debian:bookworm-slim374FROM debian:bookworm-slim

268ARG CLAUDE_CODE_VERSION375ARG CLAUDE_CODE_VERSION

269RUN apt-get update && apt-get install -y --no-install-recommends git curl ca-certificates openssh-client \376RUN apt-get update && apt-get install -y --no-install-recommends git curl ca-certificates openssh-client jq \

270 && rm -rf /var/lib/apt/lists/*377 && rm -rf /var/lib/apt/lists/*

271RUN curl -fsSL "https://downloads.claude.ai/claude-code-releases/${CLAUDE_CODE_VERSION:?set with --build-arg CLAUDE_CODE_VERSION}/linux-x64/claude" \378RUN curl -fsSL "https://downloads.claude.ai/claude-code-releases/${CLAUDE_CODE_VERSION:?set with --build-arg CLAUDE_CODE_VERSION}/linux-x64/claude" \

272 -o /usr/local/bin/claude && chmod +x /usr/local/bin/claude379 -o /usr/local/bin/claude && chmod +x /usr/local/bin/claude


382kubectl create namespace claude-runners489kubectl create namespace claude-runners

383```490```

384 491 

385Créez le Secret de sauvegarde à partir d'un fichier local contenant la valeur que vous avez copiée à l'étape [**Copier la clé d'environnement**](/docs/fr/self-hosted-environments-quickstart#set-up-an-environment-and-runner) de l'interface utilisateur d'administration, pour que le secret n'apparaisse jamais dans votre historique de shell. Exécutez `(umask 077 && cat > ./environment-secret)`, collez le secret, appuyez sur Entrée, puis Ctrl-D. Ensuite, créez le Secret et supprimez le fichier :492Créez le Secret de sauvegarde à partir d'un fichier local contenant la valeur que vous avez copiée à l'étape [**Copier la clé d'environnement**](/docs/fr/self-hosted-environments-quickstart#set-up-manually) de l'interface utilisateur d'administration, pour que le secret n'apparaisse jamais dans votre historique de shell. Exécutez `(umask 077 && cat > ./environment-secret)`, collez le secret, appuyez sur Entrée, puis Ctrl-D. Ensuite, créez le Secret et supprimez le fichier :

386 493 

387```bash theme={null}494```bash theme={null}

388kubectl create secret generic claude-runner-environment-secret -n claude-runners --from-file=environment-secret=./environment-secret495kubectl create secret generic claude-runner-environment-secret -n claude-runners --from-file=environment-secret=./environment-secret


500 Réutiliser un checkout pré-chauffé607 Réutiliser un checkout pré-chauffé

501</h2>608</h2>

502 609 

503Pour les grands référentiels, le clone peut dominer le démarrage de la session. À `--capacity 1` sans [hook `checkout`](/docs/fr/self-hosted-environments-configuration#checkout), le runner garde un clone canonique par référentiel à `<base-dir>/<repo-owner>/<repo>` et le réutilise entre les sessions : il récupère la ref demandée, détache `HEAD`, et réinitialise dur à celle-ci, ce qui est quasi-instantané quand peu a changé. Pour sauter le clone froid, fournissez le clone de l'une de deux façons :610Pour les grands dépôts, le clone peut dominer le démarrage de la session. Pour sauter le clone froid, fournissez vous-même un clone au chemin où le runner conserve le sien. Sans [hook `checkout`](/docs/fr/self-hosted-environments-configuration#checkout), le runner garde un clone canonique par dépôt à `<base-dir>/<repo-owner>/<repo>` et le réutilise entre les sessions :

611 

612* **À `--capacity 1`** : le runner récupère la ref demandée, détache `HEAD`, et réinitialise dur à celle-ci, ce qui est quasi-instantané quand peu a changé.

613* **À une `--capacity` supérieure à un** : le runner récupère dans ce clone, puis extrait un worktree distinct à partir de celui-ci pour chaque session. Un clone pré-chauffé économise le téléchargement, mais pas le checkout.

614 

615Fournissez le clone dans l'image ou sur un volume persistant :

504 616 

505* **Clone dans l'image** : construisez le clone dans votre image runner à ce chemin. Chaque conteneur frais démarre alors avec le clone chaud sans réutiliser un disque.617* **Clone dans l'image** : construisez le clone dans votre image runner à ce chemin. Chaque conteneur frais démarre alors avec le clone chaud sans réutiliser un disque.

506* **Clone sur un volume persistant** : sur les runners que vous pré-verrouillez au compte d'un utilisateur avec [`--lock-to-account`](/docs/fr/self-hosted-environments-reference#runner-cli-flags), pointez `--base-dir` vers un volume persistant, pour que le disque ne serve que ce compte. Un runner pré-verrouillé ne récupère jamais les sessions de canal Claude Tag, donc cette option ne s'applique pas aux runners qui les servent.618* **Clone sur un volume persistant** : sur les runners que vous pré-verrouillez au compte d'un utilisateur avec [`--lock-to-account`](/docs/fr/self-hosted-environments-reference#runner-cli-flags), pointez `--base-dir` vers un volume persistant, pour que le disque ne serve que ce compte. Un runner pré-verrouillé ne récupère jamais les sessions de canal Claude Tag, donc cette option ne s'applique pas aux runners qui les servent.


508Ce que le chemin de réutilisation fait et ne garantit pas :620Ce que le chemin de réutilisation fait et ne garantit pas :

509 621 

510* **N'importe quelle forme de clone fonctionne** : un clone complet, peu profond, ou à branche unique au chemin est utilisé tel quel. Le runner ne passe jamais `--depth` lors de la récupération dans un clone existant, donc un pré-chauffage complet garde son historique complet et un peu profond reste peu profond. `CLAUDE_RUNNER_FETCH_DEPTH` (`full`, `0`, ou un nombre ; par défaut 50) contrôle uniquement le clone froid que le runner fait quand aucun clone n'existe encore.622* **N'importe quelle forme de clone fonctionne** : un clone complet, peu profond, ou à branche unique au chemin est utilisé tel quel. Le runner ne passe jamais `--depth` lors de la récupération dans un clone existant, donc un pré-chauffage complet garde son historique complet et un peu profond reste peu profond. `CLAUDE_RUNNER_FETCH_DEPTH` (`full`, `0`, ou un nombre ; par défaut 50) contrôle uniquement le clone froid que le runner fait quand aucun clone n'existe encore.

511* **Les changements suivis se réinitialisent, les fichiers non suivis persistent** : chaque session commence à partir d'une réinitialisation dur qui efface les modifications suivies de la session précédente, mais le runner ne lance jamais `git clean`, donc les fichiers non suivis des sessions antérieures du propriétaire verrouillé restent dans l'arbre.623* **Les changements suivis se réinitialisent, les fichiers non suivis persistent** : à `--capacity 1`, chaque session commence à partir d'une réinitialisation dur qui efface les modifications suivies de la session précédente, mais le runner ne lance jamais `git clean`, donc les fichiers non suivis des sessions antérieures du propriétaire verrouillé restent dans l'arbre.

512* **Les répertoires par session persistent aussi** : à côté du checkout, le runner crée des entrées par session sous `<base-dir>/_sessions/` pour chaque session qu'il exécute. Le répertoire de configuration Claude de la session contient une copie locale de la transcription de la conversation. À côté se trouvent les fichiers téléchargés de la session, quand la session en a. Le répertoire de session s'y trouve aussi : il contient tous les worktrees par session et les checkouts du hook `checkout` pendant que la session s'exécute, et il conserve tout ce que Claude a écrit dedans.624* **Les répertoires par session persistent aussi** : à côté du checkout, le runner crée des entrées par session sous `<base-dir>/_sessions/` pour chaque session qu'il exécute. Le répertoire de configuration Claude de la session contient une copie locale de la transcription de la conversation. À côté se trouvent les fichiers téléchargés de la session, quand la session en a. Le répertoire de session s'y trouve aussi : il contient tous les worktrees par session et les checkouts du hook `checkout` pendant que la session s'exécute, et il conserve tout ce que Claude a écrit dedans.

513 625 

514 Par défaut, le runner les laisse en place quand la session se termine, donc sur un disque qui survit au processus runner, ils s'accumulent. Chaque session s'exécute en tant qu'utilisateur du runner, donc toute session ultérieure que ce disque sert peut les lire. Si vous conservez un `--base-dir` persistant, dimensionnez le volume pour cette croissance. La même chose s'applique à toute configuration qui redémarre le runner sur le même système de fichiers, y compris la [recette Docker Compose](#docker-compose).626 Par défaut, le runner les laisse en place quand la session se termine, donc sur un disque qui survit au processus runner, ils s'accumulent. Chaque session s'exécute en tant qu'utilisateur du runner, donc toute session ultérieure que ce disque sert peut les lire. Si vous conservez un `--base-dir` persistant, dimensionnez le volume pour cette croissance. La même chose s'applique à toute configuration qui redémarre le runner sur le même système de fichiers, y compris la [recette Docker Compose](#docker-compose).


522 634 

523Le processus enfant Claude Code de chaque session exécute le binaire du runner lui-même, et le runner désactive la mise à jour automatique à l'intérieur des sessions qu'il génère, donc chaque session exécute la version que vous avez installée sur l'hôte ou construite dans l'image. Une mise à jour au niveau de l'hôte prend effet la prochaine fois que le runner démarre.635Le processus enfant Claude Code de chaque session exécute le binaire du runner lui-même, et le runner désactive la mise à jour automatique à l'intérieur des sessions qu'il génère, donc chaque session exécute la version que vous avez installée sur l'hôte ou construite dans l'image. Une mise à jour au niveau de l'hôte prend effet la prochaine fois que le runner démarre.

524 636 

525Un modèle que vos sessions utilisent peut nécessiter une version plus récente de Claude Code que celle qu'elles exécutent. Le serveur rejette alors les demandes pour ce modèle avec [Claude Code ne supporte pas ce modèle](/docs/fr/errors#claude-code-does-not-support-this-model). Avant d'épingler une version, vérifiez [les versions de Claude Code que les modèles nécessitent](/docs/fr/model-config#available-models) pour chaque modèle que vos sessions utilisent.637Choisissez la version qu'exécutent vos sessions et le moment où elle change :

526 638 

639* **Avant d'épingler une version** : vérifiez [les versions de Claude Code que les modèles nécessitent](/docs/fr/model-config#available-models) pour chaque modèle que vos sessions utilisent. Si un modèle nécessite une version plus récente que celle qu'exécutent vos sessions, le serveur rejette les requêtes pour ce modèle avec [Claude Code ne supporte pas ce modèle](/docs/fr/errors#claude-code-does-not-support-this-model).

527* **Pour garder une flotte sur une version** : construisez l'image avec une version épinglée, ou sur un hôte nu installez une version spécifique et [désactivez les mises à jour automatiques](/docs/fr/setup#disable-auto-updates)640* **Pour garder une flotte sur une version** : construisez l'image avec une version épinglée, ou sur un hôte nu installez une version spécifique et [désactivez les mises à jour automatiques](/docs/fr/setup#disable-auto-updates)

528* **Pour mettre à niveau** : installez la version plus récente ou reconstruisez l'image, puis redémarrez les runners641* **Pour mettre à niveau une flotte fixe** : lisez les entrées du [changelog](/docs/en/changelog) entre votre version et celle que vous installez, puis installez la version plus récente ou reconstruisez l'image et redémarrez les runners

642* **Pour mettre à niveau des runners à la demande** : lisez les entrées du [changelog](/docs/en/changelog) entre votre version et celle que vous installez, puis modifiez l'image que démarre votre [hook `spawn-runner`](/docs/fr/self-hosted-environments-configuration#the-spawn-runner-hook). Chaque nouveau runner obtient la nouvelle version. Un runner déjà actif, y compris un runner en attente démarré par [`--min-idle`](/docs/fr/self-hosted-environments-reference#orchestrator-cli-flags), conserve sa version jusqu'à ce qu'il se termine. Ne le redémarrez pas, car son ordre de travail est à usage unique.

529* **Plugins** : les places de marché de plugins ne se mettent pas à jour automatiquement non plus ; définissez `FORCE_AUTOUPDATE_PLUGINS=1` dans l'environnement du runner pour laisser les plugins se mettre à jour automatiquement pendant que le binaire reste épinglé643* **Plugins** : les places de marché de plugins ne se mettent pas à jour automatiquement non plus ; définissez `FORCE_AUTOUPDATE_PLUGINS=1` dans l'environnement du runner pour laisser les plugins se mettre à jour automatiquement pendant que le binaire reste épinglé

530 644 

531<h2 id="scale-the-fleet">645<h2 id="scale-the-fleet">


580</h3>694</h3>

581 695 

582* **Les sessions reprises perdent le travail non poussé** : un nouveau runner clone à nouveau le dépôt à partir de sa branche de démarrage, donc le travail que la session n'avait pas poussé est perdu.696* **Les sessions reprises perdent le travail non poussé** : un nouveau runner clone à nouveau le dépôt à partir de sa branche de démarrage, donc le travail que la session n'avait pas poussé est perdu.

583 * **Pour conserver le travail commité** : définissez [`--push-outcome-on-release`](/docs/fr/self-hosted-environments-reference#runner-cli-flags). Le runner effectue alors, dans la mesure du possible, un push des branches de résultat de la session avant de la libérer, et la session reprise démarre à partir de ces commits. Les modifications non commitées sont toujours perdues.697 * **Pour conserver le travail commité** : définissez [`--push-outcome-on-release`](/docs/fr/self-hosted-environments-reference#runner-cli-flags) sur chaque runner de l'environnement, car un runner sans ce flag reprend la session à partir de sa branche de démarrage. Un runner avec ce flag effectue, dans la mesure du possible, un push des branches de résultat de la session avant de la libérer, et la session reprise démarre à partir de ces commits. Le push utilise les propres identifiants git de l'hôte runner, y compris sur un runner qui utilise [git géré par Anthropic](#use-the-anthropic-git-proxy). Les modifications non commitées sont toujours perdues.

698 * **Avec un hook `checkout`** : les dépôts extraits via un [hook de cycle de vie `checkout`](/docs/fr/self-hosted-environments-configuration#checkout) ne font pas l'objet d'un push. Créez plutôt un instantané de ces dépôts à partir du [hook `post-session`](/docs/fr/self-hosted-environments-configuration#post-session).

584 * **Avant d'activer le flag** : limitez qui peut pousser vers les refs `claude/*` sur le dépôt distant source. À la reprise, le runner récupère la branche précédemment poussée sans vérifier qui l'a poussée.699 * **Avant d'activer le flag** : limitez qui peut pousser vers les refs `claude/*` sur le dépôt distant source. À la reprise, le runner récupère la branche précédemment poussée sans vérifier qui l'a poussée.

585* **Le clonage d'un dépôt ajouté en milieu de session peut échouer** : Claude le clone avec `git clone` via HTTPS. Sur un runner sans [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), le clonage échoue avec une erreur d'authentification git si rien sur l'hôte ne peut lire le dépôt. Dans la mesure du possible, sélectionnez chaque dépôt dont la session a besoin quand vous la créez.700* **Le clonage d'un dépôt ajouté en milieu de session peut échouer** : Claude le clone avec `git clone` via HTTPS. Sur un runner sans [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), le clonage échoue avec une erreur d'authentification git si rien sur l'hôte ne peut lire le dépôt. Dans la mesure du possible, sélectionnez chaque dépôt dont la session a besoin quand vous la créez.

586* **Certains connecteurs n'apparaissent pas dans les sessions auto-hébergées** : un connecteur que vous n'avez pas encore connecté dans les paramètres claude.ai n'est pas listé dans une session auto-hébergée, et la session ne vous invitera pas à le connecter. Connectez-le d'abord dans les paramètres, puis démarrez une session fraîche. Ajouter un connecteur à une session déjà en cours d'exécution ne rend pas non plus ses outils disponibles à Claude ; démarrez une session fraîche pour récupérer un connecteur nouvellement ajouté.701* **Certains connecteurs n'apparaissent pas dans les sessions auto-hébergées** : un connecteur que vous n'avez pas encore connecté dans les paramètres claude.ai n'est pas listé dans une session auto-hébergée, et la session ne vous invitera pas à le connecter. Connectez-le d'abord dans les paramètres, puis démarrez une session fraîche. Ajouter un connecteur à une session déjà en cours d'exécution ne rend pas non plus ses outils disponibles à Claude ; démarrez une session fraîche pour récupérer un connecteur nouvellement ajouté.


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

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

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

609* **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 les identifiants git manquants [identifiants git](#configure-git) dans l'image runner et les outils de build qui ne sont pas installés. 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.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.

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

610* **Les sessions ne peuvent pas atteindre le réseau via un proxy de sortie authentifiant** : quand la source que vous avez définie avec [`--proxy-authorization-command` ou `--proxy-authorization-file`](#authenticate-to-an-egress-proxy) échoue, expire après 30 secondes, ou produit une valeur vide, le runner répond à cette connexion `502 Bad Gateway` et enregistre pourquoi. Le runner rédige la stderr de la commande dans ce journal et ne journalise jamais la valeur de l'en-tête. Avec `--proxy-authorization-command`, exécutez la commande vous-même sur l'hôte pour confirmer qu'elle imprime la valeur d'en-tête entière sur stdout. Si le runner quitte à la place au démarrage avec `could not start the proxy-authorization listener`, il ne pouvait pas ouvrir son écouteur de boucle locale.726* **Les sessions ne peuvent pas atteindre le réseau via un proxy de sortie authentifiant** : quand la source que vous avez définie avec [`--proxy-authorization-command` ou `--proxy-authorization-file`](#authenticate-to-an-egress-proxy) échoue, expire après 30 secondes, ou produit une valeur vide, le runner répond à cette connexion `502 Bad Gateway` et enregistre pourquoi. Le runner rédige la stderr de la commande dans ce journal et ne journalise jamais la valeur de l'en-tête. Avec `--proxy-authorization-command`, exécutez la commande vous-même sur l'hôte pour confirmer qu'elle imprime la valeur d'en-tête entière sur stdout. Si le runner quitte à la place au démarrage avec `could not start the proxy-authorization listener`, il ne pouvait pas ouvrir son écouteur de boucle locale.

611* **Le runner enregistre des lignes `Poll failed` contenant `rejecting the malformed poll response`** : le runner a reçu une réponse de sondage dont le corps n'est pas le JSON attendu de la file d'attente, le plus souvent parce que quelque chose entre le runner et `api.anthropic.com`, comme un proxy d'interception ou un portail captif, a répondu avec sa propre page. Le runner rejette la réponse, la compte sous le type `transport` de la [métrique](/docs/fr/self-hosted-environments-reference#prometheus-metrics) `claude_code_self_hosted_runner_poll_errors_total`, et réessaie selon le calendrier de sondage échoué décrit dans [Cycle de vie de la session](/docs/fr/self-hosted-environments#session-lifecycle). Le runner continue de servir ses sessions en direct. Configurez le proxy pour passer les réponses de `api.anthropic.com` inchangées. Avant v2.1.246, le runner lisait une telle réponse comme une file d'attente de travail vide, ce qui pouvait terminer ses sessions en direct ou le faire quitter.727* **Le runner enregistre des lignes `Poll failed` contenant `rejecting the malformed poll response`** : le runner a reçu une réponse de sondage dont le corps n'est pas le JSON attendu de la file d'attente, le plus souvent parce que quelque chose entre le runner et `api.anthropic.com`, comme un proxy d'interception ou un portail captif, a répondu avec sa propre page. Le runner rejette la réponse, la compte sous le type `transport` de la [métrique](/docs/fr/self-hosted-environments-reference#prometheus-metrics) `claude_code_self_hosted_runner_poll_errors_total`, et réessaie selon le calendrier de sondage échoué décrit dans [Cycle de vie de la session](/docs/fr/self-hosted-environments#session-lifecycle). Le runner continue de servir ses sessions en direct. Configurez le proxy pour passer les réponses de `api.anthropic.com` inchangées. Avant v2.1.246, le runner lisait une telle réponse comme une file d'attente de travail vide, ce qui pouvait terminer ses sessions en direct ou le faire quitter.

612* **La branche d'une session n'existe plus sur la télécommande** : pour une source git que la session ne lit que, le runner saute cette source et continue sur les autres. Pour la source vers laquelle la session pousse les résultats, une branche supprimée, généralement parce qu'elle a été fusionnée et supprimée automatiquement, échoue la session avec une erreur nommant le référentiel et la branche et vous demandant de restaurer la branche et de réessayer. Le runner échoue la session avec la même erreur quand sauter laisserait sans référentiel du tout. Avant v2.1.228, une telle session démarrait dans un répertoire vide.728* **La branche d'une session n'existe plus sur la télécommande** : pour une source git que la session ne lit que, le runner saute cette source et continue sur les autres. Pour la source vers laquelle la session pousse les résultats, une branche supprimée, généralement parce qu'elle a été fusionnée et supprimée automatiquement, échoue la session avec une erreur nommant le référentiel et la branche et vous demandant de restaurer la branche et de réessayer. Le runner échoue la session avec la même erreur quand sauter laisserait sans référentiel du tout. Avant v2.1.228, une telle session démarrait dans un répertoire vide.


616 732 

617 La vérification d'accès s'exécute à nouveau chaque fois que la session démarre sur un runner, donc une fois que l'identité git du runner a accès en lecture, le prochain démarrage clone le référentiel. Avant v2.1.274, chacun de ces refus échouait le démarrage de la session.733 La vérification d'accès s'exécute à nouveau chaque fois que la session démarre sur un runner, donc une fois que l'identité git du runner a accès en lecture, le prochain démarrage clone le référentiel. Avant v2.1.274, chacun de ces refus échouait le démarrage de la session.

618* **Les sessions prennent des minutes pour démarrer** : le clone initial domine généralement. Regardez la [métrique](/docs/fr/self-hosted-environments-reference#prometheus-metrics) `claude_code_self_hosted_runner_session_init_duration_seconds` pour confirmer, et coupez le clone avec un [checkout pré-chauffé](#reuse-a-pre-warmed-checkout) ou un `CLAUDE_RUNNER_FETCH_DEPTH` plus petit.734* **Les sessions prennent des minutes pour démarrer** : le clone initial domine généralement. Regardez la [métrique](/docs/fr/self-hosted-environments-reference#prometheus-metrics) `claude_code_self_hosted_runner_session_init_duration_seconds` pour confirmer, et coupez le clone avec un [checkout pré-chauffé](#reuse-a-pre-warmed-checkout) ou un `CLAUDE_RUNNER_FETCH_DEPTH` plus petit.

619* **Les tours échouent avec un 401** : chaque session authentifie les appels de modèle avec le [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/fr/self-hosted-environments-configuration#wrapper-scripts) de courte durée que le runner récupère auprès d'Anthropic et fait tourner sur stdin de la session. Quand un tour se termine avec un 401 ou 403 de l'API du modèle, le runner récupère un jeton frais et le transmet à la session. Le tour échoué n'est pas réessayé.735* **Les tours échouent avec un 401** : quand un tour se termine avec un 401 ou 403 de l'API Anthropic, le runner récupère un [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/fr/self-hosted-environments-configuration#wrapper-scripts) frais auprès d'Anthropic et le transmet à la session. Le tour échoué n'est pas réessayé. Ce jeton est de courte durée, et le runner le fait tourner via le stdin de la session.

620 736 

621 Quand une récupération échoue, le runner enregistre une ligne `inference_token refresh failed` qui dit quand il réessayera, et il continue à réessayer aussi longtemps que la session s'exécute.737 Quand une récupération échoue, le runner enregistre une ligne `inference_token refresh failed` qui dit quand il réessayera, et il continue à réessayer aussi longtemps que la session s'exécute.

622 738 


637 753 

638* **Une sortie normale** : le runner a terminé ses sessions et s'est drainé, a atteint son heure de retraite, ou a reçu l'ordre de s'arrêter. Redémarrez-le pour que l'environnement ait à nouveau de la capacité. [Cycle de vie du runner](/docs/fr/self-hosted-environments#runner-lifecycle) décrit ces sorties.754* **Une sortie normale** : le runner a terminé ses sessions et s'est drainé, a atteint son heure de retraite, ou a reçu l'ordre de s'arrêter. Redémarrez-le pour que l'environnement ait à nouveau de la capacité. [Cycle de vie du runner](/docs/fr/self-hosted-environments#runner-lifecycle) décrit ces sorties.

639* **Un démarrage échoué** : le runner ne peut pas démarrer avec la configuration ou l'hôte qui lui a été donné, donc il quitte quelques secondes après son démarrage, et il quitte de la même manière chaque fois que vous le redémarrez. Le redémarrer plus rapidement n'aide pas. Quelqu'un doit lire sa sortie et corriger la cause.755* **Un démarrage échoué** : le runner ne peut pas démarrer avec la configuration ou l'hôte qui lui a été donné, donc il quitte quelques secondes après son démarrage, et il quitte de la même manière chaque fois que vous le redémarrez. Le redémarrer plus rapidement n'aide pas. Quelqu'un doit lire sa sortie et corriger la cause.

756* **Perte de contact** : un runner qui ne peut pas joindre Anthropic pendant plus longtemps que son [bail](/docs/fr/self-hosted-environments#session-lifecycle), par exemple pendant que son hôte est en veille, peut être retiré de l'environnement. Quand un runner retiré se reconnecte, il quitte. Son journal peut afficher une ligne `[runner:fatal]` qui contient `runner record gone server-side` ou, après une panne plus longue, [`poll auth failed`](/docs/fr/self-hosted-environments-quickstart#set-up-an-environment-and-runner). Le runner ne se réenregistre pas de lui-même, donc redémarrez-le.

640 757 

641Configurez votre superviseur pour redémarrer le runner chaque fois qu'il quitte, pour attendre plus longtemps entre les redémarrages quand le runner continue de quitter juste après son démarrage, et pour avertir quelqu'un quand cela continue de se produire.758Configurez votre superviseur pour redémarrer le runner chaque fois qu'il quitte, pour attendre plus longtemps entre les redémarrages quand le runner continue de quitter juste après son démarrage, et pour avertir quelqu'un quand cela continue de se produire.

642 759 

Details

195 195 

196Les wrappers reçoivent le chemin absolu du binaire du runner lui-même dans `CLAUDE_RUNNER_CLAUDE_BIN` ; utilisez ce chemin plutôt qu'un `claude` résolu par PATH afin que le décodage s'exécute sur le même binaire que le runner lui-même utilise.196Les wrappers reçoivent le chemin absolu du binaire du runner lui-même dans `CLAUDE_RUNNER_CLAUDE_BIN` ; utilisez ce chemin plutôt qu'un `claude` résolu par PATH afin que le décodage s'exécute sur le même binaire que le runner lui-même utilise.

197 197 

198Utilisez `jq -re` plutôt que `jq -r` afin qu'un claim manquant provoque une sortie non-zéro. Avec `-r` seul, un claim manquant imprime la chaîne littérale `null` et sort zéro, ce qui transmet silencieusement une mauvaise valeur en aval. Passez `--no-verify` à `decode-token` uniquement pour l'inspection hors ligne où l'endpoint JWKS est inaccessible.198Utilisez `jq -re` plutôt que `jq -r` afin qu'un claim manquant provoque une sortie non-zéro. Avec `-r` seul, un claim manquant imprime la chaîne littérale `null` et sort zéro, ce qui transmet silencieusement une mauvaise valeur en aval.

199 

200Si `decode-token` ne peut pas récupérer les clés depuis l'endpoint JWKS ou ne peut pas vérifier le token, il imprime la raison sur stderr, n'imprime aucun claim et sort avec le code 1. Passez `--no-verify` à `decode-token` uniquement pour l'inspection hors ligne où l'endpoint JWKS est inaccessible.

199 201 

200<h2 id="claims-reference">202<h2 id="claims-reference">

201 Référence des claims203 Référence des claims

Details

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

38 39 

39<h3 id="software-on-the-runner-host">40<h3 id="software-on-the-runner-host">


57 Configurer un environnement et un runner58 Configurer un environnement et un runner

58</h2>59</h2>

59 60 

60Claude Code inclut une configuration guidée : une session Claude Code interactive qui vous guide à travers la création de l'environnement dans l'interface d'administration, démarre un runner local avec le fichier secret que vous enregistrez, confirme que le runner s'enregistre, et écrit une feuille de triche dans `./runner-setup/CHEAT-SHEET.md`. Exécutez-le sur une machine où vous vous êtes connecté avec `claude auth login` en utilisant un compte qui détient un rôle Propriétaire ; il n'est pas disponible avec les clés API ou les fournisseurs de modèles tiers. Sur les hôtes où une session interactive n'est pas possible, utilisez plutôt les étapes manuelles ci-dessous. Confirmez d'abord que la [vérification de version](#software-on-the-runner-host) a réussi : sur les versions antérieures à 2.1.224, cette commande démarre une session Claude ordinaire avec les mots comme invite au lieu de la configuration guidée. Pour démarrer la configuration guidée, exécutez la sous-commande setup et suivez les invites :61Utilisez soit la [configuration guidée](#run-the-guided-setup), soit les [étapes manuelles](#set-up-manually). La configuration guidée est une commande unique qui démarre une session Claude Code interactive et vous guide à travers le reste. Utilisez plutôt les étapes manuelles sur un hôte où une session interactive n'est pas possible. Utilisez-les également lorsqu'une personne détenant le rôle Propriétaire a créé l'environnement et vous a remis son secret, car la configuration guidée nécessite une connexion Propriétaire.

62 

63<h3 id="run-the-guided-setup">

64 Exécuter la configuration guidée

65</h3>

66 

67La configuration guidée vous accompagne dans la création de l'environnement dans l'interface d'administration, démarre un runner local avec le fichier secret que vous enregistrez, confirme que le runner s'enregistre, et écrit une feuille de triche dans `./runner-setup/CHEAT-SHEET.md`. Avant de l'exécuter, vérifiez votre connexion et votre version :

68 

69* **Connexion** : exécutez-la sur une machine où vous vous êtes connecté avec `claude auth login` en utilisant un compte qui détient un rôle Propriétaire. Avec seulement une clé API ou un fournisseur de modèles tiers, la session démarre mais ses vérifications d'organisation échouent.

70* **Version** : confirmez que la [vérification de version](#software-on-the-runner-host) a réussi. Sur les versions antérieures à 2.1.224, la commande setup démarre une session Claude avec les mots comme prompt au lieu de la configuration guidée.

71 

72Pour démarrer la configuration guidée, exécutez la sous-commande setup dans votre shell et suivez les instructions :

61 73 

62```bash theme={null}74```bash theme={null}

63claude self-hosted-runner setup75claude self-hosted-runner setup

64```76```

65 77 

66Pour configurer manuellement à la place :78La configuration ne démarre pas elle-même de session de test : elle vous indique d'en démarrer une sur claude.ai/code. La dernière étape de la configuration arrête le runner qu'elle a démarré. Si vous quittez la configuration avant cette étape, le runner continue de s'exécuter. Pour continuer après la dernière étape, redémarrez le runner dans votre shell avec la commande figurant dans `./runner-setup/CHEAT-SHEET.md`, puis [routez une session vers l'environnement](#route-a-session).

79 

80<h3 id="set-up-manually">

81 Configurer manuellement

82</h3>

83 

84Créez l'environnement sur claude.ai, démarrez le runner depuis un terminal sur l'hôte, puis revenez sur claude.ai pour confirmer que le runner apparaît et y router une session. Si une personne détenant le rôle Propriétaire a déjà créé l'environnement et vous a remis son secret, commencez à l'étape 2.

67 85 

68<Steps>86<Steps>

69 <Step title="Créer un environnement">87 <Step title="Créer un environnement">

70 Allez à la [page **Environnements cloud**](https://claude.ai/admin-settings/cloud-environments) dans les paramètres d'administration. Sous **Environnements auto-hébergés**, sélectionnez **Nouveau**, nommez l'environnement, et sélectionnez **Créer**. À la deuxième étape de l'assistant, sélectionnez **Copier la clé d'environnement** pour copier le secret d'environnement, que l'interface d'administration étiquette comme clé d'environnement. claude.ai affiche le secret une fois, et vous ne pouvez pas le récupérer plus tard ; il expire 365 jours après sa création. L'ID `ccpool_...` de l'environnement reste visible dans sa boîte de dialogue de détail ; vous en aurez besoin pour la vérification `aud` dans [vérification de token](/docs/fr/self-hosted-environments-identity) et pour dispatcher [les sessions de test à partir de CI](/docs/fr/self-hosted-environments-testing#run-the-test-loop).88 Allez à la [page **Environnements cloud**](https://claude.ai/admin-settings/cloud-environments) dans les paramètres d'administration. Sous **Environnements auto-hébergés**, sélectionnez **Nouveau**, nommez l'environnement, et sélectionnez **Créer**. À la deuxième étape de l'assistant, sélectionnez **Copier la clé d'environnement** pour copier le secret d'environnement, que l'interface d'administration étiquette comme clé d'environnement. claude.ai affiche le secret une fois, et vous ne pouvez pas le récupérer plus tard ; il expire 365 jours après sa création. L'ID `ccpool_...` de l'environnement reste visible dans sa boîte de dialogue de détail ; vous en aurez besoin pour la vérification `aud` dans [vérification de token](/docs/fr/self-hosted-environments-identity) et pour dispatcher [les sessions de test à partir de CI](/docs/fr/self-hosted-environments-testing#run-the-test-loop).

71 89 

72 Si vous perdez le secret ou avez besoin de le faire tourner, créez un nouveau secret à partir de l'onglet **Configuration** de l'environnement, déployez le nouveau secret sur vos runners, puis révoquez l'ancien. Les runners détenant un secret révoqué échouent leur prochain sondage authentifié et se terminent, en enregistrant `poll auth failed`, et votre orchestrateur les redémarre avec le nouveau secret.90 Si vous perdez le secret ou avez besoin de le faire tourner, créez un nouveau secret à partir de l'onglet **Configuration** de l'environnement, déployez le nouveau secret sur vos runners, puis révoquez l'ancien. Les runners détenant un secret révoqué échouent leur prochain sondage authentifié et se terminent, en consignant `poll auth failed`, et votre orchestrateur les redémarre avec le nouveau secret.

73 </Step>91 </Step>

74 92 

75 <Step title="Démarrer un runner">93 <Step title="Démarrer un runner">

76 Créez le répertoire secret. Cette étape et la suivante nécessitent root pour le chemin `/etc/claude` ; n'importe quel chemin que le processus runner peut lire fonctionne, donc ajustez les deux commandes et la valeur `--environment-secret-file` ensemble si vous en utilisez un différent.94 Créez le répertoire secret. Cette commande et la suivante utilisent `/etc/claude`, qui nécessite root, et le fichier secret qu'elles créent n'est lisible que par l'utilisateur qui les exécute. Si le runner s'exécute sous un autre utilisateur, il se termine avec `error: Failed to read environment secret file <path> (EACCES: permission denied, open '<path>')`. Dans ce cas, exécutez les deux commandes en tant qu'utilisateur du runner avec un répertoire dans lequel cet utilisateur peut écrire à la place de `/etc/claude`, et passez le même chemin à `--environment-secret-file`. N'importe quel chemin que le processus runner peut lire fonctionne.

77 95 

78 ```bash theme={null}96 ```bash theme={null}

79 mkdir -p /etc/claude97 mkdir -p /etc/claude


89 107 

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

91 109 

92 Ensuite, démarrez le runner avec `--environment-secret-file` et `--base-dir`. Le runner s'enregistre auprès de votre environnement et commence à interroger le travail. Si le runner se termine, redémarrez-le manuellement. Les déploiements en production exécutent le runner sous un orchestrateur qui redémarre les runners terminés, normalement avec un système de fichiers frais par redémarrage ; [Réutiliser un checkout pré-chauffé](/docs/fr/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout) couvre la configuration de disque persistant prise en charge.110 Ensuite, démarrez le runner avec `--environment-secret-file` et `--base-dir` :

93 111 

94 ```bash theme={null}112 ```bash theme={null}

95 claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'113 claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'

96 ```114 ```

115 

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.

97 </Step>117 </Step>

98 118 

99 <Step title="Vérifier que le runner apparaît">119 <Step title="Vérifier que le runner apparaît">

100 Retournez à la [page **Environnements cloud**](https://claude.ai/admin-settings/cloud-environments). Le statut de votre environnement passe de **Aucun runner déployé** à **Sain** en quelques secondes après le démarrage du runner ; ouvrez l'environnement et sélectionnez **Activité** pour voir le runner lui-même.120 Retournez à la [page **Environnements cloud**](https://claude.ai/admin-settings/cloud-environments). Le statut de votre environnement passe de **Aucun runner déployé** à **Sain** en quelques secondes après le démarrage du runner ; ouvrez l'environnement et sélectionnez **Activité** pour voir le runner lui-même. Si vous n'avez pas accès à la page d'administration, la ligne `Registered: runner_id=<runner-id>` dans le log du runner de l'étape précédente vous donne le même signal.

101 </Step>121 </Step>

102 122 

103 <Step title="Router une session vers l'environnement">123 <Step title="Router une session vers l'environnement">

104 Démarrez une session à 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. Le runner clone avec les identifiants git que l'hôte a déjà, donc choisissez un référentiel que cet hôte peut déjà cloner, ou un public ; les options d'identifiants pour les référentiels privés en production sont sur [Configurer git](/docs/fr/self-hosted-environments-deploy#configure-git). Le prochain runner disponible récupère la session en attente et enregistre `Picked up session <session-id>` ainsi que son nombre actif 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 fonctionner et lisez les réponses de Claude à [claude.ai/code](https://claude.ai/code). Si la session reste en attente à la place, consultez [Dépannage](/docs/fr/self-hosted-environments-deploy#troubleshooting).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à.

125 

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

127 

128 Si la session ne commence pas à travailler, identifiez ce que vous observez :

129 

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

105 </Step>132 </Step>

106</Steps>133</Steps>

107 134 

108Le 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). Pour la production, déployez-le sous un orchestrateur qui le redémarre à la sortie et attend plus longtemps entre les redémarrages lorsque le runner continue à se terminer juste après son démarrage. Consultez [Déployer en production](/docs/fr/self-hosted-environments-deploy) et [Quand le runner se termine](/docs/fr/self-hosted-environments-deploy#when-the-runner-exits).135<h3 id="if-the-runner-exits">

136 Si le runner se termine

137</h3>

138 

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 :

140 

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

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.

143 

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.

145 

146Pour la production, déployez le runner sous un orchestrateur qui le redémarre à la sortie et attend plus longtemps entre les redémarrages lorsque le runner continue à se terminer juste après son démarrage. Consultez [Déployer en production](/docs/fr/self-hosted-environments-deploy) et [Quand le runner se termine](/docs/fr/self-hosted-environments-deploy#when-the-runner-exits).

109 147 

110<h2 id="send-a-follow-up-message-to-a-running-session">148<h2 id="send-a-follow-up-message-to-a-running-session">

111 Envoyer un message de suivi à une session en cours d'exécution149 Envoyer un message de suivi à une session en cours d'exécution

Details

52| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | Libérer un créneau de session après N minutes d'inactivité une fois qu'un tour se termine ou que la session attend l'action de l'utilisateur. Une session qui est toujours au milieu d'un tour, y compris une qui détient une tâche de fond qui ne finit jamais ou une approbation demandée de l'intérieur d'un appel d'outil en cours d'exécution, ne compte pas comme inactive ; associer avec `--kill-session-after-min` comme butée dure. Après la fin de la tâche de fond d'une session, le runner considère la session comme occupée jusqu'au tour de suivi qui lit le résultat commence, pendant au maximum la fenêtre [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). Jusqu'à ce que le runner reçoive un signal d'arrêt ou atteigne son heure de retraite, une libération qui laisse le runner sans sessions actives démarre le même chemin de sortie qu'un drainage normal, gouverné par `--drain-grace-sec`. Après un premier signal que vous avez différé avec [`--defer-shutdown-max-min`](/docs/fr/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), le runner se termine dès qu'une libération le laisse sans sessions. `0` désactive. |52| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | Libérer un créneau de session après N minutes d'inactivité une fois qu'un tour se termine ou que la session attend l'action de l'utilisateur. Une session qui est toujours au milieu d'un tour, y compris une qui détient une tâche de fond qui ne finit jamais ou une approbation demandée de l'intérieur d'un appel d'outil en cours d'exécution, ne compte pas comme inactive ; associer avec `--kill-session-after-min` comme butée dure. Après la fin de la tâche de fond d'une session, le runner considère la session comme occupée jusqu'au tour de suivi qui lit le résultat commence, pendant au maximum la fenêtre [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). Jusqu'à ce que le runner reçoive un signal d'arrêt ou atteigne son heure de retraite, une libération qui laisse le runner sans sessions actives démarre le même chemin de sortie qu'un drainage normal, gouverné par `--drain-grace-sec`. Après un premier signal que vous avez différé avec [`--defer-shutdown-max-min`](/docs/fr/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), le runner se termine dès qu'une libération le laisse sans sessions. `0` désactive. |

53| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | désactivé | Supprimer les répertoires par session d'une session sous `<base-dir>/_sessions/` quand la session se termine sur ce runner, quel que soit le résultat. [Réutiliser un checkout pré-chauffé](/docs/fr/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout) décrit ce qu'ils contiennent et qui peut les lire quand ils restent. La suppression est meilleur effort : les répertoires par session restent en place quand le runner est tué ou atteint sa date limite de drainage avant que le nettoyage ne s'exécute. Avec le drapeau activé, le log de débogage d'une session échouée ou interrompue n'est pas conservé sur le disque. Nécessite Claude Code v2.1.268 ou ultérieur. |53| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | désactivé | Supprimer les répertoires par session d'une session sous `<base-dir>/_sessions/` quand la session se termine sur ce runner, quel que soit le résultat. [Réutiliser un checkout pré-chauffé](/docs/fr/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout) décrit ce qu'ils contiennent et qui peut les lire quand ils restent. La suppression est meilleur effort : les répertoires par session restent en place quand le runner est tué ou atteint sa date limite de drainage avant que le nettoyage ne s'exécute. Avec le drapeau activé, le log de débogage d'une session échouée ou interrompue n'est pas conservé sur le disque. Nécessite Claude Code v2.1.268 ou ultérieur. |

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

56| `--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. 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é 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| `--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. |

58| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | désactivé | Cloner 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 drapeaux 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. |

59 60 

60La plupart des drapeaux de durée ont un maximum, choisi pour garder chaque délai d'attente en dessous du plafond de minuteur 32 bits du runtime d'environ 24,85 jours. Les drapeaux `--*-min` sont plafonnés à 10080 minutes, 7 jours ; `--drain-grace-sec` à 604800 secondes, également 7 jours ; et `--drain-wait-sec` à 86400 secondes, 24 heures. `--session-stop-grace-sec` et `--post-session-hook-timeout-sec` ne sont pas plafonnés. Dépasser un plafond se comporte différemment par surface :61La plupart des drapeaux de durée ont un maximum, choisi pour garder chaque délai d'attente en dessous du plafond de minuteur 32 bits du runtime d'environ 24,85 jours. Les drapeaux `--*-min` sont plafonnés à 10080 minutes, 7 jours ; `--drain-grace-sec` à 604800 secondes, également 7 jours ; et `--drain-wait-sec` à 86400 secondes, 24 heures. `--session-stop-grace-sec` et `--post-session-hook-timeout-sec` ne sont pas plafonnés. Dépasser un plafond se comporte différemment par surface :

61 62 

62* **Drapeau** : le démarrage échoue avec une erreur.63* **Drapeau** : le démarrage échoue avec une erreur.

63* **Variable d'environnement** : le runner serre la valeur au plafond de minuteur plutôt que de la rejeter.64* **Variable d'environnement** : le runner serre la valeur au plafond de minuteur plutôt que de la rejeter.

64 65 

66<h3 id="auto-mode-rule-lists">

67 Listes de règles du mode auto

68</h3>

69 

70`--server-auto-mode-lists` vous permet de décider quelles règles du classifieur du [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) provenant de l'extérieur du runner atteignent les sessions sur vos runners. Le plan de contrôle d'Anthropic peut envoyer des listes de règles avec une session et demander au runner de les appliquer. Certaines entrées peuvent être des règles rédigées par un administrateur de votre organisation. Les listes sont `environment`, `soft_deny` et `allow` :

71 

72* **`environment`** : une entrée peut amener le classifieur à autoriser davantage comme à autoriser moins.

73* **`soft_deny`** : une entrée bloque une action sauf si l'utilisateur l'a explicitement demandée ou si une exception `allow` s'applique.

74* **`allow`** : les exceptions aux entrées `soft_deny`.

75 

76La valeur du flag détermine quelles listes le runner applique :

77 

78* **`no-allow`** : la valeur par défaut. Applique `environment` et `soft_deny` et retient `allow`. Une entrée `environment` peut toujours amener le classifieur à autoriser davantage, donc la valeur par défaut n'exclut pas tout assouplissement.

79* **`all`** : applique les trois listes.

80* **`none`** : n'en applique aucune. Choisissez `none` pour exclure tout assouplissement provenant de ces listes. Cela supprime également les restrictions `soft_deny`.

81 

82Aucun paramètre du runner ne fait en sorte que le plan de contrôle demande au runner d'appliquer les listes. Quand il ne le demande pas, les sessions ne reçoivent aucune liste, quelle que soit la valeur que vous définissez. Pour voir ce qui s'est passé, démarrez le runner avec `--log-level debug`. Pour chaque session, le runner journalise alors une ligne contenant `the server asked this runner to apply`, ou une ligne contenant `the server did not ask this runner to apply the auto mode lists it sends`.

83 

65<h2 id="orchestrator-cli-flags">84<h2 id="orchestrator-cli-flags">

66 Drapeaux CLI de l'orchestrateur85 Drapeaux CLI de l'orchestrateur

67</h2>86</h2>


72| :- | :- | :- |91| :- | :- | :- |

73| `--hook-concurrency <n>` | `4` | Nombre maximum de hooks `spawn-runner` s'exécutant en parallèle. Limite également le nombre de demandes de génération réclamées par interrogation. |92| `--hook-concurrency <n>` | `4` | Nombre maximum de hooks `spawn-runner` s'exécutant en parallèle. Limite également le nombre de demandes de génération réclamées par interrogation. |

74| `--hook-timeout <sec>` | `60` | Terminer l'arborescence des processus du hook après ce nombre de secondes. Le délai d'attente plus sa grâce de suppression de 5 secondes doit rester en dessous de `--expected-spawn-seconds` ; l'orchestrateur applique ceci au démarrage. |93| `--hook-timeout <sec>` | `60` | Terminer l'arborescence des processus du hook après ce nombre de secondes. Le délai d'attente plus sa grâce de suppression de 5 secondes doit rester en dessous de `--expected-spawn-seconds` ; l'orchestrateur applique ceci au démarrage. |

75| `--expected-spawn-seconds <sec>` | `120` | Temps de démarrage p99 attendu pour les runners générés, dans la plage appliquée par le serveur 10 à 3600. Envoyé à chaque interrogation comme le bail côté serveur ; si aucun runner ne s'enregistre avant son expiration, la session est re-proposée avec un nouvel ID de commande. Tous les réplicas doivent partager cette valeur. |94| `--expected-spawn-seconds <sec>` | `120` | Temps p99 attendu entre le moment où l'orchestrateur reçoit une demande de génération et celui où le runner s'enregistre, y compris toute attente de capacité sur votre plateforme. Le serveur applique une plage de 10 à 3600. Envoyé à chaque interrogation comme bail côté serveur : si aucun runner ne s'enregistre avant son expiration, la session est re-proposée avec un nouvel ID de commande. Tous les réplicas doivent partager cette valeur. |

76| `--min-idle <n>` | `0` | Garder au moins N créneaux de session inactifs libres en générant proactivement des runners de secours. `0` désactive le préchauffage. Associer avec le `--exit-if-unused-min` du runner afin que les runners de secours excédentaires se réclament eux-mêmes. |95| `--min-idle <n>` | `0` | Garder au moins N créneaux de session inactifs libres en générant proactivement des runners de secours. `0` désactive le préchauffage. Associer avec le `--exit-if-unused-min` du runner afin que les runners de secours excédentaires se réclament eux-mêmes. |

77| `--debug-dir <path>` | non défini | Écrire le bon de travail de chaque demande de génération et la stderr du hook sur le disque. Débogage uniquement ; ne jamais définir en production. |96| `--debug-dir <path>` | non défini | Écrire le bon de travail de chaque demande de génération et la stderr du hook sur le disque. Débogage uniquement ; ne jamais définir en production. |

78 97 


108| `SELF_HOSTED_RUNNER_POST_TURN_SETTLE_MS` | `7000` | Limite supérieure du temps pendant lequel le runner compte une session comme occupée pour le drainage `--drain-wait-sec` après la fin d'un tour, tandis que le processus de la session signale la fin du tour à Anthropic. `0` ou une valeur inutilisable revient à la valeur par défaut, donc la retenue ne peut pas être désactivée. Nécessite Claude Code v2.1.275 ou ultérieur. |127| `SELF_HOSTED_RUNNER_POST_TURN_SETTLE_MS` | `7000` | Limite supérieure du temps pendant lequel le runner compte une session comme occupée pour le drainage `--drain-wait-sec` après la fin d'un tour, tandis que le processus de la session signale la fin du tour à Anthropic. `0` ou une valeur inutilisable revient à la valeur par défaut, donc la retenue ne peut pas être désactivée. Nécessite Claude Code v2.1.275 ou ultérieur. |

109| `SELF_HOSTED_RUNNER_SIGKILL_GRACE_MS` | `30000` | Combien de temps le runner attend que le système d'exploitation livre `SIGKILL` à un enfant bloqué dans les E/S non interruptibles avant de se terminer lui-même. Plancher à `--post-session-hook-timeout-sec` plus 15 secondes, et 30 de plus quand `--push-outcome-on-release` est défini, donc le minimum effectif est 75 secondes aux valeurs par défaut. |128| `SELF_HOSTED_RUNNER_SIGKILL_GRACE_MS` | `30000` | Combien de temps le runner attend que le système d'exploitation livre `SIGKILL` à un enfant bloqué dans les E/S non interruptibles avant de se terminer lui-même. Plancher à `--post-session-hook-timeout-sec` plus 15 secondes, et 30 de plus quand `--push-outcome-on-release` est défini, donc le minimum effectif est 75 secondes aux valeurs par défaut. |

110| `CLAUDE_RUNNER_FETCH_DEPTH` | `50` | Profondeur de récupération git pour les clones frais. Définir un entier positif, ou `full` ou `0` pour une récupération complète. Les dépôts déjà présents dans l'espace de travail conservent leur profondeur existante. |129| `CLAUDE_RUNNER_FETCH_DEPTH` | `50` | Profondeur de récupération git pour les clones frais. Définir un entier positif, ou `full` ou `0` pour une récupération complète. Les dépôts déjà présents dans l'espace de travail conservent leur profondeur existante. |

130| `CLAUDE_RUNNER_FETCH_SERVER_PROGRESS_CAP_MS` | `600000` | Durée en millisecondes, par tentative, pendant laquelle une récupération git peut attendre ses premières données tant que les indicateurs de progression du serveur git lui-même continuent d'augmenter, par exemple lorsque le serveur prépare le pack d'un dépôt volumineux. `0` ou `off` désactive cette attente : une telle récupération est alors interrompue après deux minutes sans données. Tout autre nombre entier est borné entre `120000` et `1800000`, soit 2 à 30 minutes. Nécessite Claude Code v2.1.295 ou ultérieur. |

111| `CLAUDE_RUNNER_SKIP_GIT_VERIFY` | non défini | Quand `1`, ignorer la vérification de présence `.git` après l'exécution d'un hook `checkout`. Définir ceci quand votre hook matérialise une source non-git. |131| `CLAUDE_RUNNER_SKIP_GIT_VERIFY` | non défini | Quand `1`, ignorer la vérification de présence `.git` après l'exécution d'un hook `checkout`. Définir ceci quand votre hook matérialise une source non-git. |

112| `FORCE_AUTOUPDATE_PLUGINS` | non défini | Quand `1`, laisser les marchés de plugins se mettre à jour automatiquement même si le binaire est épinglé |132| `FORCE_AUTOUPDATE_PLUGINS` | non défini | Quand `1`, laisser les marchés de plugins se mettre à jour automatiquement même si le binaire est épinglé |

113| `CLAUDE_CODE_DISABLE_ARTIFACT` | non défini | Quand `1`, désactiver l'outil Artifact dans les sessions indépendamment du paramètre d'administration de l'organisation, et supprimer l'exigence de sortie `*.frame.claudeusercontent.com` |133| `CLAUDE_CODE_DISABLE_ARTIFACT` | non défini | Quand `1`, désactiver l'outil Artifact dans les sessions indépendamment du paramètre d'administration de l'organisation, et supprimer l'exigence de sortie `*.frame.claudeusercontent.com` |


178| `claude_code_self_hosted_orchestrator_poll_errors_total{error_kind}` | Cumul des échecs PollSpawnHints par type : `transport`, `timeout`, `5xx`, `429`, ou `4xx`. Les cinq séries sont présentes depuis le démarrage du processus ; alertez sur `rate(...[5m]) > 0`. |198| `claude_code_self_hosted_orchestrator_poll_errors_total{error_kind}` | Cumul des échecs PollSpawnHints par type : `transport`, `timeout`, `5xx`, `429`, ou `4xx`. Les cinq séries sont présentes depuis le démarrage du processus ; alertez sur `rate(...[5m]) > 0`. |

179| `claude_code_self_hosted_orchestrator_queue_pending_sessions` | Demandes de spawn revendicables maintenant |199| `claude_code_self_hosted_orchestrator_queue_pending_sessions` | Demandes de spawn revendicables maintenant |

180| `claude_code_self_hosted_orchestrator_queue_backing_off_sessions` | Demandes de spawn en retry backoff après un échec de hook réessayable |200| `claude_code_self_hosted_orchestrator_queue_backing_off_sessions` | Demandes de spawn en retry backoff après un échec de hook réessayable |

181| `claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions` | Demandes de spawn bloquées jusqu'à ce qu'un Owner les réessaie à partir de l'onglet **Activity** de l'environnement ; alertez si au-dessus de zéro |201| `claude_code_self_hosted_orchestrator_queue_circuit_broken_sessions` | Sessions dont le spawn est bloqué. Chacune reste bloquée jusqu'à ce qu'un utilisateur lui envoie un nouveau message ou qu'un Owner la réessaie à partir de l'onglet **Activity** de l'environnement. Le compteur peut rester au-dessus de zéro après que vous avez corrigé la cause. Alertez si au-dessus de zéro. |

182| `claude_code_self_hosted_orchestrator_pool_pending_sessions` | Total des sessions attendant un runner pour cet environnement. Agrégat à l'échelle de l'environnement, identique sur chaque instance d'orchestrateur : utilisez `MAX` plutôt que `SUM` entre les instances. |202| `claude_code_self_hosted_orchestrator_pool_pending_sessions` | Total des sessions attendant un runner pour cet environnement. Agrégat à l'échelle de l'environnement, identique sur chaque instance d'orchestrateur : utilisez `MAX` plutôt que `SUM` entre les instances. |

183| `claude_code_self_hosted_orchestrator_pool_active_sessions` | Sessions actuellement assignées à un runner vivant dans cet environnement. Agrégat à l'échelle de l'environnement, identique sur chaque instance d'orchestrateur : utilisez `MAX` plutôt que `SUM` entre les instances. |203| `claude_code_self_hosted_orchestrator_pool_active_sessions` | Sessions actuellement assignées à un runner vivant dans cet environnement. Agrégat à l'échelle de l'environnement, identique sur chaque instance d'orchestrateur : utilisez `MAX` plutôt que `SUM` entre les instances. |

184| `claude_code_self_hosted_orchestrator_spawn_hooks_total{result}` | Cumul des résultats du hook `spawn-runner` : `ok`, `retryable`, `non_retryable`. Compte les invocations de hook d'orchestrateur, pas les enfants de session que les runners génèrent : non comparable à `sessions_started_total`, puisque la capacité au-dessus d'un, les pools chauds, et les runners générés à nouveau pour la même session divergent les deux. |204| `claude_code_self_hosted_orchestrator_spawn_hooks_total{result}` | Cumul des résultats du hook `spawn-runner` : `ok`, `retryable`, `non_retryable`. Compte les invocations de hook d'orchestrateur, pas les enfants de session que les runners génèrent : non comparable à `sessions_started_total`, puisque la capacité au-dessus d'un, les pools chauds, et les runners générés à nouveau pour la même session divergent les deux. |


285 for: 1m305 for: 1m

286 labels: {severity: critical}306 labels: {severity: critical}

287 annotations:307 annotations:

288 summary: "{{ $value }} sessions circuit-broken — le hook spawn-runner est répétitivement non-réessayable ; corrigez l'infra puis réessayez à partir de l'onglet Activity"308 summary: "Sessions dont le spawn est bloqué : {{ $value }}. Lisez l'erreur de chacune dans l'onglet Activity, corrigez la cause, puis sélectionnez Retry"

289 - alert: ClaudeOrchestratorPollErrors309 - alert: ClaudeOrchestratorPollErrors

290 expr: sum by (pod) (rate(claude_code_self_hosted_orchestrator_poll_errors_total[5m])) > 0310 expr: sum by (pod) (rate(claude_code_self_hosted_orchestrator_poll_errors_total[5m])) > 0

291 for: 2m311 for: 2m


320 340 

321Avant v2.1.260, le runner terminait chaque session qui atteignait sa limite `--kill-session-after-min` et la comptait dans `sessions_interrupted_total`.341Avant v2.1.260, le runner terminait chaque session qui atteignait sa limite `--kill-session-after-min` et la comptait dans `sessions_interrupted_total`.

322 342 

323Le hook [`post-session`](/docs/fr/self-hosted-environments-configuration#post-session) classifie différemment les remises propres avec `CLAUDE_RUNNER_EXIT_REASON`. Le hook signale une libération, un timeout de démarrage, et une désassignation serveur comme `interrupted`, parce que le runner a arrêté l'enfant. Ces compteurs enregistrent les mêmes événements que `completed`, parce que le slot a été remis correctement.343Le hook [`post-session`](/docs/fr/self-hosted-environments-configuration#post-session) classifie différemment les remises propres avec `CLAUDE_RUNNER_EXIT_REASON`. Le hook les signale comme `interrupted`, parce que le runner a arrêté l'enfant : une libération, un timeout de démarrage, une désassignation serveur, et un archivage ou une suppression que le poll a remarqué en premier. Ces compteurs enregistrent les mêmes événements que `completed`, parce que le slot a été remis correctement.

324 344 

325Si vous réconciliez les reçus de hook directement contre `sessions_completed_total`, vous sous-comptez les complétions. Utilisez le hook pour les garanties par session et les compteurs pour les taux agrégés.345Si vous réconciliez les reçus de hook directement contre `sessions_completed_total`, vous sous-comptez les complétions. Utilisez le hook pour les garanties par session et les compteurs pour les taux agrégés.

326 346 

Details

87 87 

88Les drapeaux de dispatch `--environment` et `--ref` nécessitent Claude Code v2.1.224 ou ultérieur sur la machine qui exécute le script, le même plancher que le runner lui-même. Avec le hook en place et un runner démarré sur cet hôte, le script de test :88Les drapeaux de dispatch `--environment` et `--ref` nécessitent Claude Code v2.1.224 ou ultérieur sur la machine qui exécute le script, le même plancher que le runner lui-même. Avec le hook en place et un runner démarré sur cet hôte, le script de test :

89 89 

901. Crée une session sur l'environnement de test avec `claude -p "<prompt>" --environment <environment-id> --output-format json`, exécuté à partir d'une extraction git pour que la CLI puisse détecter automatiquement le référentiel à partir de la télécommande `origin`. Le `--ref <branch>` optionnel base l'extraction de la session sur une ref nommée au lieu du HEAD local. La commande crée la session, imprime une ligne de JSON contenant `session_id`, et se termine sans attendre la réponse de Claude.901. Crée une session sur l'environnement de test avec `claude -p "<prompt>" --environment <environment-id> --output-format json`. Exécutez la commande à partir d'une extraction git pour que la CLI puisse détecter automatiquement le dépôt à partir du dépôt distant `origin`. Le `--ref <branch>` optionnel base l'extraction de la session sur une ref nommée au lieu du HEAD local. La commande se termine sans attendre la réponse de Claude. Ce qu'elle imprime indique le résultat à votre script :

91 * **Session créée** : une ligne de JSON telle que `{"ok":true,"session_id":"session_...","title":"...","url":"...","pool_id":"..."}`

92 * **Échec de la création de la session** : la ligne `{"ok":false,"error":"..."}`, et la commande se termine avec le statut 1

93 * **Certaines erreurs antérieures**, comme l'indisponibilité des sessions cloud pour votre organisation ou un prompt manquant : l'erreur sur stderr sans ligne JSON, et la commande se termine avec le statut 1

912. Attend que la réponse apparaisse dans `$E2E_REPLY_DIR/<session_id>.txt`, écrite par le hook Stop sur le runner une fois le tour terminé.942. Attend que la réponse apparaisse dans `$E2E_REPLY_DIR/<session_id>.txt`, écrite par le hook Stop sur le runner une fois le tour terminé.

923. Envoie un suivi avec `claude -p "<message>" --cloud <session_id> --output-format json` (voir [Envoyer un message de suivi à une session en cours d'exécution](/docs/fr/claude-code-on-the-web#send-follow-ups-from-the-cli)), qui publie un événement utilisateur à la session existante et se termine.953. Envoie un suivi avec `claude -p "<message>" --cloud <session_id> --output-format json` (voir [Envoyer un message de suivi à une session en cours d'exécution](/docs/fr/claude-code-on-the-web#send-follow-ups-from-the-cli)), qui publie un événement utilisateur à la session existante et se termine.

934. Attend la réponse du suivi de la même manière qu'à l'étape 2.964. Attend la réponse du suivi de la même manière qu'à l'étape 2.


104 Exemple de script107 Exemple de script

105</h2>108</h2>

106 109 

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

111 

112* **Extraction du dépôt** : exécutez le script à partir d'une extraction git du dépôt dans lequel vous voulez que la session fonctionne.

113* **Runner** : démarrez un runner sur cet hôte avec le hook de capture installé et `E2E_REPLY_DIR` exporté.

114* **Connexion** : connectez-vous avec un compte claude.ai sur la machine qui exécute le script, comme décrit dans [S'authentifier depuis la CI](#authenticate-from-ci).

115* **ID d'environnement** : définissez `CLAUDE_TEST_ENVIRONMENT_ID` sur l'ID `ccpool_...` de votre environnement de test, affiché dans la boîte de dialogue de détail de l'environnement sur la page d'administration ou retourné par l'[appel create-environment](#create-a-dedicated-test-environment).

116 

117Le script ci-dessous exécute la boucle complète contre `$CLAUDE_TEST_ENVIRONMENT_ID` et affirme sur une phrase sentinelle dans chaque réponse.

108 118 

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

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


152TURN1="e2e-probe-$(date +%s)-$$: say exactly 'ok: custom tools are reachable' and nothing else"162TURN1="e2e-probe-$(date +%s)-$$: say exactly 'ok: custom tools are reachable' and nothing else"

153EXPECT1="ok: custom tools are reachable"163EXPECT1="ok: custom tools are reachable"

154create_json=$(claude -p "$TURN1" --environment "$CLAUDE_TEST_ENVIRONMENT_ID" \164create_json=$(claude -p "$TURN1" --environment "$CLAUDE_TEST_ENVIRONMENT_ID" \

155 --ref "$TEST_REPO_REF" --output-format json)165 --ref "$TEST_REPO_REF" --output-format json < /dev/null)

156echo "create: $create_json"166echo "create: $create_json"

157SESSION_ID=$(jq -er '.session_id' <<<"$create_json")167SESSION_ID=$(jq -er '.session_id' <<<"$create_json")

158 168 


163# 3. Post a follow-up via the CLI.173# 3. Post a follow-up via the CLI.

164TURN2="e2e-probe-followup-$(date +%s): say exactly 'ok: follow-up delivered' and nothing else"174TURN2="e2e-probe-followup-$(date +%s): say exactly 'ok: follow-up delivered' and nothing else"

165EXPECT2="ok: follow-up delivered"175EXPECT2="ok: follow-up delivered"

166followup_json=$(claude -p "$TURN2" --cloud "$SESSION_ID" --output-format json)176followup_json=$(claude -p "$TURN2" --cloud "$SESSION_ID" --output-format json < /dev/null)

167echo "followup: $followup_json"177echo "followup: $followup_json"

168jq -e '.ok == true' <<<"$followup_json" >/dev/null178jq -e '.ok == true' <<<"$followup_json" >/dev/null

169 179 

sessions.md +44 −42

Details

6 6 

7> Nommez, reprenez, créez des branches et basculez entre les conversations Claude Code. Couvre `--continue`, `--resume`, `--from-pr`, le sélecteur `/resume`, la dénomination des sessions, l'export des transcriptions et l'emplacement des transcriptions.7> Nommez, reprenez, créez des branches et basculez entre les conversations Claude Code. Couvre `--continue`, `--resume`, `--from-pr`, le sélecteur `/resume`, la dénomination des sessions, l'export des transcriptions et l'emplacement des transcriptions.

8 8 

9Une session est une conversation enregistrée liée à un répertoire de projet. Claude Code la stocke localement au fur et à mesure que vous travaillez, ce qui vous permet de reprendre là où vous vous êtes arrêté, de créer une branche pour essayer une approche différente ou de basculer entre les tâches.9Une [session](/docs/fr/glossary#session) est une conversation enregistrée liée à un répertoire de projet. Claude Code la stocke localement au fur et à mesure que vous travaillez, ce qui vous permet de reprendre là où vous vous êtes arrêté, de créer une branche pour essayer une approche différente ou de basculer entre les tâches.

10 10 

11L'[application de bureau](/docs/fr/desktop#work-in-parallel-with-sessions), [Claude Code sur le web](/docs/fr/claude-code-on-the-web) et l'[extension VS Code](/docs/fr/vs-code#resume-past-conversations) maintiennent chacun leur propre historique de sessions, et l'application de bureau peut également [reprendre une session CLI](/docs/fr/desktop#coming-from-the-cli). Cette page couvre l'interface CLI.11L'[application de bureau](/docs/fr/desktop#work-in-parallel-with-sessions), [Claude Code sur le web](/docs/fr/claude-code-on-the-web) et l'[extension VS Code](/docs/fr/vs-code#resume-past-conversations) maintiennent chacun leur propre historique de sessions, et l'application de bureau peut également [reprendre une session CLI](/docs/fr/desktop#coming-from-the-cli). Cette page couvre l'interface CLI.

12 12 


18 18 

19| Commande | Ce qu'elle fait |19| Commande | Ce qu'elle fait |

20| :- | :- |20| :- | :- |

21| `claude --continue` | Reprend la conversation la plus récente dans le répertoire courant |21| `claude --continue` | Rouvre la session la plus récente dans le répertoire courant |

22| `claude --resume` | Ouvre le [sélecteur de sessions](#use-the-session-picker) |22| `claude --resume` | Ouvre le [sélecteur de sessions](#use-the-session-picker) |

23| `claude --resume <name>` | Reprend directement la session nommée |23| `claude --resume <name>` | Reprend directement la session nommée |

24| `claude --resume <transcript-path>` | Reprend la conversation stockée dans le fichier de [transcription](#where-transcripts-are-stored) `.jsonl` à ce chemin absolu |24| `claude --resume <transcript-path>` | Reprend la session stockée dans le fichier de [transcription](#where-transcripts-are-stored) `.jsonl` à ce chemin absolu |

25| `claude --from-pr <number>` | Ouvre le sélecteur de sessions filtré aux sessions liées à cette pull request |25| `claude --from-pr <number>` | Ouvre le sélecteur de sessions filtré aux sessions liées à cette pull request |

26| `/resume` | Bascule vers une conversation différente depuis une session active |26| `/resume` | Bascule vers une session différente depuis une session active |

27 

28Claude Code laisse les sessions créées avec [`claude -p`](/docs/fr/headless) ou le [SDK Agent](/docs/fr/agent-sdk/overview) en dehors du sélecteur de sessions et en dehors de `claude --continue`. Vous pouvez toujours en reprendre une en passant son ID de session à `claude --resume <session-id>`. Avec `claude --continue`, Claude Code ignore également les [sessions dont le premier prompt était `/loop`](#where-the-session-picker-looks). Lorsque vous exécutez [`claude -p --continue`](/docs/fr/headless#continue-conversations), Claude Code inclut les sessions `-p`, SDK et `/loop`.

29 

30Vous pouvez exécuter `claude --resume <session-id>` depuis n'importe quel répertoire, ce qui vous permet de reprendre une session qui a démarré ailleurs ou qui s'est déplacée avec [`/cd`](/docs/fr/commands). Claude Code cherche l'ID dans cet ordre :

31 

321. Le répertoire de projet courant et ses git worktrees

332. Tous les autres projets sur cette machine

34 

35La recherche inter-projets résout l'ID uniquement lorsqu'exactement un autre projet contient une transcription avec des messages pour celui-ci, donc un doublon copié à la main fait que Claude Code signale non-trouvé plutôt que de reprendre une copie arbitraire. Si aucune session stockée ne correspond à l'ID, Claude Code signale `No conversation found with session ID: <session-id>`.

36 

37Avant la v2.1.223, la recherche s'arrêtait au répertoire de projet courant et à ses git worktrees, donc vous deviez reprendre depuis le répertoire dans lequel la session avait travaillé en dernier.

38 

39`claude --continue` ouvre une [session en arrière-plan](/docs/fr/agent-view) qui s'est terminée, mais pas une qui est toujours en cours d'exécution ; l'ouverture de sessions en arrière-plan terminées nécessite Claude Code v2.1.257 ou ultérieur. Si votre conversation la plus récente est une que vous [avez envoyée en arrière-plan](/docs/fr/agent-view#send-the-session-to-the-background) et qu'elle s'exécute toujours là-bas, Claude Code se termine avec `Your most recent conversation is running in the background` et l'ID de cette session. Attachez-vous à la session depuis [`claude agents`](/docs/fr/agent-view#attach-to-a-session), ou exécutez `claude --resume` pour en choisir une autre.

40 27 

41<h3 id="resume-a-running-background-session">28<h3 id="resume-a-running-background-session">

42 Reprendre une session en arrière-plan en cours d'exécution29 Reprendre une session en arrière-plan en cours d'exécution


64 51 

65Lorsque Claude Code charge une conversation à partir de sa transcription, la session reprise restaure la conversation ainsi que l'état enregistré en elle :52Lorsque Claude Code charge une conversation à partir de sa transcription, la session reprise restaure la conversation ainsi que l'état enregistré en elle :

66 53 

67* Historique de conversation : l'historique complet, y compris les appels d'outils et les résultats. Un outil qui était toujours en cours d'exécution lorsque le processus précédent s'est terminé, par exemple lors d'un plantage, ne se termine pas ou ne s'exécute pas à nouveau lorsque vous reprenez. Claude voit l'appel marqué comme interrompu avant que son résultat ne soit enregistré et on lui dit de vérifier s'il a pris effet avant de l'exécuter à nouveau, sauf si [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/fr/env-vars#variables) est défini. Avant la v2.1.281, Claude Code supprimait l'appel interrompu de la conversation ou le montrait à Claude comme un appel que vous aviez interrompu.54* Historique de conversation : l'historique complet, y compris les appels d'outils et les résultats. Un outil qui était toujours en cours d'exécution lorsque le processus précédent s'est terminé, par exemple lors d'un plantage, ne se termine pas ou ne s'exécute pas à nouveau lorsque vous reprenez. Claude voit l'appel marqué comme interrompu avant que son résultat ne soit enregistré et on lui dit de vérifier s'il a pris effet avant de l'exécuter à nouveau, sauf si [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/fr/env-vars#variables) est défini.

68* Modèle : la session continue sur le modèle qu'elle utilisait, sauf dans les cas décrits dans [Définir votre modèle](/docs/fr/model-config#setting-your-model).55* Modèle : la session continue sur le modèle qu'elle utilisait, sauf dans les cas décrits dans [Définir votre modèle](/docs/fr/model-config#setting-your-model).

69* Agent : une session démarrée avec [`--agent`](/docs/fr/sub-agents#invoke-subagents-explicitly) ou le paramètre `agent` continue en tant que cet agent, en conservant ses restrictions d'outils et son modèle. Passez `--agent` lors de la reprise pour en choisir un différent ; pour le prompt système dans l'un ou l'autre cas, voir [Flags de prompt système dans les conversations reprises](/docs/fr/cli-reference#system-prompt-flags-in-resumed-conversations). Claude Code cherche l'agent dans deux endroits : le répertoire d'origine de la session, à condition que vous ayez [approuvé cet espace de travail](/docs/fr/permissions#project-allow-rules-and-workspace-trust), puis le répertoire depuis lequel vous reprenez, donc un agent limité au projet se charge toujours lorsque vous reprenez depuis un autre répertoire. Si Claude Code ne trouve pas l'agent dans l'un ou l'autre endroit, la session reprend avec les outils par défaut et affiche un [avertissement nommant l'agent](/docs/fr/errors#session-agent-no-longer-available).56* Agent : une session démarrée avec [`--agent`](/docs/fr/sub-agents#invoke-subagents-explicitly) ou le paramètre `agent` continue en tant que cet agent, en conservant ses restrictions d'outils et son modèle. Passez `--agent` lors de la reprise pour en choisir un différent ; pour le prompt système dans l'un ou l'autre cas, voir [Flags de prompt système dans les conversations reprises](/docs/fr/cli-reference#system-prompt-flags-in-resumed-conversations). Claude Code cherche l'agent dans deux endroits : le répertoire d'origine de la session, à condition que vous ayez [approuvé cet espace de travail](/docs/fr/permissions#project-allow-rules-and-workspace-trust), puis le répertoire depuis lequel vous reprenez, donc un agent limité au projet se charge toujours lorsque vous reprenez depuis un autre répertoire. Si Claude Code ne trouve pas l'agent dans l'un ou l'autre endroit, la session reprend avec les outils par défaut et affiche un [avertissement nommant l'agent](/docs/fr/errors#session-agent-no-longer-available).

70* Mode de permission : si vous reprenez depuis un terminal avec `claude --continue`, `claude --resume <session-id>` ou `claude --resume <name>` lorsque le nom correspond à une session, sans `-p`, Claude Code restaure le mode de permission dans lequel se trouvait la session, sauf dans les cas de [mode de permission à la reprise](#permission-mode-on-resume), qui couvre également le sélecteur de sessions, `/resume` et la reprise avec `claude -p`. Passez `--permission-mode` ou `--dangerously-skip-permissions` pour remplacer le mode restauré.57* Mode de permission : si vous reprenez depuis un terminal avec `claude --continue`, `claude --resume <session-id>` ou `claude --resume <name>` lorsque le nom correspond à une session, sans `-p`, Claude Code restaure le mode de permission dans lequel se trouvait la session, sauf dans les cas de [mode de permission à la reprise](#permission-mode-on-resume), qui couvre également le sélecteur de sessions, `/resume` et la reprise avec `claude -p`. Passez `--permission-mode` ou `--dangerously-skip-permissions` pour remplacer le mode restauré.


83* Terminal : `claude --continue`, `claude --resume <session-id>` ou `claude --resume <name>` lorsque le nom correspond à une session, sans `-p`. Claude Code restaure le mode de permission dans lequel se trouvait la session, sauf dans les cas du tableau. Passez `--permission-mode` ou `--dangerously-skip-permissions` pour remplacer le mode restauré.70* Terminal : `claude --continue`, `claude --resume <session-id>` ou `claude --resume <name>` lorsque le nom correspond à une session, sans `-p`. Claude Code restaure le mode de permission dans lequel se trouvait la session, sauf dans les cas du tableau. Passez `--permission-mode` ou `--dangerously-skip-permissions` pour remplacer le mode restauré.

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

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

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

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

88 75 

76Si une [règle de refus](/docs/fr/permissions#manage-permissions) supprime l'outil [`ExitPlanMode`](/docs/fr/tools-reference), Claude ne peut pas présenter de plan pour approbation, donc Claude Code ne restaure pas le mode plan. La session démarre dans le mode de permission dans lequel une nouvelle session démarrerait depuis la même ligne de commande. Avec `/resume`, la conversation continue dans votre mode de permission actuel.

77 

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

90 79 

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

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

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

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

84| `plan` | Terminal, lorsqu'une règle de refus supprime `ExitPlanMode` | Le mode de permission dans lequel une nouvelle session démarrerait |

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

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

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


110* Vous ne passez pas `--permission-mode` ou `--dangerously-skip-permissions`100* Vous ne passez pas `--permission-mode` ou `--dangerously-skip-permissions`

111* Vous ne passez pas `--fork-session`101* Vous ne passez pas `--fork-session`

112* L'exécution n'est pas démarrée via les [canaux](/docs/fr/channels)102* L'exécution n'est pas démarrée via les [canaux](/docs/fr/channels)

103* Aucune [règle de refus](/docs/fr/permissions#manage-permissions) ne supprime l'outil `ExitPlanMode`

113 104 

114<h3 id="resume-from-a-summary">105<h3 id="resume-from-a-summary">

115 Reprendre à partir d'un résumé106 Reprendre à partir d'un résumé


117 108 

118Sur un plan Pro ou Max, lorsque vous reprenez une session qui a été inactive pendant plus d'une heure environ et dépasse 100 000 tokens, Claude Code restaure la conversation puis ouvre une boîte de dialogue avant que vous n'envoyiez votre premier message. Le [cache de prompt](/docs/fr/prompt-caching#cache-lifetime) de la session a expiré à ce moment-là, donc la prochaine requête traite l'historique complet une fois, quelle que soit l'option de la boîte de dialogue que vous choisissez.109Sur un plan Pro ou Max, lorsque vous reprenez une session qui a été inactive pendant plus d'une heure environ et dépasse 100 000 tokens, Claude Code restaure la conversation puis ouvre une boîte de dialogue avant que vous n'envoyiez votre premier message. Le [cache de prompt](/docs/fr/prompt-caching#cache-lifetime) de la session a expiré à ce moment-là, donc la prochaine requête traite l'historique complet une fois, quelle que soit l'option de la boîte de dialogue que vous choisissez.

119 110 

120La boîte de dialogue offre trois façons de continuer la session. Elles diffèrent dans la quantité de conversation que chacune porte dans les requêtes ultérieures, ce qui est un compromis entre conserver tous les détails et envoyer moins de tokens par requête :111La boîte de dialogue offre trois façons de continuer la session :

121 112 

122* **Reprendre à partir du résumé** : exécute [`/compact`](/docs/fr/context-window#what-survives-compaction) immédiatement. Claude Code envoie une requête de résumé sur l'historique complet, puis remplace l'historique par le résumé, vos échanges les plus récents et jusqu'à cinq fichiers récemment lus. Les requêtes ultérieures portent le résumé au lieu de l'historique complet.113* **Reprendre à partir du résumé** : exécute [`/compact`](/docs/fr/context-window#what-survives-compaction) immédiatement. Les requêtes ultérieures portent le résumé au lieu de l'historique complet.

123* **Reprendre la session complète telle quelle** : charge la conversation inchangée. Après que vous avez envoyé votre premier message, Claude Code retraite et remet en cache l'historique complet, puis le relit à partir du cache sur les requêtes ultérieures tant que le cache reste actif.114* **Reprendre la session complète telle quelle** : charge la conversation inchangée.

124* **Ne me le demandez plus** : reprend la session complète et arrête d'afficher la boîte de dialogue sur toutes les reprises futures.115* **Ne me le demandez plus** : reprend la session complète et arrête d'afficher la boîte de dialogue sur toutes les reprises futures.

125 116 

126Reprendre tel quel conserve tous les détails de la conversation disponibles, à un coût par requête qui s'adapte à la taille de la conversation. Reprendre à partir du résumé coûte moins cher à chaque requête ultérieure car il porte le résumé au lieu de l'historique complet, mais tout ce que le résumé omet n'est plus dans le contexte de Claude. Voir [pourquoi l'utilisation augmente dans une longue session](/docs/fr/costs#why-usage-climbs-in-a-long-session) pour savoir d'où provient ce coût par requête.117Reprendre tel quel conserve tous les détails de la conversation disponibles, à un coût par requête qui s'adapte à la taille de la conversation. Reprendre à partir du résumé coûte moins cher à chaque requête ultérieure car il porte le résumé au lieu de l'historique complet, mais tout ce que le résumé omet n'est plus dans le contexte de Claude. Voir [pourquoi l'utilisation augmente dans une longue session](/docs/fr/costs#why-usage-climbs-in-a-long-session) pour savoir d'où provient ce coût par requête.


136 127 

137Utilisez `Ctrl+W` pour élargir à tous les worktrees du dépôt ou `Ctrl+A` pour élargir à chaque projet sur cette machine.128Utilisez `Ctrl+W` pour élargir à tous les worktrees du dépôt ou `Ctrl+A` pour élargir à chaque projet sur cette machine.

138 129 

139Les sessions dont le premier prompt était une commande [`/loop`](/docs/fr/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop) n'apparaissent pas dans le sélecteur, et `claude --continue` les ignore également. L'exécution de `/loop` plus tard dans une conversation ne masque pas la session. Avant la v2.1.211, une exécution `/loop` au début d'une conversation masquait la session du sélecteur de manière permanente.130<h4 id="/loop-p-agent-sdk-and-background-sessions">

131 `/loop`, `-p`, SDK Agent et sessions en arrière-plan

132</h4>

133 

134Les sessions dont le premier prompt était une commande [`/loop`](/docs/fr/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop) n'apparaissent pas dans le sélecteur, et `claude --continue` les ignore également. L'exécution de `/loop` plus tard dans une conversation ne masque pas la session.

135 

136Claude Code laisse les sessions créées avec [`claude -p`](/docs/fr/headless) ou le [SDK Agent](/docs/fr/agent-sdk/overview) en dehors du sélecteur de sessions et en dehors de `claude --continue`. Vous pouvez toujours en reprendre une en passant son ID de session à `claude --resume <session-id>`. Lorsque vous exécutez [`claude -p --continue`](/docs/fr/headless#continue-conversations), Claude Code inclut les sessions `-p`, SDK et `/loop`.

140 137 

141Le déplacement d'une session avec [`/cd`](/docs/fr/commands) la réinstalle dans le stockage de projet du nouveau répertoire, ce qui la fait apparaître dans le sélecteur de ce répertoire par la suite. À partir de la v2.1.196, une session déplacée reste absente du sélecteur de l'ancien répertoire même après un plantage ou une fermeture forcée. Sur les versions antérieures, elle pouvait aussi réapparaître dans la liste de l'ancien répertoire après une fermeture qui n'était pas propre lorsque l'ancien chemin contenait des caractères spéciaux tels que des traits de soulignement.138`claude --continue` ouvre une [session en arrière-plan](/docs/fr/agent-view) qui s'est terminée, mais pas une qui est toujours en cours d'exécution ; l'ouverture de sessions en arrière-plan terminées nécessite Claude Code v2.1.257 ou ultérieur. Si votre conversation la plus récente est une que vous [avez envoyée en arrière-plan](/docs/fr/agent-view#send-the-session-to-the-background) et qu'elle s'exécute toujours là-bas, Claude Code se termine avec `Your most recent conversation is running in the background` et l'ID de cette session. Attachez-vous à la session depuis [`claude agents`](/docs/fr/agent-view#attach-to-a-session), ou exécutez `claude --resume` pour en choisir une autre.

139 

140<h4 id="sessions-in-other-worktrees-and-projects">

141 Sessions dans d'autres worktrees et projets

142</h4>

142 143 

143Lorsque vous sélectionnez une session d'un autre worktree du même dépôt, Claude Code la reprend sur place ; lorsque le propre worktree de la session n'existe plus, Claude Code [la reprend dans votre répertoire courant](/docs/fr/worktrees#resume-a-worktree-session). Lorsque vous sélectionnez une session d'un projet non lié, Claude Code copie une commande `cd` et de reprise dans votre presse-papiers à la place. Si le répertoire de ce projet n'existe plus, Claude Code reprend la session dans votre répertoire courant plutôt que de copier une commande `cd` qui échouerait.144Lorsque vous sélectionnez une session d'un autre worktree du même dépôt, Claude Code la reprend sur place ; lorsque le propre worktree de la session n'existe plus, Claude Code [la reprend dans votre répertoire courant](/docs/fr/worktrees#resume-a-worktree-session). Lorsque vous sélectionnez une session d'un projet non lié, Claude Code copie une commande `cd` et de reprise dans votre presse-papiers à la place. Si le répertoire de ce projet n'existe plus, Claude Code reprend la session dans votre répertoire courant plutôt que de copier une commande `cd` qui échouerait.

144 145 

146Le déplacement d'une session avec [`/cd`](/docs/fr/commands) la réinstalle dans le stockage de projet du nouveau répertoire, ce qui la fait apparaître dans le sélecteur de ce répertoire par la suite.

147 

148<h4 id="resume-by-session-id-or-name">

149 Reprendre par ID de session ou par nom

150</h4>

151 

152Vous pouvez exécuter `claude --resume <session-id>` depuis n'importe quel répertoire, ce qui vous permet de reprendre une session qui a démarré ailleurs ou qui s'est déplacée avec [`/cd`](/docs/fr/commands). Claude Code cherche l'ID dans cet ordre :

153 

1541. Le répertoire de projet courant et ses git worktrees

1552. Tous les autres projets sur cette machine

156 

157La recherche inter-projets résout l'ID uniquement lorsqu'exactement un autre projet contient une transcription avec des messages pour celui-ci, donc un doublon copié à la main fait que Claude Code signale non-trouvé plutôt que de reprendre une copie arbitraire. Si aucune session stockée ne correspond à l'ID, Claude Code signale `No conversation found with session ID: <session-id>`.

158 

145La reprise par nom se résout dans le dépôt courant et ses worktrees. Les deux formes recherchent une correspondance exacte et la reprennent directement même si elle se trouve dans un worktree différent :159La reprise par nom se résout dans le dépôt courant et ses worktrees. Les deux formes recherchent une correspondance exacte et la reprennent directement même si elle se trouve dans un worktree différent :

146 160 

147| Commande | Correspondance exacte | Nom ambigu |161| Commande | Correspondance exacte | Nom ambigu |


166 180 

167Une fois qu'une session est nommée via une route CLI ou depuis claude.ai, revenez-y avec `claude --resume <name>` ou `/resume <name>` ; une session d'application de bureau reprend dans l'[application de bureau](/docs/fr/desktop#work-in-parallel-with-sessions). Voir [Reprendre une session](#resume-a-session) pour savoir comment la résolution des noms se comporte entre les worktrees.181Une fois qu'une session est nommée via une route CLI ou depuis claude.ai, revenez-y avec `claude --resume <name>` ou `/resume <name>` ; une session d'application de bureau reprend dans l'[application de bureau](/docs/fr/desktop#work-in-parallel-with-sessions). Voir [Reprendre une session](#resume-a-session) pour savoir comment la résolution des noms se comporte entre les worktrees.

168 182 

169Lorsque vous démarrez ou reprenez une session interactive avec un nom qu'une autre session active sur cette machine utilise déjà, ou que vous renommez une session avec un tel nom, Claude Code laisse le nom à la session qui l'a déjà, renomme la vôtre en une variante avec un suffixe de deux mots, comme `auth-refactor-graceful-unicorn`, et vous le signale. Exécutez `/rename` avec un nouveau nom si vous préférez en choisir un vous-même. Avant la v2.1.232, les deux sessions conservaient le nom.

170 

171Dans trois cas, Claude Code ne renomme pas le doublon, vous pouvez donc toujours voir deux sessions avec le même nom dans les listes :

172 

173* Il ne vérifie pas les titres générés par l'IA ou les noms d'affichage par défaut.

174* Il ne vérifie pas le `--name` d'une session [arrière-plan](/docs/fr/agent-view#from-your-shell) ou `-p` au démarrage.

175* Il ne peut pas renommer une session sur une version antérieure de Claude Code.

176 

177Les sessions que vous ne nommez pas reçoivent quand même deux étiquettes que Claude Code attribue. Seul le titre généré fonctionne comme handle de reprise :183Les sessions que vous ne nommez pas reçoivent quand même deux étiquettes que Claude Code attribue. Seul le titre généré fonctionne comme handle de reprise :

178 184 

179* Nom d'affichage par défaut : les sessions interactives que vous ne nommez jamais reçoivent quand même un nom d'affichage par défaut au démarrage. Nécessite Claude Code v2.1.196 ou version ultérieure. Le nom par défaut combine le nom du répertoire de travail avec un suffixe de deux caractères, par exemple `my-app-3f`, et identifie la session dans les listes de sessions en cours d'exécution, telles que la [vue agent](/docs/fr/agent-view) et la sortie `claude agents --json`. Le nom par défaut n'est pas un handle de reprise. Si vous le transmettez à `claude --resume` ou `/resume`, Claude Code ne trouve pas la session. Nommer la session remplace le nom par défaut dans ces listes, tout comme l'acceptation d'un plan.185* Nom d'affichage par défaut : les sessions interactives que vous ne nommez jamais reçoivent quand même un nom d'affichage par défaut au démarrage. Nécessite Claude Code v2.1.196 ou version ultérieure. Le nom par défaut combine le nom du répertoire de travail avec un suffixe de deux caractères, par exemple `my-app-3f`, et identifie la session dans les listes de sessions en cours d'exécution, telles que la [vue agent](/docs/fr/agent-view) et la sortie `claude agents --json`. Le nom par défaut n'est pas un handle de reprise. Si vous le transmettez à `claude --resume` ou `/resume`, Claude Code ne trouve pas la session.

180* Titre généré : si vous ne nommez pas une session, Claude Code génère un titre de session pour elle. Le titre est un court résumé de votre première invite, écrit par une demande en arrière-plan au modèle petit/rapide, normalement un modèle de classe Haiku. Une exécution `claude -p` que vous démarrez directement à partir d'un shell ou d'un script n'en reçoit pas.186* Titre généré : si vous ne nommez pas une session, Claude Code génère un titre de session pour elle. Le titre est un court résumé de votre première invite, écrit par une demande en arrière-plan au modèle petit/rapide, normalement un modèle de classe Haiku. Une exécution `claude -p` que vous démarrez directement à partir d'un shell ou d'un script n'en reçoit pas.

181 187 

182 L'acceptation d'un plan remplace le titre généré par un titre basé sur le plan. Nommer la session le remplace également.188 L'acceptation d'un plan remplace le titre généré par un titre basé sur le plan. Vous pouvez transmettre l'un ou l'autre titre à `claude --resume` ou `/resume`, et Claude Code le résout de la même manière qu'un nom que vous avez défini.

183 

184 Vous voyez le titre de la première invite dans le [sélecteur de sessions](#use-the-session-picker) et dans le champ [`session_name`](/docs/fr/statusline) de la barre d'état lorsqu'aucun nom n'est défini. Le titre du plan s'affiche aux mêmes deux endroits et aussi dans les listes de sessions en cours d'exécution, où il remplace le nom d'affichage par défaut.

185 

186 Vous pouvez transmettre l'un ou l'autre titre à `claude --resume` ou `/resume`, et Claude Code le résout de la même manière qu'un nom que vous avez défini.

187 189 

188<h2 id="use-the-session-picker">190<h2 id="use-the-session-picker">

189 Utiliser le sélecteur de sessions191 Utiliser le sélecteur de sessions


205| `Ctrl+B` | Filtrer les sessions de la branche git courante. Appuyez à nouveau pour afficher toutes les branches |207| `Ctrl+B` | Filtrer les sessions de la branche git courante. Appuyez à nouveau pour afficher toutes les branches |

206| `Esc` | Quitter le sélecteur de sessions ou le mode recherche |208| `Esc` | Quitter le sélecteur de sessions ou le mode recherche |

207 209 

208Chaque ligne affiche le nom de la session s'il est défini, sinon le titre de session généré par l'IA, le résumé de la conversation ou la première invite, ainsi que le temps écoulé depuis la dernière activité, la branche git et la taille du fichier. Élargissez à tous les projets avec `Ctrl+A` pour voir également le chemin du projet de chaque session.210Chaque ligne affiche le nom de la session s'il est défini, sinon le titre de session généré par l'IA, le résumé de la conversation ou le premier prompt, ainsi que le temps écoulé depuis la dernière activité, la branche git et la taille du fichier.

209 211 

210Les sessions créées avec `/branch` ou `--fork-session` obtiennent leurs propres ID de session et apparaissent comme des lignes distinctes. Lorsque le sélecteur trouve plus d'une entrée pour la même session, il les groupe sous une seule ligne. Appuyez sur `→` pour développer un groupe.212Les sessions créées avec `/branch` ou `--fork-session` obtiennent leurs propres ID de session et apparaissent comme des lignes distinctes. Lorsque le sélecteur trouve plus d'une entrée pour la même session, il les groupe sous une seule ligne. Appuyez sur `→` pour développer un groupe.

211 213 

212Si Claude Code ne peut pas charger la session que vous sélectionnez dans le sélecteur `claude --resume`, il affiche [`Impossible de reprendre la conversation`](/docs/fr/errors#failed-to-resume-the-conversation) avec une commande pour réessayer, puis se termine avec le code 1. À partir du sélecteur `/resume` à l'intérieur d'une session, Claude Code signale l'échec et votre conversation actuelle continue de s'exécuter.214Si Claude Code ne peut pas charger la session que vous sélectionnez dans le sélecteur `claude --resume`, il affiche [`Failed to resume the conversation`](/docs/fr/errors#failed-to-resume-the-conversation) avec une commande pour réessayer, puis se termine avec le code 1. À partir du sélecteur `/resume` à l'intérieur d'une session, Claude Code signale l'échec et votre conversation actuelle continue de s'exécuter.

213 215 

214<h2 id="branch-a-session">216<h2 id="branch-a-session">

215 Créer une branche d'une session217 Créer une branche d'une session


223/branch try-streaming-approach225/branch try-streaming-approach

224```226```

225 227 

226Si vous omettez le nom, Claude Code nomme la nouvelle branche d'après la première invite de la conversation. À partir de la v2.1.198, cela s'applique également après [compaction](/docs/fr/how-claude-code-works#when-context-fills-up) ; les versions antérieures revenaient au nom littéral `Branched conversation` au lieu de regarder au-delà du résumé de compaction jusqu'à la première invite originale.228Si vous omettez le nom, Claude Code nomme la nouvelle branche d'après le premier prompt de la conversation.

227 229 

228À partir de la ligne de commande, combinez `--continue` ou `--resume` avec `--fork-session` :230À partir de la ligne de commande, combinez `--continue` ou `--resume` avec `--fork-session` :

229 231 


250 252 

251Ces commandes contrôlent ce qui se trouve dans la fenêtre de contexte sans quitter la session :253Ces commandes contrôlent ce qui se trouve dans la fenêtre de contexte sans quitter la session :

252 254 

253* **`/clear`** : recommencer avec un contexte vide. Claude Code enregistre la conversation précédente ; reprenez-la avec `/resume`, ou, dans le même processus Claude Code, depuis [l'entrée de session précédente du menu de rembobinage](/docs/fr/checkpointing#rewind-past-a-cleared-conversation). Sans argument, la nouvelle conversation conserve un nom que vous avez défini avec `--name` ou `/rename`, mais pas un titre de session généré par l'IA. Pour nommer la conversation que vous quittez, passez le nom, comme dans `/clear release-prep` ; la nouvelle conversation démarre alors sans nom255* **`/clear`** : recommencer avec un contexte vide. Claude Code enregistre la session précédente ; reprenez-la avec `/resume`, ou, dans le même processus Claude Code, depuis [l'entrée de session précédente du menu de rembobinage](/docs/fr/checkpointing#rewind-past-a-cleared-conversation). Sans argument, la nouvelle session conserve un nom que vous avez défini avec `--name` ou `/rename`, mais pas un titre de session généré par l'IA. Pour nommer plutôt la session que vous quittez, passez le nom, comme dans `/clear release-prep` ; la nouvelle session démarre alors sans nom

254* **`/compact [instructions]`** : remplacer l'historique par un résumé, optionnellement axé sur ce que vous spécifiez256* **`/compact [instructions]`** : remplacer l'historique par un résumé, optionnellement axé sur ce que vous spécifiez

255* **`/context`** : afficher ce qui consomme actuellement le contexte257* **`/context`** : afficher ce qui consomme actuellement le contexte

256 258 

settings.md +2 −2

Details

495 495 

496Avant v2.1.211, Claude Code gardait le fichier dans le répertoire de démarrage. Il lit toujours un fichier qu'une version antérieure a laissé là à côté du fichier racine ; où les deux définissent la même clé, la valeur de la racine s'applique, et les règles de permission des deux fichiers s'appliquent. L'assistant [`resolveSettings()`](/docs/fr/agent-sdk/typescript#resolvesettings) du SDK Agent lit toujours le fichier à partir du répertoire de démarrage.496Avant v2.1.211, Claude Code gardait le fichier dans le répertoire de démarrage. Il lit toujours un fichier qu'une version antérieure a laissé là à côté du fichier racine ; où les deux définissent la même clé, la valeur de la racine s'applique, et les règles de permission des deux fichiers s'appliquent. L'assistant [`resolveSettings()`](/docs/fr/agent-sdk/typescript#resolvesettings) du SDK Agent lit toujours le fichier à partir du répertoire de démarrage.

497 497 

498Claude Code lit le `.claude/settings.json` partagé à partir du [répertoire de travail principal](/docs/fr/permissions#working-directories) de la session, donc pour utiliser un fichier commité à la racine du dépôt, démarrez Claude Code là. Après avoir [déplacé la session avec `/cd`](/docs/fr/permissions#move-the-session-to-another-directory), Claude Code lit les deux fichiers de projet à partir du nouveau répertoire à la place, plaçant le fichier local par les mêmes règles. Les lire à partir du répertoire vers lequel vous avez déplacé nécessite Claude Code v2.1.246 ou ultérieur.498Claude Code lit le `.claude/settings.json` partagé à partir du [répertoire de travail principal](/docs/fr/permissions#working-directories) de la session, donc pour utiliser un fichier commité à la racine du dépôt, démarrez Claude Code là. Après avoir [déplacé la session avec `/cd`](/docs/fr/permissions#move-the-session-to-another-directory), Claude Code lit les deux fichiers de projet à partir du nouveau répertoire à la place, plaçant le fichier local par les mêmes règles. Les lire à partir du répertoire vers lequel vous avez déplacé nécessite Claude Code v2.1.246 ou ultérieur. Pour une session worktree que vous démarrez à partir de l'application de bureau, voir [Ce que les worktrees partagent avec le checkout principal](/docs/fr/worktrees#what-worktrees-share-with-the-main-checkout).

499 499 

500<span id="managed-settings-delivery" />500<span id="managed-settings-delivery" />

501 501 


767 767 

768Deux choses empêchent une clé dans `.claude/settings.json` de s'appliquer pour tout le monde qui la clone :768Deux choses empêchent une clé dans `.claude/settings.json` de s'appliquer pour tout le monde qui la clone :

769 769 

770* **Claude Code ignore la clé dans un fichier de dépôt.** Cherchez `User, local, or managed`, `User or managed`, `Managed`, ou `Global config` dans la colonne Scope de l'[index des paramètres](/docs/fr/settings-reference#settings-index). Ces clés ne s'appliquent jamais à partir du fichier partagé, à part quelques-unes qu'un fichier de dépôt peut toujours désactiver. Chacune de ces entrées le dit sur sa ligne Scope. Les clés `Global config` s'appliquent uniquement à partir de `~/.claude.json`.770* **Claude Code ignore la clé dans un fichier de dépôt.** Cherchez `User, local, or managed`, `User or managed`, `User`, `Managed`, ou `Global config` dans la colonne Scope de l'[index des paramètres](/docs/fr/settings-reference#settings-index). Ces clés ne s'appliquent jamais à partir du fichier partagé, à part quelques-unes qu'un fichier de dépôt peut toujours désactiver. Chacune de ces entrées le dit sur sa ligne Scope. Les clés `Global config` s'appliquent uniquement à partir de `~/.claude.json`.

771 771 

772 À l'intérieur de la clé `env`, les variables d'exportation de télémétrie ne s'appliquent jamais à partir du fichier partagé non plus, à part quelques valeurs off ; voir [Variables que Claude Code ignore dans `env`](/docs/fr/settings-reference#variables-claude-code-ignores-in-env).772 À l'intérieur de la clé `env`, les variables d'exportation de télémétrie ne s'appliquent jamais à partir du fichier partagé non plus, à part quelques valeurs off ; voir [Variables que Claude Code ignore dans `env`](/docs/fr/settings-reference#variables-claude-code-ignores-in-env).

773* **La clé attend la confiance.** Les règles `permissions.allow`, `permissions.additionalDirectories`, `extraKnownMarketplaces`, et la plupart des valeurs [`env`](/docs/fr/settings-reference#env) s'appliquent uniquement après que chaque coéquipier [fasse confiance au dossier](/docs/fr/permissions#project-allow-rules-and-workspace-trust). Jusqu'à ce qu'ils le fassent, ils voient toujours des demandes de permission et n'obtiennent pas les plugins d'une marketplace que le fichier déclare. Les règles `deny` et `ask` s'appliquent immédiatement.773* **La clé attend la confiance.** Les règles `permissions.allow`, `permissions.additionalDirectories`, `extraKnownMarketplaces`, et la plupart des valeurs [`env`](/docs/fr/settings-reference#env) s'appliquent uniquement après que chaque coéquipier [fasse confiance au dossier](/docs/fr/permissions#project-allow-rules-and-workspace-trust). Jusqu'à ce qu'ils le fassent, ils voient toujours des demandes de permission et n'obtiennent pas les plugins d'une marketplace que le fichier déclare. Les règles `deny` et `ask` s'appliquent immédiatement.

Details

582<ReferenceFilter582<ReferenceFilter

583 noun="settings"583 noun="settings"

584 placeholder="Filter settings by key or purpose"584 placeholder="Filter settings by key or purpose"

585 facetOrder={{ scope: ["Any file", "User, local, or managed", "User or managed", "Managed", "Global config"] }}585 facetOrder={{ scope: ["Any file", "User, local, or managed", "User or managed", "User", "Managed", "Global config"] }}

586 columnHelp={{586 columnHelp={{

587topic: "The section of this page that holds the entry. Use Sort by to group the table by topic.",587topic: "The section of this page that holds the entry. Use Sort by to group the table by topic.",

588scope: "Which settings files can set the key: user (~/.claude/settings.json), project (.claude/settings.json), local (.claude/settings.local.json), or managed (deployed by your organization). Global config keys are in ~/.claude.json instead.",588scope: "Which settings files can set the key: user (~/.claude/settings.json), project (.claude/settings.json), local (.claude/settings.local.json), or managed (deployed by your organization). Global config keys are in ~/.claude.json instead.",


638| [`claudeMdExcludes`](#claudemdexcludes) | Ignorez les fichiers [CLAUDE.md](/docs/fr/memory#exclude-specific-claude-md-files) spécifiques lors du chargement de la mémoire | Memory and context | Any file |638| [`claudeMdExcludes`](#claudemdexcludes) | Ignorez les fichiers [CLAUDE.md](/docs/fr/memory#exclude-specific-claude-md-files) spécifiques lors du chargement de la mémoire | Memory and context | Any file |

639| [`cleanupPeriodDays`](#cleanupperioddays) | Choisissez le nombre de jours que Claude Code conserve les [transcriptions](/docs/fr/data-usage#data-retention) avant de les supprimer | Privacy and telemetry | Any file |639| [`cleanupPeriodDays`](#cleanupperioddays) | Choisissez le nombre de jours que Claude Code conserve les [transcriptions](/docs/fr/data-usage#data-retention) avant de les supprimer | Privacy and telemetry | Any file |

640| [`companyAnnouncements`](#companyannouncements) | Affichez les annonces de votre organisation au démarrage | Interface and terminal | Any file |640| [`companyAnnouncements`](#companyannouncements) | Affichez les annonces de votre organisation au démarrage | Interface and terminal | Any file |

641| [`copyFullResponse`](#copyfullresponse) | Faites en sorte que [`/copy`](/docs/fr/commands) copie la réponse complète sans afficher le sélecteur de bloc de code | Global config settings | Global config |641| [`copyFullResponse`](#copyfullresponse) | Faites en sorte que [`/copy`](/docs/fr/commands) copie la réponse complète sans afficher le sélecteur | Global config settings | Global config |

642| [`copyOnSelect`](#copyonselect) | Désactivez la copie automatique du texte que vous sélectionnez avec la souris dans le [rendu en plein écran](/docs/fr/fullscreen#use-the-mouse) et la vue agent | Global config settings | Global config |642| [`copyOnSelect`](#copyonselect) | Désactivez la copie automatique du texte que vous sélectionnez avec la souris dans le [rendu en plein écran](/docs/fr/fullscreen#use-the-mouse) et la vue agent | Global config settings | Global config |

643| [`crossSessionInbound`](#crosssessioninbound) | Choisissez si Claude Code livre les [messages de vos autres sessions](/docs/fr/cross-session-messaging#control-inbound-messages), affiche un avis sans les livrer, ou les refuse | Agents, sessions, and worktrees | Any file |643| [`crossSessionInbound`](#crosssessioninbound) | Choisissez si Claude Code livre les [messages de vos autres sessions](/docs/fr/cross-session-messaging#control-inbound-messages), affiche un avis sans les livrer, ou les refuse | Agents, sessions, and worktrees | Any file |

644| [`defaultShell`](#defaultshell) | Choisissez si Bash ou PowerShell exécute les commandes shell que vous tapez avec le préfixe [`!`](/docs/fr/interactive-mode#shell-mode-with-prefix) | Interface and terminal | Any file |644| [`defaultShell`](#defaultshell) | Choisissez si Bash ou PowerShell exécute les commandes shell que vous tapez avec le préfixe [`!`](/docs/fr/interactive-mode#shell-mode-with-prefix) | Interface and terminal | Any file |


684| [`fileCheckpointingEnabled`](#filecheckpointingenabled) | Désactivez ou activez les instantanés de fichiers que [`/rewind`](/docs/fr/checkpointing) restaure | Memory and context | Any file |684| [`fileCheckpointingEnabled`](#filecheckpointingenabled) | Désactivez ou activez les instantanés de fichiers que [`/rewind`](/docs/fr/checkpointing) restaure | Memory and context | Any file |

685| [`fileSuggestion`](#filesuggestion) | Fournissez l'[autocomplétion de fichier `@`](/docs/fr/interactive-mode#quick-commands) à partir de votre propre commande | Interface and terminal | Any file |685| [`fileSuggestion`](#filesuggestion) | Fournissez l'[autocomplétion de fichier `@`](/docs/fr/interactive-mode#quick-commands) à partir de votre propre commande | Interface and terminal | Any file |

686| [`footerLinksRegexes`](#footerlinksregexes) | Transformez les ID d'issue ou de revue en sortie en [liens cliquables](/docs/fr/statusline#clickable-links) sous la zone de saisie | Interface and terminal | User or managed |686| [`footerLinksRegexes`](#footerlinksregexes) | Transformez les ID d'issue ou de revue en sortie en [liens cliquables](/docs/fr/statusline#clickable-links) sous la zone de saisie | Interface and terminal | User or managed |

687| [`forceLoginGatewayUrl`](#forcelogingatewayurl) | Définissez l'[URL de passerelle](/docs/fr/claude-apps-gateway#set-the-gateway-url) à laquelle l'écran de connexion se connecte | Authentication and providers | Managed |687| [`forceLoginGatewayUrl`](#forcelogingatewayurl) | Définissez l'[URL de passerelle](/docs/fr/claude-apps-gateway#set-the-gateway-url) à laquelle l'écran de connexion se connecte | Authentication and providers | User or managed |

688| [`forceLoginMethod`](#forceloginmethod) | [Limitez la connexion](/docs/fr/authentication#restrict-login-to-your-organization) à claude.ai, Claude Console, ou une [passerelle cloud](/docs/fr/claude-apps-gateway) | Authentication and providers | Any file |688| [`forceLoginMethod`](#forceloginmethod) | [Limitez la connexion](/docs/fr/authentication#restrict-login-to-your-organization) à claude.ai, Claude Console, ou une [passerelle cloud](/docs/fr/claude-apps-gateway) | Authentication and providers | Any file |

689| [`forceLoginOrgUUID`](#forceloginorguuid) | [Épinglez les connexions claude.ai à votre organisation](/docs/fr/authentication#restrict-login-to-your-organization) ; seule une source gérée l'applique | Authentication and providers | Any file |689| [`forceLoginOrgUUID`](#forceloginorguuid) | [Épinglez les connexions claude.ai à votre organisation](/docs/fr/authentication#restrict-login-to-your-organization) ; seule une source gérée l'applique | Authentication and providers | Any file |

690| [`forceRemoteSettingsRefresh`](#forceremotesettingsrefresh) | Bloquez le démarrage jusqu'à ce que les [paramètres gérés par serveur](/docs/fr/server-managed-settings) soient fraîchement récupérés | Enterprise and managed settings | Managed |690| [`forceRemoteSettingsRefresh`](#forceremotesettingsrefresh) | Bloquez le démarrage jusqu'à ce que les [paramètres gérés par serveur](/docs/fr/server-managed-settings) soient fraîchement récupérés | Enterprise and managed settings | Managed |


831| [`worktree`](#worktree) | Configurez la façon dont Claude Code crée les [worktrees](/docs/fr/worktrees) git | Agents, sessions, and worktrees | Any file |831| [`worktree`](#worktree) | Configurez la façon dont Claude Code crée les [worktrees](/docs/fr/worktrees) git | Agents, sessions, and worktrees | Any file |

832| [`worktree.baseRef`](#worktree-baseref) | Créez les branches des nouveaux [worktrees](/docs/fr/worktrees) à partir de la branche par défaut distante ou de votre HEAD local | Agents, sessions, and worktrees | Any file |832| [`worktree.baseRef`](#worktree-baseref) | Créez les branches des nouveaux [worktrees](/docs/fr/worktrees) à partir de la branche par défaut distante ou de votre HEAD local | Agents, sessions, and worktrees | Any file |

833| [`worktree.bgIsolation`](#worktree-bgisolation) | Laissez les sessions d'arrière-plan éditer la copie de travail sans [worktree](/docs/fr/worktrees) | Agents, sessions, and worktrees | Any file |833| [`worktree.bgIsolation`](#worktree-bgisolation) | Laissez les sessions d'arrière-plan éditer la copie de travail sans [worktree](/docs/fr/worktrees) | Agents, sessions, and worktrees | Any file |

834| [`worktree.location`](#worktree-location) | Choisissez où les [sessions SSH Bureau](/docs/fr/desktop#ssh-sessions) créent leurs worktrees sur une machine distante | Agents, sessions, and worktrees | User |

834| [`worktree.sparsePaths`](#worktree-sparsepaths) | Extrayez uniquement les répertoires dont vous avez besoin dans chaque [worktree](/docs/fr/worktrees) | Agents, sessions, and worktrees | Any file |835| [`worktree.sparsePaths`](#worktree-sparsepaths) | Extrayez uniquement les répertoires dont vous avez besoin dans chaque [worktree](/docs/fr/worktrees) | Agents, sessions, and worktrees | Any file |

835| [`worktree.symlinkDirectories`](#worktree-symlinkdirectories) | Créez des liens symboliques vers les grands répertoires dans chaque [worktree](/docs/fr/worktrees) au lieu de les dupliquer | Agents, sessions, and worktrees | Any file |836| [`worktree.symlinkDirectories`](#worktree-symlinkdirectories) | Créez des liens symboliques vers les grands répertoires dans chaque [worktree](/docs/fr/worktrees) au lieu de les dupliquer | Agents, sessions, and worktrees | Any file |

836| [`wslInheritsWindowsSettings`](#wslinheritswindowssettings) | Faites en sorte que WSL lise les [paramètres gérés](/docs/fr/managed-settings) à partir de la chaîne de politique Windows | Enterprise and managed settings | Managed |837| [`wslInheritsWindowsSettings`](#wslinheritswindowssettings) | Faites en sorte que WSL lise les [paramètres gérés](/docs/fr/managed-settings) à partir de la chaîne de politique Windows | Enterprise and managed settings | Managed |


1763 * `"acceptEdits"` : Claude Code exécute aussi les éditions de fichiers et les commandes courantes du système de fichiers comme `mkdir` et `mv` sans demander1764 * `"acceptEdits"` : Claude Code exécute aussi les éditions de fichiers et les commandes courantes du système de fichiers comme `mkdir` et `mv` sans demander

1764 * `"plan"` : Claude Code lit et planifie mais bloque les éditions jusqu'à ce que vous approuviez un plan1765 * `"plan"` : Claude Code lit et planifie mais bloque les éditions jusqu'à ce que vous approuviez un plan

1765 * `"auto"` : Claude Code exécute sans invites de routine ; avant que les actions telles que les commandes shell et les requêtes réseau s'exécutent, un classificateur en arrière-plan vérifie qu'elles s'alignent avec votre demande1766 * `"auto"` : Claude Code exécute sans invites de routine ; avant que les actions telles que les commandes shell et les requêtes réseau s'exécutent, un classificateur en arrière-plan vérifie qu'elles s'alignent avec votre demande

1766 * `"dontAsk"` : Claude Code refuse automatiquement chaque appel qui inviterait autrement ; les lectures, les autres actions qui ne nécessitent pas d'approbation, et les outils pré-approuvés s'exécutent toujours1767 * `"dontAsk"` : Claude Code refuse automatiquement chaque appel qui inviterait autrement ; les lectures de fichiers dans vos répertoires de travail, les autres actions qui ne nécessitent pas d'approbation, et les outils pré-approuvés s'exécutent toujours, à l'exception des lectures depuis des [chemins réseau](/docs/fr/permissions#network-paths)

1767 * `"bypassPermissions"` : Claude Code exécute tout sans demander1768 * `"bypassPermissions"` : Claude Code exécute tout sans demander

1768 * `"manual"` : un alias pour `"default"`1769 * `"manual"` : un alias pour `"default"`

1769* **Défaut** : non défini1770* **Défaut** : non défini


2398 2399 

2399* Une entrée dans `files` ou `envVars` qui a toujours un `path` ou `name` valide et un `mode` de `mask` ou `deny`, comme une dont le motif `extract` n'a pas de groupe de capture, est dégradée à `mode: "deny"` avec un avertissement, donc l'identifiant reste bloqué, pas masqué, jusqu'à ce que vous corrigiez l'entrée. Une entrée `files` dégradée épingle [`filesystem.disabled`](/docs/fr/sandboxing#disable-filesystem-isolation) comme une entrée `deny` explicite, et l'avertissement note que son bloc de lecture n'est pas appliqué si les paramètres gérés désactivent l'isolation du système de fichiers.2400* Une entrée dans `files` ou `envVars` qui a toujours un `path` ou `name` valide et un `mode` de `mask` ou `deny`, comme une dont le motif `extract` n'a pas de groupe de capture, est dégradée à `mode: "deny"` avec un avertissement, donc l'identifiant reste bloqué, pas masqué, jusqu'à ce que vous corrigiez l'entrée. Une entrée `files` dégradée épingle [`filesystem.disabled`](/docs/fr/sandboxing#disable-filesystem-isolation) comme une entrée `deny` explicite, et l'avertissement note que son bloc de lecture n'est pas appliqué si les paramètres gérés désactivent l'isolation du système de fichiers.

2400* Une entrée avec un `mode` inconnu ou un `path` ou `name` invalide est supprimée.2401* Une entrée avec un `mode` inconnu ou un `path` ou `name` invalide est supprimée.

2401* Chaque cas avertit ; qu'une entrée soit dégradée ou supprimée, les entrées valides restantes sont toujours appliquées, et une valeur `credentials` entièrement invalide est abandonnée tandis que le reste de `sandbox` s'applique toujours.2402* Chaque cas avertit ; qu'une entrée soit dégradée ou supprimée, les entrées valides restantes sont toujours appliquées.

2402 2403 

2403S'applique en v2.1.191 et ultérieur ; avant v2.1.221, chaque entrée invalide était supprimée. Pour les autres clés gérées avec gestion par champ, consultez [Invalid entries in managed settings](/docs/fr/managed-settings#invalid-entries-in-managed-settings).2404S'applique en v2.1.191 et ultérieur ; avant v2.1.221, chaque entrée invalide était supprimée. Pour les autres clés gérées avec gestion par champ, consultez [Invalid entries in managed settings](/docs/fr/managed-settings#invalid-entries-in-managed-settings).

2404 2405 


5681 5682 

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

5683 5684 

5685<h3 id="worktree-location">

5686 `worktree.location`

5687</h3>

5688 

5689Choisissez le dossier sur une machine distante où les [sessions SSH de Desktop](/docs/fr/desktop#choose-where-ssh-session-worktrees-go) créent leurs worktrees, au lieu de `<project-root>/.claude/worktrees/`. Seule l'application desktop lit cette clé : `--worktree`, l'outil `EnterWorktree`, les sous-agents isolés et les sessions d'arrière-plan l'ignorent. Nécessite Claude Desktop v1.44121.0 ou ultérieur.

5690 

5691* **Scope** : [`User`](#scopes), dans `~/.claude/settings.json` sur la machine distante

5692* **Type** : string, un chemin absolu ou un chemin qui commence par `~/`

5693* **Default** : unset, de sorte que les worktrees sont créés à l'intérieur du projet

5694 

5695Cet exemple définit le dossier sur `~/worktrees` :

5696 

5697```json settings.json theme={null}

5698{

5699 "worktree": {

5700 "location": "~/worktrees"

5701 }

5702}

5703```

5704 

5705Un **Worktree folder** défini sur la connexion SSH dans Desktop a priorité. Si votre organisation restreint les dossiers que les sessions peuvent utiliser, Desktop conserve les worktrees à l'intérieur du projet.

5706 

5684<h2 id="remote-desktop-and-notifications">5707<h2 id="remote-desktop-and-notifications">

5685 Contrôle à distance, bureau et notifications5708 Contrôle à distance, bureau et notifications

5686</h2>5709</h2>


5813 `enableArtifact`5836 `enableArtifact`

5814</h3>5837</h3>

5815 5838 

5816Désactiver l'outil [Artifact](/docs/fr/artifacts), qui publie la sortie de session en tant que page web privée sur claude.ai. Quand vous désactivez la ligne **Artifacts** dans `/config`, Claude Code écrit cette clé dans vos paramètres utilisateur, donc vous ne l'éditez généralement pas à la main. Nécessite Claude Code v2.1.196 ou ultérieur.5839Désactiver l'outil [Artifact](/docs/fr/artifacts), qui publie la sortie de session en tant que page web privée sur claude.ai. Quand vous désactivez la ligne **Artifacts** dans `/config`, Claude Code écrit cette clé dans vos paramètres utilisateur, donc vous ne l'éditez généralement pas à la main.

5817 5840 

5818* **Portée** : [`Tout fichier`](#scopes). Chaque fichier peut désactiver l'outil, et aucun ne peut le réactiver.5841* **Portée** : [`Tout fichier`](#scopes). Chaque fichier peut désactiver l'outil, et aucun ne peut le réactiver.

5819* **Type** : Booléen5842* **Type** : Booléen


5920 `sshConfigs`5943 `sshConfigs`

5921</h3>5944</h3>

5922 5945 

5923Ajouter des connexions SSH à la liste déroulante de l'environnement [Bureau](/docs/fr/desktop#pre-configure-ssh-connections-for-your-team). Les administrateurs l'utilisent pour distribuer les connexions partagées à une équipe. Les connexions que vous définissez dans les paramètres gérés s'affichent comme gérées, donc les utilisateurs peuvent les sélectionner mais ne peuvent pas les modifier ou les supprimer dans l'application.5946Ajouter des connexions SSH à la liste déroulante de l'environnement [Bureau](/docs/fr/desktop#pre-configure-ssh-connections-for-your-team). Les administrateurs l'utilisent pour distribuer les connexions partagées à une équipe. Les connexions que vous définissez dans les paramètres gérés s'affichent comme gérées. Les utilisateurs peuvent les sélectionner et [définir leur propre **Dossier du worktree**](/docs/fr/desktop#choose-where-ssh-session-worktrees-go) pour elles, mais ne peuvent rien modifier d'autre ni les supprimer dans l'application.

5924 5947 

5925* **Portée** : [`Utilisateur ou géré`](#scopes). L'application de bureau lit cette clé. Par défaut, elle lit les connexions gérées depuis [une seule source gérée](/docs/fr/managed-settings#how-claude-code-combines-managed-sources).5948* **Portée** : [`Utilisateur ou géré`](#scopes). L'application de bureau lit cette clé. Par défaut, elle lit les connexions gérées depuis [une seule source gérée](/docs/fr/managed-settings#how-claude-code-combines-managed-sources).

5926* **Type** : tableau d'objets, chacun avec `id`, `name` et `sshHost` requis et `sshPort` et `sshIdentityFile` optionnels5949* **Type** : tableau d'objets, chacun avec `id`, `name` et `sshHost` requis et `sshPort` et `sshIdentityFile` optionnels


6085 6108 

6086Restreignez le type de compte avec lequel les gens peuvent se connecter. Définissez `"claudeai"` pour autoriser uniquement les comptes claude.ai, `"console"` pour autoriser uniquement les comptes Claude Console, ou `"gateway"` pour envoyer les gens vers une [passerelle cloud](/docs/fr/claude-apps-gateway) au lieu d'une connexion propriétaire. Les administrateurs la définissent dans les paramètres gérés et l'associent à [`forceLoginOrgUUID`](#forceloginorguuid) pour garder les connexions claude.ai des développeurs à l'intérieur d'une organisation. Si vous la définissez à `"claudeai"` ou `"console"` dans n'importe quel fichier de paramètres, Claude Code arrête également d'offrir la [connexion Console sans clé](/docs/fr/authentication#sign-in-without-an-api-key) dans les sessions auxquelles ce fichier s'applique.6109Restreignez le type de compte avec lequel les gens peuvent se connecter. Définissez `"claudeai"` pour autoriser uniquement les comptes claude.ai, `"console"` pour autoriser uniquement les comptes Claude Console, ou `"gateway"` pour envoyer les gens vers une [passerelle cloud](/docs/fr/claude-apps-gateway) au lieu d'une connexion propriétaire. Les administrateurs la définissent dans les paramètres gérés et l'associent à [`forceLoginOrgUUID`](#forceloginorguuid) pour garder les connexions claude.ai des développeurs à l'intérieur d'une organisation. Si vous la définissez à `"claudeai"` ou `"console"` dans n'importe quel fichier de paramètres, Claude Code arrête également d'offrir la [connexion Console sans clé](/docs/fr/authentication#sign-in-without-an-api-key) dans les sessions auxquelles ce fichier s'applique.

6087 6110 

6088* **Portée** : [`Any file`](#scopes). Claude Code honore `"gateway"` uniquement à partir d'une source gérée sur la machine : `managed-settings.json`, le plist macOS ou le registre HKLM Windows, ou un aide de politique. Il traite `"gateway"` comme non défini dans les paramètres utilisateur, projet, locaux, HKCU et gérés par le serveur, la même règle que [`forceLoginGatewayUrl`](#forcelogingatewayurl).6111* **Portée** : [`Any file`](#scopes). Claude Code honore `"gateway"` à partir des mêmes sources que [`forceLoginGatewayUrl`](#forcelogingatewayurl) et le traite comme non défini partout ailleurs.

6089* **Type** : chaîne, l'une de :6112* **Type** : chaîne, l'une de :

6090 * `"claudeai"` : seuls les comptes claude.ai peuvent se connecter6113 * `"claudeai"` : seuls les comptes claude.ai peuvent se connecter

6091 * `"console"` : seuls les comptes Claude Console peuvent se connecter6114 * `"console"` : seuls les comptes Claude Console peuvent se connecter


6108 6131 

6109Définissez l'URL de la passerelle à laquelle l'écran `/login` Cloud gateway se connecte, afin que les gens atteignent votre [passerelle cloud](/docs/fr/claude-apps-gateway) sans taper son adresse. L'écran n'a pas de champ URL : avec cette clé définie, il affiche l'URL de votre passerelle et se connecte lorsque la personne appuie sur Entrée ; sans elle, il leur dit de contacter leur administrateur IT.6132Définissez l'URL de la passerelle à laquelle l'écran `/login` Cloud gateway se connecte, afin que les gens atteignent votre [passerelle cloud](/docs/fr/claude-apps-gateway) sans taper son adresse. L'écran n'a pas de champ URL : avec cette clé définie, il affiche l'URL de votre passerelle et se connecte lorsque la personne appuie sur Entrée ; sans elle, il leur dit de contacter leur administrateur IT.

6110 6133 

6111Cette clé ou `forceLoginMethod: "gateway"` rend la machine réservée à la passerelle, sauf pour les sessions qui sélectionnent un fournisseur cloud avec `CLAUDE_CODE_USE_*`. `/login` s'ouvre alors sur l'écran Cloud gateway sans sélecteur de méthode de connexion. Voir [La politique de l'administrateur nécessite une connexion à la passerelle Cloud](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in) pour ce qui se passe avec une connexion propriétaire restante ou une clé API. Définissez les deux clés afin que l'écran se connecte au lieu d'afficher une erreur.6134Dans les paramètres gérés, cette clé ou `forceLoginMethod: "gateway"` rend la machine réservée à la passerelle, sauf pour les sessions qui sélectionnent un fournisseur cloud avec `CLAUDE_CODE_USE_*`. `/login` s'ouvre alors sur l'écran Cloud gateway sans sélecteur de méthode de connexion. Voir [La politique de l'administrateur nécessite une connexion à la passerelle Cloud](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in) pour ce qui se passe avec une connexion propriétaire restante ou une clé API. Définissez les deux clés afin que l'écran se connecte au lieu d'afficher une erreur.

6112 6135 

6113* **Portée** : [`Managed`](#scopes). Lu uniquement à partir d'une source sur la machine : `managed-settings.json`, le plist macOS ou le registre HKLM Windows, ou un aide de politique. Claude Code l'ignore dans les paramètres HKCU et gérés par le serveur.6136* **Portée** : [`User or managed`](#scopes). Lu à partir d'une source gérée sur la machine : `managed-settings.json`, le plist macOS ou le registre HKLM Windows, ou un aide de politique. Sur une machine qui n'en possède aucune, Claude Code v2.1.295 ou ultérieur le lit également à partir des [paramètres utilisateur](/docs/fr/claude-apps-gateway#set-the-gateway-url-in-user-settings). Claude Code l'ignore dans les paramètres HKCU et gérés par le serveur.

6114* **Type** : chaîne, une URL complète incluant le schéma6137* **Type** : chaîne, une URL complète incluant le schéma

6115* **Défaut** : non défini, donc l'écran Cloud gateway affiche une erreur indiquant aux gens de contacter leur administrateur IT6138* **Défaut** : non défini, donc l'écran Cloud gateway affiche une erreur indiquant aux gens de contacter leur administrateur IT

6116 6139 


6140}6163}

6141```6164```

6142 6165 

6143Si une source gérée définit un tableau vide, ou une valeur que Claude Code ne peut pas analyser, Claude Code bloque chaque connexion avec un message de mauvaise configuration.6166Si une source gérée définit un tableau vide, ou une valeur qui n'est ni une chaîne ni un tableau de chaînes, les utilisateurs qui se connectent avec un compte Anthropic ne peuvent ni démarrer Claude Code ni terminer une connexion. Ils voient un message qui nomme `forceLoginOrgUUID` et leur indique de contacter leur administrateur. Un [`policyHelper`](#policyhelper) qui émet une valeur du mauvais type [voit plutôt son exécution échouer](#helper-failures).

6144 6167 

6145Voir [Restreindre la connexion à votre organisation](/docs/fr/authentication#restrict-login-to-your-organization) pour savoir comment Claude Code traite les connexions Claude Console, les autres chemins de connexion et les identifiants d'environnement.6168Voir [Restreindre la connexion à votre organisation](/docs/fr/authentication#restrict-login-to-your-organization) pour savoir comment Claude Code traite les connexions Claude Console, les autres chemins de connexion et les identifiants d'environnement.

6146 6169 


6806 `copyFullResponse`6829 `copyFullResponse`

6807</h3>6830</h3>

6808 6831 

6809Faites en sorte que [`/copy`](/docs/fr/commands) copie la réponse complète à chaque fois, sans le sélecteur qu'il affiche autrement lorsque la réponse contient des blocs de code. Sélectionner **Always copy full response** dans ce sélecteur définit cette clé à `true`. Apparaît dans `/config` sous **Skip the /copy picker**.6832Faites en sorte que [`/copy`](/docs/fr/commands) copie la réponse complète à chaque fois, sans afficher le sélecteur. Sélectionner **Always copy full response** dans ce sélecteur définit cette clé à `true`. Apparaît dans `/config` sous **Skip the /copy picker**.

6810 6833 

6811* **Scope** : [`Global config`](#scopes)6834* **Scope** : [`Global config`](#scopes)

6812* **Type** : Boolean6835* **Type** : Boolean

6813 * `true` : `/copy` copie la réponse complète sans afficher le sélecteur6836 * `true` : `/copy` copie la réponse complète sans afficher le sélecteur

6814 * `false` : lorsque la réponse contient des blocs de code, `/copy` affiche un sélecteur où vous choisissez un bloc de code ou la réponse complète6837 * `false` : lorsque la réponse contient des blocs de code ou des citations, `/copy` affiche un sélecteur où vous choisissez un bloc ou la réponse complète

6815* **Default** : `false`6838* **Default** : `false`

6816 6839 

6817```json ~/.claude.json theme={null}6840```json ~/.claude.json theme={null}

skills.md +7 −7

Details

192 192 

193Claude Code charge les skills de projet depuis `.claude/skills/` dans le répertoire où vous le démarrez et dans chaque répertoire parent jusqu'à la racine du référentiel, donc démarrer dans `packages/frontend/` récupère toujours les skills définies à la racine. Quand vous [déplacez la session avec `/cd`](/docs/fr/permissions#move-the-session-to-another-directory) sur v2.1.246 ou ultérieur, Claude Code ajoute les skills de projet du nouveau répertoire.193Claude Code charge les skills de projet depuis `.claude/skills/` dans le répertoire où vous le démarrez et dans chaque répertoire parent jusqu'à la racine du référentiel, donc démarrer dans `packages/frontend/` récupère toujours les skills définies à la racine. Quand vous [déplacez la session avec `/cd`](/docs/fr/permissions#move-the-session-to-another-directory) sur v2.1.246 ou ultérieur, Claude Code ajoute les skills de projet du nouveau répertoire.

194 194 

195Dans une session exécutée dans un [git worktree](/docs/fr/worktrees) lié, Claude Code recherche les répertoires parents uniquement jusqu'à la racine du worktree. Sur Claude Code v2.1.277 ou ultérieur, quand le checkout du worktree n'a pas de répertoire `.claude/skills` à sa racine, Claude Code charge les skills de projet du checkout principal à la place. Voir [Ce que les worktrees partagent avec le checkout principal](/docs/fr/worktrees#what-worktrees-share-with-the-main-checkout).195Dans une session exécutée dans un [git worktree](/docs/fr/worktrees) lié que vous avez créé avec `--worktree` ou `git worktree add`, Claude Code recherche les répertoires parents uniquement jusqu'à la racine du worktree. Sur Claude Code v2.1.277 ou ultérieur, quand le checkout du worktree n'a pas de répertoire `.claude/skills` à sa racine, Claude Code charge les skills de projet du checkout principal à la place. Voir [Ce que les worktrees partagent avec le checkout principal](/docs/fr/worktrees#what-worktrees-share-with-the-main-checkout).

196 196 

197Les skills dans un répertoire `.claude/skills/` en dessous de l'endroit où vous avez démarré ne se chargent pas au démarrage. Elles se chargent la première fois que Claude lit ou édite un fichier dans ce sous-répertoire et restent disponibles pour le reste de la session. Jusqu'à ce moment, elles n'apparaissent pas dans le menu `/` et vous ne pouvez pas les invoquer par nom. Pour les charger plus tôt, exécutez `/add-dir` avec le chemin du sous-répertoire, ce qui nécessite Claude Code v2.1.257 ou ultérieur.197Les skills dans un répertoire `.claude/skills/` en dessous de l'endroit où vous avez démarré ne se chargent pas au démarrage. Ils se chargent la première fois que Claude lit ou édite un fichier dans ce sous-répertoire et restent disponibles pour le reste de la session. Jusqu'à ce moment, ils n'apparaissent pas dans le menu `/` et vous ne pouvez pas les invoquer par nom. Pour les charger plus tôt, exécutez `/add-dir` avec le chemin du sous-répertoire, ce qui nécessite Claude Code v2.1.257 ou ultérieur. Pour une session de worktree que vous démarrez depuis l'application desktop, voir [Ce que les worktrees partagent avec le checkout principal](/docs/fr/worktrees#what-worktrees-share-with-the-main-checkout).

198 198 

199Quand le nom du répertoire d'une skill imbriquée correspond au nom d'une autre skill, les deux restent disponibles. Avec une skill `deploy` à la racine du référentiel et une autre dans `apps/web/.claude/skills/` :199Quand le nom du répertoire d'une skill imbriquée correspond au nom d'une autre skill, les deux restent disponibles. Avec une skill `deploy` à la racine du référentiel et une autre dans `apps/web/.claude/skills/` :

200 200 


235 235 

236Si une skill existe uniquement dans `~/.claude/skills/` sur votre machine, Claude Code signale que la skill n'a pas été trouvée quand une [routine](/docs/fr/routines) l'invoque, car chaque exécution de routine démarre en tant que nouvelle session cloud. Pour rendre une skill personnelle disponible dans ces sessions :236Si une skill existe uniquement dans `~/.claude/skills/` sur votre machine, Claude Code signale que la skill n'a pas été trouvée quand une [routine](/docs/fr/routines) l'invoque, car chaque exécution de routine démarre en tant que nouvelle session cloud. Pour rendre une skill personnelle disponible dans ces sessions :

237 237 

238* Pour les sessions Cowork et cloud, activez la skill pour votre compte claude.ai.238* Pour les sessions Cowork et cloud, activez le skill pour votre compte claude.ai. [Certaines sessions dans un environnement auto-hébergé](/docs/fr/self-hosted-environments-configuration#how-each-session’s-config-is-assembled) ne chargent pas les skills de votre compte.

239* Pour les sessions cloud, vous pouvez à la place valider la skill dans le `.claude/skills/` du référentiel. Les plugins déclarés dans le `.claude/settings.json` du référentiel et les plugins activés uniquement dans vos paramètres utilisateur [ne se chargent pas dans les sessions cloud](/docs/fr/cloud-environments#what-carries-over-from-your-setup).239* Pour les sessions cloud, vous pouvez à la place valider la skill dans le `.claude/skills/` du référentiel. Les plugins déclarés dans le `.claude/settings.json` du référentiel et les plugins activés uniquement dans vos paramètres utilisateur [ne se chargent pas dans les sessions cloud](/docs/fr/cloud-environments#what-carries-over-from-your-setup).

240 240 

241Les [tâches planifiées Desktop](/docs/fr/desktop-scheduled-tasks) s'exécutent localement sur votre machine, donc elles chargent `~/.claude/skills/`.241Les [tâches planifiées Desktop](/docs/fr/desktop-scheduled-tasks) s'exécutent localement sur votre machine, donc elles chargent `~/.claude/skills/`.


434| `when_to_use` | Non | Contexte supplémentaire pour savoir quand Claude devrait invoquer la compétence, comme les phrases déclencheurs ou les demandes d'exemple. Ajouté à `description` dans la liste des compétences et compte vers le plafond de 1 536 caractères. |434| `when_to_use` | Non | Contexte supplémentaire pour savoir quand Claude devrait invoquer la compétence, comme les phrases déclencheurs ou les demandes d'exemple. Ajouté à `description` dans la liste des compétences et compte vers le plafond de 1 536 caractères. |

435| `argument-hint` | Non | Indice affiché lors de l'autocomplétion pour indiquer les arguments attendus. Exemple : `[issue-number]` ou `[filename] [format]`. |435| `argument-hint` | Non | Indice affiché lors de l'autocomplétion pour indiquer les arguments attendus. Exemple : `[issue-number]` ou `[filename] [format]`. |

436| `arguments` | Non | Arguments positionnels nommés pour la [substitution `$name`](#available-string-substitutions) dans le contenu de la compétence. Accepte une chaîne séparée par des espaces ou une liste YAML. Les noms correspondent aux positions d'argument dans l'ordre. |436| `arguments` | Non | Arguments positionnels nommés pour la [substitution `$name`](#available-string-substitutions) dans le contenu de la compétence. Accepte une chaîne séparée par des espaces ou une liste YAML. Les noms correspondent aux positions d'argument dans l'ordre. |

437| `disable-model-invocation` | Non | Définissez sur `true` pour empêcher Claude de charger automatiquement cette compétence. Utilisez pour les flux de travail que vous souhaitez déclencher manuellement avec `/name`. Empêche également la compétence d'être [préchargée dans les sous-agents](/docs/fr/sub-agents#preload-skills-into-subagents). À partir de v2.1.196, empêche également la compétence de s'exécuter lorsqu'une [tâche programmée](/docs/fr/scheduled-tasks) se déclenche avec la compétence comme invite. Par défaut : `false`. |437| `disable-model-invocation` | Non | Définissez sur `true` pour empêcher Claude de charger automatiquement ce skill. Utilisez pour les workflows que vous souhaitez déclencher manuellement avec `/name`. Empêche également le skill d'être [préchargé dans les sous-agents](/docs/fr/sub-agents#preload-skills-into-subagents) et de s'exécuter lorsqu'une [tâche planifiée](/docs/fr/scheduled-tasks) se déclenche avec le skill comme prompt. Par défaut : `false`. |

438| `user-invocable` | Non | Définissez sur `false` lorsque seul Claude devrait invoquer la compétence : Claude Code la masque du menu `/` et ne l'exécute pas lorsque vous tapez `/name`. Utilisez pour les connaissances de base que les utilisateurs ne devraient pas invoquer directement. Par défaut : `true`. |438| `user-invocable` | Non | Définissez sur `false` lorsque seul Claude devrait invoquer la compétence : Claude Code la masque du menu `/` et ne l'exécute pas lorsque vous tapez `/name`. Utilisez pour les connaissances de base que les utilisateurs ne devraient pas invoquer directement. Par défaut : `true`. |

439| `allowed-tools` | Non | Outils que Claude peut utiliser sans demander la permission lors du tour qui invoque cette compétence. La subvention s'efface lorsque vous envoyez votre message suivant. Accepte une chaîne séparée par des espaces ou des virgules, ou une liste YAML. Voir [Pré-approuver les outils pour une compétence](#pre-approve-tools-for-a-skill). |439| `allowed-tools` | Non | Outils que Claude peut utiliser sans demander la permission lors du tour qui invoque cette compétence. La subvention s'efface lorsque vous envoyez votre message suivant. Accepte une chaîne séparée par des espaces ou des virgules, ou une liste YAML. Voir [Pré-approuver les outils pour une compétence](#pre-approve-tools-for-a-skill). |

440| `disallowed-tools` | Non | Outils supprimés du pool disponible de Claude tandis que cette compétence est active. Utilisez pour les compétences autonomes qui ne devraient jamais appeler certains outils, comme `AskUserQuestion` pour une boucle de fond. Accepte une chaîne séparée par des espaces ou des virgules, ou une liste YAML. La restriction s'efface lorsque vous envoyez votre message suivant. Comme les règles de refus, le champ ne peut pas supprimer [`EndConversation`](/docs/fr/tools-reference#endconversation-tool-behavior) tant que tout autre outil reste. |440| `disallowed-tools` | Non | Outils supprimés du pool disponible de Claude tandis que cette compétence est active. Utilisez pour les compétences autonomes qui ne devraient jamais appeler certains outils, comme `AskUserQuestion` pour une boucle de fond. Accepte une chaîne séparée par des espaces ou des virgules, ou une liste YAML. La restriction s'efface lorsque vous envoyez votre message suivant. Comme les règles de refus, le champ ne peut pas supprimer [`EndConversation`](/docs/fr/tools-reference#endconversation-tool-behavior) tant que tout autre outil reste. |


528 528 

529Si cette compétence est installée à `~/.claude/skills/render-chart/`, les deux occurrences de `${CLAUDE_SKILL_DIR}` se développent à ce répertoire. La règle `allowed-tools` correspond alors à la commande exacte que le corps de la compétence indique à Claude d'exécuter, donc le script s'exécute sans invite.529Si cette compétence est installée à `~/.claude/skills/render-chart/`, les deux occurrences de `${CLAUDE_SKILL_DIR}` se développent à ce répertoire. La règle `allowed-tools` correspond alors à la commande exacte que le corps de la compétence indique à Claude d'exécuter, donc le script s'exécute sans invite.

530 530 

531La substitution `${CLAUDE_PROJECT_DIR}` nécessite Claude Code v2.1.196 ou ultérieur.

532 

533Les arguments indexés utilisent les guillemets de style shell, donc enveloppez les valeurs multi-mots entre guillemets pour les passer comme un seul argument. Par exemple, `/my-skill "hello world" second` fait que `$0` se développe à `hello world` et `$1` à `second`. L'espace réservé `$ARGUMENTS` se développe toujours à la chaîne d'argument complète telle que tapée.531Les arguments indexés utilisent les guillemets de style shell, donc enveloppez les valeurs multi-mots entre guillemets pour les passer comme un seul argument. Par exemple, `/my-skill "hello world" second` fait que `$0` se développe à `hello world` et `$1` à `second`. L'espace réservé `$ARGUMENTS` se développe toujours à la chaîne d'argument complète telle que tapée.

534 532 

535Un espace réservé indexé sans argument correspondant, comme `$2` lorsqu'un seul argument a été passé, reste dans le contenu inchangé. Un espace réservé nommé du frontmatter [`arguments`](#frontmatter-reference) sans argument correspondant se développe à une chaîne vide.533Un espace réservé indexé sans argument correspondant, comme `$2` lorsqu'un seul argument a été passé, reste dans le contenu inchangé. Un espace réservé nommé du frontmatter [`arguments`](#frontmatter-reference) sans argument correspondant se développe à une chaîne vide.


641 639 

642[L'auto-compaction](/docs/fr/how-claude-code-works#when-context-fills-up) porte les compétences invoquées en avant dans un budget de tokens. Lorsque la conversation est résumée pour libérer du contexte, Claude Code réattache l'invocation la plus récente de chaque compétence après le résumé, en gardant les premiers 5 000 tokens de chacune. Les compétences réattachées partagent un budget combiné de 25 000 tokens. Claude Code remplit ce budget à partir de la compétence la plus récemment invoquée, donc les compétences plus anciennes peuvent être entièrement supprimées après la compaction si vous en avez invoqué beaucoup dans une session.640[L'auto-compaction](/docs/fr/how-claude-code-works#when-context-fills-up) porte les compétences invoquées en avant dans un budget de tokens. Lorsque la conversation est résumée pour libérer du contexte, Claude Code réattache l'invocation la plus récente de chaque compétence après le résumé, en gardant les premiers 5 000 tokens de chacune. Les compétences réattachées partagent un budget combiné de 25 000 tokens. Claude Code remplit ce budget à partir de la compétence la plus récemment invoquée, donc les compétences plus anciennes peuvent être entièrement supprimées après la compaction si vous en avez invoqué beaucoup dans une session.

643 641 

644Si une compétence semble cesser d'influencer le comportement après la première réponse, le contenu est généralement toujours présent et le modèle choisit d'autres outils ou approches. Renforcez la `description` de la compétence et les instructions afin que le modèle continue à la préférer, ou utilisez [hooks](/docs/fr/hooks) pour appliquer le comportement de manière déterministe. Si la compétence est grande ou que vous en avez invoqué plusieurs après elle, réinvoquez-la après la compaction pour restaurer le contenu complet.642Si Claude cesse de suivre un skill en cours de session, voir [Claude cesse de suivre un skill](#claude-stops-following-a-skill).

645 643 

646<h3 id="pre-approve-tools-for-a-skill">644<h3 id="pre-approve-tools-for-a-skill">

647 Pré-approuver les outils pour une compétence645 Pré-approuver les outils pour une compétence


843* Lorsque vous invoquez une compétence forkée alors qu'une invocation antérieure de la même compétence s'exécute toujours841* Lorsque vous invoquez une compétence forkée alors qu'une invocation antérieure de la même compétence s'exécute toujours

844* Lorsqu'une [tâche planifiée](/docs/fr/scheduled-tasks) se déclenche avec la compétence comme invite842* Lorsqu'une [tâche planifiée](/docs/fr/scheduled-tasks) se déclenche avec la compétence comme invite

845 843 

844Lorsqu'un agent dans un [workflow dynamique](/docs/fr/workflows) invoque un skill forké, cet agent attend et reçoit le résultat, même lorsque le skill ne définit pas `background: false`. Avant v2.1.295, Claude Code n'attendait pas dans ce cas, et lorsque le skill s'exécutait en arrière-plan, son résultat arrivait dans votre conversation principale au lieu de parvenir à cet agent.

845 

846Un fork en arrière-plan s'exécute également avec l'[ensemble d'outils plus restreint qui s'applique aux sous-agents en arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) : le sous-agent de la compétence est un type d'agent régulier, de sorte que l'exemption pour les sous-agents qui forkent la conversation ne le couvre pas. Si les étapes de votre compétence dépendent d'un outil en dehors de cet ensemble, définissez `background: false` pour conserver l'ensemble d'outils complet.846Un fork en arrière-plan s'exécute également avec l'[ensemble d'outils plus restreint qui s'applique aux sous-agents en arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) : le sous-agent de la compétence est un type d'agent régulier, de sorte que l'exemption pour les sous-agents qui forkent la conversation ne le couvre pas. Si les étapes de votre compétence dépendent d'un outil en dehors de cet ensemble, définissez `background: false` pour conserver l'ensemble d'outils complet.

847 847 

848Une compétence forkée qui s'exécute en arrière-plan applique ses modifications en dehors des [points de contrôle](/docs/fr/checkpointing) de votre session, de sorte que `/rewind` ne les annule pas ; utilisez git pour les annuler.848Une compétence forkée qui s'exécute en arrière-plan applique ses modifications en dehors des [points de contrôle](/docs/fr/checkpointing) de votre session, de sorte que `/rewind` ne les annule pas ; utilisez git pour les annuler.

sub-agents.md +3 −5

Details

386* **Le modèle de la conversation principale appartient à cette famille** : le sous-agent s'exécute sur le modèle exact de la conversation principale, y compris tout suffixe `[1m]`, donc il obtient la même fenêtre de [contexte étendu](/docs/fr/model-config#extended-context) que la conversation principale.386* **Le modèle de la conversation principale appartient à cette famille** : le sous-agent s'exécute sur le modèle exact de la conversation principale, y compris tout suffixe `[1m]`, donc il obtient la même fenêtre de [contexte étendu](/docs/fr/model-config#extended-context) que la conversation principale.

387* **Claude Code ne peut pas déterminer la famille du modèle de la conversation principale, sur [un fournisseur autre que l'API Anthropic](/docs/fr/third-party-integrations)** : cela peut se produire avec un [ARN de profil d'inférence d'application](/docs/fr/amazon-bedrock#iam-configuration) sur Amazon Bedrock que Claude Code n'a pas résolu à un modèle de support. Ce cas couvre uniquement l'alias `opus`, et ne s'applique pas lorsque vous définissez [`ANTHROPIC_DEFAULT_OPUS_MODEL`](/docs/fr/model-config#environment-variables), puisque `opus` se résout alors au modèle que vous définissez.387* **Claude Code ne peut pas déterminer la famille du modèle de la conversation principale, sur [un fournisseur autre que l'API Anthropic](/docs/fr/third-party-integrations)** : cela peut se produire avec un [ARN de profil d'inférence d'application](/docs/fr/amazon-bedrock#iam-configuration) sur Amazon Bedrock que Claude Code n'a pas résolu à un modèle de support. Ce cas couvre uniquement l'alias `opus`, et ne s'applique pas lorsque vous définissez [`ANTHROPIC_DEFAULT_OPUS_MODEL`](/docs/fr/model-config#environment-variables), puisque `opus` se résout alors au modèle que vous définissez.

388 388 

389Un alias dans `CLAUDE_CODE_SUBAGENT_MODEL` se résout toujours à la version vers laquelle l'alias pointe, même lorsqu'il nomme la famille de la conversation principale.389Un alias dans `CLAUDE_CODE_SUBAGENT_MODEL` se résout toujours à la version vers laquelle l'alias pointe, même lorsqu'il nomme la famille de la conversation principale. Définir la variable sur `inherit` est identique à la laisser non définie.

390 390 

391Définir `CLAUDE_CODE_SUBAGENT_MODEL` seul ne change pas le modèle sur lequel les sous-agents Explore et Plan intégrés s'exécutent. Pour le changer, consultez [Exécuter chaque sous-agent sur un modèle](#run-every-subagent-on-one-model).391Définir `CLAUDE_CODE_SUBAGENT_MODEL` seul ne change pas le modèle sur lequel les sous-agents Explore et Plan intégrés s'exécutent. Pour le changer, consultez [Exécuter chaque sous-agent sur un modèle](#run-every-subagent-on-one-model).

392 392 

393Avant la v2.1.251, `CLAUDE_CODE_SUBAGENT_MODEL` venait en premier dans cet ordre et remplaçait à la fois le paramètre par invocation et le frontmatter, y compris `model: inherit`.393Avant la v2.1.251, `CLAUDE_CODE_SUBAGENT_MODEL` venait en premier dans cet ordre et remplaçait à la fois le paramètre par invocation et le frontmatter, y compris `model: inherit`.

394 394 

395Définir la variable sur `inherit` est identique à la laisser non définie. Avant la v2.1.196, cette valeur forçait les sous-agents sur le modèle de la conversation principale et ignorait les autres sources.

396 

397Claude Code vérifie le paramètre par invocation, le frontmatter et les valeurs de la variable d'environnement par rapport à la liste d'autorisation [`availableModels`](/docs/fr/model-config#restrict-model-selection) de votre organisation. Pour une valeur bloquée, il substitue un autre modèle :395Claude Code vérifie le paramètre par invocation, le frontmatter et les valeurs de la variable d'environnement par rapport à la liste d'autorisation [`availableModels`](/docs/fr/model-config#restrict-model-selection) de votre organisation. Pour une valeur bloquée, il substitue un autre modèle :

398 396 

399* Lorsque la valeur bloquée est un alias de famille tel que `opus`, Claude Code exécute le sous-agent sur la version la plus récente de cette famille que la liste d'autorisation permet, en suivant les mêmes [règles de substitution et portée du fournisseur](/docs/fr/model-config#restrict-model-selection) que `/model`. Avant la v2.1.222, Claude Code exécutait le sous-agent sur le modèle hérité pour un alias de famille bloqué également.397* Lorsque la valeur bloquée est un alias de famille tel que `opus`, Claude Code exécute le sous-agent sur la version la plus récente de cette famille que la liste d'autorisation permet, en suivant les mêmes [règles de substitution et portée du fournisseur](/docs/fr/model-config#restrict-model-selection) que `/model`. Avant la v2.1.222, Claude Code exécutait le sous-agent sur le modèle hérité pour un alias de famille bloqué également.


620| `default` | Mode Manuel : demande la permission |618| `default` | Mode Manuel : demande la permission |

621| `acceptEdits` | Auto-accepter les modifications de fichiers et les commandes courantes du système de fichiers pour les chemins du répertoire de travail ou `additionalDirectories` |619| `acceptEdits` | Auto-accepter les modifications de fichiers et les commandes courantes du système de fichiers pour les chemins du répertoire de travail ou `additionalDirectories` |

622| `auto` | [Mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) : un classifieur en arrière-plan examine les commandes et les écritures de répertoire protégé |620| `auto` | [Mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) : un classifieur en arrière-plan examine les commandes et les écritures de répertoire protégé |

623| `dontAsk` | Auto-refuser les demandes de permission. Les outils explicitement autorisés fonctionnent toujours ; `AskUserQuestion`, les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) et les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code sont refusés même si vous les avez autorisés |621| `dontAsk` | Auto-refuser les demandes de permission. Les outils explicitement autorisés fonctionnent toujours ; `AskUserQuestion`, les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool), les [lectures depuis des chemins réseau](/docs/fr/permissions#network-paths) et les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code sont refusés même si vous les avez autorisés |

624| `bypassPermissions` | [Ignorer les demandes de permission](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode). Un sous-agent s'exécute dans ce mode uniquement lorsque la conversation principale le fait |622| `bypassPermissions` | [Ignorer les demandes de permission](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode). Un sous-agent s'exécute dans ce mode uniquement lorsque la conversation principale le fait |

625| `plan` | Mode plan (exploration en lecture seule) |623| `plan` | Mode plan (exploration en lecture seule) |

626 624 


1150* **Prompt système** : le propre prompt de l'agent plus les détails d'environnement que Claude Code ajoute, pas le prompt système de Claude Code. Les sous-agents personnalisés définissent le leur dans le [corps markdown](#write-subagent-files) ou le champ `prompt`. Les agents intégrés ont des prompts prédéfinis.1148* **Prompt système** : le propre prompt de l'agent plus les détails d'environnement que Claude Code ajoute, pas le prompt système de Claude Code. Les sous-agents personnalisés définissent le leur dans le [corps markdown](#write-subagent-files) ou le champ `prompt`. Les agents intégrés ont des prompts prédéfinis.

1151* **Message de tâche** : le prompt de délégation que Claude rédige lorsqu'il confie le travail.1149* **Message de tâche** : le prompt de délégation que Claude rédige lorsqu'il confie le travail.

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

1153* **Statut Git** : un instantané que Claude Code lit de votre dépôt lorsque le sous-agent démarre. 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.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.

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

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

1156 1154 

Details

122}122}

123```123```

124 124 

125<h2 id="see-session-status-in-your-terminal">

126 Voir le statut de la session dans votre terminal

127</h2>

128 

129Si votre terminal implémente le protocole OSC 7501 Program Status Protocol, il peut indiquer si chaque session interactive de Claude Code est en cours de travail, en attente de votre intervention ou terminée, ce qui est utile lorsque vous exécutez des tâches longues ou plusieurs sessions à la fois. Il n'y a rien à activer dans Claude Code. Pour savoir si votre terminal implémente le protocole et où il affiche le statut, consultez sa documentation.

130 

131Si c'est le cas et que vous ne voyez aucun statut pour une session, vérifiez chacune de ces causes :

132 

133* **Version de Claude Code** : le signalement du statut nécessite Claude Code v2.1.295 ou une version ultérieure. Exécutez `claude --version` dans votre shell pour vérifier.

134* **tmux** : dans tmux, Claude Code vérifie la prise en charge auprès de tmux plutôt que de votre terminal, et [`allow-passthrough`](#configure-tmux) n'a aucun effet sur ce point. Démarrez la session en dehors de tmux.

135* **Session en arrière-plan** : une [session en arrière-plan](/docs/fr/agent-view) ne signale pas son statut à votre terminal, même lorsque vous y êtes attaché. La vue agent affiche son statut à la place.

136* **[`CLAUDE_CODE_DISABLE_TERMINAL_TITLE`](/docs/fr/env-vars#variables)** : si vous définissez cette variable sur `1`, Claude Code ne vérifie pas la prise en charge et ne signale pas le statut. Supprimez-la.

137 

125<h2 id="configure-tmux">138<h2 id="configure-tmux">

126 Configurer tmux139 Configurer tmux

127</h2>140</h2>

tools-reference.md +32 −11

Details

279 279 

280L'outil Edit effectue un remplacement de chaîne exact. Il prend une `old_string` et une `new_string` et remplace la première par la seconde. Il n'utilise pas d'expressions régulières ni de correspondance approximative.280L'outil Edit effectue un remplacement de chaîne exact. Il prend une `old_string` et une `new_string` et remplace la première par la seconde. Il n'utilise pas d'expressions régulières ni de correspondance approximative.

281 281 

282Trois vérifications doivent réussir pour qu'une modification s'applique. Avant l'une d'elles, un chemin correspondant à une [règle de refus `Read`](/docs/fr/permissions#tool-specific-permission-rules) est refusé, y compris la création d'un nouveau fichier à cet endroit. Le refus nécessite Claude Code v2.1.208 ou une version ultérieure.282Ces vérifications doivent réussir pour qu'une modification s'applique. Avant l'une d'elles, un chemin correspondant à une [règle de refus `Read`](/docs/fr/permissions#tool-specific-permission-rules) est refusé, y compris la création d'un nouveau fichier à cet endroit. Le refus nécessite Claude Code v2.1.208 ou une version ultérieure.

283 283 

284* **Read-before-edit** : Claude lit le fichier dans la conversation actuelle avant de le modifier, et une lecture interrompue avec un avis [`PARTIAL view`](#read-tool-behavior) ne compte pas. Claude Opus 4.6, Claude Haiku 4.5 et les modèles plus anciens nécessitent toujours la lecture. Les modèles plus récents peuvent modifier un fichier non lu lorsque la lecture ne nécessiterait pas une invite de permission et que l'outil Read est disponible.284* **Read-before-edit** : Claude lit le fichier dans la conversation actuelle avant de le modifier, et une lecture interrompue avec un avis [`PARTIAL view`](#large-files) ne compte pas. Claude Opus 4.6, Claude Haiku 4.5 et les modèles plus anciens nécessitent toujours la lecture. Les modèles plus récents peuvent modifier un fichier non lu lorsque la lecture ne nécessiterait pas de demande de permission et que l'outil Read est disponible.

285* **Match** : `old_string` doit apparaître dans le fichier exactement tel qu'écrit. Une seule différence d'espace blanc ou d'indentation suffit à manquer la correspondance.285* **Match** : `old_string` doit apparaître dans le fichier exactement tel qu'écrit. Une seule différence d'espace blanc ou d'indentation suffit à manquer la correspondance.

286* **Unicité** : `old_string` doit apparaître exactement une fois. Lorsqu'il apparaît plus d'une fois, Claude fournit soit une chaîne plus longue avec suffisamment de contexte environnant pour identifier une occurrence, soit définit `replace_all: true` pour les remplacer tous.286* **Unicité** : `old_string` doit apparaître exactement une fois. Lorsqu'il apparaît plus d'une fois, Claude fournit soit une chaîne plus longue avec suffisamment de contexte environnant pour identifier une occurrence, soit définit `replace_all: true` pour les remplacer tous.

287 287 

288Un fichier qui a changé sur le disque après la dernière lecture par Claude peut toujours être modifié lorsque `old_string` correspond exactement au contenu actuel et sans ambiguïté et que Claude Code peut lire le fichier sans invite. La correspondance avec le contenu actuel du fichier maintient la sécurité, et le résultat note que le fichier contient d'autres modifications afin que Claude le relise avant les modifications qui dépendent du contenu environnant. Dans tout autre cas, comme une `old_string` obsolète ou une qui correspond à plus d'une occurrence sans `replace_all`, Claude lit le fichier à nouveau avant la modification. La gestion assouplie des fichiers non lus et modifiés nécessite Claude Code v2.1.208 ou une version ultérieure ; avant cela, Claude Code refusait toute modification d'un fichier qu'il n'avait pas lu dans la conversation ou qui avait changé sur le disque après la lecture.288Un fichier qui a changé sur le disque après la dernière lecture par Claude peut toujours être modifié lorsque `old_string` correspond exactement au contenu actuel et sans ambiguïté et que Claude Code peut lire le fichier sans invite. La correspondance avec le contenu actuel du fichier maintient la sécurité, et le résultat note que le fichier contient d'autres modifications afin que Claude le relise avant les modifications qui dépendent du contenu environnant. Dans tout autre cas, comme une `old_string` obsolète ou une qui correspond à plus d'une occurrence sans `replace_all`, Claude lit le fichier à nouveau avant la modification. La gestion assouplie des fichiers non lus et modifiés nécessite Claude Code v2.1.208 ou une version ultérieure ; avant cela, Claude Code refusait toute modification d'un fichier qu'il n'avait pas lu dans la conversation ou qui avait changé sur le disque après la lecture.

289 289 

290Afficher un fichier avec Bash satisfait également l'exigence read-before-edit lorsque la commande est `cat`, `nl`, `bat`, `batcat`, `head`, `tail`, `sed -n 'X,Yp'`, `grep`, `egrep`, `fgrep`, ou `rg` sur un seul fichier sans pipes ni redirections. La sortie redirigée et les autres commandes Bash ne comptent pas vers la vérification read-before-edit.290Claude peut également modifier un fichier sans Read distinct après l'avoir affiché avec une commande Bash telle que `cat` ou `grep`. Ces commandes sont `cat`, `nl`, `bat`, `batcat`, `head`, `tail`, `sed -n 'X,Yp'`, `grep`, `egrep`, `fgrep` et `rg`, chacune exécutée sur un seul fichier sans pipes ni redirections. Une recherche qui n'affiche aucune correspondance ne compte pas comme une lecture, pas plus que toute commande absente de cette liste.

291 291 

292Lorsque Claude affiche un fichier de cette manière, Claude Code charge également tout [`CLAUDE.md` de sous-répertoire](/docs/fr/memory#how-claude-md-files-load) et toutes les [règles limitées à un chemin](/docs/fr/memory#path-specific-rules) qui s'appliquent à ce fichier. Consultez [Règles de permission Read et Edit](/docs/fr/permissions#read-and-edit) pour savoir quelles commandes Bash vos règles de refus `Read` et `Edit` couvrent.292Lorsque Claude affiche un fichier de cette manière, Claude Code charge également tout [`CLAUDE.md` de sous-répertoire](/docs/fr/memory#how-claude-md-files-load) et toutes les [règles limitées à un chemin](/docs/fr/memory#path-specific-rules) qui s'appliquent à ce fichier. Consultez [Règles de permission Read et Edit](/docs/fr/permissions#read-and-edit) pour savoir quelles commandes Bash vos règles de refus `Read` et `Edit` couvrent.

293 293 

294<h3 id="non-utf-8-files">

295 Fichiers non UTF-8

296</h3>

297 

298Claude ne peut pas utiliser [NotebookEdit](#notebookedit-tool-behavior) sur un fichier qui n'est pas en UTF-8 valide. Il en va de même pour Edit, sauf si le fichier commence par une marque d'ordre d'octets UTF-16 little-endian. Lorsque Claude essaie, l'outil refuse la modification et laisse le fichier intact. Les fichiers refusés comprennent le texte non ASCII enregistré dans un encodage hérité tel que Windows-1252 ou Shift-JIS, les fichiers binaires et l'UTF-8 contenant une séquence d'octets invalide.

299 

300Les outils refusent parce qu'ils réenregistrent l'intégralité du fichier en UTF-8, ce qui remplacerait chaque octet qu'ils ne peuvent pas décoder par le caractère de remplacement `U+FFFD`. À la place, l'[erreur que Claude reçoit](/docs/fr/errors#file-is-not-valid-utf-8) lui indique d'effectuer la modification avec une commande shell qui conserve l'encodage du fichier, ou de vous demander s'il faut d'abord le convertir en UTF-8.

301 

302Claude peut toujours remplacer un tel fichier avec Write, sauf si le nouveau contenu contient `U+FFFD`, le caractère que Read montre à Claude à la place des octets qu'il ne peut pas décoder. Cette protection empêche Claude de réécrire le texte altéré qu'il a lu. Lorsque Write remplace effectivement le fichier, il enregistre le nouveau contenu en UTF-8, de sorte que l'encodage d'origine du fichier est perdu.

303 

294<h2 id="endconversation-tool-behavior">304<h2 id="endconversation-tool-behavior">

295 Comportement de l'outil EndConversation305 Comportement de l'outil EndConversation

296</h2>306</h2>


455* `insert` : ajoute une nouvelle cellule après la cible. Sans `cell_id`, la nouvelle cellule va au début du notebook. Nécessite que `cell_type` soit défini à `code` ou `markdown`.465* `insert` : ajoute une nouvelle cellule après la cible. Sans `cell_id`, la nouvelle cellule va au début du notebook. Nécessite que `cell_type` soit défini à `code` ou `markdown`.

456* `delete` : supprime la cellule cible.466* `delete` : supprime la cellule cible.

457 467 

468NotebookEdit refuse un fichier notebook qui ne se décode pas en UTF-8, selon la [même règle qu'Edit](#non-utf-8-files), et n'écrit rien.

469 

458Les règles de permission utilisent le format de chemin `Edit(...)`. Une règle comme `Edit(notebooks/**)` couvre les appels NotebookEdit sur les fichiers dans ce répertoire.470Les règles de permission utilisent le format de chemin `Edit(...)`. Une règle comme `Edit(notebooks/**)` couvre les appels NotebookEdit sur les fichiers dans ce répertoire.

459 471 

460<h2 id="powershell-tool">472<h2 id="powershell-tool">


514* `"shell": "powershell"` sur les [hooks de commande](/docs/fr/hooks#command-hook-fields) individuels : exécute ce hook dans PowerShell. Les hooks lancent PowerShell directement, de sorte que cela fonctionne indépendamment de `CLAUDE_CODE_USE_POWERSHELL_TOOL`.526* `"shell": "powershell"` sur les [hooks de commande](/docs/fr/hooks#command-hook-fields) individuels : exécute ce hook dans PowerShell. Les hooks lancent PowerShell directement, de sorte que cela fonctionne indépendamment de `CLAUDE_CODE_USE_POWERSHELL_TOOL`.

515* `shell: powershell` dans le [frontmatter du skill](/docs/fr/skills#frontmatter-reference) : exécute les blocs `` !`command` `` dans PowerShell. Nécessite que l'outil PowerShell soit activé.527* `shell: powershell` dans le [frontmatter du skill](/docs/fr/skills#frontmatter-reference) : exécute les blocs `` !`command` `` dans PowerShell. Nécessite que l'outil PowerShell soit activé.

516 528 

517Le même comportement de réinitialisation du répertoire de travail de la session principale décrit dans la section de l'outil Bash s'applique aux commandes PowerShell, y compris la variable d'environnement `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR`.529Les commandes PowerShell suivent le [même comportement de réinitialisation du répertoire de travail de la session principale](#what-persists-between-commands) que les commandes Bash, y compris la variable d'environnement `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR`.

530 

531Les commandes PowerShell reçoivent également les variables que les hooks conservent via `CLAUDE_ENV_FILE`, dans les conditions décrites dans [Variables persistantes dans les commandes PowerShell](/docs/fr/hooks#persisted-variables-in-powershell-commands). Nécessite Claude Code v2.1.296 ou version ultérieure.

518 532 

519Le code de sortie 1 de `grep`, `rg`, `egrep`, `fgrep`, `findstr` et `git grep` signifie aucune correspondance. Le code de sortie 1 de `git diff` signifie que des différences existent. Aucun de ces résultats n'est signalé à Claude comme un échec de commande. Pour `robocopy`, les codes de sortie 0 à 7 sont des résultats informationnels, tels que des fichiers copiés ou des fichiers supplémentaires détectés. Les codes de sortie 8 ou supérieurs comptent comme des échecs.533Le code de sortie 1 de `grep`, `rg`, `egrep`, `fgrep`, `findstr` et `git grep` signifie aucune correspondance. Le code de sortie 1 de `git diff` signifie que des différences existent. Aucun de ces résultats n'est signalé à Claude comme un échec de commande. Pour `robocopy`, les codes de sortie 0 à 7 sont des résultats informationnels, tels que des fichiers copiés ou des fichiers supplémentaires détectés. Les codes de sortie 8 ou supérieurs comptent comme des échecs.

520 534 


547 561 

548L'outil Read prend un chemin de fichier et retourne le contenu avec les numéros de ligne. Claude est configuré pour toujours passer des chemins absolus.562L'outil Read prend un chemin de fichier et retourne le contenu avec les numéros de ligne. Claude est configuré pour toujours passer des chemins absolus.

549 563 

550Par défaut, Read retourne le fichier depuis le début. Quand une lecture de fichier complet dépasse la limite de tokens, Read retourne la première page avec un avis `PARTIAL view` qui indique à Claude combien du fichier il a reçu et comment lire plus avec `offset` et `limit`. Une lecture qui passe un `offset` ou `limit` explicite et dépasse toujours la limite de tokens retourne une erreur.

551 

552Une lecture avec un `limit` explicite s'arrête dès que les lignes sélectionnées dépassent ce que la limite de tokens pourrait jamais contenir et retourne une erreur sans charger le reste de la plage. L'erreur indique à Claude d'utiliser un `limit` plus petit, ou de rechercher du contenu spécifique avec [Grep](#grep-tool-behavior) à la place quand une seule ligne est aussi grande. Avant v2.1.208, Claude Code chargeait toute la plage en mémoire avant de la rejeter, donc lire un fichier avec une seule ligne extrêmement longue pouvait le faire manquer de mémoire.

553 

554Lire un fichier vide retourne un avis que le fichier existe mais que son contenu est vide, et un `offset` au-delà de la dernière ligne retourne un avis donnant le nombre de lignes du fichier. Avant v2.1.208, lire un fichier vide retournait l'avis de fin de fichier à la place.564Lire un fichier vide retourne un avis que le fichier existe mais que son contenu est vide, et un `offset` au-delà de la dernière ligne retourne un avis donnant le nombre de lignes du fichier. Avant v2.1.208, lire un fichier vide retournait l'avis de fin de fichier à la place.

555 565 

556Read gère plusieurs types de fichiers au-delà du texte brut :566Read gère plusieurs types de fichiers au-delà du texte brut :

557 567 

558* **Images** : PNG, JPG et autres formats d'image sont retournés comme contenu visuel que Claude peut voir, pas comme des octets bruts. Claude Code redimensionne et récompresse les grandes images pour s'adapter aux limites de taille d'image du modèle avant de les envoyer, donc Claude peut voir une version réduite d'une grande capture d'écran. Une image qui est toujours plus grande que 500 KB après ce redimensionnement est réencodée en JPEG à qualité réduite avec ses dimensions en pixels inchangées. Si Claude manque des détails fins au niveau des pixels dans une grande image, demandez-lui de d'abord recadrer la région d'intérêt, par exemple avec ImageMagick via Bash.568* **Images** : PNG, JPG et autres formats d'image sont retournés comme contenu visuel que Claude peut voir, pas comme des octets bruts. Claude Code redimensionne et récompresse les grandes images pour s'adapter aux limites de taille d'image du modèle avant de les envoyer, donc Claude peut voir une version réduite d'une grande capture d'écran. Une image qui est toujours plus grande que 500 KB après ce redimensionnement est réencodée en JPEG à qualité réduite avec ses dimensions en pixels inchangées. Si Claude manque des détails fins au niveau des pixels dans une grande image, demandez-lui de d'abord recadrer la région d'intérêt, par exemple avec ImageMagick via Bash.

559* **PDFs** : Claude lit les fichiers `.pdf` courts en entier. Pour les PDFs plus longs que 10 pages, il lit par plages avec un paramètre `pages`, tel que `"1-5"`, jusqu'à 20 pages à la fois. Les lectures par plage de pages restituent les pages avec `pdftoppm` de poppler-utils, donc installez-le avec `brew install poppler` sur macOS ou `apt-get install poppler-utils` sur Debian et Ubuntu. Sur Windows et autres plates-formes, installez une version poppler qui met `pdftoppm` sur votre `PATH`. Sans cela, une lecture par plage de pages échoue avec `pdftoppm is not installed`.569* **PDFs** : Claude lit les fichiers `.pdf` courts en entier. Pour les PDFs plus longs que 10 pages, il lit par plages avec un paramètre `pages`, tel que `"1-5"`, jusqu'à 20 pages à la fois. Les lectures par plage de pages restituent les pages avec `pdftoppm` de poppler-utils, donc installez-le avec `brew install poppler` sur macOS ou `apt-get install poppler-utils` sur Debian et Ubuntu. Sur Windows et autres plates-formes, installez une version poppler qui met `pdftoppm` sur votre `PATH`. Sans cela, une lecture par plage de pages échoue avec `pdftoppm is not installed`.

560* **Notebooks Jupyter** : les fichiers `.ipynb` retournent toutes les cellules avec leurs résultats, y compris le code, le markdown et les visualisations. Claude Code refuse de lire un fichier notebook de plus de 100 MB ; l'erreur indique à Claude comment lire une portion du notebook à la place, comme une tranche de cellules, avec une commande shell.570* **Notebooks Jupyter** : les fichiers `.ipynb` retournent toutes les cellules avec leurs résultats, y compris le code, le markdown et les visualisations. Un notebook dont les cellules dépassent 256 KB, ou la [limite de tokens](#large-files), retourne une erreur à la place. Claude Code refuse de lire un fichier notebook de plus de 100 MB ; l'erreur indique à Claude comment lire une portion du notebook à la place, comme une tranche de cellules, avec une commande shell.

561 571 

562Read lit uniquement les fichiers, pas les répertoires. Claude liste le contenu des répertoires avec une commande shell telle que `ls`.572Read lit uniquement les fichiers, pas les répertoires. Claude liste le contenu des répertoires avec une commande shell telle que `ls`.

563 573 

574<h3 id="large-files">

575 Fichiers volumineux

576</h3>

577 

578Claude peut lire un fichier texte plus volumineux que ce que retourne un seul appel à Read. Par défaut, un appel retourne au maximum 25 000 tokens, ou la valeur que vous définissez dans [`CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS`](/docs/fr/env-vars), et refuse un fichier complet de plus de 256 KB, donc Claude lit un fichier plus volumineux par pages avec `offset` et `limit`. Sur Claude Code v2.1.296 ou ultérieur, il peut à la place lire le fichier complet, ou une longue plage de lignes, en un seul appel en définissant `allow_large: true` lorsqu'il en a besoin, par exemple parce que vous avez demandé le fichier entier. Cette lecture est dimensionnée en fonction de l'espace restant dans la [fenêtre de contexte](/docs/fr/context-window) de la session plutôt que selon les limites par défaut. Les images, les PDFs et les notebooks conservent leurs limites.

579 

580Ce que Claude reçoit lorsqu'une lecture dépasse les limites par défaut :

581 

582* **Fichier complet au-delà de la limite de tokens** : la première page du fichier, avec un avis `PARTIAL view` indiquant quelle part du fichier il a reçue et comment en lire davantage avec `offset` et `limit`

583* **Fichier complet de plus de 256 KB, ou lecture avec `offset` ou `limit` au-delà de la limite de tokens** : une erreur lui indiquant de lire une portion avec `offset` et `limit`, ou de rechercher du contenu spécifique avec [Grep](#grep-tool-behavior) à la place

584 

564<h2 id="sendfeedback-tool-behavior">585<h2 id="sendfeedback-tool-behavior">

565 Comportement de l'outil SendFeedback586 Comportement de l'outil SendFeedback

566</h2>587</h2>


734 Comportement de l'outil Write755 Comportement de l'outil Write

735</h2>756</h2>

736 757 

737L'outil Write crée un nouveau fichier ou remplace un fichier existant par le contenu complet fourni. Il n'ajoute pas ou ne fusionne pas.758L'outil Write crée un nouveau fichier ou remplace un fichier existant par le contenu complet fourni. Il n'ajoute pas ou ne fusionne pas. Write remplace également un fichier existant dont les octets ne peuvent pas être décodés et enregistre le nouveau contenu en UTF-8, comme décrit dans [fichiers non UTF-8](#non-utf-8-files).

738 759 

739Le fait que Claude doive lire un fichier existant dans la conversation actuelle avant de le remplacer dépend du modèle et du fichier :760Le fait que Claude doive lire un fichier existant dans la conversation actuelle avant de le remplacer dépend du modèle et du fichier :

740 761 

741* Claude Opus 4.6, Claude Haiku 4.5 et les modèles plus anciens exigent toujours la lecture, donc une Write vers un fichier existant non lu échoue avec une erreur.762* Claude Opus 4.6, Claude Haiku 4.5 et les modèles plus anciens exigent toujours la lecture, donc une Write vers un fichier existant non lu échoue avec une erreur.

742* Les modèles plus récents peuvent remplacer un fichier qu'ils n'ont jamais lu cette session dans les mêmes conditions que [read-before-edit](#edit-tool-behavior) : le lire ne nécessiterait pas une invite de permission et l'outil Read est disponible.763* Les modèles plus récents peuvent remplacer un fichier qu'ils n'ont jamais lu cette session dans les mêmes conditions que [read-before-edit](#edit-tool-behavior) : le lire ne nécessiterait pas une invite de permission et l'outil Read est disponible.

743* Les notebooks Jupyter et les fichiers que Claude a lus partiellement avec un avis [`PARTIAL view`](#read-tool-behavior) exigent la lecture sur tous les modèles.764* Les notebooks Jupyter et les fichiers que Claude a lus partiellement avec un [avis `PARTIAL view`](#large-files) exigent la lecture sur tous les modèles.

744 765 

745Cette contrainte ne s'applique pas aux nouveaux fichiers. Avant v2.1.228, tous les modèles exigeaient la lecture avant de remplacer un fichier existant.766Cette contrainte ne s'applique pas aux nouveaux fichiers. Avant v2.1.228, tous les modèles exigeaient la lecture avant de remplacer un fichier existant.

746 767 

Details

1212Si vous voyez `API Error: 403 Request not allowed` après la connexion :1212Si vous voyez `API Error: 403 Request not allowed` après la connexion :

1213 1213 

1214* **Utilisateurs Claude Pro/Max** : vérifiez que votre abonnement est actif sur [claude.ai/settings](https://claude.ai/settings)1214* **Utilisateurs Claude Pro/Max** : vérifiez que votre abonnement est actif sur [claude.ai/settings](https://claude.ai/settings)

1215* **Utilisateurs Anthropic Console** : confirmez que votre compte a le rôle « Claude Code » ou « Developer ». Les administrateurs l'attribuent dans la console Anthropic sous Paramètres → Membres.1215* **Utilisateurs Anthropic Console** : confirmez que votre compte a le rôle « Claude Code » ou « Developer ». Les administrateurs l'attribuent sur la page Members de la Console à l'adresse [platform.claude.com/settings/members](https://platform.claude.com/settings/members).

1216* **Derrière un proxy** : les proxys d'entreprise peuvent interférer avec les requêtes API. Consultez [configuration réseau](/docs/fr/network-config) pour la configuration du proxy.1216* **Derrière un proxy** : les proxys d'entreprise peuvent interférer avec les requêtes API. Consultez [configuration réseau](/docs/fr/network-config) pour la configuration du proxy.

1217 1217 

1218<h3 id="claude-code-access-has-not-been-granted-for-this-account">1218<h3 id="claude-code-access-has-not-been-granted-for-this-account">

vs-code.md +3 −2

Details

237 237 

238Pour restaurer une session archivée, développez **Archived sessions** et cliquez sur **Unarchive session**. Pour restaurer chaque session archivée à la fois, survolez l'en-tête **Archived sessions** dans la liste des sessions dans la barre d'activité et cliquez sur son icône de désarchivage, ce qui nécessite Claude Code v2.1.277 ou version ultérieure. Avant v2.1.257, l'action était **Delete session**, qui masquait une session sans aucun moyen de la restaurer. Les sessions que vous avez supprimées apparaissent alors sous **Archived sessions** après la mise à niveau.238Pour restaurer une session archivée, développez **Archived sessions** et cliquez sur **Unarchive session**. Pour restaurer chaque session archivée à la fois, survolez l'en-tête **Archived sessions** dans la liste des sessions dans la barre d'activité et cliquez sur son icône de désarchivage, ce qui nécessite Claude Code v2.1.277 ou version ultérieure. Avant v2.1.257, l'action était **Delete session**, qui masquait une session sans aucun moyen de la restaurer. Les sessions que vous avez supprimées apparaissent alors sous **Archived sessions** après la mise à niveau.

239 239 

240Lorsque la conversation que vous reprenez s'est terminée en mode plan, Claude Code restaure le mode plan. Nécessite Claude Code v2.1.246 ou version ultérieure. Claude Code ne le restaure pas dans deux cas :240Lorsque la conversation que vous reprenez s'est terminée en mode plan, Claude Code restaure le mode plan. Nécessite Claude Code v2.1.246 ou version ultérieure. Claude Code ne le restaure pas dans ces cas :

241 241 

242* L'extension [choisit le mode de permission au démarrage](/docs/fr/permission-modes#switch-permission-modes) à partir de `claudeCode.initialPermissionMode` ou d'un choix qui se reporte d'une conversation antérieure242* L'extension [choisit le mode de permission au démarrage](/docs/fr/permission-modes#switch-permission-modes) à partir de `claudeCode.initialPermissionMode` ou d'un choix qui se reporte d'une conversation antérieure

243* Vous avez `claudeCode.claudeProcessWrapper` configuré243* Vous avez `claudeCode.claudeProcessWrapper` configuré

244* Une [règle de refus](/docs/fr/permissions#manage-permissions) supprime l'outil [`ExitPlanMode`](/docs/fr/tools-reference)

244 245 

245<h3 id="resume-cloud-sessions-from-claude-ai">246<h3 id="resume-cloud-sessions-from-claude-ai">

246 Reprendre les sessions cloud depuis Claude.ai247 Reprendre les sessions cloud depuis Claude.ai


479 480 

480Claude ouvre de nouveaux onglets pour les tâches du navigateur et partage l'état de connexion de votre navigateur, ce qui lui permet d'accéder à n'importe quel site auquel vous êtes déjà connecté.481Claude ouvre de nouveaux onglets pour les tâches du navigateur et partage l'état de connexion de votre navigateur, ce qui lui permet d'accéder à n'importe quel site auquel vous êtes déjà connecté.

481 482 

482Pour que chaque session se connecte à votre navigateur dès son démarrage, sans taper `@browser`, consultez [Activer Chrome par défaut](/docs/fr/chrome#enable-chrome-by-default). Pour les cas où Claude Code vous demande confirmation avant une action du navigateur dans une session connectée de cette façon, consultez [Demandes de permission dans les sessions VS Code](/docs/fr/chrome#permission-prompts-in-vs-code-sessions).483Pour que chaque session se connecte à votre navigateur dès son démarrage, sans taper `@browser`, consultez [Activer Chrome par défaut](/docs/fr/chrome#enable-chrome-by-default). Pour les cas où Claude Code vous demande confirmation avant une action du navigateur, consultez [Demandes de permission dans les sessions VS Code](/docs/fr/chrome#permission-prompts-in-vs-code-sessions).

483 484 

484Pour les instructions de configuration, la liste complète des capacités et le dépannage, consultez [Utiliser Claude Code avec Chrome](/docs/fr/chrome).485Pour les instructions de configuration, la liste complète des capacités et le dépannage, consultez [Utiliser Claude Code avec Chrome](/docs/fr/chrome).

485 486 

workflows.md +1 −1

Details

511* Vérifiez `/model` avant une exécution importante si vous basculez généralement vers un modèle plus petit pour le travail de routine511* Vérifiez `/model` avant une exécution importante si vous basculez généralement vers un modèle plus petit pour le travail de routine

512* Demandez à Claude d'utiliser un modèle plus petit pour les étapes qui n'ont pas besoin du plus fort quand vous décrivez la tâche512* Demandez à Claude d'utiliser un modèle plus petit pour les étapes qui n'ont pas besoin du plus fort quand vous décrivez la tâche

513 513 

514Quand la liste d'autorisation [`availableModels`](/docs/fr/model-config#restrict-model-selection) de votre organisation bloque un modèle que le script demande pour un agent, cet agent s'exécute sur un modèle substitué à la place, en suivant les mêmes [règles de substitution que les sous-agents](/docs/fr/sub-agents#choose-a-model). La vue de progression de l'exécution dans [`/workflows`](#watch-the-run) affiche un avertissement nommant à la fois les modèles demandés et substitués.514Quand la [liste d'autorisation `availableModels`](/docs/fr/model-config#restrict-model-selection) de votre organisation bloque un modèle que le script demande pour un agent, cet agent s'exécute sur un modèle substitué à la place, en suivant les mêmes [règles de substitution que les sous-agents](/docs/fr/sub-agents#choose-a-model).

515 515 

516<h3 id="set-a-size-guideline">516<h3 id="set-a-size-guideline">

517 Définir une directive de taille517 Définir une directive de taille

worktrees.md +3 −1

Details

268 268 

269 La même lecture couvre `.claude/agents` et `.claude/commands`. Pour les compétences, la lecture nécessite Claude Code v2.1.277 ou ultérieur.269 La même lecture couvre `.claude/agents` et `.claude/commands`. Pour les compétences, la lecture nécessite Claude Code v2.1.277 ou ultérieur.

270 270 

271Tous ces éléments s'appliquent que vous créiez le worktree avec `--worktree`, avec `git worktree add`, ou via l'[application de bureau](/docs/fr/desktop#work-in-parallel-with-sessions).271Tous ces éléments s'appliquent que vous créiez le worktree avec `--worktree` ou avec `git worktree add`.

272 

273Dans une session worktree que vous démarrez depuis l'[application de bureau](/docs/fr/desktop#work-in-parallel-with-sessions), Claude Code lit la configuration du projet, comme les paramètres, les hooks, les skills, les agents, les commandes et les serveurs [`.mcp.json`](/docs/fr/mcp#project-scope), depuis la racine de l'extraction principale plutôt que depuis le worktree. Les commandes des hooks s'exécutent dans cette racine, et `${CLAUDE_PROJECT_DIR}` pointe vers elle. Pour accéder aux fichiers sur lesquels Claude travaille, lisez le chemin du worktree depuis le [champ d'entrée `cwd`](/docs/fr/hooks#common-input-fields) du hook. Les fichiers `CLAUDE.md` et `.claude/rules/` se chargent toujours depuis le worktree.

272 274 

273<h2 id="manage-worktrees-manually">275<h2 id="manage-worktrees-manually">

274 Gérer les worktrees manuellement276 Gérer les worktrees manuellement