Zum Hauptinhalt springen

Installation

Das SDK bündelt eine native Claude Code-Binärdatei für Ihre Plattform als optionale Abhängigkeit wie @anthropic-ai/claude-agent-sdk-darwin-arm64. Sie müssen Claude Code nicht separat installieren. Wenn Ihr Paketmanager optionale Abhängigkeiten überspringt, wirft das SDK Native CLI binary for <platform> not found; setzen Sie stattdessen pathToClaudeCodeExecutable auf eine separat installierte claude-Binärdatei.

In eine einzelne ausführbare Datei kompilieren

Wenn Sie Ihre Anwendung mit bun build --compile in eine einzelne ausführbare Datei kompilieren, kann das SDK die gebündelte CLI-Binärdatei zur Laufzeit nicht auflösen. require.resolve funktioniert nicht innerhalb des virtuellen Dateisystems $bunfs der kompilierten ausführbaren Datei, daher wirft das SDK Native CLI binary for <platform> not found. Um dieses Problem zu umgehen, betten Sie die Plattform-Binärdatei als Datei-Asset ein, extrahieren Sie sie beim Start mit extractFromBunfs() in einen echten Pfad und übergeben Sie diesen Pfad an pathToClaudeCodeExecutable. Der extractFromBunfs()-Helfer erfordert @anthropic-ai/claude-agent-sdk v0.3.144 oder später. Das folgende Beispiel erstellt für macOS auf Apple Silicon:
extractFromBunfs() kopiert die eingebettete Binärdatei aus dem virtuellen Dateisystem der kompilierten ausführbaren Datei in ein benutzerabhängiges temporäres Verzeichnis und gibt den echten Pfad zurück. Außerhalb einer kompilierten ausführbaren Datei gibt es den Eingabepfad unverändert zurück, sodass derselbe Code in der Entwicklung ohne Änderungen ausgeführt wird. Jede kompilierte ausführbare Datei bettelt eine einzelne Plattform-Binärdatei ein. Stimmen Sie das Plattformpaket im Import mit Ihrem --target ab:
  • Zum Cross-Kompilieren installieren Sie das nicht übereinstimmende Plattformpaket, beispielsweise npm install @anthropic-ai/claude-agent-sdk-linux-x64 --force.
  • Unter Windows ist der Binär-Unterpfad claude.exe, beispielsweise @anthropic-ai/claude-agent-sdk-win32-x64/claude.exe.

Funktionen

query()

Die primäre Funktion für die Interaktion mit Claude Code. Erstellt einen asynchronen Generator, der Nachrichten streamt, wenn sie ankommen.

Parameter

Rückgabewert

Gibt ein Query-Objekt zurück, das AsyncGenerator<SDKMessage, void> mit zusätzlichen Methoden erweitert.

startup()

Wärmt den CLI-Unterprozess vor, indem er ihn spawnt und den Initialize-Handshake abschließt, bevor eine Eingabeaufforderung verfügbar ist. Das zurückgegebene WarmQuery-Handle akzeptiert später eine Eingabeaufforderung und schreibt sie in einen bereits bereiten Prozess, sodass der erste query()-Aufruf ohne Kosten für das Spawnen und Initialisieren des Unterprozesses aufgelöst wird.

Parameter

Rückgabewert

Gibt ein Promise<WarmQuery> zurück, das aufgelöst wird, sobald der Unterprozess gespawnt wurde und seinen Initialize-Handshake abgeschlossen hat.

Beispiel

Rufen Sie startup() früh auf, beispielsweise beim Anwendungsstart, und rufen Sie dann .query() auf dem zurückgegebenen Handle auf, sobald eine Eingabeaufforderung bereit ist. Dies verschiebt das Spawnen und die Initialisierung des Unterprozesses aus dem kritischen Pfad.

tool()

Erstellt eine typsichere MCP-Tool-Definition zur Verwendung mit SDK MCP-Servern.

Parameter

ToolAnnotations

Erneut exportiert aus @modelcontextprotocol/sdk/types.js. Alle Felder sind optionale Hinweise; Clients sollten sich nicht auf sie für Sicherheitsentscheidungen verlassen.

createSdkMcpServer()

Erstellt eine MCP-Server-Instanz, die im selben Prozess wie Ihre Anwendung ausgeführt wird.

Parameter

listSessions()

Entdeckt und listet vergangene Sitzungen mit leichten Metadaten auf. Filtern Sie nach Projektverzeichnis oder listen Sie Sitzungen über alle Projekte auf.

Parameter

Rückgabetyp: SDKSessionInfo

Beispiel

Geben Sie die 10 neuesten Sitzungen für ein Projekt aus. Ergebnisse werden nach lastModified absteigend sortiert, sodass das erste Element das neueste ist. Lassen Sie dir weg, um über alle Projekte zu suchen.

getSessionMessages()

Liest Benutzer- und Assistenten-Nachrichten aus einem vergangenen Sitzungstranskript.

Parameter

Rückgabetyp: SessionMessage

Beispiel

getSessionInfo()

Liest Metadaten für eine einzelne Sitzung nach ID, ohne das vollständige Projektverzeichnis zu scannen.

Parameter

Gibt SDKSessionInfo zurück, oder undefined, wenn die Sitzung nicht gefunden wird.

renameSession()

Benennt eine Sitzung um, indem ein benutzerdefinierter Titeleintrag angehängt wird. Wiederholte Aufrufe sind sicher; der neueste Titel gewinnt.

Parameter

tagSession()

Taggt eine Sitzung. Übergeben Sie null, um das Tag zu löschen. Wiederholte Aufrufe sind sicher; das neueste Tag gewinnt.

Parameter

resolveSettings()

Löst die effektiven Claude Code-Einstellungen für ein bestimmtes Verzeichnis mithilfe der gleichen Merge-Engine wie die CLI auf, ohne die Claude CLI zu spawnen. Verwenden Sie es, um zu überprüfen, welche Konfiguration ein query()-Aufruf sehen würde, bevor Sie einen aufrufen.
Diese Funktion ist Alpha und ihre API kann sich vor der Stabilisierung ändern. Sie liest MDM-Quellen, einschließlich macOS plist und Windows HKLM/HKCU, für Parität mit CLI-Startup, führt aber nicht den vom Administrator konfigurierten policyHelper-Unterprozess aus. Das Feld permissions.defaultMode wird unverändert aus allen Ebenen einschließlich Projekteinstellungen zurückgegeben. Der Vertrauensfilter, den die CLI vor der Berücksichtigung eskalierender Berechtigungsmodi anwendet, wird nicht angewendet.

Parameter

resolveSettings() akzeptiert ein einzelnes Optionsobjekt. Alle Felder sind optional.

Rückgabetyp: ResolvedSettings

resolveSettings() gibt ein Objekt zurück, das die zusammengeführten Einstellungen und die Quelle beschreibt, die jeden Schlüssel beigetragen hat.

Beispiel

Das folgende Beispiel löst Einstellungen für ein Projektverzeichnis auf und gibt die Quelle aus, die die Bereinigungsperiode steuert.

Typen

Options

Konfigurationsobjekt für die query()-Funktion.

Langsame oder steckengebliebene API-Antworten verarbeiten

Der CLI-Unterprozess liest mehrere Umgebungsvariablen, die API-Timeouts und Stall-Erkennung steuern. Übergeben Sie sie über die env-Option:
  • API_TIMEOUT_MS: Pro-Request-Timeout auf dem Anthropic-Client in Millisekunden. Standard 600000. Gilt für die Hauptschleife und alle Subagenten.
  • CLAUDE_CODE_MAX_RETRIES: Maximale API-Wiederholungen. Standard 10, begrenzt auf 15. Jede Wiederholung erhält sein eigenes API_TIMEOUT_MS-Fenster, sodass die schlimmste Wandzeit ungefähr API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1) plus Backoff ist. Für unbeaufsichtigte Läufe, die längere Ausfallzeiten abwarten müssen, setzen Sie CLAUDE_CODE_RETRY_WATCHDOG=1: Es wiederholt Kapazitätsfehler unbegrenzt, und ab Claude Code v2.1.199 erhöht sich der Standard für andere vorübergehende Fehler auf 300 und entfernt die Obergrenze für diese Variable.
  • CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: Stall-Watchdog für Subagenten, die mit run_in_background gestartet werden. Standard 600000. Setzt sich bei jedem Stream-Ereignis zurück; bei Stall bricht es den Subagenten ab, markiert die Aufgabe als fehlgeschlagen und zeigt den Fehler dem übergeordneten Element mit jedem Teilergebnis. Gilt nicht für synchrone Subagenten.
  • CLAUDE_ENABLE_STREAM_WATCHDOG mit CLAUDE_STREAM_IDLE_TIMEOUT_MS: Bricht die Anfrage ab, wenn Header angekommen sind, aber der Antwortkörper nicht mehr streamt. Der Watchdog ist standardmäßig für alle Provider aktiviert; setzen Sie CLAUDE_ENABLE_STREAM_WATCHDOG=0, um ihn zu deaktivieren. CLAUDE_STREAM_IDLE_TIMEOUT_MS hat einen Standard von 300000 und ist auf dieses Minimum begrenzt. Die abgebrochene Anfrage durchläuft den normalen Wiederholungspfad.

Query-Objekt

Schnittstelle, die von der query()-Funktion zurückgegeben wird.

Methoden

applyFlagSettings()

Ändert Einstellungen auf einer laufenden Sitzung, ohne die Abfrage neu zu starten. Verwenden Sie es, wenn eine Einstellung, die keinen dedizierten Setter hat, sich mitten in der Sitzung ändern muss, z. B. um permissions zu verschärfen, nachdem der Agent nicht vertrauenswürdige Eingaben liest. setModel() und setPermissionMode() sind dedizierte Setter für diese beiden Schlüssel; applyFlagSettings() ist die allgemeine Form, die jede Teilmenge der Einstellungsschlüssel akzeptiert, und das Übergeben von model hier verhält sich genauso wie setModel(). Nur einige Schlüssel wirken sich mitten in der Sitzung aus:
  • Angewendet beim nächsten Turn: model, effortLevel, ultracode, permissions, hooks, skillOverrides, fastMode, agent. Das Wechseln von agent wendet auch die Modellüberschreibung, Hooks und das System-Prompt dieses Agenten beim nächsten Turn an.
  • Keine Auswirkung mitten in der Sitzung: die Systemeingabeaufforderungsoptionen. Diese werden einmal beim Start aufgelöst, sodass die laufende Sitzung den ursprünglichen Wert behält, obwohl der Aufruf erfolgreich ist. Um sie zu ändern, starten Sie eine neue Sitzung.
effortLevel akzeptiert einen Aufwandsstufen-Namen. Es akzeptiert auch "ultracode", das die Sitzung mit xhigh-Aufwand ausführt und ultracode aktiviert. Der Settings-Typ deklariert effortLevel ohne diesen Wert, daher übergeben Sie das Äquivalent { ultracode: true } in TypeScript. Der ultracode-Wert erfordert Claude Code v2.1.203 oder später und wird nur von applyFlagSettings() akzeptiert, nicht vom effortLevel-Schlüssel in einer Einstellungsdatei. Die Werte werden in die Flag-Einstellungsebene geschrieben, die gleiche Ebene, die die Inline-settings-Option von query() beim Start füllt. Flag-Einstellungen befinden sich in der Nähe der Oberseite der Einstellungspriorität: Sie überschreiben Benutzer-, Projekt- und lokale Einstellungen, und nur verwaltete Richtlinieneinstellungen können sie überschreiben. Dies ist die gleiche Ebene, die der Abschnitt zur Priorität auf der Seite programmatische Optionen nennt. Aufeinanderfolgende Aufrufe führen Top-Level-Schlüssel flach zusammen. Ein zweiter Aufruf mit { permissions: {...} } ersetzt das gesamte permissions-Objekt aus dem vorherigen Aufruf, anstatt es tief zusammenzuführen. Um einen Schlüssel aus der Flag-Ebene zu löschen und auf niedrigere Prioritätsquellen zurückzugreifen, übergeben Sie null für diesen Schlüssel. Das Übergeben von undefined hat keine Auswirkung, da die JSON-Serialisierung es löscht. Nur im Streaming-Eingabemodus verfügbar, die gleiche Einschränkung wie setModel() und setPermissionMode(). Das folgende Beispiel wechselt das aktive Modell mitten in der Sitzung und löscht dann die Überschreibung, sodass das Modell auf das zurückfällt, was die Benutzer- oder Projekteinstellungen angeben.
applyFlagSettings() ist nur TypeScript. Das Python SDK stellt keine entsprechende Methode bereit.

WarmQuery

Handle, das von startup() zurückgegeben wird. Der Unterprozess ist bereits gespawnt und initialisiert, sodass das Aufrufen von query() auf diesem Handle die Eingabeaufforderung direkt in einen bereiten Prozess ohne Startup-Latenz schreibt.

Methoden

WarmQuery implementiert AsyncDisposable, sodass es mit await using für automatische Bereinigung verwendet werden kann.

SDKControlInitializeResponse

Rückgabetyp von initializationResult(). Enthält Sitzungsinitialisierungsdaten.
Wenn ein Client initialize an eine bereits laufende Sitzung sendet, trägt der Control-Response-Wrapper auch ein optionales pending_permission_requests-Array. Das Feld befindet sich auf dem Response-Wrapper selbst, nicht in der oben beschriebenen SDKControlInitializeResponse-Nutzlast. Jeder Eintrag ist eine vollständige control_request-Nachricht mit der gleichen { type: "control_request", request_id, request }-Form, die die Sitzung für Berechtigungsanfragen während der Ausführung streamt. Dies sind Anfragen, die vor der Verbindung des Clients gestellt wurden und noch auf eine Antwort warten. Das SDK liest das Array für Sie und versendet jeden Eintrag an Ihren canUseTool-Callback, die gleiche Wiederversendung, die reinitialize() nach einer Transportlücke auslöst. Behandeln Sie wiederholte Request-IDs idempotent, da ein Eintrag eine Anfrage wiederholen kann, die der Callback bereits erhalten hat, bevor die Verbindung unterbrochen wurde.

SDKControlInterruptResponse

Der Interrupt-Beleg: der Wert, mit dem interrupt() auf einer CLI aufgelöst wird, die die interrupt_receipt_v1-Funktion in SDKSystemMessage.capabilities ankündigt. Erfordert Claude Code v2.1.205 oder später. Frühere CLIs beantworten den Interrupt mit einer leeren Erfolgsnutzlast, daher wird interrupt() mit undefined aufgelöst.
still_queued listet die UUIDs von Benutzernachrichten auf, die den Interrupt überstehen: Nachrichten, die sich noch in der Warteschlange befinden, plus jeden Batch, der bereits für den nächsten Turn aus der Warteschlange entfernt wurde, aber noch nicht vom Abort erreichbar ist. Jede wird als eigener Turn nach dem Interrupt ausgeführt, es sei denn, Sie brechen sie zuerst ab. Verwenden Sie den Beleg, um zu entscheiden, ob Sie etwas erneut senden möchten; das erneute Senden einer Nachricht, die bereits aufgelistet ist, erzeugt einen doppelten Turn. Interpretieren Sie die Liste mit diesen Vorbehalten:
  • Nur Nachrichten, die mit einer UUID in die Warteschlange eingereiht wurden, werden angezeigt. Ein leeres Array bedeutet nicht, dass nichts anderes ausgeführt wird.
  • Nur Hauptthread-Nachrichten werden aufgelistet. Nachrichten, die an einen Subagenten adressiert sind, sind außerhalb des Geltungsbereichs.
  • Die Liste kann UUIDs enthalten, die Ihr Client nie gesendet hat, z. B. geplante Task-Trigger. Ignorieren Sie UUIDs, die Sie nicht erkennen, anstatt sie als Fehler zu behandeln.
Der Beleg ist eine Momentaufnahme, die zum Zeitpunkt der Verarbeitung des Interrupts erstellt wird, und bei einem sauberen Interrupt kommt er an, bevor das SDKResultMessage des unterbrochenen Turns. Lesen Sie den Beleg, anstatt die Warteschlange nach diesem Ergebnis zu überprüfen: Die Schleife startet den nächsten in der Warteschlange befindlichen Turn sofort, sodass sich die Warteschlange, die Sie nach dem Ergebnis überprüfen, bereits geändert hat.

AgentDefinition

Konfiguration für einen programmatisch definierten Subagenten.

AgentMcpServerSpec

Gibt MCP-Server an, die einem Subagenten zur Verfügung stehen. Kann ein Server-Name (Zeichenkette, die auf einen Server aus der mcpServers-Konfiguration des übergeordneten Elements verweist) oder eine Inline-Server-Konfiguration sein, die Server-Namen auf Konfigurationen abbildet.
Wobei McpServerConfigForProcessTransport McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig ist.

SettingSource

Steuert, welche dateisystembasierte Konfigurationsquellen das SDK Einstellungen aus lädt.

Standardverhalten

Wenn settingSources weggelassen oder undefined ist, lädt query() die gleichen Dateisystem-Einstellungen wie die Claude Code CLI: Benutzer, Projekt und lokal. Verwaltete Richtlinieneinstellungen werden in allen Fällen geladen; Server-verwaltete Einstellungen werden abgerufen, wenn sich die Sitzung mit einer Organisationsanmeldedaten auf einer berechtigten Konfiguration authentifiziert. Siehe Was settingSources nicht steuert für Eingaben, die unabhängig von dieser Option gelesen werden, und wie man sie deaktiviert.

Warum settingSources verwenden

Dateisystem-Einstellungen deaktivieren:
Alle Dateisystem-Einstellungen explizit laden:
Nur bestimmte Einstellungsquellen laden:
Test- und CI-Umgebungen:
SDK-only-Anwendungen:
Laden von CLAUDE.md-Projektanweisungen:

Einstellungspriorität

Wenn mehrere Quellen geladen werden, werden Einstellungen mit dieser Priorität zusammengeführt (höchste zu niedrigste):
  1. Lokale Einstellungen (.claude/settings.local.json)
  2. Projekteinstellungen (.claude/settings.json)
  3. Benutzereinstellungen (~/.claude/settings.json)
Programmatische Optionen wie agents, allowedTools und settings überschreiben Benutzer-, Projekt- und lokale Dateisystem-Einstellungen. Verwaltete Richtlinieneinstellungen haben Vorrang vor programmatischen Optionen.

PermissionMode

CanUseTool

Benutzerdefinierte Berechtigungsfunktionstyp zur Steuerung der Tool-Nutzung. Die Funktion ist der SDK-Ersatz für die interaktive Berechtigungsaufforderung: Sie wird nur aufgerufen, wenn der Berechtigungsbewertungsfluss zu einer Eingabeaufforderung führt. Tool-Aufrufe, die bereits von einem allowedTools-Eintrag, einer Settings-Allow-Regel oder dem Berechtigungsmodus wie acceptEdits oder bypassPermissions genehmigt wurden, rufen ihn nie auf. AskUserQuestion, MCP-Tools, die mit requiresUserInteraction gekennzeichnet sind, und Connector-Tools die Ihre Organisation auf ask gesetzt hat erreichen die Funktion auch, wenn eine Allow-Regel passt. Im dontAsk-Modus werden diese Aufrufe stattdessen verweigert, ohne sie aufzurufen. Um jeden Tool-Aufruf zu gaten, verwenden Sie stattdessen einen PreToolUse-Hook.
Der Callback löst die Anfrage normalerweise durch Rückgabe eines PermissionResult auf, das das SDK über seinen Transport als control_response zurückschreibt. Geben Sie null nur zurück, wenn Ihre Anwendung die control_response für diese Anfrage bereits über ihren eigenen Kanal gesendet hat, wobei requestId widergespiegelt wird; das SDK überspringt dann das Schreiben der Antwort auf seinen Transport. Das Zurückgeben von null in jedem anderen Fall lässt den Tool-Aufruf unbegrenzt blockiert, da keine control_response jemals gesendet wird und Berechtigungsaufforderungen nicht zeitlich begrenzt sind. Die requestId-Option und der null-Rückgabewert erfordern Claude Code v2.1.199 oder später.

PermissionResult

Ergebnis einer Berechtigungsprüfung.

ToolConfig

Konfiguration für das Verhalten integrierter Tools.

McpServerConfig

Konfiguration für MCP-Server.

McpStdioServerConfig

McpSSEServerConfig

McpHttpServerConfig

McpSdkServerConfigWithInstance

McpClaudeAIProxyServerConfig

SdkPluginConfig

Konfiguration zum Laden von Plugins im SDK.
Beispiel:
Vollständige Informationen zum Erstellen und Verwenden von Plugins finden Sie unter Plugins.

Nachrichtentypen

SDKMessage

Union-Typ aller möglichen Nachrichten, die von der Abfrage zurückgegeben werden.

SDKAssistantMessage

Assistenten-Antwortnachricht.
Das message-Feld ist eine BetaMessage aus dem Anthropic SDK. Es enthält Felder wie id, content, model, stop_reason und usage. SDKAssistantMessageError ist einer von: 'authentication_failed', 'oauth_org_not_allowed', 'billing_error', 'rate_limit', 'overloaded', 'invalid_request', 'model_not_found', 'server_error', 'max_output_tokens' oder 'unknown'. 'model_not_found' bedeutet, dass das ausgewählte Modell nicht existiert oder nicht für Ihr Konto oder Ihre Bereitstellung verfügbar ist. 'overloaded' bedeutet, dass die API einen 529-Fehler zurückgegeben hat, weil der Server ausgelastet ist, im Gegensatz zu 'rate_limit', das ein 429-Fehler gegen Ihr Kontingent ist.

SDKUserMessage

Benutzer-Eingabenachricht.
Setzen Sie shouldQuery auf false, um die Nachricht zum Transkript hinzuzufügen, ohne einen Assistenten-Turn auszulösen. Die Nachricht wird gehalten und in die nächste Benutzer-Nachricht zusammengeführt, die einen Turn auslöst. Verwenden Sie dies, um Kontext einzufügen, z. B. die Ausgabe eines Befehls, den Sie außerhalb des Bands ausgeführt haben, ohne einen Modell-Aufruf dafür auszugeben. Auf einer Nachricht, die einen tool_result-Block trägt, ist tool_use_result das strukturierte Ausgabeobjekt des Tools und nicht der Text, der an das Modell gesendet wird. Seine Form hängt vom Tool ab, das durch den entsprechenden tool_use-Block benannt wird, daher ist das Feld als unknown typisiert; die integrierten Formen sind unter Tool-Ausgabetypen aufgelistet. Für das Agent-Tool ist tool_use_result AgentOutput. Bei einem completed-Ergebnis enthält content den Bericht des Subagenten ohne die Agent-ID und den Nutzungs-Trailer, den Claude Code an den tool_result-Text anhängt, daher rendern Sie stattdessen aus tool_use_result.

SDKUserMessageReplay

Wiedergegebene Benutzer-Nachricht mit erforderlicher UUID.
Ein Benutzer-Turn, der von außerhalb der Sitzung eingefügt wird, dessen origin-Art peer oder channel ist, erreicht den Stream als Wiedergabe, unabhängig davon, ob er während eines aktiven Turns geliefert wurde oder einen neuen Turn gestartet hat, während die Sitzung untätig war. Vor v2.1.207 erzeugte ein eingefügter Turn, der geliefert wurde, während die Sitzung untätig war, keine Nachricht im Stream und erschien nur, wenn Sie das Transkript erneut lasen.

SDKResultMessage

Endgültige Ergebnis-Nachricht.
Mehrere Felder im Ergebnis enthalten diagnostische Details über subtype hinaus:
  • api_error_status: Der HTTP-Statuscode des API-Fehlers, der die Konversation beendet hat. Fehlt oder ist null, wenn der Turn ohne API-Fehler endete.
  • ttft_ms: Zeit bis zum ersten Token in Millisekunden, gemessen, wenn die erste vollständige Assistenten-Nachricht ankommt. Nur auf dem Success-Arm vorhanden.
  • ttft_stream_ms: Zeit in Millisekunden bis zum ersten message_start-Stream-Ereignis, wenn der Response-Stream öffnet. Niedriger als ttft_ms; die Lücke zwischen den beiden ist die Zeit, die zum Streamen der ersten Nachricht benötigt wird. Nur auf dem Success-Arm vorhanden.
  • terminal_reason: Warum die Schleife endete. Einer von "completed", "max_turns", "tool_deferred", "aborted_streaming", "aborted_tools", "hook_stopped", "stop_hook_prevented", "background_requested", "blocking_limit", "rapid_refill_breaker", "prompt_too_long", "image_error", "model_error", "api_error", "malformed_tool_use_exhausted", "budget_exhausted", "structured_output_retry_exhausted", "tool_deferred_unavailable" oder "turn_setup_failed".
  • fast_mode_state: Einer von "on", "off" oder "cooldown".
Das origin-Feld leitet die SDKMessageOrigin der Benutzer-Nachricht weiter, die dieses Ergebnis ausgelöst hat. Wenn eine Hintergrund-Aufgabe beendet wird und das SDK einen synthetischen Follow-up-Turn einfügt, trägt die resultierende SDKResultMessage origin: { kind: "task-notification" }. Überprüfen Sie dieses Feld, um Ergebnisse zu unterscheiden, die Ihre Eingabeaufforderung beantworten, von Ergebnissen, die für Hintergrund-Aufgaben-Follow-ups ausgegeben werden, damit Sie letztere weiterleiten oder unterdrücken können. Das Feld fehlt bei Ergebnissen, die vor einem Benutzer-Turn ausgegeben werden, z. B. Startfehler. Wenn ein PreToolUse-Hook permissionDecision: "defer" zurückgibt, hat das Ergebnis stop_reason: "tool_deferred" und deferred_tool_use enthält die id, den name und die input des ausstehenden Tools. Lesen Sie dieses Feld, um die Anfrage in Ihrer eigenen Benutzeroberfläche anzuzeigen, und setzen Sie dann mit derselben session_id fort, um fortzufahren. Siehe Einen Tool-Aufruf für später aufschieben für die vollständige Runde.

SDKSystemMessage

System-Initialisierungsnachricht.
Das capabilities-Array benennt die Protokoll-Verhaltensweisen, die diese CLI implementiert, damit Sie Feature-Erkennung durchführen können, anstatt claude_code_version-Zeichenketten zu vergleichen. Es ist ein offenes Set: Ignorieren Sie Werte, die Sie nicht erkennen, und überprüfen Sie auf die spezifische Fähigkeit, deren Verhalten Sie benötigen. Das Feld erfordert Claude Code v2.1.205 oder später und fehlt auf früheren CLIs.

SDKPartialAssistantMessage

Streaming-Teilnachricht (nur wenn includePartialMessages true ist). Das parent_tool_use_id-Feld ist immer null: Stream-Ereignisse werden nur für die Hauptsitzung ausgegeben. Für die Zuordnung von Subagenten verwenden Sie vollständige Nachrichten, die parent_tool_use_id enthalten, oder aktivieren Sie forwardSubagentText, um Subagenten-Text und Thinking als vollständige Nachrichten zu erhalten.

SDKCompactBoundaryMessage

Nachricht, die eine Konversations-Komprimierungsgrenze anzeigt.

SDKInformationalMessage

Generisches Text-Banner, das von der Schleife ausgegeben wird. Enthält nicht-fehlerhafte Statuszeilen, Hook-Feedback wie ein Block-Grund eines UserPromptSubmit-Hooks und Befehlsausgabe. Rendern Sie content als Klartext auf der angegebenen level.

SDKWorkerShuttingDownMessage

Wird bei ordnungsgemäßem Herunterfahren des Workers ausgegeben, damit Remote-Clients sehen können, warum der Worker verschwunden ist, anstatt auf Heartbeat-Timeout zu warten. Der reason ist eine kurze snake_case-Zeichenkette, die von der Host-CLI gesetzt wird, z. B. "host_exit" oder "remote_control_disabled". Handeln Sie nur dann, wenn Sie live streamen. Eine wiederaufgenommene Sitzung spielt vergangene Instanzen dieser Nachricht ab, also ignorieren Sie sie in diesem Fall.

SDKPluginInstallMessage

Plugin-Installationsfortschritt-Ereignis. Wird ausgegeben, wenn CLAUDE_CODE_SYNC_PLUGIN_INSTALL gesetzt ist, damit Ihre Agent SDK-Anwendung die Marketplace-Plugin-Installation vor dem ersten Turn verfolgen kann. Die started- und completed-Status klammern die Gesamtinstallation. Die installed- und failed-Status melden einzelne Marketplaces und enthalten name.

SDKPermissionDeniedMessage

Stream-Ereignis, das ausgegeben wird, wenn das Berechtigungssystem einen Tool-Aufruf automatisch ablehnt, ohne eine interaktive Eingabeaufforderung anzuzeigen. Verwenden Sie es, um die Ablehnung in Ihrer Benutzeroberfläche zu rendern, während sie geschieht, anstatt nur das is_error-Tool-Ergebnis zu beobachten, das folgt. Der interaktive Anfragepfad erreicht Ihre Anwendung separat über den canUseTool-Callback. Ablehnungen, die von einem PreToolUse-Hook ausgegeben werden, werden nicht über dieses Ereignis gemeldet. Dieses Ereignis erfordert Claude Code v2.1.136 oder später.

SDKPermissionDenial

Informationen über einen verweigerten Tool-Einsatz.

SDKMessageOrigin

Herkunft einer Benutzer-Rolle-Nachricht. Dies erscheint als origin auf SDKUserMessage und wird an die entsprechende SDKResultMessage weitergeleitet, damit Sie erkennen können, was einen bestimmten Turn ausgelöst hat.

Hook-Typen

Einen umfassenden Leitfaden zur Verwendung von Hooks mit Beispielen und häufigen Mustern finden Sie im Hooks-Leitfaden.

HookEvent

Verfügbare Hook-Ereignisse.

HookCallback

Hook-Callback-Funktionstyp.

HookCallbackMatcher

Hook-Konfiguration mit optionalem Matcher.

HookInput

Union-Typ aller Hook-Eingabetypen.

BaseHookInput

Basis-Schnittstelle, die alle Hook-Eingabetypen erweitern.
Das Feld prompt_id ist eine UUID, die die derzeit verarbeitete Benutzereingabe identifiziert. Sie entspricht dem prompt.id-Attribut bei OpenTelemetry-Ereignissen und ist bis zur ersten Benutzereingabe nicht vorhanden. Erfordert Claude Code v2.1.196 oder später.

PreToolUseHookInput

PostToolUseHookInput

PostToolUseFailureHookInput

PostToolBatchHookInput

Wird einmal ausgelöst, nachdem jeder Werkzeugaufruf in einem Batch aufgelöst wurde, bevor die nächste Modellanfrage erfolgt. tool_response enthält den serialisierten tool_result-Inhalt, den das Modell sieht; die Form unterscheidet sich vom strukturierten Output-Objekt von PostToolUseHookInput.

NotificationHookInput

UserPromptSubmitHookInput

SessionStartHookInput

SessionEndHookInput

StopHookInput

SubagentStartHookInput

SubagentStopHookInput

PreCompactHookInput

PermissionRequestHookInput

SetupHookInput

TeammateIdleHookInput

TaskCompletedHookInput

ConfigChangeHookInput

WorktreeCreateHookInput

WorktreeRemoveHookInput

MessageDisplayHookInput

HookJSONOutput

Hook-Rückgabewert.

AsyncHookJSONOutput

SyncHookJSONOutput

Tool-Eingabetypen

Dokumentation von Eingabeschemas für alle integrierten Claude Code-Tools. Diese Typen werden aus @anthropic-ai/claude-agent-sdk exportiert und können für typsichere Tool-Interaktionen verwendet werden.

ToolInputSchemas

Union aller Tool-Eingabetypen, exportiert aus @anthropic-ai/claude-agent-sdk.

Agent

Tool-Name: Agent (zuvor Task, das immer noch als Alias akzeptiert wird)
Startet einen neuen Agenten, um komplexe, mehrstufige Aufgaben autonom zu bewältigen.

AskUserQuestion

Tool-Name: AskUserQuestion
Stellt dem Benutzer während der Ausführung Klärungsfragen. Siehe Genehmigungen und Benutzereingaben verarbeiten für Verwendungsdetails.

Bash

Tool-Name: Bash
Führt Bash-Befehle in einer persistenten Shell-Sitzung mit optionalem Timeout und Hintergrundausführung aus.

Monitor

Tool-Name: Monitor
Führt eine Hintergrundquelle aus und liefert jedes Ereignis an Claude, damit es reagieren kann, ohne zu pollen: command führt ein Skript aus und gibt ein Ereignis pro Stdout-Zeile aus, und ws öffnet einen WebSocket und gibt ein Ereignis pro Textframe aus. Geben Sie genau eines von command oder ws an. Die ws-Quelle erfordert Claude Code v2.1.195 oder später. Setzen Sie persistent: true für Sitzungslängen-Watches wie Log-Tails. Wenn Monitor einen Befehl ausführt, folgt es den gleichen Berechtigungsregeln wie Bash; ein WebSocket-Watch fordert separat zur Genehmigung auf. Siehe die Monitor-Tool-Referenz für Verhalten und Anbieter-Verfügbarkeit.

TaskOutput

Tool-Name: TaskOutput
Ruft die Ausgabe einer laufenden oder abgeschlossenen Hintergrund-Aufgabe ab.

Edit

Tool-Name: Edit
Führt exakte String-Ersetzungen in Dateien durch.

Read

Tool-Name: Read
Liest Dateien aus dem lokalen Dateisystem, einschließlich Text, Bilder, PDFs und Jupyter-Notebooks. Verwenden Sie pages für PDF-Seitenbereiche (z. B. "1-5").

Write

Tool-Name: Write
Schreibt eine Datei in das lokale Dateisystem, überschreibt, falls vorhanden.

Glob

Tool-Name: Glob
Schnelle Datei-Musterabstimmung, die mit jeder Codebasis-Größe funktioniert.

Grep

Tool-Name: Grep
Leistungsstarkes Suchtool, das auf ripgrep mit Regex-Unterstützung basiert.

TaskStop

Tool-Name: TaskStop
Beendet eine laufende Hintergrund-Aufgabe oder Shell nach ID. Ab v2.1.198 akzeptiert task_id auch einen Agent-Team-Teamkollegen oder einen benannten Hintergrund-Agenten nach Agent-ID oder Name.

NotebookEdit

Tool-Name: NotebookEdit
Bearbeitet Zellen in Jupyter-Notebook-Dateien.

WebFetch

Tool-Name: WebFetch
Ruft Inhalte von einer URL ab und verarbeitet sie mit einem KI-Modell.

WebSearch

Tool-Name: WebSearch
Durchsucht das Web und gibt formatierte Ergebnisse zurück.

Workflow

Tool-Name: Workflow
Führt einen dynamischen Workflow aus: ein Skript, das viele Subagenten im Hintergrund orchestriert und ein konsolidiertes Ergebnis zurückgibt. Das Workflow-Tool ist in Agent SDK v0.3.149 und später verfügbar. Mindestens eines von script, name oder scriptPath ist erforderlich.

TodoWrite

Tool-Name: TodoWrite
Erstellt und verwaltet eine strukturierte Aufgabenliste zum Verfolgen des Fortschritts.
Ab TypeScript Agent SDK 0.3.142 ist TodoWrite standardmäßig deaktiviert. Verwenden Sie stattdessen TaskCreate, TaskGet, TaskUpdate und TaskList. Siehe Zu Task-Tools migrieren, um Ihren Überwachungscode zu aktualisieren, oder setzen Sie CLAUDE_CODE_ENABLE_TASKS=0, um zu TodoWrite zurückzukehren.

TaskCreate

Tool-Name: TaskCreate
Erstellt eine einzelne Aufgabe und gibt ihre zugewiesene ID zurück.

TaskUpdate

Tool-Name: TaskUpdate
Patcht eine Aufgabe nach ID. Setzen Sie status auf "deleted", um sie zu entfernen.

TaskGet

Tool-Name: TaskGet
Gibt vollständige Details für eine Aufgabe zurück oder null, wenn die ID nicht gefunden wird.

TaskList

Tool-Name: TaskList
Gibt einen Snapshot aller Aufgaben in der aktuellen Liste zurück.

ExitPlanMode

Tool-Name: ExitPlanMode
Beendet den Planungsmodus. Das Feld allowedPrompts ist veraltet und wird ignoriert; Claude Code akzeptiert es immer noch, damit vorhandene Aufrufer und Transkripte validiert werden. Vor v2.1.205 forderte es eingabeaufforderungsbasierte Bash-Berechtigungen zur Implementierung des Plans an.

ListMcpResources

Tool-Name: ListMcpResourcesTool
Listet verfügbare MCP-Ressourcen von verbundenen Servern auf.

ReadMcpResource

Tool-Name: ReadMcpResourceTool
Liest eine bestimmte MCP-Ressource von einem Server.

EnterWorktree

Tool-Name: EnterWorktree
Erstellt und betritt einen temporären Git-Worktree für isolierte Arbeit. Übergeben Sie path, um stattdessen in einen vorhandenen Worktree zu wechseln. Beim ersten Eintritt muss das Ziel ein registrierter Worktree des aktuellen Repositorys sein oder, in einem Multi-Repo-Workspace, eines Repositorys, das darin verschachtelt ist; von innerhalb einer Worktree-Sitzung muss es unter .claude/worktrees/ des Repositorys der Sitzung sein. name und path schließen sich gegenseitig aus.

Tool-Ausgabetypen

Dokumentation von Ausgabeschemas für alle integrierten Claude Code-Tools. Diese Typen werden aus @anthropic-ai/claude-agent-sdk exportiert und stellen die tatsächlichen Antwortdaten dar, die von jedem Tool zurückgegeben werden.

ToolOutputSchemas

Union aller Tool-Ausgabetypen.

Agent

Tool-Name: Agent (zuvor Task, das immer noch als Alias akzeptiert wird)
Gibt das Ergebnis vom Subagenten zurück. Diskriminiert nach dem status-Feld: "completed" für abgeschlossene Aufgaben, "async_launched" für Hintergrund-Aufgaben und "remote_launched" für Aufgaben, die Claude Code an eine Remote-Cloud-Sitzung versendet hat, wobei sessionUrl auf diese Sitzung verweist und taskId sie identifiziert. Das Feld resolvedModel in den Varianten completed und async_launched benennt das Modell, auf dem der Subagent tatsächlich ausgeführt wurde, das sich vom angeforderten model-Input unterscheiden kann, wenn availableModels oder eine andere Überschreibung gilt. Dieses Feld erfordert Claude Code v2.1.174 oder später. In der Variante completed wird worktreePath gesetzt, wenn der Subagent in einem isolierten Git-Worktree ausgeführt wurde, und worktreeBranch benennt den Branch dieses Worktrees, wenn Claude Code ihn erstellt hat. usage.service_tier enthält die Service-Tier-Zeichenkette, die die API für die Anfragen des Subagenten gemeldet hat. Vor v2.1.207 war der veröffentlichte Typ enger. Er ließ worktreePath, worktreeBranch, citations, toolStats.frameCount und die Nutzungsfelder inference_geo, speed und iterations weg, und er typisierte service_tier als "standard" | "priority" | "batch". Felder, die der Typ als optional markiert, können bei Ergebnissen fehlen, die von früheren Versionen aufgezeichnet wurden.

AskUserQuestion

Tool-Name: AskUserQuestion
Gibt die gestellten Fragen und die Antworten des Benutzers zurück. response wird gesetzt, wenn der Benutzer eine freie Antwort eingegeben hat, anstatt die strukturierten Fragen zu beantworten; wenn vorhanden, erhält Claude „Der Benutzer hat geantwortet: …” anstelle der Pro-Frage-Antworteliste.

Bash

Tool-Name: Bash
Gibt Befehlsausgabe mit aufgeteiltem Stdout/Stderr zurück. Hintergrund-Befehle enthalten eine backgroundTaskId.

Monitor

Tool-Name: Monitor
Gibt die Hintergrund-Aufgaben-ID für den laufenden Monitor zurück. Verwenden Sie diese ID mit TaskStop, um die Watch früh zu stornieren.

Edit

Tool-Name: Edit
Gibt den strukturierten Diff der Bearbeitungsoperation zurück.

Read

Tool-Name: Read
Gibt Dateiinhalte in einem Format zurück, das für den Dateityp geeignet ist. Diskriminiert nach dem type-Feld.

Write

Tool-Name: Write
Gibt das Schreib-Ergebnis mit strukturierten Diff-Informationen zurück.

Glob

Tool-Name: Glob
Gibt Dateipfade zurück, die dem Glob-Muster entsprechen, sortiert nach Änderungszeit.

Grep

Tool-Name: Grep
Gibt Suchergebnisse zurück. Die Form variiert je nach mode: Dateiliste, Inhalt mit Übereinstimmungen oder Übereinstimmungszahlen.

TaskStop

Tool-Name: TaskStop
Gibt Bestätigung nach dem Stoppen der Hintergrund-Aufgabe zurück.

NotebookEdit

Tool-Name: NotebookEdit
Gibt das Ergebnis der Notebook-Bearbeitung mit ursprünglichen und aktualisierten Dateiinhalten zurück.

WebFetch

Tool-Name: WebFetch
Gibt den abgerufenen Inhalt mit HTTP-Status und Metadaten zurück.

WebSearch

Tool-Name: WebSearch
Gibt Suchergebnisse aus dem Web zurück.

Workflow

Tool-Name: Workflow
Gibt sofort nach dem Akzeptieren des Tools die Invokation zurück. Das endgültige Ergebnis kommt später als Aufgabenvollendung an. Überprüfen Sie error, bevor Sie den Lauf als gestartet behandeln: Ein Skript, das seine Syntaxprüfung nicht besteht, gibt status: "async_launched" mit gesetztem error zurück und wird nie ausgeführt.

TodoWrite

Tool-Name: TodoWrite
Gibt die vorherigen und aktualisierten Aufgabenlisten zurück.
Ab TypeScript Agent SDK 0.3.142 ist TodoWrite standardmäßig deaktiviert. Verwenden Sie stattdessen TaskCreate, TaskGet, TaskUpdate und TaskList. Siehe Zu Task-Tools migrieren, um Ihren Überwachungscode zu aktualisieren, oder setzen Sie CLAUDE_CODE_ENABLE_TASKS=0, um zu TodoWrite zurückzukehren.

TaskCreate

Tool-Name: TaskCreate
Gibt die erstellte Aufgabe mit ihrer zugewiesenen ID zurück.

TaskUpdate

Tool-Name: TaskUpdate
Gibt das Aktualisierungsergebnis zurück, einschließlich welche Felder sich geändert haben.

TaskGet

Tool-Name: TaskGet
Gibt den vollständigen Aufgabendatensatz zurück oder null, wenn die ID nicht gefunden wird.

TaskList

Tool-Name: TaskList
Gibt einen Snapshot aller Aufgaben in der aktuellen Liste zurück.

ExitPlanMode

Tool-Name: ExitPlanMode
Gibt den Planzustand nach dem Beenden des Planungsmodus zurück.

ListMcpResources

Tool-Name: ListMcpResourcesTool
Gibt ein Array verfügbarer MCP-Ressourcen zurück.

ReadMcpResource

Tool-Name: ReadMcpResourceTool
Gibt die Inhalte der angeforderten MCP-Ressource zurück.

EnterWorktree

Tool-Name: EnterWorktree
Gibt Informationen über den Git-Worktree zurück.

Berechtigungstypen

PermissionUpdate

Operationen zum Aktualisieren von Berechtigungen.

PermissionBehavior

PermissionUpdateDestination

PermissionRuleValue

Andere Typen

ApiKeySource

SdkBeta

Verfügbare Beta-Funktionen, die über die betas-Option aktiviert werden können. Siehe Beta-Header für weitere Informationen.
Das context-1m-2025-08-07-Beta ist ab dem 30. April 2026 veraltet. Das Übergeben dieses Wertes mit Claude Sonnet 4.5 oder Sonnet 4 hat keine Auswirkung, und Anfragen, die das Standard-200k-Token-Kontextfenster überschreiten, geben einen Fehler zurück. Um ein 1M-Token-Kontextfenster zu verwenden, migrieren Sie zu Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7 oder Claude Opus 4.8, die 1M-Kontext zu Standardpreisen ohne Beta-Header enthalten.

SlashCommand

Informationen über einen verfügbaren Slash-Befehl.

ModelInfo

Informationen über ein verfügbares Modell.

AgentInfo

Informationen über einen verfügbaren Subagenten, der über das Agent-Tool aufgerufen werden kann.

McpServerStatus

Status eines verbundenen MCP-Servers.

McpServerStatusConfig

Die Konfiguration eines MCP-Servers, wie von mcpServerStatus() gemeldet. Dies ist die Union aller MCP-Server-Transporttypen.
Siehe McpServerConfig für Details zu jedem Transporttyp.

AccountInfo

Kontoinformationen für den authentifizierten Benutzer.

ModelUsage

Pro-Modell-Nutzungsstatistiken, die in Ergebnis-Nachrichten zurückgegeben werden. Der costUSD-Wert ist eine clientseitige Schätzung. Siehe Kosten und Nutzung verfolgen für Abrechnungsvorbehalt.

ConfigScope

NonNullableUsage

Eine Version von Usage mit allen nullable Feldern, die nicht nullable gemacht werden.

Usage

Token-Nutzungsstatistiken. Dies ist der BetaUsage-Typ aus @anthropic-ai/sdk.
BetaServerToolUsage und BetaIterationsUsage sind in @anthropic-ai/sdk definiert.

CallToolResult

MCP-Tool-Ergebnistyp (aus @modelcontextprotocol/sdk/types.js). structuredContent ist ein JSON-Objekt, das zusammen mit content zurückgegeben werden kann, einschließlich Bildblöcke. Siehe Strukturierte Daten zurückgeben.

ThinkingConfig

Steuert das Denk-/Reasoning-Verhalten von Claude. Hat Vorrang vor dem veralteten maxThinkingTokens.
Das optionale display-Feld steuert, ob Denk-Text "summarized" oder "omitted" zurückgegeben wird. Bei Claude Opus 4.7 und später ist der API-Standard "omitted", daher setzen Sie "summarized", um Denk-Inhalte in thinking-Blöcken zu erhalten.

SpawnedProcess

Schnittstelle für benutzerdefiniertes Process-Spawning (verwendet mit spawnClaudeCodeProcess-Option). ChildProcess erfüllt bereits diese Schnittstelle.

SpawnOptions

Optionen, die an die benutzerdefinierte Spawn-Funktion übergeben werden.
Das signal-Feld teilt Ihrer Spawn-Funktion mit, wann der Prozess abgebaut werden soll. Übergeben Sie es als signal-Option an Node’s spawn(), oder übergeben Sie es an Ihren VM- oder Container-Abbau-Handler.Dieses Signal wird nicht in dem Moment ausgelöst, in dem Options.abortController abbricht. Das SDK schließt zunächst die Standardeingabe des Prozesses und wartet etwa zwei Sekunden, damit die CLI sauber herunterfahren kann, dann bricht dieses Signal ab. Um in dem Moment zu reagieren, in dem der Aufrufer abbricht, hören Sie stattdessen auf Ihrem eigenen Options.abortController.signal, auf das Ihre Spawn-Funktion aus ihrem umschließenden Bereich verweisen kann.

McpSetServersResult

Ergebnis einer setMcpServers()-Operation.

RewindFilesResult

Ergebnis einer rewindFiles()-Operation.

SDKStatusMessage

Status-Update-Nachricht (z. B. Komprimierung).

SDKTaskNotificationMessage

Benachrichtigung, wenn eine Hintergrund-Aufgabe abgeschlossen, fehlgeschlagen oder gestoppt wird. Hintergrund-Aufgaben umfassen run_in_background Bash-Befehle, Monitor-Watches und Hintergrund-Subagenten.

SDKToolUseSummaryMessage

Zusammenfassung der Tool-Nutzung in einer Konversation.

SDKHookStartedMessage

Wird ausgegeben, wenn ein Hook mit der Ausführung beginnt. Claude Code liefert diese Nachricht, SDKHookProgressMessage und SDKHookResponseMessage sofort an den Nachrichtenstrom, auch während ein SessionStart- oder Setup-Hook noch während des Sitzungsstarts läuft. Claude Code v2.1.169 bis v2.1.203 lieferte diese Nachrichten in einem Batch, nachdem ein SessionStart- oder Setup-Hook abgeschlossen war; v2.1.204 stellte die Live-Lieferung wieder her.

SDKHookProgressMessage

Wird ausgegeben, während ein Hook läuft, mit Stdout/Stderr-Ausgabe.

SDKHookResponseMessage

Wird ausgegeben, wenn ein Hook die Ausführung beendet.

SDKToolProgressMessage

Wird regelmäßig ausgegeben, während ein Tool ausgeführt wird, um Fortschritt anzuzeigen.

SDKAuthStatusMessage

Wird während Authentifizierungsflüssen ausgegeben.

SDKTaskStartedMessage

Wird ausgegeben, wenn eine Hintergrund-Aufgabe beginnt. Das task_type-Feld ist "local_bash" für Hintergrund-Bash-Befehle und Monitor-Watches, "local_agent" für Subagenten oder "remote_agent".

SDKTaskProgressMessage

Wird regelmäßig ausgegeben, während ein Subagent oder eine Hintergrund-Aufgabe läuft. Das summary-Feld wird nur ausgefüllt, wenn agentProgressSummaries aktiviert ist.

SDKTaskUpdatedMessage

Wird ausgegeben, wenn sich der Status einer Hintergrund-Aufgabe ändert, z. B. wenn sie von running zu completed übergeht. Führen Sie patch in Ihre lokale Aufgabenkarte zusammen, die nach task_id indiziert ist. Das end_time-Feld ist ein Unix-Epoch-Zeitstempel in Millisekunden, vergleichbar mit Date.now().

SDKBackgroundTasksChangedMessage

Wird ausgegeben, wenn sich die Menge der aktiven Hintergrund-Aufgaben ändert: eine Aufgabe startet, wird abgeschlossen, wird beendet oder ein Vordergrund-Agent wird in den Hintergrund verschoben. Das tasks-Array ist die vollständige aktive Menge. Ersetzen Sie alle zwischengespeicherten Mengen mit jeder Nutzlast, anstatt task_started- und task_notification-Ereignisse zu koppeln, sodass die nächste Änderung der Mitgliedschaft alle verpassten Ereignisse korrigiert. Die Reihenfolge relativ zu diesen Pro-Aufgaben-Ereignissen ist nicht spezifiziert, daher korrelieren Sie die beiden Streams nicht. Beim Start wird nichts ausgegeben. Setzen Sie auf eine leere Menge zurück, wenn der CLI-Prozess der Sitzung startet oder neu startet, und lassen Sie die nächste Änderung der Mitgliedschaft ihn neu auffüllen. Erfordert Claude Code v2.1.203 oder später.

SDKThinkingTokensMessage

Wird ausgegeben, während Claude einen Denk-Block produziert, einschließlich eines redigierten, mit einer laufenden Schätzung der bisher generierten Denk-Token. estimated_tokens ist die laufende Summe für den aktuellen Denk-Block und estimated_tokens_delta ist das Inkrement, das von diesem Frame getragen wird. Verwenden Sie es für die Fortschrittsanzeige. Die endgültige Anzahl für die Top-Level-Agent-Schleife ist die usage.output_tokens der Ergebnis-Nachricht, die keine Subagenten-Token enthält; verwenden Sie modelUsage für die Gesamtbaum-Buchhaltung. Erfordert Claude Code v2.1.153 oder später.

SDKFilesPersistedEvent

Wird ausgegeben, wenn Datei-Checkpoints auf der Festplatte persistiert werden.

SDKRateLimitEvent

Wird ausgegeben, wenn die Sitzung auf ein Ratenlimit trifft.
Wenn errorCode "credits_required" ist, stammt die Ablehnung von einem claude.ai-Abonnement, dessen enthaltene Nutzung aufgebraucht ist, und die Sitzung kann nicht fortgesetzt werden, bis der Benutzer Nutzungsguthaben kauft. canUserPurchaseCredits gibt an, ob der authentifizierte Benutzer Guthaben für das Konto kaufen kann, und hasChargeableSavedPaymentMethod gibt an, ob eine gespeicherte Zahlungsmethode hinterlegt ist. Alle drei Felder fehlen bei Ratenlimit-Ereignissen, die keine Guthaben-erforderlich-Ablehnungen sind. Erfordert Claude Code v2.1.181 oder später.

SDKLocalCommandOutputMessage

Ausgabe aus einem lokalen Slash-Befehl (z. B. /voice oder /usage). Wird als Assistenten-ähnlicher Text im Transkript angezeigt.

SDKCommandsChangedMessage

Wird ausgegeben, wenn sich die Menge der verfügbaren Befehle während einer Sitzung ändert, z. B. wenn Skills entdeckt werden, wenn der Agent ein Unterverzeichnis betritt. Das commands-Array ist die vollständig aktualisierte Liste, daher ersetzen Sie alle zwischengespeicherten Befehlslisten durch diese Nutzlast. Das erneute Aufrufen von supportedCommands() ist nicht gleichwertig: Diese Methode gibt den bei der Initialisierung erfassten Snapshot zurück und spiegelt keine Änderungen während der Sitzung wider.

SDKPromptSuggestionMessage

Wird nach jedem Turn ausgegeben, wenn promptSuggestions aktiviert ist. Enthält eine vorhergesagte nächste Benutzer-Eingabeaufforderung.

SDKConversationResetMessage

Wird ausgegeben, wenn die Konversation der Sitzung ersetzt wird, ohne die Sitzung zu beenden, z. B. nach /clear, beim Beenden des Plan-Modus oder wenn eine neue Konversation startet. Mounten Sie ein leeres Transkript unter new_conversation_id und verwerfen Sie alle zwischengespeicherten Sitzungstitel.
Die veröffentlichten Typings des SDK deklarieren SDKConversationResetMessage in Claude Code v2.1.203 und später. Vor v2.1.203 referenzierte SDKMessage den Typ, ohne ihn zu deklarieren, daher schlug die Eingrenzung auf type === "conversation_reset" fehl, wenn skipLibCheck deaktiviert war.

AbortError

Benutzerdefinierte Fehlerklasse für Abbruchoperationen.

Sandbox-Konfiguration

SandboxSettings

Konfiguration für Sandbox-Verhalten. Verwenden Sie dies, um Command-Sandboxing zu aktivieren und Netzwerkbeschränkungen programmatisch zu konfigurieren.
Die Sandbox hängt von der Plattformunterstützung ab und benötigt unter Linux Tools wie bubblewrap und socat. Wenn enabled auf true gesetzt ist und die Sandbox nicht gestartet werden kann, meldet query() eine result-Nachricht mit subtype: "error_during_execution" und den Grund in errors. Für einen einzelnen query()-Aufruf wirft das SDK nach dem Liefern dieses Fehler-Ergebnisses, daher wickeln Sie die Schleife in einen try-Block ein, um über ihn hinwegzugehen. Siehe Handle the result für den Fehlervertrag.Um stattdessen unsandboxed auszuführen, setzen Sie failIfUnavailable: false.

Beispielverwendung

Unix-Socket-Sicherheit: Die allowUnixSockets-Option kann Zugriff auf leistungsstarke Systemdienste gewähren. Beispielsweise gewährt das Zulassen von /var/run/docker.sock effektiv vollständigen Host-Systemzugriff über die Docker-API und umgeht die Sandbox-Isolierung. Lassen Sie nur Unix-Sockets zu, die unbedingt erforderlich sind, und verstehen Sie die Sicherheitsauswirkungen jedes einzelnen.

SandboxNetworkConfig

Netzwerkspezifische Konfiguration für den Sandbox-Modus. Diese Einstellungen gelten für sandboxed Bash-Befehle, wenn enabled in den übergeordneten SandboxSettings auf true gesetzt ist. Sie beschränken das WebFetch-Tool nicht, das stattdessen Berechtigungsregeln verwendet.
Der integrierte Sandbox-Proxy erzwingt allowedDomains basierend auf dem angeforderten Hostnamen und beendet oder inspiziert keinen TLS-Verkehr, daher können Techniken wie Domain Fronting ihn möglicherweise umgehen. Siehe Sandboxing-Sicherheitsbeschränkungen für Details und Sichere Bereitstellung für die Konfiguration eines TLS-terminierenden Proxys.

SandboxFilesystemConfig

Dateisystemspezifische Konfiguration für den Sandbox-Modus.

Berechtigungen-Fallback für Unsandboxed-Befehle

Wenn allowUnsandboxedCommands aktiviert ist, kann das Modell anfordern, Befehle außerhalb der Sandbox auszuführen, indem es dangerouslyDisableSandbox: true in der Tool-Eingabe setzt. Diese Anfragen fallen auf das bestehende Berechtigungssystem zurück, was bedeutet, dass Ihr canUseTool-Handler aufgerufen wird, sodass Sie benutzerdefinierte Autorisierungslogik implementieren können. Im folgenden Beispiel steht isCommandAuthorized für eine Autorisierungsprüfung, die Sie definieren.
excludedCommands vs allowUnsandboxedCommands:
  • excludedCommands: Eine statische Liste von Befehlen, die immer automatisch die Sandbox umgehen (z. B. ['docker']). Das Modell hat keine Kontrolle darüber.
  • allowUnsandboxedCommands: Lässt das Modell zur Laufzeit entscheiden, ob es die Ausführung außerhalb der Sandbox anfordert, indem es dangerouslyDisableSandbox: true in der Tool-Eingabe setzt.
Dieses Muster ermöglicht es Ihnen:
  • Modell-Anfragen prüfen: Protokollieren Sie, wenn das Modell unsandboxed Ausführung anfordert
  • Allowlists implementieren: Nur bestimmte Befehle dürfen unsandboxed ausgeführt werden
  • Genehmigungsworkflows hinzufügen: Erfordern Sie explizite Autorisierung für privilegierte Operationen
Befehle, die mit dangerouslyDisableSandbox: true ausgeführt werden, haben vollständigen Systemzugriff. Stellen Sie sicher, dass Ihr canUseTool-Handler diese Anfragen sorgfältig validiert.Wenn permissionMode auf bypassPermissions gesetzt ist und allowUnsandboxedCommands aktiviert ist, kann das Modell autonom Befehle außerhalb der Sandbox ausführen, ohne dass Genehmigungsaufforderungen erforderlich sind (eine explizite ask-Regel erzwingt immer noch eine). Diese Kombination ermöglicht dem Modell effektiv, die Sandbox-Isolierung stillschweigend zu verlassen.

Siehe auch