SpyBara
Go Premium

agent-sdk/permissions.md 2026-06-29 23:02 UTC to 2026-06-30 23:02 UTC

6 added, 2 removed.

2026
Tue 30 23:02 Mon 29 23:02 Sat 27 01:01 Fri 26 23:00 Thu 25 23:58 Wed 24 22:02 Tue 23 22:00 Mon 22 23:59 Fri 19 22:58 Thu 18 22:00 Wed 17 17:02 Tue 16 21:57 Mon 15 23:02 Sat 13 21:59 Fri 12 22:00 Thu 11 23:01 Wed 10 23:57 Tue 9 06:34 Mon 8 06:52 Sat 6 06:24 Fri 5 06:45 Thu 4 06:52 Wed 3 06:53 Tue 2 06:51

Configurer les permissions

Contrôlez comment votre agent utilise les outils avec les modes de permission, les hooks et les règles de permission/refus déclaratives.

Le 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 pour gérer tout le reste à l'exécution.

Comment les permissions sont évaluées

Lorsque Claude demande un outil, le SDK vérifie les permissions dans cet ordre :

1

Hooks

Exécutez d'abord les 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.

2

Règles de refus

Vérifiez les règles deny (à partir de disallowed_tools et settings.json). 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.

3

Règles de demande

Vérifiez les règles ask à partir de settings.json. Si une règle de demande correspond, l'appel passe à votre callback canUseTool pour confirmation, même en mode bypassPermissions. En mode dontAsk, une règle de demande correspondante est refusée à la place, car ce mode ne demande jamais.

4

Mode de permission

Appliquez le mode de permission actif. bypassPermissions approuve tout ce qui atteint cette étape. acceptEdits approuve les opérations de fichiers. plan 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. Les autres modes passent au suivant.

5

Règles d'autorisation

Vérifiez les règles allow (à partir de allowed_tools et settings.json). Si une règle correspond, l'outil est approuvé.

6

Callback canUseTool

Si aucune des étapes ci-dessus ne résout le problème, appelez votre callback canUseTool pour une décision. En mode dontAsk, cette étape est ignorée et l'outil est refusé.

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.

Cette page se concentre sur les règles d'autorisation et de refus et les modes de permission. Pour les autres étapes :

Règles d'autorisation et de refus

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. Les règles d'autorisation affectent uniquement l'approbation : un outil non listé dans allowed_tools est toujours disponible pour Claude et 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.

Option Effet
allowed_tools=["Read", "Grep"] Read et Grep sont auto-approuvés. Les outils non listés ici existent toujours et passent au mode de permission et à canUseTool.
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.
disallowed_tools=["Bash(rm *)"] Bash reste disponible. Les appels correspondant à rm * sont refusés dans tous les modes de permission, y compris bypassPermissions. Les autres appels Bash passent au mode de permission.
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.

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

Pour un agent verrouillé, associez allowedTools avec permissionMode: "dontAsk". Les outils listés sont approuvés ; tout le reste est refusé directement au lieu de demander :

const options = {
  allowedTools: ["Read", "Glob", "Grep"],
  permissionMode: "dontAsk"
};

Vous 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 pour la syntaxe des règles.

Modes de permission

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

Modes disponibles

Le SDK supporte ces modes de permission :

Mode Description Comportement de l'outil
default Comportement de permission standard Pas d'auto-approbations ; les outils non appariés déclenchent votre callback canUseTool
dontAsk Refuser au lieu de demander Tout ce qui n'est pas pré-approuvé par allowed_tools ou les règles est refusé ; canUseTool n'est jamais appelé
acceptEdits Auto-accepter les modifications de fichiers Les modifications de fichiers et les opérations du système de fichiers (mkdir, rm, mv, etc.) sont automatiquement approuvées
bypassPermissions Contourner les contrôles de permission Les outils s'exécutent sans invites de permission, sauf si une règle ask explicite correspond (à utiliser avec prudence)
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
auto (TypeScript uniquement) Approbations classées par modèle Un classificateur de modèle approuve ou refuse chaque appel d'outil. Consultez Mode Auto pour la disponibilité

Définir le mode de permission

Vous pouvez définir le mode de permission une fois au démarrage d'une requête, ou le modifier dynamiquement pendant que la session est active.

Passez permission_mode (Python) ou permissionMode (TypeScript) lors de la création d'une requête. Ce mode s'applique pour toute la session sauf s'il est modifié dynamiquement.

import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions


async def main():
async for message in query(
prompt="Help me refactor this code",
options=ClaudeAgentOptions(
permission_mode="default",  # Set the mode here
),
):
if hasattr(message, "result"):
print(message.result)


asyncio.run(main())

Détails des modes

Mode d'acceptation des modifications (`acceptEdits`)

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

Opérations auto-approuvées :

  • Modifications de fichiers (outils Edit, Write)
  • Commandes du système de fichiers : mkdir, touch, rm, rmdir, mv, cp, sed

Les deux s'appliquent uniquement aux chemins à l'intérieur du répertoire de travail ou de additionalDirectories. Les chemins en dehors de cette portée et les écritures vers des chemins protégés demandent toujours.

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

Mode de non-demande (`dontAsk`)

Convertit toute invite de permission en refus. Les outils pré-approuvés par allowed_tools, les règles d'autorisation de settings.json ou un hook s'exécutent normalement. Tout le reste est refusé sans appeler canUseTool.

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

Mode de contournement des permissions (`bypassPermissions`)

Auto-approuve tous les usages d'outils sans invites. Les hooks s'exécutent toujours et peuvent bloquer les opérations si nécessaire.

Mode de planification (`plan`)

Claude 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 par défaut. Les 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. Claude peut utiliser AskUserQuestion pour clarifier les exigences avant de finaliser le plan. Consultez Gérer les approbations et les entrées utilisateur pour gérer ces invites.

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

Pour les autres étapes du flux d'évaluation des permissions :