Loading...
    • Entwicklerleitfaden
    • API-Referenz
    • MCP
    • Ressourcen
    • Versionshinweise
    Search...
    ⌘K
    Erste Schritte
    Einführung in ClaudeSchnelleinstieg
    Modelle & Preise
    ModellübersichtEin Modell auswählenNeuerungen in Claude 4.5Migration zu Claude 4.5ModellabschreibungenPreise
    Mit Claude entwickeln
    FunktionsübersichtVerwendung der Messages APIKontextfensterBest Practices für Prompting
    Funktionen
    Prompt-CachingKontext-BearbeitungErweitertes DenkenAufwandStreaming MessagesBatch-VerarbeitungZitationenMehrsprachige UnterstützungToken-ZählungEmbeddingsVisionPDF-UnterstützungFiles APISuchergebnisseStrukturierte AusgabenGoogle Sheets Add-on
    Tools
    ÜbersichtTool-Verwendung implementierenToken-effiziente Tool-VerwendungFeingranulares Tool-StreamingBash-ToolCode-Ausführungs-ToolProgrammatischer Tool-AufrufComputer-Use-ToolText-Editor-ToolWeb-Abruf-ToolWeb-Such-ToolMemory-ToolTool-Such-Tool
    Agent Skills
    ÜbersichtSchnelleinstiegBest PracticesSkills mit der API verwenden
    Agent SDK
    ÜbersichtTypeScript SDKPython SDKMigrationsleitfaden
    Leitfäden
    Streaming-EingabeBerechtigungen verwaltenSitzungsverwaltungStrukturierte Ausgaben im SDKAgent SDK hostenSystem-Prompts ändernMCP im SDKBenutzerdefinierte ToolsSubagents im SDKSlash-Befehle im SDKAgent Skills im SDKKosten und Nutzung verfolgenTodo-ListenPlugins im SDK
    MCP in der API
    MCP-ConnectorRemote MCP-Server
    Claude auf Drittanbieter-Plattformen
    Amazon BedrockMicrosoft FoundryVertex AI
    Prompt Engineering
    ÜbersichtPrompt-GeneratorPrompt-Vorlagen verwendenPrompt-VerbessererKlar und direkt seinBeispiele verwenden (Multishot-Prompting)Claude denken lassen (CoT)XML-Tags verwendenClaude eine Rolle geben (System-Prompts)Claudes Antwort vorausfüllenKomplexe Prompts verkettenTipps für langen KontextTipps für erweitertes Denken
    Testen & Evaluieren
    Erfolgskriterien definierenTestfälle entwickelnEvaluierungstool verwendenLatenz reduzieren
    Schutzmaßnahmen verstärken
    Halluzinationen reduzierenAusgabekonsistenz erhöhenJailbreaks abschwächenStreaming-AblehnungenPrompt-Lecks reduzierenClaude im Charakter halten
    Verwaltung und Überwachung
    Admin API-ÜbersichtUsage and Cost APIClaude Code Analytics API
    Console
    Log in
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Solutions

    • AI agents
    • Code modernization
    • Coding
    • Customer support
    • Education
    • Financial services
    • Government
    • Life sciences

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Company

    • Anthropic
    • Careers
    • Economic Futures
    • Research
    • News
    • Responsible Scaling Policy
    • Security and compliance
    • Transparency

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Help and security

    • Availability
    • Status
    • Support
    • Discord

    Terms and policies

    • Privacy policy
    • Responsible disclosure policy
    • Terms of service: Commercial
    • Terms of service: Consumer
    • Usage policy
    Leitfäden

    Berechtigungen verwalten

    Kontrollieren Sie die Tool-Nutzung und Berechtigungen im Claude Agent SDK
    • Überblick
    • Berechtigungsfluss-Diagramm
    • Berechtigungsmodi
    • Verfügbare Modi
    • Berechtigungsmodus festlegen
    • Modus-spezifische Verhaltensweisen
    • Modus-Priorität im Berechtigungsfluss
    • Bewährte Praktiken
    • canUseTool
    • Verwandte Ressourcen

    SDK-Berechtigungen

    Das Claude Agent SDK bietet leistungsstarke Berechtigungskontrollen, mit denen Sie verwalten können, wie Claude Tools in Ihrer Anwendung verwendet.

    Dieser Leitfaden behandelt die Implementierung von Berechtigungssystemen mit dem canUseTool-Callback, Hooks und settings.json-Berechtigungsregeln. Für die vollständige API-Dokumentation siehe die TypeScript SDK-Referenz.

    Überblick

    Das Claude Agent SDK bietet vier ergänzende Möglichkeiten zur Kontrolle der Tool-Nutzung:

    1. Berechtigungsmodi - Globale Berechtigungsverhalten-Einstellungen, die alle Tools betreffen
    2. canUseTool-Callback - Laufzeit-Berechtigungshandler für Fälle, die nicht von anderen Regeln abgedeckt werden
    3. Hooks - Feinabstimmung der Kontrolle über jede Tool-Ausführung mit benutzerdefinierter Logik
    4. Berechtigungsregeln (settings.json) - Deklarative Erlauben/Verweigern-Regeln mit integrierter Bash-Befehl-Analyse

    Anwendungsfälle für jeden Ansatz:

    • Berechtigungsmodi - Gesamtverhalten der Berechtigungen festlegen (Planung, automatisches Akzeptieren von Bearbeitungen, Umgehung von Prüfungen)
    • canUseTool - Dynamische Genehmigung für nicht abgedeckte Fälle, fordert Benutzer zur Berechtigung auf
    • Hooks - Programmatische Kontrolle über alle Tool-Ausführungen
    • Berechtigungsregeln - Statische Richtlinien mit intelligenter Bash-Befehl-Analyse

    Berechtigungsfluss-Diagramm

    Verarbeitungsreihenfolge: PreToolUse Hook → Verweigerungs-Regeln → Erlaubnis-Regeln → Frage-Regeln → Berechtigungsmodus-Prüfung → canUseTool Callback → PostToolUse Hook

    Berechtigungsmodi

    Berechtigungsmodi bieten globale Kontrolle darüber, wie Claude Tools verwendet. Sie können den Berechtigungsmodus beim Aufruf von query() festlegen oder ihn während Streaming-Sitzungen dynamisch ändern.

    Verfügbare Modi

    Das SDK unterstützt vier Berechtigungsmodi, jeder mit unterschiedlichem Verhalten:

    ModusBeschreibungTool-Verhalten
    defaultStandard-BerechtigungsverhaltenNormale Berechtigungsprüfungen gelten
    planPlanungsmodus - keine AusführungClaude kann nur schreibgeschützte Tools verwenden; präsentiert einen Plan vor der Ausführung (Derzeit nicht im SDK unterstützt)
    acceptEditsDatei-Bearbeitungen automatisch akzeptierenDatei-Bearbeitungen und Dateisystem-Operationen werden automatisch genehmigt
    bypassPermissionsAlle Berechtigungsprüfungen umgehenAlle Tools laufen ohne Berechtigungsaufforderungen (mit Vorsicht verwenden)

    Berechtigungsmodus festlegen

    Sie können den Berechtigungsmodus auf zwei Arten festlegen:

    1. Anfangskonfiguration

    Legen Sie den Modus beim Erstellen einer Abfrage fest:

    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    const result = await query({
      prompt: "Hilf mir, diesen Code zu refaktorieren",
      options: {
        permissionMode: 'default'  // Standard-Berechtigungsmodus
      }
    });

    2. Dynamische Modusänderungen (nur Streaming)

    Ändern Sie den Modus während einer Streaming-Sitzung:

    Modus-spezifische Verhaltensweisen

    Bearbeitungen akzeptieren-Modus (acceptEdits)

    Im Bearbeitungen akzeptieren-Modus:

    • Alle Datei-Bearbeitungen werden automatisch genehmigt
    • Dateisystem-Operationen (mkdir, touch, rm, etc.) werden automatisch genehmigt
    • Andere Tools erfordern noch normale Berechtigungen
    • Beschleunigt die Entwicklung, wenn Sie Claudes Bearbeitungen vertrauen
    • Nützlich für schnelle Prototypenerstellung und Iterationen

    Automatisch genehmigte Operationen:

    • Datei-Bearbeitungen (Edit, Write Tools)
    • Bash-Dateisystem-Befehle (mkdir, touch, rm, mv, cp)
    • Dateierstellung und -löschung

    Berechtigungen umgehen-Modus (bypassPermissions)

    Im Berechtigungen umgehen-Modus:

    • ALLE Tool-Verwendungen werden automatisch genehmigt
    • Keine Berechtigungsaufforderungen erscheinen
    • Hooks werden noch ausgeführt (können Operationen noch blockieren)
    • Mit äußerster Vorsicht verwenden - Claude hat vollen Systemzugriff
    • Nur für kontrollierte Umgebungen empfohlen

    Modus-Priorität im Berechtigungsfluss

    Berechtigungsmodi werden an einem bestimmten Punkt im Berechtigungsfluss bewertet:

    1. Hooks werden zuerst ausgeführt - Können erlauben, verweigern, fragen oder fortfahren
    2. Verweigerungs-Regeln werden geprüft - Blockieren Tools unabhängig vom Modus
    3. Erlaubnis-Regeln werden geprüft - Erlauben Tools bei Übereinstimmung
    4. Frage-Regeln werden geprüft - Fordern Berechtigung bei Übereinstimmung
    5. Berechtigungsmodus wird bewertet:
      • bypassPermissions-Modus - Wenn aktiv, erlaubt alle verbleibenden Tools
      • Andere Modi - Übertragen an canUseTool-Callback
    6. canUseTool-Callback - Behandelt verbleibende Fälle

    Das bedeutet:

    • Hooks können die Tool-Verwendung immer kontrollieren, auch im bypassPermissions-Modus
    • Explizite Verweigerungs-Regeln überschreiben alle Berechtigungsmodi
    • Frage-Regeln werden vor Berechtigungsmodi bewertet
    • bypassPermissions-Modus überschreibt den canUseTool-Callback für nicht übereinstimmende Tools

    Bewährte Praktiken

    1. Verwenden Sie den Standard-Modus für kontrollierte Ausführung mit normalen Berechtigungsprüfungen
    2. Verwenden Sie acceptEdits-Modus beim Arbeiten an isolierten Dateien oder Verzeichnissen
    3. Vermeiden Sie bypassPermissions in der Produktion oder auf Systemen mit sensiblen Daten
    4. Kombinieren Sie Modi mit Hooks für feinabgestimmte Kontrolle
    5. Wechseln Sie Modi dynamisch basierend auf Aufgabenfortschritt und Vertrauen

    Beispiel für Modus-Progression:

    // Im Standard-Modus für kontrollierte Ausführung beginnen
    permissionMode: 'default'
    
    // Zu acceptEdits für schnelle Iteration wechseln
    await q.setPermissionMode('acceptEdits')

    canUseTool

    Der 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 eine Berechtigungsaufforderung an einen Benutzer zeigen würde, z.B. Hooks und Berechtigungsregeln decken es nicht ab und es ist nicht im acceptEdits-Modus.

    Hier ist ein vollständiges Beispiel, das zeigt, wie interaktive Tool-Genehmigung implementiert wird:

    Verwandte Ressourcen

    • Hooks-Leitfaden - Lernen Sie, wie Sie Hooks für feinabgestimmte Kontrolle über Tool-Ausführung implementieren
    • Einstellungen: Berechtigungsregeln - Konfigurieren Sie deklarative Erlauben/Verweigern-Regeln mit Bash-Befehl-Analyse
    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    // Erstellen Sie einen asynchronen Generator für Streaming-Eingabe
    async function* streamInput() {
      yield { 
        type: 'user',
        message: { 
          role: 'user', 
          content: "Lass uns mit Standard-Berechtigungen beginnen" 
        }
      };
      
      // Später im Gespräch...
      yield {
        type: 'user',
        message: {
          role: 'user',
          content: "Jetzt lass uns die Entwicklung beschleunigen"
        }
      };
    }
    
    const q = query({
      prompt: streamInput(),
      options: {
        permissionMode: 'default'  // Im Standard-Modus beginnen
      }
    });
    
    // Modus dynamisch ändern
    await q.setPermissionMode('acceptEdits');
    
    // Nachrichten verarbeiten
    for await (const message of q) {
      console.log(message);
    }
    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    async function promptForToolApproval(toolName: string, input: any) {
      console.log("\n🔧 Tool-Anfrage:");
      console.log(`   Tool: ${toolName}`);
      
      // Tool-Parameter anzeigen
      if (input && Object.keys(input).length > 0) {
        console.log("   Parameter:");
        for (const [key, value] of Object.entries(input)) {
          let displayValue = value;
          if (typeof value === 'string' && value.length > 100) {
            displayValue = value.substring(0, 100) + "...";
          } else if (typeof value === 'object') {
            displayValue = JSON.stringify(value, null, 2);
          }
          console.log(`     ${key}: ${displayValue}`);
        }
      }
      
      // Benutzer-Genehmigung einholen (ersetzen Sie durch Ihre UI-Logik)
      const approved = await getUserApproval();
      
      if (approved) {
        console.log("   ✅ Genehmigt\n");
        return {
          behavior: "allow",
          updatedInput: input
        };
      } else {
        console.log("   ❌ Verweigert\n");
        return {
          behavior: "deny",
          message: "Benutzer hat die Berechtigung für dieses Tool verweigert"
        };
      }
    }
    
    // Den Berechtigungs-Callback verwenden
    const result = await query({
      prompt: "Hilf mir, diese Codebasis zu analysieren",
      options: {
        canUseTool: async (toolName, input) => {
          return promptForToolApproval(toolName, input);
        }
      }
    });