Permissions du SDK
Le SDK Claude Agent fournit des contrôles de permissions puissants qui vous permettent de gérer comment Claude utilise les outils dans votre application. Ce guide couvre comment implémenter des systèmes de permissions en utilisant le callbackcanUseTool, les hooks, et les règles de permissions settings.json. Pour la documentation API complète, voir la référence du SDK TypeScript.
Vue d’ensemble
Le SDK Claude Agent fournit quatre façons complémentaires de contrôler l’utilisation des outils :- Modes de Permission - Paramètres de comportement de permission globaux qui affectent tous les outils
- callback canUseTool - Gestionnaire de permissions d’exécution pour les cas non couverts par d’autres règles
- Hooks - Contrôle fin sur chaque exécution d’outil avec une logique personnalisée
- Règles de permissions (settings.json) - Règles déclaratives d’autorisation/refus avec analyse intégrée des commandes bash
- Modes de permission - Définir le comportement global des permissions (planification, acceptation automatique des modifications, contournement des vérifications)
canUseTool- Approbation dynamique pour les cas non couverts, demande l’autorisation à l’utilisateur- Hooks - Contrôle programmatique sur toutes les exécutions d’outils
- Règles de permissions - Politiques statiques avec analyse intelligente des commandes bash
Diagramme de Flux des Permissions
Ordre de Traitement : Hook PreToolUse → Règles de Refus → Règles d’Autorisation → Règles de Demande → Vérification du Mode de Permission → Callback canUseTool → Hook PostToolUseModes 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 dequery() ou le changer dynamiquement pendant les sessions de streaming.
Modes Disponibles
Le SDK prend en charge quatre modes de permission, chacun avec un comportement différent :| Mode | Description | Comportement des Outils |
|---|---|---|
default | Comportement de permission standard | Les vérifications de permissions normales s’appliquent |
plan | Mode planification - pas d’exécution | Claude ne peut utiliser que des outils en lecture seule ; présente un plan avant l’exécution (Actuellement non pris en charge dans le SDK) |
acceptEdits | Accepter automatiquement les modifications de fichiers | Les modifications de fichiers et les opérations du système de fichiers sont automatiquement approuvées |
bypassPermissions | Contourner toutes les vérifications de permissions | Tous les outils s’exécutent sans invites de permission (à utiliser avec précaution) |
Définition du Mode de Permission
Vous pouvez définir le mode de permission de deux façons :1. Configuration Initiale
Définissez le mode lors de la création d’une requête :2. Changements de Mode Dynamiques (Streaming Uniquement)
Changez le mode pendant une session de streaming :Comportements Spécifiques aux Modes
Mode Accepter les Modifications (acceptEdits)
En mode accepter les modifications :
- Toutes les modifications de fichiers sont automatiquement approuvées
- Les opérations du système de fichiers (mkdir, touch, rm, etc.) sont auto-approuvées
- Les autres outils nécessitent encore des permissions normales
- Accélère le développement quand vous faites confiance aux modifications de Claude
- Utile pour le prototypage rapide et les itérations
- Modifications de fichiers (outils Edit, Write)
- Commandes bash du système de fichiers (mkdir, touch, rm, mv, cp)
- Création et suppression de fichiers
Mode Contourner les Permissions (bypassPermissions)
En mode contourner les permissions :
- TOUTES les utilisations d’outils sont automatiquement approuvées
- Aucune invite de permission n’apparaît
- Les hooks s’exécutent toujours (peuvent encore bloquer les opérations)
- À utiliser avec une extrême précaution - Claude a un accès système complet
- Recommandé uniquement pour les environnements contrôlés
Priorité des Modes dans le Flux de Permissions
Les modes de permission sont évalués à un point spécifique dans le flux de permissions :- Les hooks s’exécutent en premier - Peuvent autoriser, refuser, demander, ou continuer
- Les règles de refus sont vérifiées - Bloquent les outils indépendamment du mode
- Les règles d’autorisation sont vérifiées - Permettent les outils si correspondance
- Les règles de demande sont vérifiées - Demandent la permission si correspondance
- Le mode de permission est évalué :
- Mode
bypassPermissions- Si actif, autorise tous les outils restants - Autres modes - Défèrent au callback
canUseTool
- Mode
- Callback
canUseTool- Gère les cas restants
- Les hooks peuvent toujours contrôler l’utilisation des outils, même en mode
bypassPermissions - Les règles de refus explicites prévalent sur tous les modes de permission
- Les règles de demande sont évaluées avant les modes de permission
- Le mode
bypassPermissionspréempt le callbackcanUseToolpour les outils non correspondants
Meilleures Pratiques
- Utilisez le mode par défaut pour une exécution contrôlée avec des vérifications de permissions normales
- Utilisez le mode acceptEdits quand vous travaillez sur des fichiers ou répertoires isolés
- Évitez bypassPermissions en production ou sur des systèmes avec des données sensibles
- Combinez les modes avec les hooks pour un contrôle fin
- Changez les modes dynamiquement basé sur le progrès de la tâche et la confiance
canUseTool
Le callbackcanUseTool est passé comme option lors de l’appel de la fonction query. Il reçoit le nom de l’outil et les paramètres d’entrée, et doit retourner une décision - soit autoriser soit refuser.
canUseTool se déclenche chaque fois que Claude Code afficherait une invite de permission à un utilisateur, par exemple les hooks et les règles de permissions ne le couvrent pas et il n’est pas en mode acceptEdits.
Voici un exemple complet montrant comment implémenter l’approbation interactive d’outils :
Ressources Connexes
- Guide des Hooks - Apprenez comment implémenter des hooks pour un contrôle fin sur l’exécution des outils
- Paramètres : Règles de Permissions - Configurez des règles déclaratives d’autorisation/refus avec analyse des commandes bash