Kontrolle der Tool-Nutzung und Berechtigungen im Claude Code SDK
canUseTool
-Callback, Hooks und settings.json-Berechtigungsregeln. Für die vollständige API-Dokumentation siehe die TypeScript SDK-Referenz.
canUseTool
- Dynamische Genehmigung für nicht abgedeckte Fälle, fordert Benutzer zur Berechtigung aufquery()
festlegen oder ihn während Streaming-Sitzungen dynamisch ändern.
Modus | Beschreibung | Tool-Verhalten |
---|---|---|
default | Standard-Berechtigungsverhalten | Normale Berechtigungsprüfungen gelten |
plan | Planungsmodus - keine Ausführung | Claude kann nur schreibgeschützte Tools verwenden; präsentiert einen Plan vor der Ausführung (Derzeit nicht im SDK unterstützt) |
acceptEdits | Datei-Bearbeitungen automatisch akzeptieren | Datei-Bearbeitungen und Dateisystem-Operationen werden automatisch genehmigt |
bypassPermissions | Alle Berechtigungsprüfungen umgehen | Alle Tools laufen ohne Berechtigungsaufforderungen (mit Vorsicht verwenden) |
acceptEdits
)bypassPermissions
)bypassPermissions
-Modus - Wenn aktiv, erlaubt alle verbleibenden ToolscanUseTool
-Callback - Behandelt verbleibende FällebypassPermissions
-ModusbypassPermissions
-Modus überschreibt Allow-Regeln und canUseTool
canUseTool
-Callback wird als Option beim Aufruf der query
-Funktion übergeben. Er erhält den Tool-Namen und Eingabeparameter und muss eine Entscheidung zurückgeben - entweder erlauben oder verweigern.
canUseTool wird ausgelöst, wann immer Claude Code einem Benutzer eine Berechtigungsaufforderung zeigen würde, z.B. Hooks und Berechtigungsregeln decken es nicht ab und es ist nicht im Autoaccept-Modus.
Hier ist ein vollständiges Beispiel, das zeigt, wie interaktive Tool-Genehmigung implementiert wird:
canUseTool
behandelt Fälle, die nicht von Berechtigungsregeln abgedeckt werdensettings.json
bieten deklarative Kontrolle mit eingebauter Bash-Befehl-Analyse. Diese Regeln werden vor dem Aufruf von canUseTool
bewertet. Für weitere Details zur Einstellungskonfiguration siehe die Claude Code-Einstellungsdokumentation.
ToolName(pattern)
Bash(npm:*)
passt zu jedem Befehl, der mit “npm” beginntRead(./src/**/*.ts)
passt zu TypeScript-Dateien in srcWebFetch
blockiert alle Web-Fetchesrm -rf
oder curl | sh
Bash(git:*)
- Passt zu jedem git-BefehlBash(npm run test)
- Passt zu exaktem BefehlBash(npm run test:*)
- Passt zu npm run test:unit, test:integration, etc.