4 4
5# Configurer les permissions5# Configurer les permissions
6 6
7> Contrôlez comment votre agent utilise les outils avec les modes de permission, les hooks et les règles de permission/refus déclaratives.7> Contrôlez comment votre agent utilise les outils avec les modes de permission, les hooks et les règles déclaratives d'autorisation/refus.
8 8
9Le Claude Agent SDK fournit des contrôles de permission pour gérer la façon dont Claude utilise les outils. Utilisez les modes de permission et les règles pour définir ce qui est autorisé automatiquement, et le callback [`canUseTool`](/docs/fr/agent-sdk/user-input) pour gérer tout le reste à l'exécution.9Le Claude Agent SDK fournit des contrôles de permission pour gérer la façon dont Claude utilise les outils. Utilisez les modes de permission et les règles pour définir ce qui est autorisé automatiquement, et le callback [`canUseTool`](/docs/fr/agent-sdk/user-input) pour gérer tout le reste à l'exécution.
10 10
16 16
17<Steps>17<Steps>
18 <Step title="Hooks">18 <Step title="Hooks">
19 Exécutez d'abord les [hooks](/docs/fr/agent-sdk/hooks). Un hook peut refuser l'appel directement ou le transmettre. Un hook qui retourne `allow` ne saute pas les règles de refus et de demande ci-dessous ; celles-ci sont évaluées indépendamment du résultat du hook. Un hook `PreToolUse` allow ne peut pas non plus approuver une suppression `rm` ou `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths).19 Exécutez d'abord les [hooks](/docs/fr/agent-sdk/hooks). Un hook peut refuser l'appel catégoriquement ou le transmettre. Un hook qui retourne `allow` ne contourne pas les règles de refus et de demande ci-dessous ; celles-ci sont évaluées indépendamment du résultat du hook. Un hook `PreToolUse` allow ne peut pas non plus approuver une suppression `rm` ou `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths).
20 </Step>20 </Step>
21 21
22 <Step title="Règles de refus">22 <Step title="Règles de refus">
23 Vérifiez les règles `deny` (à partir de `disallowed_tools` et [settings.json](/docs/fr/settings-reference#permission-settings)). Si une règle de refus correspond, l'outil est bloqué, même en mode `bypassPermissions`. Les règles de nom simple comme `Bash` suppriment l'outil du contexte de Claude avant que cette évaluation ne commence, donc seules les règles délimitées comme `Bash(rm *)` sont vérifiées à cette étape.23 Vérifiez les règles `deny` (à partir de `disallowed_tools` et [settings.json](/docs/fr/settings-reference#permission-settings)). Si une règle de refus correspond, l'outil est bloqué, même en mode `bypassPermissions`. Les règles de refus sans nom comme `Bash` suppriment l'outil du contexte de Claude avant que cette évaluation ne commence, donc seules les règles délimitées comme `Bash(rm *)` sont vérifiées à cette étape.
24 </Step>24 </Step>
25 25
26 <Step title="Règles de demande">26 <Step title="Règles de demande">
27 Vérifiez les règles `ask` à partir de [settings.json](/docs/fr/settings-reference#permission-settings). Si une règle de demande correspond, l'appel passe à votre callback [`canUseTool`](/docs/fr/agent-sdk/user-input) pour confirmation, même en mode `bypassPermissions`.27 Vérifiez les règles `ask` à partir de [settings.json](/docs/fr/settings-reference#permission-settings). Si une règle de demande correspond, l'appel passe à votre callback [`canUseTool`](/docs/fr/agent-sdk/user-input) pour confirmation, même en mode `bypassPermissions`.
28 28
29 Les outils qui nécessitent une interaction utilisateur se comportent de la même manière : `AskUserQuestion` et les outils MCP dont le serveur définit [`_meta["anthropic/requiresUserInteraction"]`](/docs/fr/mcp#require-approval-for-a-specific-tool) passent toujours au callback, même lorsqu'une règle d'autorisation correspond. En mode `dontAsk`, les deux cas sont refusés à la place, car ce mode ne demande jamais. L'annotation MCP nécessite Claude Code v2.1.199 ou ultérieur.29 Les outils qui nécessitent une interaction utilisateur se comportent de la même manière : `AskUserQuestion` et les outils MCP dont le serveur définit [`_meta["anthropic/requiresUserInteraction"]`](/docs/fr/mcp#require-approval-for-a-specific-tool) passent toujours au callback, même lorsqu'une règle allow correspond. En mode `dontAsk`, les deux cas sont refusés à la place, car ce mode ne demande jamais. L'annotation MCP nécessite Claude Code v2.1.199 ou ultérieur.
30 30
31 Les outils du connecteur [claude.ai](/docs/fr/mcp#organization-controls-on-connector-tools) que votre organisation a définis sur `ask` quittent également le flux à cette étape. Chaque appel passe au callback, même en mode `bypassPermissions` et même lorsqu'une règle d'autorisation correspond. Le callback reçoit la raison `Your organization requires approval for this tool`. En mode `dontAsk`, l'appel est refusé à la place, car ce mode ne demande jamais.31 Les outils du connecteur [claude.ai](/docs/fr/mcp#organization-controls-on-connector-tools) que votre organisation a définis sur `ask` quittent également le flux à cette étape. Chaque appel passe au callback, même en mode `bypassPermissions` et même lorsqu'une règle allow correspond. Le callback reçoit la raison `Your organization requires approval for this tool`. En mode `dontAsk`, l'appel est refusé à la place, car ce mode ne demande jamais.
32 </Step>32 </Step>
33 33
34 <Step title="Mode de permission">34 <Step title="Mode de permission">
35 Appliquez le [mode de permission](#permission-modes) actif :35 Appliquez le [mode de permission](#permission-modes) actif :
36 36
37 * En mode `bypassPermissions`, Claude Code approuve tout ce qui atteint cette étape sauf les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths), qui passent à la place.37 * En mode `bypassPermissions`, Claude Code approuve tout ce qui atteint cette étape sauf les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths), qui passent à la place.
38 * En mode `acceptEdits`, Claude Code approuve les opérations de fichiers listées sous [Mode d'acceptation des modifications](#accept-edits-mode-acceptedits).38 * En mode `acceptEdits`, Claude Code approuve les opérations de fichier listées sous [Mode Accept edits](#accept-edits-mode-acceptedits).
39 * En mode `plan`, Claude Code achemine les outils d'édition de fichiers et d'écriture shell vers votre callback `canUseTool` indépendamment des règles d'autorisation, donc les opérations d'écriture ne peuvent pas être approuvées automatiquement lors de la planification.39 * En mode `plan`, Claude Code envoie les outils de modification de fichier et d'écriture shell à votre callback `canUseTool` indépendamment des règles allow, afin que les opérations d'écriture ne puissent pas être approuvées automatiquement lors de la planification.
40 * Dans les autres modes, la demande passe au suivant.40 * Dans les autres modes, la demande passe.
41 </Step>41 </Step>
42 42
43 <Step title="Règles d'autorisation">43 <Step title="Règles d'autorisation">
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 également résolu à cette étape, 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). Les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths) ne sont jamais approuvées par une règle d'autorisation : elles atteignent votre callback dans les modes qui demandent, vont au [classificateur](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) en mode `auto` sur Claude Code v2.1.218 ou ultérieur, et sont refusées en mode `dontAsk`.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). 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 : elles atteignent votre callback dans les modes qui demandent, vont au [classificateur](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) en mode `auto` sur Claude Code v2.1.218 ou ultérieur, et sont refusées en mode `dontAsk`.
45 </Step>45 </Step>
46 46
47 <Step title="Callback canUseTool">47 <Step title="Callback canUseTool">
48 Si aucune des étapes ci-dessus ne résout le problème, appelez votre callback [`canUseTool`](/docs/fr/agent-sdk/user-input) pour une décision. En mode `dontAsk`, cette étape est ignorée et l'outil est refusé.48 Si aucune des étapes ci-dessus ne l'a résolu, appelez votre callback [`canUseTool`](/docs/fr/agent-sdk/user-input) pour une décision. En mode `dontAsk`, cette étape est ignorée et l'outil est refusé.
49 49
50 Dans le SDK TypeScript, si vous définissez [`permissionPrompts: 'none'`](/docs/fr/agent-sdk/typescript#options), votre callback n'est pas appelé à cette étape. Un hook [`PermissionRequest`](/docs/fr/hooks#permissionrequest) a toujours une chance de décider, et s'il ne le fait pas, Claude Code refuse l'appel. L'option nécessite Claude Code v2.1.259 ou ultérieur.50 Dans le SDK TypeScript, si vous définissez [`permissionPrompts: 'none'`](/docs/fr/agent-sdk/typescript#options), votre callback n'est pas appelé à cette étape. Un hook [`PermissionRequest`](/docs/fr/hooks#permissionrequest) a toujours une chance de décider, et s'il ne le fait pas, Claude Code refuse l'appel. L'option nécessite Claude Code v2.1.259 ou ultérieur.
51 </Step>51 </Step>
52</Steps>52</Steps>
53 53
54<img src="https://mintcdn.com/claude-code/jYgs7qigNjO1Badj/images/agent-sdk/permissions-flow.svg?fit=max&auto=format&n=jYgs7qigNjO1Badj&q=85&s=c771ad9085b1277d3708027a49c744bc" className="dark:hidden" alt="Diagramme du flux d'évaluation des permissions en six étapes correspondant aux étapes ci-dessus : une demande d'outil passe par les hooks, les règles de refus, les règles de demande, le mode de permission, les règles d'autorisation et canUseTool. Les hooks, les règles de refus et canUseTool peuvent router vers Bloqué ; le contournement du mode de permission, les règles d'autorisation et canUseTool peuvent router vers Exécuter ; les règles de demande routent vers canUseTool." width="1180" height="260" data-path="images/agent-sdk/permissions-flow.svg" />54<img src="https://mintcdn.com/claude-code/jYgs7qigNjO1Badj/images/agent-sdk/permissions-flow.svg?fit=max&auto=format&n=jYgs7qigNjO1Badj&q=85&s=c771ad9085b1277d3708027a49c744bc" className="dark:hidden" alt="Diagramme du flux d'évaluation des permissions en six étapes correspondant aux étapes ci-dessus : une demande d'outil passe par les hooks, les règles de refus, les règles de demande, le mode de permission, les règles d'autorisation et canUseTool. Les hooks, les règles de refus et canUseTool peuvent router vers Blocked ; le contournement du mode de permission, les règles d'autorisation et canUseTool peuvent router vers Execute ; les règles de demande routent vers canUseTool." width="1180" height="260" data-path="images/agent-sdk/permissions-flow.svg" />
55 55
56<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/agent-sdk/permissions-flow-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=e53a91e9059cbf51852b7cedb4dd4251" className="hidden dark:block" alt="Diagramme du flux d'évaluation des permissions en six étapes correspondant aux étapes ci-dessus : une demande d'outil passe par les hooks, les règles de refus, les règles de demande, le mode de permission, les règles d'autorisation et canUseTool. Les hooks, les règles de refus et canUseTool peuvent router vers Bloqué ; le contournement du mode de permission, les règles d'autorisation et canUseTool peuvent router vers Exécuter ; les règles de demande routent vers canUseTool." width="1180" height="260" data-path="images/agent-sdk/permissions-flow-dark.svg" />56<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/agent-sdk/permissions-flow-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=e53a91e9059cbf51852b7cedb4dd4251" className="hidden dark:block" alt="Diagramme du flux d'évaluation des permissions en six étapes correspondant aux étapes ci-dessus : une demande d'outil passe par les hooks, les règles de refus, les règles de demande, le mode de permission, les règles d'autorisation et canUseTool. Les hooks, les règles de refus et canUseTool peuvent router vers Blocked ; le contournement du mode de permission, les règles d'autorisation et canUseTool peuvent router vers Execute ; les règles de demande routent vers canUseTool." width="1180" height="260" data-path="images/agent-sdk/permissions-flow-dark.svg" />
57 57
58Si 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 du 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 :58Si 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 :
59 59
60* `permissionMode: 'bypassPermissions'`, qui approuve automatiquement chaque appel qui atteint l'étape du mode de permission à part les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves)60* `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)
61* Chaque entrée `allowedTools` simple comme `"Read"`, qui approuve automatiquement cet outil entier avant que le callback ne soit consulté, à part les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves)61* 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)
62 62
63Les 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 des fichiers de paramètres ne sont pas visibles pour la vérification.63Les 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.
64 64
65Écoutez avec `process.on('warning', ...)` et faites correspondre le code pour le journaliser ou le supprimer. Pour contrôler chaque appel d'outil indépendamment du mode et des règles, utilisez plutôt un [hook `PreToolUse`](/docs/fr/agent-sdk/hooks).65Écoutez avec `process.on('warning', ...)` et faites correspondre le code pour le journaliser ou le supprimer. Pour contrôler chaque appel d'outil indépendamment du mode et des règles, utilisez plutôt un [hook `PreToolUse`](/docs/fr/agent-sdk/hooks).
66 66
67Cette page se concentre sur les **règles d'autorisation et de refus** et les **modes de permission**. Pour les autres étapes :67Cette page se concentre sur les **règles d'autorisation et de refus** et les **modes de permission**. Pour les autres étapes :
68 68
69* **Hooks :** exécutez du code personnalisé pour autoriser, refuser ou modifier les demandes d'outils. Consultez [Contrôler l'exécution avec les hooks](/docs/fr/agent-sdk/hooks).69* **Hooks :** exécutez du code personnalisé pour autoriser, refuser ou modifier les demandes d'outils. Voir [Contrôler l'exécution avec les hooks](/docs/fr/agent-sdk/hooks).
70* **Callback canUseTool :** invitez les utilisateurs à approuver à l'exécution, lorsqu'aucune étape antérieure ne résout l'appel. Consultez [Gérer les approbations et les entrées utilisateur](/docs/fr/agent-sdk/user-input).70* **Callback canUseTool :** invitez les utilisateurs à approuver au moment de l'exécution, lorsqu'aucune étape antérieure ne résout l'appel. Voir [Gérer les approbations et l'entrée utilisateur](/docs/fr/agent-sdk/user-input).
71 71
72<h2 id="allow-and-deny-rules">72<h2 id="allow-and-deny-rules">
73 Règles d'autorisation et de refus73 Règles d'autorisation et de refus
74</h2>74</h2>
75 75
76`allowed_tools` et `disallowed_tools` (TypeScript : `allowedTools` / `disallowedTools`) ajoutent des entrées aux listes de règles d'autorisation et de refus dans le flux d'évaluation ci-dessus. Si vous nommez l'un des [outils de suivi des tâches](/docs/fr/agent-sdk/todo-tracking#model-availability) dans `allowed_tools`, Claude Code opte également la session. Tout autre outil non listé dans `allowed_tools` est toujours disponible pour Claude, et un appel à celui-ci qui nécessite une approbation passe au mode de permission. Les règles de refus se comportent différemment selon qu'elles nomment un outil ou délimitent un motif au sein de celui-ci.76`allowed_tools` et `disallowed_tools` (TypeScript : `allowedTools` / `disallowedTools`) ajoutent des entrées aux listes de règles d'autorisation et de refus dans le flux d'évaluation ci-dessus. Si vous nommez l'un des [outils de suivi des tâches](/docs/fr/agent-sdk/todo-tracking#model-availability) dans `allowed_tools`, Claude Code opte également pour la session. Tout autre outil non listé dans `allowed_tools` reste disponible pour Claude, et un appel à celui-ci qui nécessite une approbation tombe dans le mode de permission. Les règles de refus se comportent différemment selon qu'elles nomment un outil ou délimitent un motif au sein de celui-ci.
77 77
78| Option | Effet |78| Option | Effet |
79| :-------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |79| :-------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
80| `allowed_tools=["Read", "Grep"]` | `Read` et `Grep` sont auto-approuvés. Les autres outils non listés ici existent toujours, et les appels à ceux-ci qui nécessitent une approbation passent au mode de permission et à `canUseTool`. |80| `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`. |
81| `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. |81| `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. |
82| `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`, passent au mode de permission. |82| `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. |
83| `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. |83| `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. |
84 84
85Les règles d'autorisation acceptent les globs de noms d'outils uniquement après un préfixe littéral `mcp__<server>__`. Le segment serveur doit être sans glob afin que la règle nomme un serveur spécifique que vous avez configuré : `mcp__puppeteer__*` correspond à chaque outil du serveur `puppeteer`, et `mcp__github__get_*` correspond à ses outils `get_`. Une entrée non ancrée comme `allowed_tools=["*"]` ou `allowed_tools=["mcp__*"]` est ignorée avec un avertissement au démarrage et n'auto-approuve rien.85Les règles d'autorisation acceptent les globs de noms d'outils uniquement après un préfixe littéral `mcp__<server>__`. Le segment serveur doit être sans glob afin que la règle nomme un serveur spécifique que vous avez configuré : `mcp__puppeteer__*` correspond à chaque outil du serveur `puppeteer`, et `mcp__github__get_*` correspond à ses outils `get_`. Une entrée non ancrée comme `allowed_tools=["*"]` ou `allowed_tools=["mcp__*"]` est ignorée avec un avertissement au démarrage et n'approuve automatiquement rien.
86 86
87Les règles délimitées pour `Read` et `Edit` prennent un motif de chemin. Les règles `Edit(path)` régissent tous les outils intégrés qui écrivent des fichiers, y compris `Write` et `NotebookEdit` ; une règle `Write(path)` n'est jamais mise en correspondance par les vérifications de permission de fichier.87Les règles délimitées pour `Read` et `Edit` prennent un motif de chemin. Les règles `Edit(path)` régissent tous les outils intégrés qui écrivent des fichiers, y compris `Write` et `NotebookEdit` ; une règle `Write(path)` n'est jamais mise en correspondance par les vérifications de permission de fichier.
88 88
89Utilisez `//path` pour un chemin de système de fichiers absolu : une règle de refus de `Edit(//secrets/**)` bloque les écritures n'importe où sous `/secrets` sur le disque. Avec une seule barre oblique, `Edit(/secrets/**)` s'ancre à la source de la règle à la place. Pour les règles transmises via `allowed_tools` ou `disallowed_tools`, cela signifie le répertoire de travail de la session, de sorte que la règle ne bloque pas `/secrets` sur le disque. Consultez [Règles Read et Edit](/docs/fr/permissions#read-and-edit) pour les quatre formes d'ancrage et la façon dont les règles des fichiers de paramètres se résolvent.89Utilisez `//path` pour un chemin du système de fichiers absolu : une règle de refus de `Edit(//secrets/**)` bloque les écritures n'importe où sous `/secrets` sur le disque. Avec une seule barre oblique, `Edit(/secrets/**)` s'ancre à la source de la règle à la place. Pour les règles transmises via `allowed_tools` ou `disallowed_tools`, cela signifie le répertoire de travail de la session, donc la règle ne bloque pas `/secrets` sur le disque. Voir [Règles Read et Edit](/docs/fr/permissions#read-and-edit) pour les quatre formes d'ancrage et comment les règles des fichiers de paramètres se résolvent.
90 90
91<Warning>91<Warning>
92 **Les outils auto-approuvés ne parviennent jamais à `canUseTool`.** Un appel d'outil approuvé à n'importe quelle étape antérieure, par `acceptEdits` ou `bypassPermissions`, ou par une règle d'autorisation, ignore votre rappel `canUseTool`, de sorte que les vérifications de permission que vous y mettez sont silencieusement contournées pour cet outil. `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), et les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths) parviennent toujours au rappel, même lorsqu'une règle d'autorisation correspond. En mode `auto`, les suppressions de chemin critique vont au [classificateur](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) au lieu du rappel, tandis que les autres appels listés ici parviennent toujours à celui-ci ; le routage du classificateur nécessite Claude Code v2.1.218 ou ultérieur. En mode `dontAsk`, ces appels sont refusés à la place, sans invoquer le rappel.92 **Les outils approuvés automatiquement n'atteignent jamais `canUseTool`.** Un appel d'outil approuvé à n'importe quelle étape antérieure, par `acceptEdits` ou `bypassPermissions`, ou par une règle d'autorisation, ignore votre rappel `canUseTool`, donc les vérifications de permission que vous y mettez sont silencieusement contournées pour cet outil. `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), et les suppressions `rm` et `rmdir` ciblant un [chemin critique](/docs/fr/permission-modes#critical-paths) atteignent toujours le rappel, même lorsqu'une règle d'autorisation correspond. En mode `auto`, les suppressions de chemin critique vont au [classificateur](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) au lieu du rappel, tandis que les autres appels listés ici l'atteignent toujours ; le routage du classificateur nécessite Claude Code v2.1.218 ou ultérieur. En mode `dontAsk`, ces appels sont refusés à la place, sans invoquer le rappel.
93 93
94 La couverture dépend de la forme de l'entrée : un nom nu comme `Read` ou `mcp__github__get_issue` auto-approuve chaque appel à cet outil en dehors des exceptions ci-dessus, tandis qu'une règle délimitée comme `Bash(npm test *)` auto-approuve uniquement les appels correspondants, et les autres appels `Bash` qui nécessitent une approbation passent toujours au 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`.94 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`.
95</Warning>95</Warning>
96 96
97Pour un agent verrouillé, associez `allowedTools` avec `permissionMode: "dontAsk"` :97Pour un agent verrouillé, associez `allowedTools` avec `permissionMode: "dontAsk"` :
103};103};
104```104```
105 105
106Les outils listés sont approuvés, à l'exception des [actions qu'aucun mode n'auto-approuve](/docs/fr/permission-modes#actions-no-mode-auto-approves), et tout autre appel qui demanderait une approbation 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 de s'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`.106Les 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`.
107 107
108<Warning>108<Warning>
109 **`allowed_tools` ne contraint pas `bypassPermissions`.** `allowed_tools` pré-approuve les outils que vous listez. Les autres outils non listés ne correspondent à aucune règle d'autorisation et passent au mode de permission, où `bypassPermissions` les approuve. Définir `allowed_tools=["Read"]` avec `permission_mode="bypassPermissions"` approuve toujours tous les outils, y compris `Bash`, `Write` et `Edit`. Si vous avez besoin de `bypassPermissions` mais que vous voulez que certains outils soient bloqués, utilisez `disallowed_tools`.109 **`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`.
110</Warning>110</Warning>
111 111
112Vous pouvez également configurer les règles d'autorisation, de refus et de demande de manière déclarative dans `.claude/settings.json`. Ces règles sont lues lorsque la source de paramètre `project` est activée, ce qui est le cas pour les options `query()` par défaut. Si vous définissez `setting_sources` (TypeScript : `settingSources`) explicitement, incluez `"project"` pour qu'elles s'appliquent. Consultez [Paramètres de permission](/docs/fr/settings-reference#permission-settings) pour la syntaxe des règles.112Vous pouvez également configurer les règles d'autorisation, de refus et de demande de manière déclarative dans `.claude/settings.json`. Ces règles sont lues lorsque la source de paramètre `project` est activée, ce qu'elle est pour les options `query()` par défaut. Si vous définissez `setting_sources` (TypeScript : `settingSources`) explicitement, incluez `"project"` pour qu'elles s'appliquent. Voir [Paramètres de permission](/docs/fr/settings-reference#permission-settings) pour la syntaxe des règles.
113 113
114<h2 id="permission-modes">114<h2 id="permission-modes">
115 Modes de permission115 Modes de permission
116</h2>116</h2>
117 117
118Les modes de permission fournissent un contrôle global sur la façon dont Claude utilise les outils. Vous pouvez définir le mode de permission lors de l'appel de `query()` ou le modifier dynamiquement pendant les sessions de streaming.118Les modes de permission offrent un contrôle global sur la façon dont Claude utilise les outils. Vous pouvez définir le mode de permission lors de l'appel de `query()` ou le modifier dynamiquement pendant les sessions de streaming.
119 119
120<h3 id="available-modes">120<h3 id="available-modes">
121 Modes disponibles121 Modes disponibles
122</h3>122</h3>
123 123
124Le SDK supporte ces modes de permission :124Le SDK prend en charge ces modes de permission :
125 125
126| Mode | Description | Comportement de l'outil |126| Mode | Description | Comportement des outils |
127| :------------------ | :------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |127| :------------------ | :----------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
128| `default` | Comportement de permission standard | Pas d'auto-approbations basées sur le mode ; les appels qui nécessitent une approbation et ne correspondent à aucune règle d'autorisation déclenchent votre callback `canUseTool` |128| `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` |
129| `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éfini 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é |129| `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é |
130| `acceptEdits` | Auto-accepter 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 |130| `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 |
131| `bypassPermissions` | Contourner les contrôles de permission | Les outils s'exécutent sans invites de permission, sauf pour les [actions qu'aucun mode n'auto-approuve](/docs/fr/permission-modes#actions-no-mode-auto-approves). À utiliser avec prudence |131| `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 |
132| `plan` | Mode de planification | Claude explore et planifie sans modifier vos fichiers source ; les modifications de fichiers ne sont jamais auto-approuvées et demandent via votre callback `canUseTool` |132| `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` |
133| `auto` | Approbations classées par modèle | Un classificateur de modèle approuve ou refuse les invites de permission. Consultez [Mode Auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) pour la disponibilité |133| `auto` | Approbations classées par le modèle | Un classificateur de modèle approuve ou refuse les invites de permission. Voir [Mode Auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) pour la disponibilité |
134 134
135<Warning>135<Warning>
136 **Héritage des sous-agents :** Un sous-agent s'exécute dans le mode de permission de la session parent sauf si vous définissez `permissionMode` sur son [`AgentDefinition`](/docs/fr/agent-sdk/typescript#agentdefinition) et que la session parent est en mode `default`, `dontAsk`, ou `plan`. Même dans ce cas, Claude Code n'applique jamais une valeur `"bypassPermissions"`. Un sous-agent s'exécute en mode `bypassPermissions` uniquement lorsque la session parent elle-même le fait. L'exception `bypassPermissions` nécessite Claude Code v2.1.267 ou ultérieur.136 **Héritage des sous-agents :** Un sous-agent s'exécute dans le mode de permission de la session parent sauf si vous définissez `permissionMode` sur son [`AgentDefinition`](/docs/fr/agent-sdk/typescript#agentdefinition) et que la session parent est en mode `default`, `dontAsk` ou `plan`. Même dans ce cas, Claude Code n'applique jamais une valeur `"bypassPermissions"`. Un sous-agent s'exécute en mode `bypassPermissions` uniquement lorsque la session parent elle-même le fait. L'exception `bypassPermissions` nécessite Claude Code v2.1.267 ou ultérieur.
137 137
138 Les sous-agents peuvent avoir des invites système différentes et un comportement moins contraint que votre agent principal, donc hériter de `bypassPermissions` leur accorde un accès système complet et autonome. Les [actions qu'aucun mode n'auto-approuve](/docs/fr/permission-modes#actions-no-mode-auto-approves) s'appliquent toujours.138 Les sous-agents peuvent avoir des invites système différentes et un comportement moins contraint que votre agent principal, donc hériter de `bypassPermissions` leur accorde un accès système complet et autonome. Les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves) s'appliquent toujours.
139</Warning>139</Warning>
140 140
141<h3 id="set-permission-mode">141<h3 id="set-permission-mode">
254 Mode d'acceptation des modifications (`acceptEdits`)254 Mode d'acceptation des modifications (`acceptEdits`)
255</h4>255</h4>
256 256
257Auto-approuve les opérations de fichiers afin que Claude puisse modifier le code sans demander. Les autres outils (comme les commandes Bash qui ne sont pas des opérations du système de fichiers) nécessitent toujours des permissions normales.257Approuve automatiquement les opérations de fichiers afin que Claude puisse modifier le code sans demander. Les autres outils (comme les commandes Bash qui ne sont pas des opérations du système de fichiers) nécessitent toujours des permissions normales.
258 258
259**Opérations auto-approuvées :**259**Opérations approuvées automatiquement :**
260 260
261* Modifications de fichiers (outils Edit, Write)261* Modifications de fichiers (outils Edit, Write)
262* Commandes du système de fichiers : `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp`, `sed`262* Commandes du système de fichiers : `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp`, `sed`
263 263
264Les deux s'appliquent uniquement aux chemins à l'intérieur du répertoire de travail ou de `additionalDirectories`. En mode `acceptEdits`, Claude Code n'auto-approuve pas la demande lorsque Claude :264Les deux s'appliquent uniquement aux chemins à l'intérieur du répertoire de travail ou de `additionalDirectories`. En mode `acceptEdits`, Claude Code n'approuve pas automatiquement la demande lorsque Claude :
265 265
266* Travaille sur un chemin en dehors de cette portée266* Travaille sur un chemin en dehors de cette portée
267* Écrit vers un chemin protégé267* Écrit dans un chemin protégé
268* Supprime un [chemin critique](/docs/fr/permission-modes#critical-paths) avec `rm` ou `rmdir`268* Supprime un [chemin critique](/docs/fr/permission-modes#critical-paths) avec `rm` ou `rmdir`
269 269
270**À utiliser quand :** vous faites confiance aux modifications de Claude et voulez une itération plus rapide, par exemple lors du prototypage ou lorsque vous travaillez dans un répertoire isolé.270**À utiliser quand :** vous faites confiance aux modifications de Claude et souhaitez une itération plus rapide, par exemple lors du prototypage ou lorsque vous travaillez dans un répertoire isolé.
271 271
272<h4 id="don’t-ask-mode-dontask">272<h4 id="don’t-ask-mode-dontask">
273 Mode de non-demande (`dontAsk`)273 Mode ne pas demander (`dontAsk`)
274</h4>274</h4>
275 275
276Convertit toute invite de permission en refus, sans appeler `canUseTool`. Les outils pré-approuvés par `allowed_tools`, les règles d'autorisation de `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 à l'intérieur de vos répertoires de travail et les appels à `Agent`. Les outils connecteur [que votre organisation a défini 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 allow hook `PreToolUse` ne supprime pas non plus une suppression de chemin critique.276Convertit 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.
277 277
278**À utiliser quand :** vous voulez une surface d'outil fixe et explicite pour un agent sans interface et préférez un refus catégorique à une dépendance silencieuse à l'absence de `canUseTool`.278**À 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`.
279 279
280<h4 id="bypass-permissions-mode-bypasspermissions">280<h4 id="bypass-permissions-mode-bypasspermissions">
281 Mode de contournement des permissions (`bypassPermissions`)281 Mode contournement des permissions (`bypassPermissions`)
282</h4>282</h4>
283 283
284Auto-approuve les usages d'outils sans invites, sauf les cas énumérés dans l'avertissement ci-dessous. Les hooks s'exécutent toujours et peuvent bloquer les opérations si nécessaire.284Approuve automatiquement les utilisations d'outils sans demander, sauf les cas énumérés dans l'avertissement ci-dessous. Les hooks s'exécutent toujours et peuvent bloquer les opérations si nécessaire.
285 285
286<Warning>286<Warning>
287 À utiliser avec une extrême prudence. Claude a un accès système complet dans ce mode. À utiliser uniquement dans des environnements contrôlés où vous faites confiance à toutes les opérations possibles.287 À utiliser avec une extrême prudence. Claude a un accès système complet dans ce mode. À utiliser uniquement dans des environnements contrôlés où vous faites confiance à toutes les opérations possibles.
288 288
289 `allowed_tools` ne contraint pas ce mode. Tous les outils sont approuvés, pas seulement ceux que vous avez listés. Ces contrôles s'appliquent toujours :289 `allowed_tools` ne contraint pas ce mode. Chaque outil est approuvé, pas seulement ceux que vous avez énumérés. Ces contrôles s'appliquent toujours :
290 290
291 * Les règles de refus, les règles `ask` explicites, et les hooks sont évalués avant la vérification du mode et peuvent toujours bloquer un outil.291 * Les règles de refus, les règles explicites `ask` et les hooks sont évalués avant la vérification du mode et peuvent toujours bloquer un outil.
292 * Les outils connecteur [que votre organisation a défini 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) tombent toujours dans votre callback `canUseTool`.292 * 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) reviennent toujours à votre rappel `canUseTool`.
293 * Les [protections de messagerie inter-sessions](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) s'appliquent toujours.293 * Les [protections de messagerie inter-sessions](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) s'appliquent toujours.
294</Warning>294</Warning>
295 295
297 Mode de planification (`plan`)297 Mode de planification (`plan`)
298</h4>298</h4>
299 299
300Claude explore la base de code et produit un plan sans modifier vos fichiers source. Les outils en lecture seule s'exécutent comme en mode `default`.300Claude explore la base de code et produit un plan sans modifier vos fichiers source. Les outils en lecture seule s'exécutent comme ils le font en mode de permission `default`.
301 301
302Les modifications de fichiers ne sont jamais auto-approuvées en mode plan, même lorsqu'une règle d'autorisation correspond. Elles demandent via votre callback `canUseTool` à la place. Sur Claude Code v2.1.212 ou ultérieur, les commandes shell qui modifient les fichiers, telles que `touch` et `rm`, atteignent votre callback `canUseTool` de la même manière.302Les modifications de fichiers ne sont jamais approuvées automatiquement en mode plan, même lorsqu'une règle d'autorisation correspond. Elles demandent via votre rappel `canUseTool` à la place. Sur Claude Code v2.1.212 ou ultérieur, les commandes shell qui modifient les fichiers, telles que `touch` et `rm`, atteignent votre rappel `canUseTool` de la même manière.
303 303
304Claude peut utiliser `AskUserQuestion` pour clarifier les exigences avant de finaliser le plan. Consultez [Gérer les approbations et les entrées utilisateur](/docs/fr/agent-sdk/user-input#handle-clarifying-questions) pour gérer ces invites.304Claude peut utiliser `AskUserQuestion` pour clarifier les exigences avant de finaliser le plan. Voir [Gérer les approbations et les entrées utilisateur](/docs/fr/agent-sdk/user-input#handle-clarifying-questions) pour gérer ces invites.
305 305
306**À utiliser quand :** vous voulez que Claude propose des modifications sans les exécuter, par exemple lors d'une révision de code ou lorsque vous devez approuver les modifications avant qu'elles ne soient apportées.306**À utiliser quand :** vous souhaitez que Claude propose des modifications sans les exécuter, par exemple lors d'une révision de code ou lorsque vous devez approuver les modifications avant qu'elles ne soient apportées.
307 307
308<h2 id="related-resources">308<h2 id="related-resources">
309 Ressources connexes309 Ressources connexes
312Pour les autres étapes du flux d'évaluation des permissions :312Pour les autres étapes du flux d'évaluation des permissions :
313 313
314* [Gérer les approbations et les entrées utilisateur](/docs/fr/agent-sdk/user-input) : invites d'approbation interactives et questions de clarification314* [Gérer les approbations et les entrées utilisateur](/docs/fr/agent-sdk/user-input) : invites d'approbation interactives et questions de clarification
315* [Guide des hooks](/docs/fr/agent-sdk/hooks) : exécutez du code personnalisé à des points clés du cycle de vie de l'agent315* [Guide des hooks](/docs/fr/agent-sdk/hooks) : exécuter du code personnalisé aux points clés du cycle de vie de l'agent
316* [Règles de permission](/docs/fr/settings-reference#permission-settings) : règles d'autorisation/refus déclaratives dans `settings.json`316* [Règles de permission](/docs/fr/settings-reference#permission-settings) : règles déclaratives d'autorisation/refus dans `settings.json`