Skip to main content

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. Die meisten Installationen benötigen keine separate Claude Code-Installation. Die SDK-Version verfolgt die gebündelte Claude Code-Version. SDK v0.3.191 bündelt Claude Code v2.1.191, daher benötigt eine Funktion auf dieser Seite, die eine Claude Code-Version erfordert, die SDK-Version mit der gleichen Patch-Nummer oder später. Wenn Ihr Paketmanager optionale Abhängigkeiten überspringt, wirft das SDK Native CLI binary for <platform>-<arch> not found; setzen Sie stattdessen pathToClaudeCodeExecutable auf eine separat installierte claude-Binärdatei.Wenn Ihr Paketmanager das npm-Feld libc nicht anwendet, wie Yarn 1.x nicht, erhalten Sie auf Linux sowohl die glibc- als auch die musl-Plattformpakete, was die Installationsgröße ungefähr verdoppelt. Bei Agent SDK v0.2.141 oder später startet das SDK immer noch die richtige Variante. Um den Speicherplatz in einem Container-Image freizugeben, löschen Sie das Plattformpaket, das nicht mit der libc übereinstimmt, wo Ihre App ausgeführt wird; für eine glibc-Laufzeit auf x64 ist das rm -rf node_modules/@anthropic-ai/claude-agent-sdk-linux-x64-musl. Auf einem Entwicklungscomputer ist das Löschen vorübergehend, da Yarn das Paket bei der nächsten Abhängigkeitsänderung neu installiert.

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>-<arch> not found. Um dies 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 Änderung ausgeführt wird. Jede kompilierte ausführbare Datei bettet 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.

Importieren Sie den /core-Eintrag, wenn Sie das Agent SDK bündeln

Wenn Ihre Anwendung das Agent SDK zusammen mit ihren eigenen Abhängigkeiten bündelt, importieren Sie von @anthropic-ai/claude-agent-sdk/core statt vom Paket-Root. Der /core-Eintrag erfordert TypeScript Agent SDK v0.3.282 oder später, und seine Typen erfordern TypeScript 5.0 oder später. Der /core-Eintrag exportiert dieselben query(), startup(), tool(), createSdkMcpServer() und resolveSettings() wie der Root-Eintrag, zusammen mit den Funktionen, die Sitzungen umbenennen, taggen und löschen, AbortError, die Laufzeitkonstanten und jeden Typ. Es fügt keine eigenen Namen hinzu. Um den Code, den Ihre Anwendung lädt, klein zu halten, lässt /core einige Root-Exporte weg, einschließlich prewarm(), die InMemorySessionStore-Klasse und die Helfer, die Sitzungen auflisten, lesen, forken, importieren und zusammenfassen. Wenn Sie einen davon benötigen, verwenden Sie stattdessen den Root-Eintrag. Der Root-Eintrag inliniert seine eigenen Kopien von zod und @modelcontextprotocol/sdk. Der /core-Eintrag importiert sie aus Ihrem node_modules in den Bereichen, die die peerDependencies des Agent SDK deklarieren, sodass ein Bundle, das sie bereits enthält, keine zweite Kopie trägt. Importieren Sie in einem bestimmten Prozess entweder vom Root oder von /core, nicht von beiden: Sie sind separate Bundles, und das Laden beider gibt Ihnen zwei Kopien der Klassen und des Zustands des Agent SDK.

Funktionen

query()

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

Parameter

Rückgabewert

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

startup()

Wärmt die CLI-Subprozess vor, indem sie 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 aufgelöst wird, ohne die Kosten für Subprozess-Spawn und Initialisierung inline zu zahlen. Wenn Sie das Arbeitsverzeichnis der Sitzung noch nicht kennen, verwenden Sie stattdessen prewarm().

Parameter

Rückgabewert

Gibt ein Promise<WarmQuery> zurück, das aufgelöst wird, sobald der Subprozess 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 verlagert Subprozess-Spawn und Initialisierung aus dem kritischen Pfad.

prewarm()

Alpha. Startet einen Claude Code-Prozess als Reserve, bevor Sie wissen, welche Sitzung er bedienen wird, sodass Sie ihn später mit claim() an eine Sitzung binden können. Verwenden Sie es in einer Anwendung, die startet, bevor der Benutzer einen Ordner auswählt. Erfordert TypeScript Agent SDK v0.3.282 oder später. prewarm() führt denselben Initialize-Handshake wie startup() durch, wobei der Prozess in options.cwd wartet, wenn Sie ihn setzen, und ansonsten in einem privaten temporären Verzeichnis unter Ihrem Claude Code-Konfigurationsverzeichnis. Das Arbeitsverzeichnis der Sitzung, ihre SessionStart-Hooks, ihre stdio-MCP-Server und ihr CLAUDE.md- und Git-Kontext warten auf die Beanspruchung. Eine Reserve belegt ungefähr 230 bis 260 MB Speicher, während sie wartet. Wenn Ihr spawnClaudeCodeProcess Claude Code auf einem anderen Computer oder in einem Container ausführt, setzen Sie options.cwd auf ein Verzeichnis, das dort existiert, damit die Reserve darin wartet.
options und initializeTimeoutMs bedeuten dasselbe wie für startup(), außer dass options.cwd nur das Verzeichnis setzt, in dem die Reserve wartet. Das Promise wird mit einem SpareProcess aufgelöst, sobald der Prozess seinen Initialize-Handshake abgeschlossen hat. prewarm() wirft einen Fehler, wenn options resume, continue oder forkSession setzt, da eine Reserve noch keine Sitzung hat. Alles, was ein Claim nicht setzen kann, wie mcpServers, hooks, canUseTool, settingSources, systemPrompt und plugins, ist für die Lebensdauer der Reserve festgelegt, daher halten Sie eine Reserve pro unterschiedlichem Satz dieser Optionen und wärmen Sie erneut vor, wenn sie sich ändern.

Beispiel

Wärmen Sie beim Anwendungsstart vor, dann beanspruchen Sie die Reserve, wenn der Benutzer eine Sitzung startet:

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. Die 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 durchsuchen.

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()

Markiert eine Sitzung mit einem Tag. Ü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 mit derselben 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.
Der Snapshot unterscheidet sich von dem, was eine Live-query()-Sitzung anwendet:
  • policyHelper: resolveSettings() liest MDM-Quellen, einschließlich macOS plist und Windows HKLM/HKCU, führt aber nicht den vom Administrator konfigurierten policyHelper-Subprozess aus.
  • Server-verwaltete Einstellungen: resolveSettings() ruft server-verwaltete Einstellungen nicht ab. Übergeben Sie sie als options.serverManagedSettings, um sie einzubeziehen.
  • defaultMode: Der Snapshot gibt permissions.defaultMode unverändert aus jeder Ebene zurück, sodass er die Werte 'auto' und 'bypassPermissions' aus Projekt- und lokalen Einstellungen enthalten kann, die eine Live-Sitzung ignoriert.

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 den Cleanup-Zeitraum steuert. Auf einem Computer, auf dem keine Einstellungsdatei cleanupPeriodDays setzt, zeigen beide gedruckten Zeilen undefined für den Wert an, was die erwartete Ausgabe ist, anstatt ein Fehler.

Typen

Options

Konfigurationsobjekt für die query()-Funktion.

Langsame oder steckengebliebene API-Antworten behandeln

Der CLI-Subprocess liest mehrere Umgebungsvariablen, die API-Timeouts und Stall-Erkennung steuern. Übergeben Sie sie über die env-Option:
  • API_TIMEOUT_MS: Pro-Anfrage-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, daher ist die schlimmste Wandzeit ungefähr API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1) plus Backoff. Für unbeaufsichtigte Läufe, die längere Ausfallzeiten abwarten müssen, setzen Sie CLAUDE_CODE_RETRY_WATCHDOG=1: Es versucht transiente Kapazitätsfehler unbegrenzt erneut und erhöht auf Claude Code v2.1.199 oder später den Standard für andere transiente Fehler auf 300 und entfernt die Obergrenze für diese Variable.
  • CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: Stall-Watchdog für Subagenten. Während der Stream-Watchdog eingeschaltet ist, ist der Standard CLAUDE_STREAM_IDLE_TIMEOUT_MS plus 5 Minuten, was 600000 ist, es sei denn, Sie erhöhen diese Variable. Mit dem Stream-Watchdog aus ist der Standard 600000. Vor v2.1.257 war der Standard immer 600000. Der Timer wird bei jedem Stream-Ereignis zurückgesetzt. Bei einem Stall bricht Claude Code den Subagenten ab und meldet den Stall dem übergeordneten Element. Für einen Hintergrund-Subagenten markiert es auch die Task als fehlgeschlagen und fügt alle Teilergebnisse an.
  • CLAUDE_ENABLE_STREAM_WATCHDOG mit CLAUDE_STREAM_IDLE_TIMEOUT_MS: Stream-Watchdog, der die Anfrage abbricht, wenn Header angekommen sind, aber der Antwortkörper nicht mehr streamt. Der Watchdog ist standardmäßig für alle Anbieter 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. Nach dem Abbruch behandelt Automatische Wiederholungen das, was Claude Code tut, basierend darauf, wie weit die Antwort fortgeschritten war. Während der Watchdog auf eine Antwort wartet, die ein Gateway hinter ANTHROPIC_BASE_URL mit Keep-Alive-Pings offen hält, empfängt ein Host, der includePartialMessages setzt, weiterhin ping-Stream-Ereignisse, daher lesen Sie diese Frames als Lebendigkeit, anstatt die Sitzung bei Stille zu zeitlich zu begrenzen. Vor v2.1.257 stoppten die Frames 5 Minuten nach dem letzten echten Stream-Ereignis.

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, mid-session geändert werden muss, z. B. das Verschärfen von permissions, 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 gleich wie setModel(). Nur einige Schlüssel treten mid-session in Kraft:
  • Angewendet bei der nächsten Umdrehung: effortLevel, ultracode, permissions, hooks, skillOverrides, fastMode, agent. Das Wechseln von agent wendet auch die Modellüberschreibung und Hooks dieses Agenten bei der nächsten Umdrehung an. Sein Systemprompt wird bei der nächsten Umdrehung angewendet oder, in einer Sitzung, die einen aufgezeichneten Systemprompt wiederverwenden, sobald die Sitzung komprimiert wird.
  • Während der aktuellen Umdrehung angewendet: model. Wenn Sie model wechseln, während Claude an einer Umdrehung arbeitet, wird die Antwort, die Claude bereits generiert, auf dem alten Modell beendet, und der Rest der Umdrehung, beginnend mit dem nächsten Aufruf, den Claude Code an das Modell macht, verwendet das neue. Subagenten behalten ihr eigenes Modell. Vor v2.1.212 wartete ein Mid-Turn-Wechsel auf die nächste Umdrehung.
  • Keine Auswirkung mid-session: die Systemprompt-Optionen. Diese werden einmal beim Start aufgelöst, daher behält die laufende Sitzung den ursprünglichen Wert, auch wenn der Aufruf erfolgreich ist. Um sie zu ändern, starten Sie eine neue Sitzung.
effortLevel akzeptiert einen Anstrengungsstufen-Namen. Es akzeptiert auch "ultracode", das xhigh-Anstrengung mit ultracode anfordert. applyFlagSettings() deklariert effortLevel ohne diesen Wert, daher übergeben Sie in TypeScript { ultracode: true, effortLevel: "xhigh" } für das gleiche Ergebnis, oder den ultracode-Schlüssel allein, um ultracode auf der aktuellen Anstrengungsstufe der Sitzung einzuschalten. 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. Vor v2.1.284 setzte der ultracode-Schlüssel allein auch die Stufe auf xhigh. Die Werte werden in die Flag-Einstellungsebene geschrieben, die gleiche Ebene, die die Inline-settings-Option von query() beim Start füllt. Dies ist die gleiche Ebene, die der On-Page-Rangfolge-Abschnitt 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 zu löschen, den Sie mit applyFlagSettings() gesetzt haben, übergeben Sie null für diesen Schlüssel. Die meisten Schlüssel fallen dann auf Quellen mit niedrigerer Priorität zurück. Ein gelöschtes model wird auf Claude Codes Standard-Modell zurückgesetzt, auch wenn eine Einstellungsdatei model setzt. Übergeben von undefined hat keine Auswirkung, da JSON-Serialisierung es ablegt. Drei Schlüssel neben model setzen Sitzungszustand zurück, anstatt auf Quellen mit niedrigerer Priorität zurückzufallen:
  • effortLevel: null gibt die Sitzung zur Standard-Anstrengungsstufe des Modells zurück, nicht zur effort-Option von query() oder einem effortLevel aus einer Einstellungsdatei.
  • agent: null führt den Hauptthread ohne Agenten aus, beginnend mit der nächsten Umdrehung, anstatt die agent-Option von query() oder einen agent aus einer Einstellungsdatei wiederherzustellen. Wenn der gelöschte Agent sein eigenes Modell angewendet hatte, kehrt die Sitzung zum Modell zurück, das sie beim Start aufgelöst hat.
  • ultracode: null schaltet ultracode aus, wie false es tut, anstatt einen ultracode-Wert aus einer Einstellungsdatei wiederherzustellen. Die Sitzung behält ihre aktuelle Anstrengungsstufe, daher übergeben Sie effortLevel im gleichen Aufruf, um sie zu ändern.
Nur im Streaming-Eingabemodus verfügbar, die gleiche Einschränkung wie setModel() und setPermissionMode(). Das Beispiel unten wechselt das aktive Modell mid-session und löscht dann die Überschreibung, damit das Modell auf Claude Codes Standard-Modell zurückgesetzt wird.
applyFlagSettings() ist nur TypeScript. Das Python SDK stellt keine äquivalente Methode bereit.

updateSettings()

Schreibt einen Allowlist-Schlüssel in eine Einstellungsdatei auf der Festplatte, damit der Wert für spätere Sitzungen persistiert, die diese Quelle laden. Jede Quelle akzeptiert einen Schlüssel, mit einem Zeichenkettenwert:
  • "localSettings": akzeptiert outputStyle und führt es in die lokale Einstellungsdatei des Projekts .claude/settings.local.json zusammen. Der neue Stil tritt bei der nächsten Anfrage der Sitzung in Kraft.
  • "userSettings": akzeptiert effortLevel und speichert es als Standard-Anstrengungsstufe für das aktuelle Modell der Sitzung, unter modelSettings in Ihrer Benutzereinstellungsdatei. Das Übergeben von max schreibt nichts, da max nur für Sitzungen ist. Die laufende Sitzung behält ihre aktuelle Anstrengungsstufe entweder so, daher rufen Sie applyFlagSettings() auf, wenn Sie das auch ändern möchten. Diese Quelle erfordert TypeScript SDK v0.3.277 oder später, das Claude Code v2.1.277 bündelt.
Der Aufruf lehnt ab, wenn die Anfrage einen anderen Schlüssel trägt, wenn die Sitzung über einen Remote-Transport läuft, und wenn die settingSources der Sitzung die Quelle ausschließen, die Sie nennen. Das Löschen eines Schlüssels wird nicht unterstützt.

toggleMcpServer()

Das Deaktivieren eines Servers trennt die Verbindung und entfernt seine Tools aus der Sitzung. Bei Servern, die Sie während der Sitzung hinzugefügt haben, und bei In-Process-Servern hängt dies von Ihrer Claude Code-Version ab:
  • Ein stdio-, SSE- oder HTTP-Server, den Sie während der Sitzung mit setMcpServers() hinzugefügt haben: Das Entfernen seiner Tools erfordert Claude Code v2.1.285 oder höher.
  • Ein In-Process-Server, den Sie mit createSdkMcpServer() erstellt haben, unabhängig davon, ob Sie ihn in mcpServers oder mit setMcpServers() übergeben haben: Das Trennen der Verbindung und das Entfernen seiner Tools erfordern Claude Code v2.1.286 oder höher. Das Deaktivieren eines solchen Servers lässt außerdem seine noch laufenden Tool-Aufrufe fehlschlagen, sodass Claude für jeden davon sofort ein Fehlerergebnis erhält, ohne darauf zu warten, dass Ihr Handler zurückkehrt.

WarmQuery

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

Methoden

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

SpareProcess

Alpha. Handle, das von prewarm() zurückgegeben wird: ein gestarteter Claude Code-Prozess, der noch nicht an eine Sitzung gebunden ist und einmal beansprucht werden kann. Erfordert TypeScript Agent SDK v0.3.282 oder später.

Mitglieder

options.cwd ist erforderlich. Eine Beanspruchung kann auch additionalDirectories, model, permissionMode, maxThinkingTokens, eine Flag-Einstellungs-Überlagerung in settings, appendSystemPrompt, title, agents und sitzungsspezifische Token in env setzen. Claude Code kann eine Beanspruchung verweigern, z. B. für einen Ordner, der nicht existiert, oder einen, dessen Projekteinstellungen env, agent oder model setzen. Wenn claimed mit einer Nachricht ablehnt, die mit option_not_applied beginnt, läuft die Sitzung ohne das model oder maxThinkingTokens, das Sie angefordert haben. Nach jeder anderen Ablehnung ist Ihre Eingabeaufforderung nicht gelaufen, daher starten Sie die Sitzung stattdessen mit query().

SDKControlInitializeResponse

Rückgabetyp von initializationResult(). Enthält Sitzungsinitialisierungsdaten.
hooks_applied meldet, ob Claude Code die hooks registriert hat, die die initialize-Anfrage trug. Das SDK sendet diese Anfrage einmal, wenn die Sitzung startet, und erneut bei jedem reinitialize()-Aufruf. Das Feld erfordert Agent SDK v0.3.238 oder später. Claude Code lässt das Feld weg, wenn die Anfrage keine Hooks trug. Wenn die Anfrage Hooks trug, hängt der Wert davon ab, ob die Anfrage die erste Initialisierung der Sitzung ist und, für eine wiederholte, wie sie die Sitzung erreichte:
  • true: Claude Code registrierte die Hooks. Eine erste Initialisierung einer Sitzung gibt diesen Wert zurück. Eine wiederholte Initialisierung, die über die CLI-Standardeingabe gesendet wird, gibt auch true zurück. In diesem Fall ersetzen die Hooks in der neuen Anfrage die Hooks, die früher registriert wurden.
  • false: Claude Code ignorierte die Hooks. Eine wiederholte Initialisierung, die an eine Remote-Sitzung gesendet wird, gibt diesen Wert zurück, daher kann ein zweiter Client, der einer Sitzung beitritt, die Hooks, die der erste Client registrierte, nicht ersetzen.
Vor Agent SDK v0.3.238 trug die Antwort niemals das Feld, und Claude Code ignorierte hooks bei jeder wiederholten Initialisierung. Das Feld sdkMcpServerManifests der Anfrage und das Feld sdk_mcp_manifests_parked der Antwort betreffen die In-Process-SDK-MCP-Server, die Sie mit createSdkMcpServer() erstellt haben. Ihre Anwendung setzt oder liest keines dieser Felder. Die Antwort meldet immer fast_mode_state, und wenn etwas Fast-Modus blockiert, trägt fast_mode_disabled_reason den Grund-Code daneben, daher können Sie den blockierten Zustand erklären, anstatt die Verfügbarkeit neu abzuleiten. Beide Verhaltensweisen erfordern Claude Code v2.1.219 oder später. Vor v2.1.219 ließ die Antwort fast_mode_state weg, wenn Fast-Modus nicht verfügbar war, und trug niemals einen Grund. Für die Grund-Codes und ihre Bedeutungen siehe fast_mode_disabled_reason auf der Ergebnis-Nachricht. Der Steuer-Antwort-Wrapper für eine erfolgreiche initialize trägt auch ein pending_permission_requests-Array. Das Feld ist auf dem Antwort-Wrapper selbst, nicht in der SDKControlInitializeResponse-Nutzlast oben. 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. Das Array listet die Berechtigungsanfragen auf, die dieser Claude Code-Prozess ausgegeben hat und noch nicht aufgelöst hat. Das SDK liest das Array für Sie und versendet jeden Eintrag an Ihren canUseTool-Callback, die gleiche Neulieferung, die reinitialize() nach einer Transportlücke auslöst. Behandeln Sie wiederholte Anfrage-IDs idempotent, da ein Eintrag eine Anfrage wiederholen kann, die der Callback bereits erhalten hat, bevor die Verbindung unterbrochen wurde. Das Array ist immer auf einer erfolgreichen initialize-Antwort vorhanden und ist leer, wenn dieser Prozess keine ungelöste Berechtigungsanfrage hat. Erfordert Claude Code v2.1.268 oder später. Frühere Versionen könnten das Feld auslassen, daher behandeln Sie ein fehlendes Feld als ältere CLI, wenn Sie das Drahtprotokoll selbst analysieren, anstatt als Beweis, dass nichts ausstehend ist.

SDKControlInterruptResponse

Die Unterbrechnungsbestätigung: der Wert, mit dem interrupt() auf einer CLI aufgelöst wird, die die interrupt_receipt_v1-Fähigkeit in SDKSystemMessage.capabilities ankündigt. Erfordert Claude Code v2.1.205 oder später. Frühere CLIs beantworten die Unterbrechung mit einer leeren Erfolgsnutzlast, daher wird interrupt() mit undefined aufgelöst.
still_queued listet die UUIDs der Benutzernachrichten auf, die ausstanden, als die Unterbrechung ankam: Nachrichten, die noch in der Warteschlange sind, plus alle Nachrichten, die Claude Code bereits aus der Warteschlange für die nächste Umdrehung genommen hatte. Sobald die erste Umdrehung der Sitzung gestartet hat, verarbeitet Claude Code die aufgelisteten Nachrichten nach der Unterbrechung, es sei denn, Sie stornieren sie zuerst, und kann mehrere in eine Umdrehung zusammenführen. Wenn Sie vor dem Start der ersten Umdrehung unterbrechen, bricht Claude Code diese Umdrehung ab, sobald sie startet, und die aufgelisteten Nachrichten in dieser Umdrehung erhalten keine Antwort. Verwenden Sie die Bestätigung, um zu entscheiden, ob Sie etwas erneut senden möchten. Eine aufgelistete Nachricht, die Sie nicht stornieren, tritt in das Gespräch ein, unabhängig davon, ob sie eine Antwort erhält, daher wird das erneute Senden an Claude zweimal gesendet. Interpretieren Sie die Liste mit diesen Vorbehalten:
  • Nur Nachrichten, die mit einer UUID in die Warteschlange eingereiht wurden, erscheinen. Ein leeres Array bedeutet nicht, dass nichts anderes läuft.
  • 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.
Ein Client, der das Steuerprotokoll der CLI direkt antreibt, anstatt über interrupt(), kann cancel_queued: true auf der interrupt-Steueranfrage setzen. Claude Code v2.1.219 und später kündigt Unterstützung mit der interrupt_cancel_queued_v1-Fähigkeit in SDKSystemMessage.capabilities an; ältere CLIs ignorieren das Feld und lassen Warteschlangen-Nachrichten wie gewohnt laufen. Eine solche Unterbrechung storniert auch jede Nachricht, die sonst unter still_queued aufgelistet würde: die Bestätigung listet sie stattdessen unter cancelled auf, still_queued ist leer, und keine von ihnen läuft. Die cancelled-Liste trägt die gleichen Vorbehalte wie still_queued. Die interrupt()-Methode sendet niemals cancel_queued, daher tragen Bestätigungen, mit denen sie aufgelöst wird, nicht cancelled. Die Bestätigung ist eine Momentaufnahme, die zum Zeitpunkt der Verarbeitung der Unterbrechung aufgenommen wird, und bei einer sauberen Unterbrechung kommt sie vor der SDKResultMessage der unterbrochenen Umdrehung an. Lesen Sie die Bestätigung, anstatt die Warteschlange nach diesem Ergebnis zu überprüfen: die Schleife startet die nächste Warteschlangen-Umdrehung sofort, daher hat sich die Warteschlange, die Sie nach dem Ergebnis überprüfen, bereits geändert.

SDKControlGetContextUsageResponse

Rückgabetyp von getContextUsage(). Mit dem Standard detail ist dies die gleiche Nutzlast, die Claude Code für den /context-Befehl in einer interaktiven Sitzung rendert, daher trägt sie neben den Token-Zählungen Anzeigefelder wie color und gridRows, die Claude Code verwendet, um das /context-Nutzungsgitter zu zeichnen. Das optionale detail-Argument der Methode wählt, wie Claude Code jede Kategorie zählt. Das detail-Argument erfordert Agent SDK v0.3.257 oder später.
  • 'full': der Standard. Claude Code zählt jede Kategorie mit Token-Zähl-API-Anfragen. Diese Anfragen erscheinen nicht im Nachrichtenstrom, daher wird die Kostenverfolgung, die den Strom liest, sie nicht sehen. Auf der Anthropic API wird Token-Zählung nicht abgerechnet.
  • 'summary': übergeben Sie { detail: 'summary' }, um eine Antwort aus der letzten Antwort-Nutzung und lokalen Schätzungen zu erhalten. Keine Token-Zähl-Anfragen gehen raus, und die Pro-Kategorie-Zahlen sind ungefähr.
Wenn Sie /context als Eingabeaufforderung anstelle des Aufrufs der Methode senden, fügt Claude Code eine SDKContextUsage-Nutzlast an das context_usage-Feld der Assistent-Nachricht an, die das Ergebnis liefert. Dieses Feld erfordert Agent SDK v0.3.232 oder später.
Lesen Sie Token-Zuordnung aus den Sammlungsfeldern:
  • categories enthält die Pro-Kategorie-Summen. Jeder Eintrag’s kind klassifiziert die Zeile mit den gleichen Werten wie SDKContextUsageCategory. Klassifizieren Sie Zeilen darauf, anstatt auf dem Anzeige-name. Das Feld erfordert Agent SDK v0.3.268 oder später.
  • mcpTools und agents ordnen Token einzelnen MCP-Tools und Subagenten zu.
  • memoryFiles listet jede geladene Speicherdatei mit ihren Kosten auf.
  • skills.skillFrontmatter ordnet die Token der Fähigkeitsliste jeder eingeschlossenen Fähigkeit zu. Die Pro-Fähigkeit-Zählungen messen jeden Fähigkeitslisten-Eintrag, wie Claude Code ihn tatsächlich sendet, was kürzer als die vollständige Frontmatter der Fähigkeit sein kann. Vergleichen Sie skills.totalSkills mit skills.includedSkills, um zu sehen, ob jede entdeckte Fähigkeit in die Liste aufgenommen wurde.
totalTokens ist die aktuelle Kontextnutzung der Sitzung, und maxTokens ist das Fenster, gegen das die Nutzung gemessen wird. Dieses Fenster ist das Kontextfenster des Modells oder das niedrigere Auto-Komprimierungs-Fenster, wenn eines zutrifft. rawMaxTokens trägt den gleichen Wert wie maxTokens, und percentage ist totalTokens als gerundeter Prozentsatz dieses Fensters. apiUsage enthält die Nutzung aus der neuesten API-Antwort, nicht eine laufende Summe für die Sitzung. Claude Code lässt die optionalen deferredBuiltinTools-, systemTools- und systemPromptSections-Diagnosen ungesetzt, daher erwarten Sie, dass sie abwesend sind, auch wenn der Typ sie deklariert.

SDKControlReadFileResponse

Rückgabetyp von readFile().
contents enthält den Dateitext oder Base64-Daten, wenn Sie encoding: 'base64' angefordert haben; das encoding-Feld der Antwort wird in diesem Fall auf 'base64' gesetzt. absPath ist der aufgelöste absolute Pfad. truncated wird gesetzt, wenn die Datei länger als die maxBytes-Obergrenze war und der Inhalt bei diesem Limit gekürzt wurde.

Was readFile() lesen kann

readFile() bedient einen engeren Satz von Dateien als das Read-Tool:
  • Eine reguläre Datei in einem der Arbeitsverzeichnisse der Sitzung, z. B. cwd und additionalDirectories
  • Ein paar von Claude Codes eigenen Dateien für die Sitzung, z. B. Tool-Ergebnisse
Read-Deny- und Ask-Regeln blockieren immer noch einen übereinstimmenden Pfad, und eine breite Read-Allow-Regel öffnet nicht den Rest des Dateisystems für readFile(). Für alles andere wird der Aufruf mit null aufgelöst.

SDKControlReloadPluginsResponse

Rückgabetyp von reloadPlugins().
Die Sammlungsfelder beschreiben die Sitzung nach dem Aufruf:
  • commands, agents und mcpServers: die Befehle, Subagenten und MCP-Server-Status der Sitzung, in den gleichen Formen, die supportedCommands(), supportedAgents() und mcpServerStatus() zurückgeben. supportedAgents() gibt weiterhin die Liste zurück, die bei der Initialisierung erfasst wurde, daher lesen Sie agents hier für die Menge nach einem Neuladen
  • plugins: jedes geladene Plugin mit seinem name und Install-path. version wiederholt, was das Manifest des Plugins deklariert, und ist vom Plugin-Autor kontrolliert, daher validieren Sie es, bevor Sie es vertrauen. Es wird weggelassen, wenn das Manifest keines deklariert
  • error_count: die Anzahl der Fehler beim Laden von Plugins
Übergeben Sie { holdOnCacheImpact: true } an reloadPlugins(), um ein Neuladen zu halten, das den Prompt-Cache des Gesprächs ungültig machen würde, anstatt es anzuwenden. Claude Code führt die Prüfung durch, die der interaktive /reload-plugins-Befehl macht, bevor er vor den Cache-Kosten warnt. Die Option erfordert Agent SDK v0.3.268 oder später. Eine Claude Code-Ausführungsdatei älter als v2.1.268, z. B. eine, auf die Sie pathToClaudeCodeExecutable verweisen, ignoriert die Option und wendet das Neuladen an. Wenn Sie die Option übergeben, lesen Sie held, um zu erfahren, was passiert ist:
  • true: das Neuladen wurde nicht angewendet, und die Sammlungsfelder beschreiben die Sitzung, wie sie immer noch ist. cache_impact sagt, was das Anwenden ändern würde. Um es trotzdem anzuwenden, rufen Sie reloadPlugins() erneut ohne die Option auf.
  • false: die Prüfung fand keine Cache-Auswirkung, und das Neuladen wurde angewendet.
  • Abwesend: Sie haben die Option nicht übergeben, oder die Claude Code-Ausführungsdatei ist älter als v2.1.268 und hat das Neuladen angewendet.
cache_impact ist nur neben held: true vorhanden. mcp_servers_added und mcp_servers_removed nennen die Plugin-MCP-Server, die das Neuladen registrieren oder ablegen würde, als scoped plugin:<plugin>:<server>-Namen. Die Namen sind vom Plugin-Autor, daher validieren Sie sie, bevor Sie sie anzeigen. lsp_tool_change sagt, ob das Anwenden das LSP-Tool hinzufügen oder entfernen würde, oder null, wenn es keines von beiden tun würde. Die may--Formen bedeuten, dass die Prüfung die ausstehende Plugin-Menge nicht vollständig sehen konnte.

SDKControlReloadSkillsResponse

Rückgabetyp von reloadSkills().
skills listet die nach dem Neuladen verfügbaren Fähigkeiten in der gleichen SlashCommand-Form auf, die supportedCommands() zurückgibt.

SDKControlReloadOutputStylesResponse

Rückgabetyp von reloadOutputStyles().
available_output_styles listet die Namen der integrierten und benutzerdefinierten Ausgabestile auf, die nach dem Neuladen verfügbar sind.

SDKControlMcpReadResourceResponse

Rückgabetyp von readMcpResource(), der das resources/read-Ergebnis des MCP-Servers trägt. Erfordert TypeScript Agent SDK v0.3.280 oder später.
Übergeben Sie readMcpResource() den Server-Namen, wie mcpServerStatus() ihn meldet, und eine ui://-URI, z. B. die ui.resourceUri, die ein Tool in seinen _meta deklariert. Der Aufruf lehnt für jedes andere URI-Schema ab, für einen SDK MCP-Server, den Ihre Anwendung selbst hostet, und für einen Server, der nicht verbunden ist. Es ist verfügbar, wenn die Init-Nachricht capabilities mcp_read_resource_v1 enthalten. Jeder contents-Eintrag ist ein Inhalts-Element, wie der Server es gesendet hat, minus jedes _meta-Schlüssel unter dem com.anthropic/-Präfix, das für Claude Code reserviert ist. blob enthält Base64-Daten für ein binäres Element, und _meta ist das _meta des Elements selbst, wo ein MCP Apps-Server die ui.csp und ui.permissions der Ressource ablegt. Die Inhalte sind nicht vertrauenswürdiges HTML von Drittanbietern, daher rendern Sie sie in einer Sandbox.

AgentDefinition

Konfiguration für einen programmgesteuert 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 dateisystem-basierte 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. 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:
Nur bestimmte Einstellungsquellen laden:
Um CLAUDE.md-Projektanweisungen zu laden, beziehen Sie "project" in settingSources ein. Siehe Systemprompts ändern, um zu sehen, wie CLAUDE.md-Laden mit den Systemprompt-Optionen interagiert.

Einstellungs-Rangfolge

Wenn mehrere Quellen geladen werden, werden Einstellungen mit dieser Rangfolge 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

Benutzerdefinierter 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 Einstellungs-Allow-Regel oder dem Berechtigungsmodus wie acceptEdits oder bypassPermissions genehmigt wurden, rufen sie niemals auf. Um jeden Tool-Aufruf zu gating, verwenden Sie stattdessen einen PreToolUse-Hook. Eine Allow-Regel genehmigt nicht vorab die Aktionen, die kein Modus automatisch genehmigt; siehe Wie Berechtigungen bewertet werden, um zu sehen, welche von ihnen den Callback erreichen und was in dontAsk- und auto-Modus passiert.
Der Callback löst die Anfrage normalerweise auf, indem er ein PermissionResult zurückgibt, 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 zu seinem 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:
Für vollständige Informationen zum Erstellen und Verwenden von Plugins siehe 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', 'account_on_hold', 'billing_error', 'rate_limit', 'overloaded', 'invalid_request', 'model_not_found', 'server_error', 'max_output_tokens', 'cloud_credential_error' oder 'unknown'. Vier dieser Werte bedeuten mehr als ihre Namen aussagen:
  • 'model_not_found': Das ausgewählte Modell existiert nicht oder ist nicht für Ihr Konto oder Ihre Bereitstellung verfügbar
  • 'overloaded': Die API hat einen 529-Fehler zurückgegeben, weil der Server ausgelastet ist, im Gegensatz zu 'rate_limit', das ein 429-Fehler gegen Ihr Kontingent ist
  • 'account_on_hold': Ihr Konto ist gesperrt
  • 'cloud_credential_error': Claude Code konnte keine verwendbaren AWS- oder Google Cloud-Anmeldedaten auf der Maschine, auf der es läuft, abrufen, daher erreichte keine Anfrage den Cloud-Anbieter. Die übliche Ursache ist eine Cloud-Anmeldung, die abgelaufen ist oder auf dieser Maschine nie abgeschlossen wurde, obwohl ein kurzzeitig unerreichbarer Anmeldedatendienst denselben Wert meldet. Siehe AWS- oder Google Cloud-Anmeldedaten konnten nicht geladen werden. Erfordert TypeScript Agent SDK v0.3.267 oder später, das Claude Code v2.1.267 bündelt
aborted ist true, wenn ein Interrupt oder Abbruch die Assistenten-Nachricht vor Abschluss des Streams abgeschnitten hat: Die Nachricht hat keinen stop_reason und der Inhalt kann mitten im Wort enden. Das Feld fehlt bei normal abgeschlossenen Nachrichten. Es erfordert Agent SDK v0.3.214 oder später. Claude Code setzt user_message_uuid und user_message_uuids auf die erste Assistenten-Nachricht des Turns unter den Bedingungen in user_message_uuid. Wenn Claude Code einen Turn erneut ausführt, den ein Neustart unterbrochen hat, tragen die Assistenten-Nachrichten des erneuten Durchlaufs, die diese Felder tragen, auch resume_reason. timestamp ist die ISO-8601-Zeit, wenn die Generierung des Nachrichteninhalts auf dem Prozess, der ihn erzeugt hat, beendet wurde. Der Wert stammt von der Uhr dieser Maschine, daher verwenden Sie ihn nur zur Anzeige und ordnen Sie Nachrichten nicht danach. Ein API-Turn kann mehrere Assistenten-Nachrichten erzeugen, die eine message.id teilen, jede mit ihrem eigenen timestamp. Wenn das Feld fehlt, greifen Sie auf die Zeit zurück, zu der Sie die Nachricht erhalten haben. context_usage ist eine strukturierte Kopie des /context-Berichts, typisiert als SDKContextUsage, und erfordert Agent SDK v0.3.232 oder später. Wenn Sie /context als Prompt senden, liefert Claude Code den Bericht als Assistenten-Nachricht, deren message.content die Markdown-Tabelle enthält, und fügt context_usage an dieselbe Nachricht an. Claude Code setzt das Feld nicht auf andere Assistenten-Nachrichten, und frühere Versionen liefern die /context-Tabelle ohne es, daher lesen Sie die Aufschlüsselung aus dem Feld, wenn es vorhanden ist, und greifen Sie auf den Markdown-Text zurück, wenn es nicht vorhanden ist.

SDKUserMessage

Benutzer-Eingabenachricht.
Setzen Sie pasted_content, um Inhalte zu senden, die der Benutzer in Ihre Prompt-Benutzeroberfläche eingefügt hat, anstatt sie einzugeben, einen Eintrag pro Einfügung, jeder ein String oder ein Array von Inhaltsblöcken. Claude Code fügt den Text jedes Eintrags nach dem eingegebenen Text an, in Reihenfolge, und kann jede Einfügung in <pasted_content>-Tags einwickeln. Blöcke außer Text werden ignoriert, daher senden Sie Bilder und Dokumente in message.content. Erfordert Agent SDK v0.3.277 oder später. Setzen Sie inline_pastes, um Claude Code mitzuteilen, welche Teile von message.content der Benutzer eingefügt statt eingetippt hat, ein String pro Einfügung. Der Prompt-Text bleibt dort, wo der Benutzer ihn platziert hat. Claude Code kann jede aufgeführte Einfügung an ihrer Stelle in <pasted_content>-Tags einschließen, damit Claude eingefügtes Material von den eigenen Worten des Benutzers unterscheiden kann. Nur Einfügungen im letzten Textblock des Prompts werden eingeschlossen. Erfordert TypeScript Agent SDK v0.3.280 oder höher. Setzen Sie shouldQuery, client_composed oder priority, um zu ändern, wie Claude Code eine von Ihnen gesendete Nachricht behandelt:
  • shouldQuery: Setzen Sie es 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.
  • client_composed: Setzen Sie es auf true, um Claude Code die Nachricht so zu liefern, wie sie geschrieben ist. Claude Code erweitert dann nicht @path oder @server:resource-Erwähnungen und führt keinen Text aus, der mit / beginnt, als Befehl aus. Während die verbatimPrompts-Option aktiv ist, setzt das SDK das Feld auf jede Nachricht. Erfordert TypeScript Agent SDK v0.3.280 oder später und Claude Code v2.1.248 oder später.
  • priority: steuert, wann eine Nachricht, die Sie während eines laufenden Turns senden, Claude erreicht:
    • 'next' oder kein priority-Feld: Claude liest die Nachricht im selben Turn, sobald die laufenden Tool-Aufrufe abgeschlossen sind. Endet der Turn vorher, startet die Nachricht den nächsten Turn.
    • 'later': Claude Code hält die Nachricht zurück, bis der Turn endet, und sendet sie als neuen Turn.
    • 'now' mit origin: { kind: "human" }: Ab Claude Code v2.1.286 wird Arbeit, die im Hintergrund fortgesetzt werden kann, dorthin verschoben, und Claude liest die Nachricht im selben Turn. Zur verschiebbaren Arbeit gehören Shell-Befehle, Subagenten und MCP-Tool-Aufrufe. Ab v2.1.287 gehören auch WebFetch- und WebSearch-Aufrufe dazu. Wenn Claude nur eine Antwort schreibt oder die laufende Arbeit nicht verschoben werden kann, unterbricht Claude Code stattdessen den Turn, und Claude liest die Nachricht als Nächstes.
    • 'now' ohne diesen Origin: Claude Code unterbricht den Turn, und Claude liest die Nachricht als Nächstes.
Diese Nachricht, gesendet während ein Turn läuft, bittet Claude, die Richtung zu ändern, ohne einen noch laufenden Shell-Befehl zu verlieren:
Bei einer Nachricht, die einen tool_result-Block enthält, ist tool_use_result das strukturierte Ausgabeobjekt des Tools und nicht der an das Modell gesendete Text. Seine Form hängt von dem Tool ab, das im zugehörigen tool_use-Block genannt wird, daher ist das Feld als unknown typisiert; die integrierten Formen sind unter Tool-Ausgabetypen aufgeführt. Diese Ergebnisse erfordern eine Behandlung über ihre aufgeführte Form hinaus:
  • Das Agent-Tool: tool_use_result ist AgentOutput. Rendern Sie daraus, statt den tool_result-Text zu parsen. Der content eines completed-Ergebnisses enthält den Bericht des Subagenten oder, bei einem Subagenten, dessen Bericht über einen SubagentHandback-Tool-Aufruf läuft, anstelle des Berichts einen kurzen Hinweis auf diese Übergabe. Im Auto-Modus ab Claude Code v2.1.271 berichtet jeder Subagent, der ein completed-Ergebnis erzeugt, auf diese Weise, sofern er kein Fork ist, und Claude erhält den Bericht als separate Nachricht vom Subagenten.
  • Ein WebFetch- oder WebSearch-Aufruf, den Claude Code in den Hintergrund verschoben hat, um eine 'now'-Nachricht zuzustellen: Bei der Benutzernachricht, die das tool_result dieses Aufrufs enthält, ist tool_use_result auf { detachedToolCall: true } gesetzt. Der Aufruf läuft weiter, und Claude erhält sein Ergebnis, sobald er abgeschlossen ist. Es folgt kein zweites tool_result für diese tool_use_id. Wenn Ihre Anwendung also für jeden Tool-Aufruf eine Zeile darstellt, markieren Sie diese Zeile als in den Hintergrund verschoben, wenn diese Nachricht eintrifft. Erfordert Claude Code v2.1.287 oder höher.
  • Ein MCP-Tool, dessen Ergebnis resource_link-Blöcke enthält: tool_use_result ist ein Objekt mit einem resourceLinks-Array aus SDKMcpResourceLink-Einträgen. Claude erhält jeden Link als Textzeile im tool_result-Block. Lesen Sie daher resourceLinks, um die vom Server zurückgegebenen Dateien darzustellen, statt diesen Text zu parsen. Claude Code lässt resourceLinks weg, wenn das Ergebnis keine Links enthält, sowie bei Ergebnissen von Subagenten, behält höchstens 50 Links pro Ergebnis und fügt keine weiteren Links hinzu, sobald das Array 64 KiB serialisiertes JSON erreicht. resourceLinks erfordert Agent SDK v0.3.257 oder höher.
  • Ein MCP-Tool, das structuredContent zurückgibt: tool_use_result ist ein Objekt, dessen Member structuredContent enthält, was der Server gesendet hat, und dessen Member content den McpOutput-Wert enthält. Ergebnisse von Subagenten enthalten kein structuredContent.
  • Ein MCP-Tool, dessen structuredContent zu mehr als 1.048.576 Zeichen JSON serialisiert wird: Claude Code lässt structuredContent in tool_use_result weg und setzt stattdessen structuredContentOmitted: true, damit Ihre Anwendung ein verworfenes Objekt von einem Tool unterscheiden kann, das keines gesendet hat. Die anderen Member, etwa content und resourceLinks, bleiben erhalten, und was Claude erhält, ändert sich nicht. Tools von In-Process-SDK-Servern und Tools, deren tools/list-Eintrag eine MCP-Apps-_meta.ui-Ressource deklariert, sind ausgenommen und liefern das Objekt vollständig. Claude Code v2.1.287 oder höher wendet diese Obergrenze an.

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.
  • user_message_uuid: Die uuid der Nachricht, die Sie gesendet haben und die dieser Turn beantwortet hat. Siehe user_message_uuid dazu, welche Ergebnisse sie tragen.
  • user_message_uuids: Die uuids jeder Nachricht, die Sie gesendet haben und die Claude Code in diesem Turn beantwortet hat. Siehe user_message_uuids.
  • resume_reason: Warum Claude Code diesen Turn nach einem Neustart erneut ausgeführt hat, der ihn unterbrochen hat. Vorhanden auf beiden Armen und nur bei einem solchen erneuten Durchlauf. Siehe resume_reason.
  • local_command: Der Name des Befehls, den der Turn versendet hat, auf dem Success-Ergebnis eines Turns, den ein Befehl abgeschlossen hat, ohne die Agentenschleife zu betreten, wie /compact. Der Name wird auf Kleinbuchstaben und Unterstriche gefaltet, daher meldet /reload-plugins reload_plugins. Ein Befehl, den ein MCP-Server bereitstellt, und das integrierte /mcp melden mcp. Ein Befehl, den Sie selbst definiert haben, meldet custom. Die Argumente sind nie enthalten. Fehlt bei jedem Turn, der die Agentenschleife betreten hat, und bei Sends, die keinen Befehl ausgeführt haben. Erfordert Agent SDK v0.3.268 oder später.
  • request_sent_wall_ms: Epoch-Millisekunden, zu denen Claude Code die API-Anfrage versendet hat, für Joins gegen Server-seitige Zeitstempel. Nur zusammen mit user_message_uuid vorhanden, auf einem Success-Ergebnis mit is_error false, dessen Turn eine API-Anfrage versendet hat.
  • first_content_frame_ms: Zeit in Millisekunden bis zum ersten content_block_start- oder content_block_delta-Stream-Ereignis, wobei Thinking-Blöcke als Inhalt gezählt werden. Nur auf dem Success-Arm vorhanden, wenn is_error false ist. Erfordert Agent SDK v0.3.260 oder später.
  • first_stream_post_ms, first_stream_post_ack_ms, first_stream_post_wall_ms: Zeitangaben zum Hochladen des ersten Stream-Ereignisses des Turns. Claude Code zeichnet sie nur in Sitzungen auf, die es zu claude.ai streamt, wie Cloud-Sitzungen, und die Ergebnisse, die query() liefert, enthalten sie nicht. Erfordert Agent SDK v0.3.260 oder später.
  • usage: Nur Hauptagentenschleife. Schließt Subagenten- und Hilfsmodell-Aufrufe aus und ist pro Turn in Streaming-Input-Sitzungen. Bevorzugen Sie modelUsage für Token-/Kostenabrechnung.
  • modelUsage: Pro-Modell-Summen für jeden Modell-Aufruf, der während dieses query()-Aufrufs durch die Abfrage-Pipeline gemacht wurde, einschließlich der Hauptschleife, Subagenten und interner Aufrufe wie Komprimierung und Workflow-Agenten. Hilfsaufrufe außerhalb dieser Pipeline, wie der Berechtigungsklassifikator und Token-Zählungsanfragen, sind ausgeschlossen. Ein Aufruf, der eine Sitzung fortsetzt, zählt auch die Pro-Modell-Summen, die aus den früheren Aufrufen der Sitzung wiederhergestellt wurden. In Streaming-Input-Sitzungen sind die Summen kumulativ über Turns, daher lesen Sie das neueste Ergebnis, anstatt über Ergebnisse zu summieren. Siehe Kosten im Streaming-Input-Modus verfolgen für Zurücksetzungen und Summen nach einem Sitzungsabsturz wiederherstellen für zurückgesetzte Ergebnisse.
  • total_cost_usd: Kumulative geschätzte Kosten in USD, die die gleichen Aufrufe wie modelUsage abdecken und an den gleichen Punkten zurückgesetzt werden. Ein Aufruf, der eine Sitzung fortsetzt, zählt auch die Summen, die aus den früheren Aufrufen der Sitzung wiederhergestellt wurden. Es ist eine Schätzung, keine Abrechnungsaussage. Siehe Kosten und Nutzung verfolgen für Genauigkeitsvorbehalte.
  • queued_turn_count: Die Anzahl der Nachrichten, die Sie mit origin: { kind: "human" } gesendet haben und die noch warten, wenn Claude Code das Ergebnis erzeugt hat. Siehe queued_turn_count dazu, was 0 und ein fehlendes Feld Ihnen sagen.
  • result_index: Wo dieses Ergebnis in der Lieferreihenfolge des Durchlaufs fällt, gezählt von 0 über jedes Ergebnis, das der Prozess schreibt. Vorhanden auf beiden Armen. Ein Ergebnis, dessen Schreiben fehlschlägt, verbraucht immer noch seine Nummer, daher bedeutet eine Lücke in der Sequenz, dass ein Ergebnis verloren ging. Erfordert Agent SDK v0.3.268 oder später.
  • startup_failure_reason: Warum Claude Code sich weigerte zu starten, auf dem error_during_execution-Ergebnis, das es vor dem Beenden bei einem bekannten Startfehler schreibt. Siehe startup_failure_reason für die Werte und welche Fehler es tragen. Erfordert Agent SDK v0.3.274 oder später.
  • 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".
  • fast_mode_disabled_reason: Warum der Fast-Modus gerade nicht verfügbar ist. Fehlt, wenn nichts den Fast-Modus blockiert, obwohl eine Anfrage möglicherweise immer noch mit Standardgeschwindigkeit ausgeführt wird. Während der Abkühlung nach einem Rate-Limit des Fast-Modus meldet Claude Code fast_mode_state: "cooldown" ohne Grund-Code und reaktiviert den Fast-Modus, wenn die Abkühlung abläuft. Erfordert Claude Code v2.1.219 oder später.
Verwenden Sie den Grund-Code, um zu erklären, warum der Fast-Modus in Ihrer eigenen Benutzeroberfläche aus ist, anstatt die Verfügbarkeit neu abzuleiten. Jeder Code benennt die Überprüfung, die den Fast-Modus blockiert hat: Das gleiche Feldpaar erscheint auf SDKSystemMessage und auf SDKControlInitializeResponse, daher können Sie den Status des Fast-Modus vor dem ersten Turn lesen. Das origin-Feld leitet die SDKMessageOrigin der Benutzer-Nachricht weiter, die dieses Ergebnis ausgelöst hat. Wenn das SDK einen synthetischen Follow-up-Turn einfügt, wie für eine beendete Hintergrundaufgabe, trägt die resultierende SDKResultMessage origin: { kind: "task-notification" }. Routinen, deren Trigger ausgelöst wurde, und von Servern verifizierte Nachrichten von Ihren anderen Sitzungen kommen mit dieser Art an, jede mit dem subkind, der in Task-Notification-Subkinds beschrieben ist. Überprüfen Sie kind, um Ergebnisse, die Ihren Prompt beantworten, von eingefügten Follow-ups zu unterscheiden, bevor Sie sie weiterleiten oder unterdrücken. Wenn Ihre Anwendung geplante Ausführungen erklärt, tragen ihre Ergebnisse auch kind: "task-notification", daher unterdrücken Sie nicht allein anhand von kind. Wenn mehrere Abschlüsse von Hintergrundaufgaben zusammen in die Warteschlange eingereiht werden, kann Claude Code sie in einem Turn beantworten, anstatt einen Turn pro Abschluss. Jeder Abschluss erzeugt immer noch sein eigenes Ergebnis mit dieser Herkunft. Alle außer dem letzten der Abschlüsse, die Claude Code zusammen beantwortet, erzeugen leere Ergebnisse mit num_turns: 0, in Reihenfolge, und das Ergebnis des letzten trägt den Turn, der sie alle beantwortet. 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.

user_message_uuid

Die uuid der SDKUserMessage, die der Turn beantwortet, wiedergegeben, damit Sie Claude Codes Antwort mit der Nachricht abgleichen können, die Sie gesendet haben. Claude Code wiederholt eine uuid nur, wenn Sie eine auf der Nachricht setzen. Das Feld ist optional auf SDKUserMessage, und ein String-Prompt, der an query() übergeben wird, trägt keine. Welche Ihrer Nachrichten ein Turn beantwortet, hängt davon ab, wie der Turn gestartet wurde:
  • Eine reguläre Nachricht, die Sie gesendet haben, d. h. eine ohne isSynthetic: true: Der Turn beantwortet diese Nachricht für seinen gesamten Lauf. Wenn Sie mehrere Nachrichten dicht beieinander senden, kann Claude Code sie in einen Turn zusammenführen, und das Feld trägt dann nur die uuid der letzten Nachricht. Um die Antwort mit einer der zusammengeführten Nachrichten abzugleichen, verwenden Sie user_message_uuids.
  • Eine Nachricht, die Sie mit isSynthetic: true gesendet haben: Der Turn beantwortet diese Nachricht zunächst. Wenn Claude Code eine reguläre Nachricht von Ihnen zwischen Tool-Aufrufen aufgreift, beantwortet der Turn die aufgegriffene Nachricht von da an. Das Wiederholen der uuid einer synthetischen Nachricht erfordert Agent SDK v0.3.265 oder später; frühere Versionen wiederholen nichts bei synthetischen Turns.
  • Der Prompt, den Claude Code generiert, um einen unterbrochenen Turn unter CLAUDE_CODE_RESUME_INTERRUPTED_TURN erneut auszuführen: Wenn der letzte Prompt des unterbrochenen Turns eine reguläre Nachricht ist, die Sie gesendet haben, ob sie den Turn öffnete oder Claude Code sie während des Turns aufgriff, beantwortet der erneute Durchlauf diese Nachricht zunächst. resume_reason unterscheidet die Frames des erneuten Durchlaufs von denen des unterbrochenen Versuchs. Wenn der letzte Prompt keine reguläre Nachricht von Ihnen ist, beantwortet der erneute Durchlauf zunächst keine Nachricht von Ihnen. Wenn Claude Code eine reguläre Nachricht von Ihnen zwischen Tool-Aufrufen aufgreift, beantwortet der Turn die aufgegriffene Nachricht von da an. Das Wiederholen des Prompts des unterbrochenen Turns erfordert Agent SDK v0.3.268 oder später.
  • Jeder andere Prompt, den Claude Code selbst generiert hat: Der Turn beantwortet zunächst keine Nachricht von Ihnen und seine Frames tragen keine Wiederholung. Wenn Claude Code eine reguläre Nachricht von Ihnen zwischen Tool-Aufrufen aufgreift, beantwortet der Turn diese Nachricht von da an. Die Aufgreif-Wiederholung erfordert Agent SDK v0.3.265 oder später; frühere Versionen wiederholen nichts bei diesen Turns.
Claude Code wiederholt die uuid der beantworteten Nachricht auf drei Arten von Frames:
  • Das Ergebnis: Jedes Ergebnis eines Turns, der eine Nachricht beantwortet, die Sie gesendet haben. Jedes solche Ergebnis trägt es auf Agent SDK v0.3.265 oder später. Vor v0.3.265 fehlte es auf dem Success-Ergebnis eines Turns, den eine reguläre Nachricht gestartet hat, wenn der Turn keine API-Anfrage versendet hat oder mit einem aufgeschobenen Tool-Aufruf endete. Vor v0.3.246 fehlte es auch auf Fehler-Ergebnissen, und vor v0.3.216 auf jedem Ergebnis.
  • Die erste Antwort des Turns: die erste Assistenten-Nachricht und mit includePartialMessages außerdem das erste Stream-Ereignis, dessen event.type nicht ping ist, damit Sie die Antwort binden können, bevor das Ergebnis ankommt. Die Erste-Antwort-Wiederholung erfordert Agent SDK v0.3.246 oder später. Vor v0.3.269 setzte Claude Code es mit includePartialMessages nur auf dieses erste Stream-Ereignis oder, wenn der Turn nichts streamte, auf die erste Assistenten-Nachricht. Wenn sich die Nachricht, die der Turn beantwortet, mitten im Turn ändert, trägt die erste Antwort nach der Änderung das Feld auch auf Agent SDK v0.3.265 oder später; frühere Versionen setzen es auf einen Antwort-Frame pro Turn.
  • Jeder thinking_tokens-Frame des Turns: damit Sie den Thinking-Fortschritt der Nachricht zuordnen können, die Sie gesendet haben, ohne auf die erste Antwort des Turns zu warten. Erfordert Agent SDK v0.3.260 oder später.
Claude Code lässt das Feld in diesen Fällen weg:
  • Antwort-Frames außer diesen ersten Antworten
  • Subagenten-Frames
  • Turns, die keine Nachricht von Ihnen beantworten oder eine Nachricht beantworten, die Sie ohne uuid gesendet haben
  • Ergebnisse, die keine Nachricht beantworten, die Sie gesendet haben, wie das zurückgesetzte Ergebnis nach einem abgestürzten Worker-Prozess

user_message_uuids

Die uuids jeder Nachricht, die Sie gesendet haben und die Claude Code in diesem Turn beantwortet hat. Wenn Sie mehrere Nachrichten dicht beieinander senden, kann Claude Code sie in einen Turn zusammenführen, und user_message_uuid benennt dann nur die letzte davon. Um die Antwort mit einer der zusammengeführten Nachrichten abzugleichen, suchen Sie nach der uuid dieser Nachricht überall in dieser Liste. Erfordert Agent SDK v0.3.259 oder später. Claude Code setzt die Liste zusammen mit user_message_uuid auf jeden Antwort-Frame, der dieses Feld trägt, und auf das Ergebnis. Für den vollständigen Satz von Turn-Frames, die die uuid der beantworteten Nachricht wiederholen, und die Version, die jeder erfordert, siehe user_message_uuid. Die Liste enthält immer user_message_uuid und hält höchstens 64 Einträge. Wenn Claude Code eine reguläre Nachricht aufgreift, die Sie während eines Turns gesendet haben, fügt es die uuid dieser Nachricht zur Liste des Ergebnisses hinzu. Wenn eine erste Antwort oder ein Ergebnis user_message_uuid ohne die Liste trägt, kam es von einer früheren Claude Code-Version, daher greifen Sie auf das einzelne Feld zurück.

resume_reason

Warum Claude Code diesen Turn nach einem Neustart erneut ausgeführt hat. Claude Code setzt dieses Feld auf einen Turn, den es unter CLAUDE_CODE_RESUME_INTERRUPTED_TURN erneut ausgeführt hat, damit Sie Antwort und Ergebnis des erneuten Durchlaufs von denen des unterbrochenen Versuchs unterscheiden können. Erfordert Agent SDK v0.3.268 oder später. Claude Code setzt das Feld auf zwei Arten von Frames:
  • Das Ergebnis des erneuten Durchlaufs: auf den Success- und Error-Armen gleichermaßen, unabhängig davon, ob das Ergebnis user_message_uuid trägt.
  • Die Antwort-Frames des erneuten Durchlaufs: diejenigen, die user_message_uuid tragen.
Der Wert ist ein kurzes Kleinbuchstaben-Token, das benennt, warum der Turn erneut ausgeführt wurde, wie interrupted_turn. Das Feld fehlt bei jedem anderen Turn.

queued_turn_count

Die Anzahl der Nachrichten, die Sie mit origin: { kind: "human" } gesendet haben und die noch in der Befehlswarteschlange warten, wenn Claude Code das Ergebnis erzeugt hat. Erfordert Agent SDK v0.3.242 oder später. Was 0 und ein fehlendes Feld Ihnen sagen:
  • 0: Claude Code zählt keine Nachrichten, die Sie ohne diese origin gesendet haben, und zählt keine Task-Benachrichtigungen, daher kann ein Turn immer noch folgen.
  • Fehlt: Das endgültige Ergebnis, das Claude Code nach einem Absturz oder fatalen Startfehler ausgibt, lässt das Feld weg, und kann zurückgesetzte Summen tragen.

startup_failure_reason

Warum Claude Code sich weigerte zu starten, damit Ihre Anwendung die Behebung anbieten kann, anstatt einen Wiederholungsversuch. Claude Code setzt es auf das error_during_execution-Ergebnis, das es vor dem Beenden bei einem bekannten Startfehler schreibt. Dieses Ergebnis trägt zurückgesetzte Summen, und sein errors-Array trägt den gleichen Text wie stderr. Das Feld fehlt auf jedem anderen Ergebnis. Erfordert Agent SDK v0.3.274 oder später. Setzen Sie CLAUDE_CODE_STARTUP_FAILURE_RESULTS auf 1 in env, um dieses Ergebnis für jeden SDKStartupFailureReason-Wert zu erhalten. Ohne diese Variable schreibt Claude Code das Ergebnis nur für diese Fehler, und der Rest endet mit stderr-Ausgabe, einem Nicht-Null-Exit und keiner Ergebnis-Nachricht:
  • Ein Resume, das Claude Code stoppt, weil es die Sitzung nicht zu ihrem Worktree zurückbringen kann, mit worktree_unverified oder worktree_resume_refused. Dieser Abschnitt sagt, welcher Fehler welchen Wert trägt.
  • Ein abgelehntes continue einer Konversation, die eine Hintergrund-Sitzung hält, mit session_held_by_background. Für ein abgelehntes resume einer solchen Konversation schreibt Claude Code das Ergebnis nur, wenn die Variable gesetzt ist.
Jeder Wert benennt eine Ablehnung:

SDKSystemMessage

System-Initialisierungsnachricht.
fast_mode_state meldet den Status des Fast-Modus der Sitzung. Wenn etwas den Fast-Modus blockiert, benennt fast_mode_disabled_reason die Überprüfung, die ihn blockiert hat; das Feld erfordert Claude Code v2.1.219 oder später. Für die Grund-Codes und ihre Bedeutungen siehe fast_mode_disabled_reason auf der Ergebnis-Nachricht. terminal_slash_commands benennt die Einträge in slash_commands, deren Schnittstelle an das lokale Terminal gebunden ist, wie exit. Sie können sie wie jeden anderen Eintrag in slash_commands senden; das Feld existiert, damit ein Remote- oder Mobile-Client sie aus seinen Befehlsmenüs ausblenden kann. Das Feld ist nur vorhanden, wenn nicht leer, und erfordert Agent SDK v0.3.229 oder später.
  • source auf jedem mcp_servers-Eintrag: Woher die Definition des Servers kam, mit den gleichen Werten wie source von McpServerStatus. Erfordert Agent SDK v0.3.274 oder später.
  • effort: Die Effort-Stufe, die Claude Code bei der nächsten Anfrage der Sitzung sendet, oder null, wenn es keine sendet. Claude Code setzt das Feld nur auf die Init-Nachricht, die es an Remote Control-Clients sendet, und lässt es aus der Init-Nachricht weg, die Ihre Anwendung liest. Erfordert Agent SDK v0.3.234 oder später.
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. Das plugin_errors-Array listet Plugin-Ladefehler auf. Ein Eintrag beschreibt entweder ein Plugin, das nicht geladen wurde und in plugins fehlt, oder ein Plugin, das ohne einen seiner Teile geladen wurde, wie seine Hooks-Datei. Der Schlüssel wird weggelassen, wenn nichts fehlgeschlagen ist. SDKSystemMessage deklariert plugin_errors in Agent SDK v0.3.283 oder später. Wenn ein Verzeichnis oder Archiv aus Ihrer plugins-Option selbst nicht geladen wird, hält das plugin-Feld des Eintrags ein Positions-Tag wie inline[0] anstelle eines Plugin-Namens. Dies geschieht beispielsweise, wenn der Pfad nicht existiert oder das Manifest ungültig ist. Gleichen Sie einen solchen Eintrag mit Ihrer Option durch sein path-Feld ab. Die Tabelle unten listet die Felder jedes plugin_errors-Eintrags auf.

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.
Claude Code setzt user_message_uuid und user_message_uuids auf das erste Nicht-Ping-Stream-Ereignis des Turns und erneut, wenn sich die Nachricht, die der Turn beantwortet, ändert, unter den Bedingungen in user_message_uuid. Wenn Claude Code einen Turn erneut ausführt, den ein Neustart unterbrochen hat, tragen die Stream-Ereignisse des erneuten Durchlaufs, die diese Felder tragen, auch resume_reason.

SDKCompactBoundaryMessage

Nachricht, die eine Konversations-Komprimierungsgrenze anzeigt.

SDKInformationalMessage

Generisches Text-Banner, das von der Schleife ausgegeben wird. Enthält Warnungen, Hinweise und andere nicht-fehlerhafte Statuszeilen, die Claude Code auslöst, und Hook-Feedback wie den Block-Grund eines UserPromptSubmit-Hooks. Auf Claude Code v2.1.227 oder später kann die systemMessage eines Hooks als diese Nachricht ankommen, wobei jeder Zeile der Name des Hooks vorangestellt ist, wie PostToolUse:Bash says:. Jeder Ereignisabschnitt auf der Hooks-Seite sagt, wie die Ausgabe angezeigt wird. 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 beendet wurde, 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 ohne interaktive Berechtigungsabfrage ablehnt. 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. Welche Ablehnungen es meldet, hängt davon ab, wie der Lauf Berechtigungsabfragen handhabt:
  • Mit einem canUseTool-Callback und dem Standard permissionPrompts: 'host': Berechtigungsabfragen gehen an Ihren Callback, und dieses Ereignis meldet die Ablehnungen, die Claude Code auf eigene Faust entscheidet, ohne ihn aufzurufen.
  • Mit keinem von beiden: Ein reiner -p-Lauf oder ein query(), das weder canUseTool noch permissionPromptToolName setzt, lehnt jeden Tool-Aufruf ab, für den eine Berechtigungsabfrage erfolgt wäre, sofern ihn kein PermissionRequest-Hook erlaubt, und dieses Event meldet diese Ablehnungen sowie diejenigen, die Claude Code selbst entscheidet. Vor v2.1.223 gab Claude Code dieses Event in Läufen ohne Callback nicht aus.
  • Mit einem MCP-Tool für Berechtigungsabfragen, gesetzt mit permissionPromptToolName oder dem --permission-prompt-tool-Flag, und dem Standard permissionPrompts: 'host': Claude Code gibt dieses Ereignis überhaupt nicht aus, nicht einmal für die Regel-Ablehnungen, die es auf eigene Faust entscheidet.
  • Mit permissionPrompts: 'none': Claude Code lehnt die Aufrufe ab, die eine Berechtigungsabfrage ausgelöst hätten, auch wenn zusätzlich canUseTool oder ein MCP-Tool für Berechtigungsabfragen gesetzt ist, und dieses Ereignis meldet diese Ablehnungen sowie die, die Claude Code auf eigene Faust entscheidet. Erfordert Claude Code v2.1.259 oder später.
In jeder Konfiguration überspringt dieses Ereignis jede Ablehnung, die auf dem PreToolUse-Hook-Pfad entschieden wurde, ob der Hook den Aufruf selbst ablehnte oder eine Deny-Regel die Allow- oder Ask-Entscheidung des Hooks überschrieb. Das Ereignis ist auch Best-Effort: Gelegentlich zeichnet Claude Code eine Ablehnung auf, ohne dieses Ereignis auszugeben, daher ist permission_denials auf der Ergebnis-Nachricht der maßgebliche Datensatz.

SDKPermissionDenial

Informationen über einen verweigerten Tool-Einsatz.

SDKContextUsage

Strukturierte Form des /context-Berichts, getragen als context_usage auf der SDKAssistantMessage, die ein /context-Ergebnis liefert. Agent SDK v0.3.232 und später exportieren den Typ. Im Gegensatz zu SDKControlGetContextUsageResponse trägt es nur die Daten, die benötigt werden, um die Nutzungsaufschlüsselung zu rendern, ohne Anzeigefelder wie color und gridRows. Claude Code berechnet den Bericht mit Token-Zählungs-API-Anfragen, die nicht im Nachrichtenstream erscheinen; siehe wie diese Anfragen behandelt werden.
Die Tabelle listet auf, was Claude Code in jedes Feld einfügt. Die Felder von model bis over_limit beschreiben die Sitzung als Ganzes, und die Sammlungsfelder ordnen Token einzelnen Elementen zu. over_limit.kind zeichnet auf, wie Claude Code das Fenster aufgelöst hat, nicht ob die API die nächste Anfrage akzeptiert:
  • hard_limit: Das Fenster ist das, was Claude Code für das eigene Limit des Modells hält, über das hinaus die API Anfragen ablehnt
  • compaction_window: Das Fenster ist ein Komprimierungs-Richtlinien-Fenster, das möglicherweise mit dem Limit des Modells übereinstimmt oder nicht
Claude Code entwickelt den Typ additiv, indem es neue Daten als optionale Felder hinzufügt, anstatt bestehende umzugestalten. Lesen Sie die Felder, die Sie kennen, und ignorieren Sie alle, die Sie nicht erkennen.

SDKContextUsageCategory

Eine Zeile der /context-Nutzungs-nach-Kategorie-Aufschlüsselung.
Die Tabelle listet auf, was Claude Code in jedes Feld einer Zeile einfügt. Jeder kind-Wert sagt, was die Token der Zeile sind:
  • used: Inhalt, der das Kontextfenster belegt
  • free: Das verbleibende Fenster
  • buffer: Die Komprimierungs-Reserve
  • deferred: Tool-Schemas, die Claude Code aus dem Fenster heraushält und von der Nutzungsberechnung ausschließt, aufgelistet zur Kenntnis

SDKMessageOrigin

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

Task-Notification-Subkinds

Wenn Claude Code eine Task-Benachrichtigung in eine Sitzung liefert, setzt es subkind auf der origin der Benachrichtigung, wenn Anthropic-Server verifiziert haben, woher diese Benachrichtigung kam. Es setzt subkind auch, wenn Ihre Anwendung die Nachricht selbst als geplante Ausführung erklärt, was TypeScript Agent SDK v0.3.280 oder später erfordert. subkind erfordert Claude Code v2.1.213 oder später, und es nimmt einen von zwei Werten an:
  • scheduled-trigger: Die Benachrichtigung ist der gespeicherte Prompt einer Routine, geliefert, weil einer der Trigger der Routine ausgelöst wurde: ihr Zeitplan, ihr API-Trigger, ihr GitHub-Trigger oder Run now. Ein Prompt, den Ihre Anwendung als geplante Ausführung erklärt, trägt diesen Wert ebenfalls. Claude Code rahmt diese gegenüber dem Modell als die zugewiesene Aufgabe der Sitzung ein, mit einem anderen Hinweis als dem Hinweis, den andere Task-Benachrichtigungen tragen.
  • peer-send-message: Die Benachrichtigung ist eine Nachricht, die eine andere Ihrer Sitzungen mit dem Server-seitigen send_message-Tool gesendet hat, das Cloud-Sitzungen verwenden, um sich gegenseitig Nachrichten zu senden, nicht mit dem Cross-Session-SendMessage-Tool, und Anthropic-Server haben verifiziert, dass beide Sitzungen zur gleichen privaten Gruppe von Sitzungen gehören. Erfordert Claude Code v2.1.224 oder später. Eine send_message-Lieferung, die die Server nicht auf diese Weise verifiziert haben, bekommt keinen Subkind.
Jede andere Task-Benachrichtigung hat keinen subkind. Das schließt PR-Aktivität, die in eine Sitzung geliefert wird, und Hintergrund-Ereignisse wie eine beendete Aufgabe ein. Nachrichten vom Cross-Session-SendMessage-Tool sind überhaupt keine Task-Benachrichtigungen: Ob sie von einer Sitzung auf der gleichen Maschine oder über Anthropic-Server von einer anderen Maschine kommen, Claude Code gibt ihnen kind: "peer" und die Peer-Herkunftsfelder. fireReason sagt, warum eine scheduled-trigger-Benachrichtigung ausgelöst wurde, als kurzes Kleinbuchstaben-Token wie scheduled, manual, retry, catch_up oder api. Anthropic-Server setzen es auf die Lieferungen einer Routine, und Ihre Anwendung setzt es, wenn sie eine geplante Ausführung erklärt. Es fehlt, wenn keiner von beiden einen gesendet hat. Erfordert TypeScript Agent SDK v0.3.280 oder später.

Geplante Ausführung erklären

Wenn Ihre Anwendung Prompts nach ihrem eigenen Zeitplan ausführt, erklären Sie jede Ausführung, damit Claude Code den Turn gegenüber dem Modell als geplante Aufgabe einrahmt, anstatt als Live-Eingabe vom Benutzer. Starten Sie die Sitzung mit CLAUDE_CODE_HOST_SCHEDULED_RUN auf 1 in env, dann senden Sie die SDKUserMessage der Ausführung mit origin: { kind: "task-notification", subkind: "scheduled-trigger", fireReason: "scheduled" } und ohne isSynthetic. Claude Code ignoriert die Erklärung in einem Prozess, der ohne diese Variable gestartet wurde. Es ignoriert sie auch in einem Prozess, dessen Umgebung CLAUDECODE oder CLAUDE_CODE_CHILD_SESSION trägt. Claude Code behält fireReason nur, wenn der Wert aus 1 bis 32 Kleinbuchstaben oder Unterstrichen besteht. Erfordert TypeScript Agent SDK v0.3.280 oder später.

Peer-Herkunftsfelder

Eine peer-Herkunft identifiziert, welcher Agent die Nachricht gesendet hat: ein In-Process-Teamkollege, der mit SendMessage an main sendet, oder ein Cross-Session-Peer, eine andere Ihrer Claude Code-Sitzungen. Cross-Session-Peers erfordern Claude Code v2.1.224 oder später auf macOS und Linux; siehe Cross-Session-Messaging-Verfügbarkeit für die Anforderung unter nativem Windows. Ein Cross-Session-Peer kann auf der gleichen Maschine laufen, oder auf einer anderen Ihrer Maschinen oder in der Cloud, wenn seine Nachricht über Remote Control ankommt. Die zwei Arten von Sendern füllen die Felder unterschiedlich:
  • from: Der Name des Teamkollegen, oder die Absenderadresse für einen Cross-Session-Peer. Für eine Einweg-Cross-Machine-Nachricht hat der Sender keine Antwortadresse und from ist "unknown". Der Wert ist vom Sender verfasst; verifiedPeerPid ist die verifizierte Identität.
  • fromMode: Die Berechtigungsklasse der sendenden Sitzung, bypass oder prompting, deklariert von einem Host, der eine Peer-Nachricht zwischen Ihren Sitzungen weiterleitet, wie die Desktop-App. Claude Code liest es in der empfangenden Sitzung, wenn es die Inbound-Steuerungen anwendet. Erfordert Agent SDK v0.3.234 oder später.
  • senderTaskId: Die Task-ID des Teamkollegen. Fehlt für einen Cross-Session-Peer.
  • name: Der Anzeigename des Absenders, normalisiert von Claude Code: Es entfernt Unicode-Steuer-, Format-, Surrogate- und Zeilen- oder Absatz-Trennzeichen-Codepunkte, kürzt dann das Ergebnis und begrenzt es auf 64 Codepunkte mit einer Ellipse. Erfordert Claude Code v2.1.205 oder später.
  • body: Der dekodierte Nachrichtentext mit entfernter Peer-Hülle, byte-genau mit dem, was das Modell sieht. Immer vorhanden für eine Teamkollegen-Nachricht; für einen Cross-Session-Peer nur vorhanden, wenn der Turn genau eine von Claude Code gebildete Peer-Hülle ist. Rendern Sie name und body, anstatt den Nachrichtentext erneut zu analysieren. Erfordert Claude Code v2.1.205 oder später.
  • fromSession: Die vom Host öffenbare Sitzungs-ID des Absenders, gesetzt vom Host des Absenders, damit Ihre Benutzeroberfläche zurück zur sendenden Sitzung verlinken kann. Wie from ist es vom Sender behauptet: Verwenden Sie es nur als Navigationsziel, und behandeln Sie es nicht als Beweis der Identität des Absenders. Erfordert Claude Code v2.1.216 oder später.
  • verifiedPeerPid: Die Prozess-ID des Prozesses, der sich mit dem Cross-Session-Messaging-Socket dieser Sitzung verbunden hat, verifiziert vom Kernel und aus der Verbindung selbst gelesen, niemals aus der Payload. Verwenden Sie es, nicht from, um den Absender zu identifizieren: from ist von jedem Prozess desselben Benutzers fälschbar. Das Feld fehlt, wenn Claude Code es nicht verifizieren kann, etwa unter Windows oder bei Nicht-Socket-Eingang, daher bedeutet ein fehlender Wert, dass der Absender nicht verifiziert ist. Für weitergeleiteten Traffic identifiziert es das Relay anstelle des Autors der Nachricht, und Prozess-IDs sind wiederverwendbar, daher behandeln Sie es als Herkunftsangabe und nicht als Authentifizierungs-Token. Erfordert Claude Code v2.1.216 oder später.

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

mcp_server ist vorhanden, wenn das Tool von einem MCP-Server stammt; siehe McpServerProvenance. Die Eingaben PostToolUse, PostToolUseFailure, PermissionRequest und PermissionDenied enthalten das gleiche Feld. Das Feld erfordert Agent SDK v0.3.274 oder später.

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.

PermissionDeniedHookInput

NotificationHookInput

UserPromptSubmitHookInput

UserPromptExpansionHookInput

SessionStartHookInput

SessionEndHookInput

StopHookInput

StopFailureHookInput

SubagentStartHookInput

SubagentStopHookInput

PreCompactHookInput

PostCompactHookInput

PreModelSwitchHookInput

Wird ausgelöst, bevor ein angefordeter Modellwechsel wirksam wird. context_tokens und die Felder danach schätzen, was das erneute Senden des Gesprächs an das neue Modell kostet. Für die vollständigen Feldbeschreibungen und Blocking-Semantik siehe PreModelSwitch.

PostModelSwitchHookInput

Wird ausgelöst, nachdem sich das Modell der Sitzung ändert. Es enthält die gleichen Felder wie PreModelSwitchHookInput, mit zwei weiteren source-Werten. Siehe PostModelSwitch.

PermissionRequestHookInput

SetupHookInput

TeammateIdleHookInput

TaskCreatedHookInput

TaskCompletedHookInput

ElicitationHookInput

ElicitationResultHookInput

ConfigChangeHookInput

InstructionsLoadedHookInput

DirectoryAddedHookInput

directory ist der absolute Pfad des hinzugefügten Verzeichnisses. source ist "slash_command", wenn /add-dir es hinzugefügt hat, und "register_repo_root", wenn die SDK-Steueranfrage dies tat.

WorktreeCreateHookInput

WorktreeRemoveHookInput

CwdChangedHookInput

FileChangedHookInput

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/sdk-tools exportiert und können für typsichere Tool-Interaktionen verwendet werden.

ToolInputSchemas

Union von Tool-Eingabetypen, die aus @anthropic-ai/claude-agent-sdk/sdk-tools exportiert werden; Mitglieder umfassen:

Agent

Tool-Name: Agent. Der frühere Name Task wird immer noch als Alias akzeptiert, und das tools-Array in der SDKSystemMessage-Initialisierungsnachricht listet dieses Tool derzeit aus Gründen der Rückwärtskompatibilität als Task auf.
Das Feld mode ist in Claude Code v2.1.212 oder später veraltet und wird ignoriert. Ein Subagent läuft entweder im Berechtigungsmodus der übergeordneten Sitzung oder in seiner Definition permissionMode, und die Subagent-Vererbungsregeln entscheiden, welcher verwendet wird.
Startet einen neuen Agent, 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 mit optionalem Timeout und Hintergrundausführung aus. Das Arbeitsverzeichnis bleibt zwischen Befehlen bestehen, einschließlich Befehlen, die in späteren Turns einer Multi-Turn-Sitzung ausgeführt werden; Shell-Status wie exportierte Umgebungsvariablen nicht. Für die Grenzen, welche Verzeichniswechsel übertragen werden, siehe Was zwischen Befehlen bestehen bleibt. Für das, was die Vordergrund-Obergrenze setzt, siehe Timeout- und Ausgabegrenzen. Für die Hintergrund-Zeitlimit, siehe Zeitlimit für Hintergrund-Befehle.

Monitor

Tool-Name: Monitor
Führt eine Hintergrund-Quelle 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 Text-Frame aus. Geben Sie genau eines von command oder ws an. Die ws-Quelle erfordert Claude Code v2.1.195 oder später. timeout_ms ist die Frist der Überwachung in Millisekunden. Sie beträgt standardmäßig 300000 und akzeptiert Werte bis zu 3600000. Die effektive Frist beträgt höchstens 1800000, was 30 Minuten sind, daher wird ein größerer akzeptierter Wert auf diesen gekürzt. Bei Ablauf der Frist endet die Überwachung und Claude erhält eine Benachrichtigung, damit es eine neue Überwachung starten kann, wenn es noch eine benötigt. Der exportierte Typ markiert timeout_ms als erforderlich, da das Schema den Standard ausfüllt; ein Aufruf, der ihn auslässt, validiert. Wenn Monitor einen Befehl ausführt, folgt es den gleichen Berechtigungsregeln wie Bash; eine WebSocket-Überwachung fordert separat zur Genehmigung auf. Siehe die Monitor-Tool-Referenz für Verhalten und Anbieter-Verfügbarkeit.

TaskOutput

Entfernt in Claude Code v2.1.277, zusammen mit seinem TaskOutputInput-Typ. Zuvor wurde die Ausgabe aus einer laufenden oder abgeschlossenen Hintergrund-Aufgabe abgerufen; Claude liest die Ausgabedatei einer Hintergrund-Aufgabe stattdessen mit Read. Ein disallowedTools-Eintrag oder eine Deny-Regel, die immer noch TaskOutput nennt, wird ohne Warnung ignoriert.

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"). Für ein PDF erhält Claude den Inhalt der Datei im tool_result-Inhalt des Read-Aufrufs. Ein Read, das die pdf-Ausgabe zurückgibt, enthält einen Zusammenfassungs-text-Block gefolgt von einem document-Block. Ein Read, das die parts-Ausgabe zurückgibt, enthält den Zusammenfassungs-text-Block gefolgt von einem Block pro extrahierter Seite: einen image-Block oder einen text-Block, der die Seite benennt, wenn Claude Code sie nicht als Bild rendern konnte. Vor Agent SDK v0.3.242 lieferte Claude Code den Inhalt der Datei als separate user-Nachricht nach dem Tool-Ergebnis.

Write

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

Glob

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

Grep

Tool-Name: Grep
Such-Tool basierend auf ripgrep mit Regex-Unterstützung.

TaskStop

Tool-Name: TaskStop
Stoppt eine laufende Hintergrund-Aufgabe oder Shell nach ID. Ab v2.1.198 akzeptiert task_id auch einen Agent-Team-Teamkollegen oder einen benannten Hintergrund-Agent 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 zur Verfolgung des Fortschritts.
Die folgenden Tools sind standardmäßig nur auf Claude 3.x-Modellen, Opus 4 bis 4.7, Sonnet 4 bis 4.6 und Haiku 4.5 verfügbar. Bei allen anderen Modellen, einschließlich Modell-IDs, die Claude Code nicht erkennt, sind sie nicht verfügbar, es sei denn, Sie aktivieren sie:
  • TodoWrite
  • TaskCreate
  • TaskGet
  • TaskUpdate
  • TaskList
Überall dort, wo die Tools verfügbar sind, stellt Claude Code die vier Task-Tools bereit, oder TodoWrite, wenn Sie CLAUDE_CODE_ENABLE_TASKS=0 setzen.Dieser Standardsatz gilt in Claude Code v2.1.268 und später, das das TypeScript Agent SDK ab v0.3.268 bündelt.Siehe Modellverfügbarkeit zum Aktivieren.

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 Plan-Modus. Das Feld allowedPrompts ist veraltet und wird ignoriert; Claude Code akzeptiert es immer noch, damit bestehende Aufrufer und Transkripte validieren. Vor v2.1.205 forderte es Prompt-basierte 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 spezifische 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 bestehenden Worktree zu wechseln, anstatt einen neuen zu erstellen. Beim ersten Eintritt muss das Ziel ein registrierter Worktree des aktuellen Repositorys oder in einem Multi-Repo-Workspace eines darin verschachtelten Repositorys sein; von innerhalb einer Worktree-Sitzung muss es unter .claude/worktrees/ des Repositorys der Sitzung sein. name und path schließen sich gegenseitig aus.

ExitWorktree

Tool-Name: ExitWorktree
Beendet den aktuellen Git-Worktree und kehrt zum ursprünglichen Arbeitsverzeichnis zurück. Die keep-Aktion lässt den Worktree und Branch auf der Festplatte, während remove beide löscht. discard_changes muss true sein, wenn ein Worktree mit nicht committeten Dateien oder nicht zusammengeführten Commits entfernt wird.

EnterPlanMode

Tool-Name: EnterPlanMode
Betritt den Plan-Modus, in dem Claude einen Plan recherchiert und präsentiert, bevor Änderungen vorgenommen werden.

CronCreate

Tool-Name: CronCreate
Plant einen Prompt so ein, dass er nach einem 5-Feld-Cron-Plan in Ortszeit ausgeführt wird. Setzen Sie recurring auf false, um einmal beim nächsten Match zu feuern. Jobs sind standardmäßig sitzungsbegrenzt, und das Fortsetzen mit --resume oder --continue stellt Jobs wieder her, die nicht abgelaufen sind. Siehe Geplante Aufgaben. Das Setzen von durable auf true fordert Persistenz zu .claude/scheduled_tasks.json an, damit der Job Neustarts überlebt. Dauerhafte Planung ist nicht in jeder Sitzung verfügbar: wenn sie nicht verfügbar ist, akzeptiert Claude Code durable: true, erstellt aber den Job nur sitzungsbegrenzt. Lesen Sie das durable-Feld der Ausgabe, um zu sehen, ob der Job persistiert wurde.

CronDelete

Tool-Name: CronDelete
Löscht einen geplanten Cron-Job nach der ID, die von CronCreate zurückgegeben wurde.

CronList

Tool-Name: CronList
Listet die geplanten Cron-Jobs auf: dauerhafte Jobs aus .claude/scheduled_tasks.json und sitzungsbegrenzte Jobs aus der aktuellen Sitzung.

ScheduleWakeup

Tool-Name: ScheduleWakeup
Plant ein einmaliges Wake-up, das den angegebenen Prompt nach einer Verzögerung auslöst. Dieses Tool unterstützt den selbstgesteuerten /loop-Befehl. Die Laufzeit begrenzt delaySeconds auf zwischen 60 und 3600 Sekunden. Die Felder delaySeconds, reason, prompt und noop sind erforderlich, es sei denn, stop ist true. noop: true meldet ein Wake-up, bei dem sich nichts geändert hat. Das Setzen von stop: true bricht das ausstehende Wake-up ab und beendet die selbstgesteuerte /loop. Das Feld stop erfordert Claude Code v2.1.202 oder später. Siehe die ScheduleWakeup-Zeile in der Tools-Referenz.

RemoteTrigger

Tool-Name: RemoteTrigger
Verwaltet Routinen, die geplanten und ausgelösten Claude Code-Läufe, die in der Cloud gehostet werden. Dieses Tool unterstützt den /schedule-Befehl. trigger_id ist erforderlich für die Aktionen get, update, run und list_runs. body ist erforderlich für create, update und create_webhook_trigger und optional für run. create_webhook_trigger fügt eine Ereignisquelle an eine bestehende Routine an, wie z. B. ein GitHub-Ereignis, das sie auslöst. Der body benennt die Quelle, die Ereignisse und die Routine, die ausgelöst werden soll. Erfordert Claude Code v2.1.225 oder später. list_runs listet die letzten Läufe einer Routine auf, und get_run_log liest das Protokoll eines Laufs. session_id benennt den zu lesenden Lauf aus einem list_runs-Ergebnis, und cursor blättert durch die Ergebnisse beider Aktionen. Beide Aktionen erfordern Claude Code v2.1.227 oder später. Dieses Tool ist nur verfügbar, wenn die Sitzung mit einem claude.ai-Konto auf einem Plan mit aktivierten Routinen authentifiziert ist, und fehlt, wenn die Richtlinie Ihrer Organisation Cloud-Sitzungen deaktiviert. In Claude Code v2.1.227 oder später fehlt das Tool auch, wenn ein Besitzer Routinen für die Organisation deaktiviert hat. Vor v2.1.227 zeigte eine Sitzung mit nur dem deaktivierten Routinen-Toggle immer noch das Tool an, und der Server verweigerte seine Aufrufe.

PushNotification

Tool-Name: PushNotification
Sendet eine proaktive Push-Benachrichtigung an den Benutzer. Halten Sie message unter 200 Zeichen, da mobile Betriebssysteme längeren Text abschneiden. Siehe die PushNotification-Zeile in der Tools-Referenz für Anbieter-Verfügbarkeit; Push-Zustellung läuft durch von Anthropic gehostete Infrastruktur, die nicht von Amazon Bedrock, Claude Platform on AWS, Google Cloud’s Agent Platform oder Microsoft Foundry zugänglich ist.

REPL

Entfernt in v2.1.275. Bis v2.1.274 konnte ein experimentelles REPL-Tool mit CLAUDE_CODE_REPL=1 in der env-Option aktiviert werden.

ReportFindings

Tool-Name: ReportFindings
Meldet Code-Review-Erkenntnisse als strukturierte Liste, damit Claude Code sie rendern kann, anstatt sie als Text auszudrucken. level ist die Aufwandsstufe, auf der die Überprüfung ausgeführt wurde. Erkenntnisse sind nach Schweregrad geordnet, mit höchstens 32 pro Aufruf, und das Array ist leer, wenn keine überlebt haben. Erfordert Claude Code v2.1.196 oder später. Jede Erkenntnis enthält diese Felder:
  • file: Repo-relativer Pfad, in dem sich die Erkenntnis befindet. Das optionale line ist die 1-indizierte Zeile, zu der es verankert ist.
  • summary: Ein-Satz-Aussage des Defekts. failure_scenario beschreibt die konkreten Eingaben und den Zustand, die zu der falschen Ausgabe oder dem Absturz führen.
  • short_summary: optionale komprimierte Bezeichnung von höchstens 60 Zeichen für kompakte Anzeige. Erfordert Claude Code v2.1.212 oder später.
  • category: optionaler kurzer Kebab-Case-Slug des Erkennungstyps, wie correctness oder test-coverage. Erfordert Claude Code v2.1.199 oder später.
  • verdict: wird gesetzt, wenn ein Verify-Pass ausgeführt wurde; fehlt bei Inline-Only-Überprüfungen.
  • outcome: wird nur gesetzt, wenn nach Anwendung von Fixes erneut gemeldet wird.

Artifact

Tool-Name: Artifact
Veröffentlicht eine lokale .html- oder .md-Datei als gehostete Artifact-Seite oder listet die veröffentlichten Artifacts des Benutzers auf. Lassen Sie action weg oder übergeben Sie "publish", um file_path zu veröffentlichen, das für die Publish-Aktion erforderlich ist. Jedes Feld unten gilt für eine Veröffentlichung:
  • icon: ein kurzes generisches Wort für das Browser-Tab-Symbol des Artifacts, wie chart oder map. Claude fügt es bei einer ersten Veröffentlichung ein und lässt es bei einer Aktualisierung weg, was das gespeicherte Symbol des Artifacts beibehält.
  • favicon: veraltet, und Claude lässt es weg.
  • title: benennt die veröffentlichte Seite im Browser-Tab und in der Galerie, wenn die HTML-Datei kein <title>-Tag hat.
  • url: zielt auf ein bestehendes Artifact ab, um es an Ort und Stelle zu aktualisieren, anstatt ein neues zu erstellen.
force ist ein letzter Ausweg zum Überschreiben, der eine neuere Version verwirft, die eine andere Sitzung veröffentlicht hat. Bei einem Konflikt gibt die fehlgeschlagene Veröffentlichung den neueren Inhalt zurück; Claude führt seine Änderungen in diesen Inhalt ein oder liest das Artifact erneut und veröffentlicht erneut. Übergeben Sie force nur, wenn der Benutzer explizit darum bittet, diese Version zu verwerfen. Übergeben Sie "list", um die veröffentlichten Artifacts des Benutzers aufzuzählen; nur limit und scope dürfen es begleiten. scope ist standardmäßig "mine", das Artifacts auflistet, die der Benutzer besitzt; "shared" listet Artifacts auf, die andere Personen mit dem Benutzer geteilt haben, und "all" listet beide auf.
  • capabilities: die Laufzeit-Funktionen, die die veröffentlichte Seite verwendet, nach Funktionsnamen verschlüsselt, wie die Konnektoren, die die Seite aufrufen kann. Der Artifact-Service validiert die Deklaration und lehnt eine Veröffentlichung ab, die eine Funktion benennt, die das Konto nicht verwenden kann, oder eine ungültige Konfiguration gibt. Übergeben Sie {}, um eine gespeicherte Deklaration zu löschen, und lassen Sie das Feld bei einer erneuten Bereitstellung weg, um es zu behalten. Erfordert Agent SDK v0.3.235 oder später.
  • contract: die Laufzeit-Version, gegen die die veröffentlichte Seite ausgeführt wird. Lassen Sie es weg, um die aktuelle Version des Artifacts zu behalten, übergeben Sie "latest", um zu aktualisieren, oder übergeben Sie eine spezifische Version, um zu fixieren oder zurückzurollen. Erfordert Agent SDK v0.3.235 oder später.
Die Typen werden exportiert, aber das Tool ist standardmäßig in Agent SDK-Sitzungen deaktiviert. Die Veröffentlichung erfordert auch jede Bedingung in der Artifacts-Verfügbarkeitstabelle, die Sitzungen, die mit einem API-Schlüssel authentifiziert sind, nicht erfüllen.

Projects

Tool-Name: Projects
Liest und schreibt das claude.ai-Projekt, das an die Sitzung angehängt ist. Verteilt auf method:
  • project_info: gibt Projekt-Metadaten und die Dokumentenliste zurück.
  • project_read: liest ein Dokument nach path.
  • project_search: fragt die Wissensdatenbank des Projekts mit query ab. n begrenzt die Treffer und ist standardmäßig 5.
  • project_write: erstellt oder ersetzt ein Dokument unter path aus genau einem von content, das Inline-Text enthält, oder local_path, das eine Datei im Arbeitsverzeichnis benennt. present_to_user: true markiert das geschriebene Dokument als das Ergebnis, das der Benutzer sehen muss.
  • project_delete: löscht ein Dokument nach path.

ReadMcpResourceDir

Tool-Name: ReadMcpResourceDirTool
Listet die direkten Kinder einer Verzeichnis-Ressource auf einem MCP-Server auf. Nur gegen einen Server verwendbar, der Unterstützung für Verzeichnisauflistung deklariert hat; die Auflistung ist nicht rekursiv. Verzeichnisauflistung ist nicht in jeder Sitzung aktiviert: wenn sie deaktiviert ist, gibt der Aufruf eine leere resources-Liste zurück und das error-Feld meldet, dass Verzeichnisauflistung nicht aktiviert ist.

RefreshMcpTools

Tool-Name: RefreshMcpTools
Fragt die Tool-Liste verbundener MCP-Server erneut ab und wendet alle Änderungen an. Die Typen werden exportiert, aber Claude Code registriert das Tool nur, wenn Sie CLAUDE_CODE_ENABLE_REFRESH_MCP_TOOLS=1 in der env-Option setzen, und nur in Sitzungen mit mindestens einem MCP-Server. Erfordert Claude Code v2.1.211 oder später.

ShowOnboardingRolePicker

Tool-Name: ShowOnboardingRolePicker
Rendert eine anklickbare Rollen-Picker-Chip-Reihe während des Cowork-Onboardings, damit der Benutzer seine Rolle auswählen und ein passendes Plugin installieren kann. Nimmt keine Argumente; die Rollenliste wird vom Client definiert. Der Aufruf blockiert, bis der Benutzer antwortet.

McpInput

Tool-Name: dynamische MCP-Tool-Namen der Form mcp__<server>__<tool>
MCP-Tool-Argumente sind ein offenes Objekt: Jeder Server definiert seine eigenen Parameter, daher setzt der Typ keine Einschränkungen auf Feldnamen oder Werte. Konsultieren Sie das eigene Tool-Schema des Servers für die Felder, die ein bestimmtes Tool akzeptiert.

Tool-Ausgabetypen

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

ToolOutputSchemas

Union von Tool-Ausgabetypen, die aus @anthropic-ai/claude-agent-sdk/sdk-tools exportiert werden; Mitglieder umfassen:

Agent

Tool-Name: Agent. Der frühere Name Task wird immer noch als Alias akzeptiert, und das tools-Array in der SDKSystemMessage-Initialisierungsnachricht listet dieses Tool derzeit als Task für Rückwärtskompatibilität auf.
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 Cloud-Sitzung versendet hat, wobei sessionUrl auf diese Sitzung verweist und taskId sie identifiziert. Bei der completed-Variante benennt resolvedModel das Modell, auf dem der Subagent gestartet 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. Bei async_launched benennt es das Modell, das verwendet wird, wenn die Aufgabe in den Hintergrund wechselt. modelsUsed listet die Modelle auf, die der Subagent verwendet hat, in der Reihenfolge. Das Feld ist nur vorhanden, wenn ein Mid-Run-Wechsel stattgefunden hat, und ein Modell erscheint erneut, wenn der Lauf zu ihm zurückgewechselt hat. Bei async_launched deckt die Liste die Modelle ab, die vor dem Hintergrund-Wechsel verwendet wurden. Sowohl modelsUsed als auch das Hintergrund-Verhalten von resolvedModel erfordern Claude Code v2.1.212 oder später. Wenn Claude Code den isolierten Worktree des Subagenten beibehalten hat, ist worktreePath im completed-Ergebnis der Ort, wo er zu finden ist. worktreeBranch ist sein Branch, vorhanden, wenn Claude Code den Worktree mit Git erstellt hat. Claude Code füllt usage und totalTokens aus der letzten API-Anfrage des Subagenten, nicht aus dem gesamten Lauf, daher ist usage.service_tier die Service-Tier-Zeichenkette, die die API bei dieser Anfrage gemeldet hat. Wenn vorhanden, ist usage.output_tokens_details.thinking_tokens die Anzahl der Ausgabe-Token dieser Anfrage, die Thinking-Token waren. Das Feld output_tokens_details erfordert TypeScript SDK v0.3.228 oder später, das Claude Code v2.1.228 bündelt. Das Feld fallback_credit erfordert TypeScript SDK v0.3.285 oder später, das Claude Code v2.1.285 bündelt. usage.output_tokens_details entspricht Usage.output_tokens_details in der Bedeutung, begrenzt auf diese letzte Anfrage, aber jede Ebene davon ist optional hier. Schützen Sie sowohl das Objekt als auch das Feld, zum Beispiel usage.output_tokens_details?.thinking_tokens ?? 0, anstatt es direkt zu lesen. 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
Die Felder stdout, stderr und backgroundTaskId enthalten: timedOutAfterMs ist das Timeout in Millisekunden, gesetzt, wenn der Befehl sein Timeout erreicht hat und in den Hintergrund wechselt, anstatt dort explizit zu starten. backgroundCwdHint wird gesetzt, wenn der Hintergrund-Befehl ein Verzeichniswechsel-Builtin wie cd, pushd, popd oder chdir enthielt, und vermerkt, dass sich das Sitzungsarbeitsverzeichnis nicht geändert hat. Beide Felder erfordern Claude Code v2.1.210 oder später. Wenn ein Subagent, der im Vordergrund läuft, einen Hintergrund-Befehl besitzt, endet der Befehl, wenn dieser Subagent seinen Lauf beendet. Claude Code setzt backgroundEndsWithFinalResponse auf true bei solchen Befehlen und lässt das Feld weg, wenn der Befehl den Zug überlebt, wie Befehle, die vom Hauptgespräch oder von Hintergrund-Subagenten gestartet werden. Das Feld erfordert Claude Code v2.1.227 oder später. Claude Code setzt gitOperation.commit.branch auf den Branch, der in Gits Commit-Zusammenfassungszeile benannt ist, und lässt ihn für einen Commit auf einem detached HEAD weg. Das Feld erfordert Agent SDK v0.3.227 oder später. Claude Code meldet einen gh pr reopen-Befehl als die reopened-PR-Aktion, was Agent SDK v0.3.234 oder später erfordert.

Monitor

Tool-Name: Monitor
Gibt die Hintergrund-Aufgaben-ID für den laufenden Monitor zurück. Verwenden Sie diese ID mit TaskStop, um die Überwachung 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. Was originalFile und structuredPatch enthalten, hängt vom Schreib-Vorgang ab:
  • Für eine neu erstellte Datei ist originalFile null und structuredPatch ist leer
  • Bei einem Überschreiben enthält originalFile den vorherigen Inhalt, außer wenn dieser Inhalt größer als etwa 10 MB ist: Claude Code überspringt dann den Diff und gibt originalFile null und structuredPatch leer zurück
  • structuredPatch ist auch leer, wenn der Schreib-Vorgang nichts geändert hat oder das Diff-Timeout abgelaufen ist

Glob

Tool-Name: Glob
Gibt Dateipfade zurück, die dem Glob-Muster entsprechen, sortiert nach Änderungszeit. totalMatches und countIsComplete erfordern Claude Code v2.1.191 oder später. totalMatches meldet die Anzahl der übereinstimmenden Dateien vor der Kürzung. Wenn countIsComplete false ist, ist totalMatches eine untere Grenze, da die zugrunde liegende Suche ihre eigene Ausgabe gekürzt hat.

Grep

Tool-Name: Grep
Gibt Suchergebnisse zurück. Die Form variiert je nach mode: Dateiliste, Inhalt mit Übereinstimmungen oder Übereinstimmungszahlen. Im count-Modus sind numFiles und numMatches Gesamtwerte über den vollständigen Ergebnissatz, nicht den paginierten Slice. Vor v2.1.208 kürzten ein head_limit oder offset, das die aufgelisteten Einträge kürzten, auch diese Gesamtwerte. totalFiles erfordert Claude Code v2.1.208 oder später und meldet die Gesamtzahl der Ergebnisse vor head_limit und offset-Paginierung im files_with_matches-Modus. totalLines erfordert Claude Code v2.1.210 oder später und meldet die Gesamtzahl der Zeilen vor der Paginierung im content-Modus.

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. artifactRead ist Claude Codes eigener Datensatz eines Artefakt-Lesevorgangs, vorhanden nur, wenn Claude ein Artefakt abgerufen hat, das die Sitzung veröffentlichen kann. Claude Code liest es zurück, wenn eine Sitzung fortgesetzt wird, damit eine spätere Veröffentlichung auf der richtigen Version aufbaut; Ihr Code muss nicht darauf reagieren. slug benennt das Artefakt, ver ist die Version, die der Lesevorgang aufgezeichnet hat, und ist abwesend, wenn er keine aufgezeichnet hat, und seeded: false markiert einen Lesevorgang, dessen vollständige Quelle Claude nicht erreichte. Das Feld seeded erfordert Agent SDK v0.3.239 oder später.

WebSearch

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

Workflow

Tool-Name: Workflow
Gibt sofort nach dem Akzeptieren der Invokation durch das Tool 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.
Die folgenden Tools sind standardmäßig nur auf Claude 3.x-Modellen, Opus 4 bis 4.7, Sonnet 4 bis 4.6 und Haiku 4.5 verfügbar. Bei allen anderen Modellen, einschließlich Modell-IDs, die Claude Code nicht erkennt, sind sie nicht verfügbar, es sei denn, Sie aktivieren sie:
  • TodoWrite
  • TaskCreate
  • TaskGet
  • TaskUpdate
  • TaskList
Überall dort, wo die Tools verfügbar sind, stellt Claude Code die vier Task-Tools bereit, oder TodoWrite, wenn Sie CLAUDE_CODE_ENABLE_TASKS=0 setzen.Dieser Standardsatz gilt in Claude Code v2.1.268 und später, das das TypeScript Agent SDK ab v0.3.268 bündelt.Siehe Modellverfügbarkeit, um sich anzumelden.

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.

ExitWorktree

Tool-Name: ExitWorktree
Gibt die durchgeführte Aktion und Details über den Worktree zurück, der beendet wurde.

EnterPlanMode

Tool-Name: EnterPlanMode
Gibt eine Bestätigung zurück, dass der Planungsmodus betreten wurde.

CronCreate

Tool-Name: CronCreate
Gibt die Job-ID und eine menschenlesbare Beschreibung des Zeitplans zurück.

CronDelete

Tool-Name: CronDelete
Gibt die ID des gelöschten Jobs zurück.

CronList

Tool-Name: CronList
Gibt die geplanten Cron-Jobs zurück: dauerhafte Jobs aus .claude/scheduled_tasks.json und Sitzungs-Only-Jobs aus der aktuellen Sitzung. Ein Sitzungs-Only-Job enthält durable: false; Jobs, die von der Festplatte gelesen werden, lassen das Feld weg.

ScheduleWakeup

Tool-Name: ScheduleWakeup
Gibt zurück, wann das Aufwachen als Epoch-Millisekunden-Zeitstempel auslöst, die tatsächlich verwendete Verzögerung und ob die angeforderte Verzögerung begrenzt wurde. Das Feld stopped ist true, wenn der Aufruf die Schleife mit stop: true beendet hat. Es erfordert Claude Code v2.1.202 oder später. Das Feld cancelledWakeups zählt, wie viele ausstehende Aufweckungen ein stop: true-Aufruf storniert hat. Ein Wert von 0 bedeutet, dass nichts ausstehend war, und ein wiederkehrendes /loop-Cron wird nicht durch stop: true storniert. Es erfordert Claude Code v2.1.206 oder später.

RemoteTrigger

Tool-Name: RemoteTrigger
Gibt den API-Antwortstatus und -Text für die Trigger-Operation zurück.

PushNotification

Tool-Name: PushNotification
Gibt Zustellungsdetails zurück, einschließlich ob eine Push- oder lokale Benachrichtigung gesendet wurde und warum die Zustellung übersprungen wurde.

ReportFindings

Tool-Name: ReportFindings
Gibt die Anzahl der gemeldeten Erkenntnisse, die Aufwandsstufe, auf der die Überprüfung lief, und die Erkenntnisse zurück, die für den Ergebnis-Text wiedergegeben werden. Erfordert Claude Code v2.1.196 oder später. Das wiedergegebene Feld short_summary erfordert Claude Code v2.1.212 oder später.

Artifact

Tool-Name: Artifact
Gibt die url der veröffentlichten Seite und den lokalen path zurück, der für die Veröffentlichungsaktion veröffentlicht wurde, mit updated auf true gesetzt, wenn die Veröffentlichung ein vorhandenes Artefakt erneut bereitgestellt hat, und warnings mit allen Veröffentlichungs-Zeit-Hinweisen. Die Listenaktion gibt stattdessen die artifacts-Zeilen zurück, mit truncated gesetzt, wenn mehr Artefakte vorhanden sind als das angeforderte Limit. Bei Auflistungen, deren Umfang nicht "mine" ist, enthält jede Zeile rel, das markiert, ob der Benutzer das Artefakt besitzt oder es mit ihm geteilt wurde, und die Ausgabe des scope zeichnet auf, welcher Nicht-Standard-Umfang die Auflistung erzeugt hat; beide fehlen bei Standard-Auflistungen.

Projects

Tool-Name: Projects
Diskriminiert nach dem method-Feld, spiegelt die Eingabe wider. project_read gibt kleine Text-Dokumente inline in content zurück und schreibt größere Dokumente stattdessen in einen local_file-Pfad; project_search gibt RAG-hits mit rag: true zurück, wenn der Projektindex verfügbar ist, und fällt ansonsten auf eine docs-Pfadliste zurück.

ReadMcpResourceDir

Tool-Name: ReadMcpResourceDirTool
Gibt die direkten Kinder der Verzeichnisressource zurück. Unterverzeichnisse erscheinen mit mimeType "inode/directory"; error enthält eine menschenlesbare Nachricht, wenn der Server das Verzeichnis nicht auflisten konnte.

RefreshMcpTools

Tool-Name: RefreshMcpTools
Gibt einen Eintrag pro Server zurück: refreshed bedeutet, dass die neu abgefragte Werkzeugliste angewendet wurde, error bedeutet, dass die Neuabfrage fehlgeschlagen ist und die vorherige Werkzeugliste beibehalten wurde, und not_connected bedeutet, dass der Server keine Live-Verbindung zum Abfragen hat.

ShowOnboardingRolePicker

Tool-Name: ShowOnboardingRolePicker
Gibt die Auswahl des Benutzers zurück: role, wenn er einen Rollen-Chip ausgewählt oder eingegeben hat, und dismissed: true, wenn er die Auswahl geschlossen hat. Ein leeres Objekt bedeutet, dass der Benutzer den Aufruf genehmigt hat, ohne eine Rolle auszuwählen.

McpOutput

Tool-Name: dynamische MCP-Tool-Namen der Form mcp__<server>__<tool>
MCP-Tool-Ergebnisse werden je nach Server als Zeichenkette oder als Array von Inhaltsblöcken zurückgegeben. Der nachfolgende Plain-Object-Zweig im exportierten Typ ist ein Schema-Generierungs-Artefakt. Für ein Ergebnis, das zusätzlich structuredContent oder Ressourcenlinks enthält, siehe tool_use_result, das diesen Wert in seinem content-Element enthält. Zur Laufzeit kann der Wert auch undefined sein, obwohl der exportierte Typ dies nicht modelliert.

Berechtigungstypen

PermissionUpdate

Operationen zum Aktualisieren von Berechtigungen.

PermissionBehavior

PermissionUpdateDestination

PermissionRuleValue

Andere Typen

ApiKeySource

Woher der API-Schlüssel für die Anfragen der Sitzung kam, gemeldet als apiKeySource in der SDKSystemMessage-Initialisierungsnachricht.
Claude Code meldet einen von vier Werten: Agent SDK v0.3.234 und später listen diese vier Werte im Typ auf. Der Typ behält auch user, project, org, temporary und oauth, damit älterer Code noch kompiliert wird, und Claude Code meldet sie nicht.

SdkBeta

Verfügbare Beta-Funktionen, die über die betas-Option aktiviert werden können. Siehe Beta-Header für weitere Informationen.
In der Claude API ist die Beta context-1m-2025-08-07 für Claude Sonnet 4.5 und Claude Sonnet 4 nicht mehr verfügbar. Wenn Sie sie weiterhin mit einem dieser Modelle übergeben, geben Anfragen, die das Standard-Kontextfenster von 200K Token überschreiten, einen Fehler zurück; entfernen Sie sie daher aus betas. Um eine Sitzung mit einem Kontextfenster von 1M Token auszuführen, setzen Sie model auf ein Modell, das standardmäßig mit dem 1M-Fenster läuft, z. B. claude-sonnet-5-5 oder claude-opus-5-5. Bei einem Modell, das 1M nur über seine [1m]-Variante erreicht, hängen Sie das Suffix an die Modell-ID an, wie in claude-opus-4-6[1m].

SlashCommand

Informationen über einen verfügbaren Befehl.
builtin ist true in einer Zeile, wenn der Befehl Claude Code’s eigener ist und das Eingeben von /name ihn ausführt. Er fehlt für einen Befehl, der von einem Benutzer, Projekt, Plugin oder MCP-Server definiert wird, und für einen gebündelten Befehl, den einer dieser nach Name ersetzt. Erfordert Agent SDK v0.3.277 oder später.

ModelInfo

Informationen über ein verfügbares Modell.

AgentInfo

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

McpServerProvenance

Der MCP-Server, der ein mcp__*-Tool bereitstellt, und woher die Definition dieses Servers kam. Die PreToolUse-, PostToolUse-, PostToolUseFailure-, PermissionRequest- und PermissionDenied-Hook-Eingaben tragen ihn als mcp_server, und die CanUseTool-Optionen tragen ihn als mcpServer. Beide lassen ihn für Tools weg, die nicht von einem MCP-Server stammen.
source nimmt einen der folgenden Werte an. Die Menge ist offen, daher behandeln Sie einen Wert, den Sie nicht erkennen, als konfigurierte Quelle, niemals als sdk:
  • sdk: ein In-Process-Server, den Ihre Anwendung registriert hat. Nur die SDK-Host-Anwendung kann einen registrieren, daher meldet ein konfigurierter Server niemals sdk, unabhängig von seinem Namen.
  • plugin: ein Server, den ein Plugin bereitstellt. Sein name ist die scoped plugin:<plugin-name>:<server-name>-Form, die unter Plugin-bereitgestellte MCP-Server beschrieben wird.
  • Ein Konfigurations-Geltungsbereich: user, project, local, dynamic, managed, enterprise, claudeai oder agent. Ein .mcp.json-Server meldet project, und Geltungsbereiche der MCP-Installation definiert local, project und user. Server, die Ihre Anwendung in der mcpServers-Option übergibt, außer In-Process-SDK-Servern, melden dynamic.
Basieren Sie Vertrauensentscheidungen auf source, nicht auf name oder dem mcp__<server>__-Tool-Namen-Präfix. Für jede Quelle außer sdk ist name nicht vertrauenswürdiger Text: maskieren Sie ihn vor der Anzeige. McpServerProvenance und die Felder, die ihn tragen, erfordern Agent SDK v0.3.274 oder später.

McpServerStatus

Status eines verbundenen MCP-Servers.
source sagt, woher die Definition des Servers kam, mit den gleichen Werten und Vertrauensregel wie McpServerProvenance’s source. Das Feld erfordert Agent SDK v0.3.274 oder später und fehlt in früheren Versionen. _meta auf einem tools-Eintrag trägt die MCP-Apps-Mitglieder des _meta dieses Tools, sodass Ihre Anwendung die ui://-Ressource finden kann, um sie mit readMcpResource() zu rendern. Claude Code leitet das ui-Objekt und die veraltete flache ui/resourceUri-Zeichenkette durch und behält jeden anderen Schlüssel zurück. Innerhalb von ui ist resourceUri eine ui://-Zeichenkette und visibility ein Array von "model" und "app", wenn der Server sie setzt, und jedes andere Mitglied wird unverändert durchgeleitet. Claude Code verwirft jeden Schlüssel, wenn der Wert fehlerhaft ist, und lässt _meta von einem Tool weg, das weder deklariert. Das Feld ist nur vorhanden, wenn die capabilities der Init-Nachricht mcp_tool_ui_meta_v1 enthalten, und erfordert TypeScript Agent SDK v0.3.280 oder später.

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 Abrechnungsvorbehalte.
thinkingTokens zählt die Thinking-Token, die dieses Modell generiert hat. outputTokens enthält sie bereits, daher addieren Sie die beiden nicht zusammen. Das Feld fehlt, bis ein Turn auf einer Claude-Code-Version läuft, die es aufzeichnet, daher meldet eine fortgesetzte Sitzung, die auf einer früheren Version begann, eine teilweise Anzahl. thinkingTokens erfordert Agent SDK v0.3.257 oder später. Die Felder canonicalModel und provider erfordern Claude Code v2.1.218 oder später. canonicalModel ist die kanonische Modell-ID, die die Preissuche verwendet; sie kann sich von der rohen Modell-Zeichenkette unterscheiden, die den Eintrag indiziert, z. B. wenn diese Zeichenkette eine anbieter-spezifische ID oder ein Alias ist. provider benennt das API-Backend, das das Modell bereitgestellt hat, z. B. firstParty, bedrock, vertex, foundry, anthropicAws, mantle oder gateway. costBasis benennt die Preistabelle, die die letzte Anfrage des Modells bepreist hat: list für Listenpreis, managed für eine modelPricing-Tabelle, oder unknown, wenn keine zur Modell-ID passte. Das Feld erfordert Claude Code v2.1.246 oder später.

ConfigScope

NonNullableUsage

Eine Version von Usage, in der alle nullable Felder nicht nullable gemacht werden, außer fallback_credit, das weiterhin null sein kann.

Usage

Token-Nutzungsstatistiken. Dies ist der BetaUsage-Typ aus @anthropic-ai/sdk.
BetaServerToolUsage, BetaIterationsUsage, BetaOutputTokensDetails und BetaFallbackCreditUsage sind in @anthropic-ai/sdk definiert. output_tokens_details unterteilt die abgerechnete Ausgabe nach Kategorie. Sie trägt derzeit ein Feld, thinking_tokens: number, das die Ausgabe-Token zählt, die das Modell als interne Überlegung generiert hat, einschließlich der Trennzeichen der Thinking-Blöcke. Das Feld output_tokens_details erfordert TypeScript SDK v0.3.228 oder später, das Claude Code v2.1.228 bündelt.
  • Abrechnung: Lesen Sie die Aufschlüsselung zur Beobachtung, nicht zur Abrechnung. output_tokens bleibt die autoritative Summe, und output_tokens - thinking_tokens approximiert die Nicht-Reasoning-Ausgabe.
  • Was die Anzahl abdeckt: das rohe Reasoning, das das Modell produziert hat, das länger sein kann als der Thinking-Text, der im Response-Body zurückgegeben wird. Die API berechnet es durch erneutes Tokenisieren dieses rohen Textes, daher kann es sich um einige Token von der genauen Generierungsanzahl des Modells unterscheiden.
  • Streaming: Bei gestreamten Assistenten-Nachrichten ist diese Aufschlüsselung wie output_tokens ein message_start-Platzhalter und trägt keine echte Anzahl, daher lesen Sie sie aus der Ergebnis-Nachricht usage, wie Ausgabe-Token aus der Ergebnis-Nachricht lesen beschreibt. In der Ergebnis-Nachricht liest thinking_tokens 0, wenn das Modell oder der Provider keine Aufschlüsselung meldet.
  • null-Fälle: output_tokens_details selbst ist null bei Assistenten-Nachrichten, die Claude Code synthetisiert, z. B. API-Fehler-Nachrichten.
Ob Usage das Feld fallback_credit enthält, hängt von Ihrem installierten @anthropic-ai/sdk ab, das es in 0.115.0 hinzugefügt hat.

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.
Eine Datei, die ein MCP-Tool per Referenz zurückgegeben hat. Claude Code erstellt jeden Eintrag aus einem resource_link-Block im Ergebnis des Tools und liefert die Liste als resourceLinks auf SDKUserMessage.tool_use_result oder als resource_links auf SDKTaskNotificationMessage, wenn der Aufruf im Hintergrund beendet wurde. Erfordert Agent SDK v0.3.257 oder später.
Claude Code verwirft einen Block, dessen uri oder name keine Zeichenkette ist, und lässt ein optionales Feld weg, dessen Wert nicht vom aufgelisteten Typ ist.

ThinkingConfig

Steuert das Thinking-/Reasoning-Verhalten von Claude. Hat Vorrang vor dem veralteten maxThinkingTokens.
Das optionale display-Feld steuert, ob Thinking-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 Thinking-Inhalte in thinking-Blöcken zu erhalten. Claude Code sendet display nicht an Amazon Bedrock oder Google Cloud’s Agent Platform, daher geben Opus 4.7 und später auf diesen Anbietern leere thinking-Blöcke zurück, auch wenn Sie display auf "summarized" setzen.

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.
Wenn Sie setMcpServers() aufrufen, wendet Claude Code diese Regeln an:
  • Server, die der Aufruf nicht benennt: Claude Code hält von Plugins bereitgestellte Server am Laufen. Erfordert Agent SDK v0.3.210 oder später.
  • Server, die der Aufruf benennt: außer für integrierte Server, die die CLI beim Start gestartet hat, ersetzt Claude Code einen laufenden Server nur, wenn sich seine Konfiguration von der unterscheidet, die Sie übergeben haben.
  • Integrierte Server, die die CLI beim Start gestartet hat: Wenn der Aufruf einen benennt, verwirft Claude Code diesen Eintrag und meldet ihn in errors.
Das Promise wird aufgelöst, nachdem neu hinzugefügte Stdio-, HTTP- und SSE-Server verbunden oder fehlgeschlagen sind, daher sind Tools von Servern, die verbunden sind, im nächsten Turn verfügbar. added listet die Server auf, die Claude Code hinzugefügt oder ersetzt hat, unabhängig davon, ob sie verbunden sind. Ein Server, der keine Verbindung hergestellt hat, erscheint sowohl in added als auch in errors, mit dem Fehlertext unter errors und einer failed-Zeile in mcpServerStatus(). Vor Claude Code v2.1.257 wurde ein Server, dessen Verbindungsversuch einen Fehler auslöste, nur unter errors gemeldet.

RewindFilesResult

Ergebnis einer rewindFiles()-Operation.
skippedLinks zählt die verfolgten Pfade, die das Rewind aus Linksicherheitsgründen nicht wiederherstellen oder löschen konnte: ein Symlink, Hard Link oder andere Nicht-Regulär-Datei am verfolgten Pfad, ein übergeordnetes Verzeichnis, das nicht mehr zu dem Ort aufgelöst wird, auf den es zeigte, als der Checkpoint erstellt wurde, oder ein Backup, das nicht sicher gelesen werden konnte. Das Feld erfordert Claude Code v2.1.216 oder später. Ein Vorschau-Aufruf mit rewindFiles(userMessageId, { dryRun: true }) setzt ihn nie.

SDKStatusMessage

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

SDKTaskNotificationMessage

Benachrichtigung, wenn eine Hintergrundaufgabe abgeschlossen, fehlgeschlagen oder gestoppt wird. Hintergrundaufgaben umfassen run_in_background Bash-Befehle, Monitor-Watches und Hintergrund-Subagenten. Für das ambient-Feld siehe SDKTaskStartedMessage, das es und seine Versionsanforderung definiert.
Wenn Claude Code einen langen MCP-Tool-Aufruf in den Hintergrund verschiebt, enthält der tool_result-Block für diesen Aufruf nur einen Platzhalter und das echte Ergebnis des Aufrufs kommt in dieser Benachrichtigung an. Gleichen Sie die Benachrichtigung mit dem Aufruf mit tool_use_id ab. Bei einer completed-Benachrichtigung listet resource_links die Dateien auf, die das Tool per Referenz als SDKMcpResourceLink-Einträge zurückgegeben hat, mit den gleichen 50-Link- und 64-KiB-Limits wie tool_use_result.resourceLinks. Claude Code lässt resource_links weg, wenn das Ergebnis keine Links hatte und bei Benachrichtigungen für Aufgaben, die keine MCP-Tool-Aufrufe sind. resource_links erfordert Agent SDK v0.3.257 oder später. Claude Code stellt jeder Task-Benachrichtigung, die es an das Modell sendet, einen Hinweis voran, außer Lieferungen mit dem scheduled-trigger-Subkind, die stattdessen einen zugewiesenen Task-Rahmen tragen. Der Hinweis besagt, dass keine menschliche Eingabe stattgefunden hat, daher behandelt das Modell die Benachrichtigung nicht als Benutzer-Anweisung oder Genehmigung. Um einen Task-Benachrichtigungs-Turn zu erkennen, überprüfen Sie origin.kind === "task-notification" auf der SDKUserMessage oder SDKResultMessage, anstatt auf den Hinweistext zu prüfen. Lesen Sie subkind aus dem gleichen Feld, wenn Sie wissen müssen, was es ausgelöst hat. Vor v2.1.205 ließ Claude Code den Hinweis bei Benachrichtigungen weg, die ankamen, während die Sitzung untätig war.

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.
Während ein Tool-Aufruf in der Hauptkonversation läuft, gibt Claude Code alle 30 Sekunden eine tool_progress-Nachricht mit heartbeat: true aus. Jeder Heartbeat trägt den Tool-Namen und verstrichene Sekunden, daher können Sie einen lang laufenden Aufruf von einer steckengebliebenen Sitzung unterscheiden. Claude Code gibt keine Heartbeats für Tool-Aufrufe innerhalb eines Subagenten aus. Das heartbeat-Feld erfordert Agent SDK v0.3.214 oder später. Vor v2.1.257 gab Claude Code auch keine Heartbeats für einen Vordergrund-Agent-Tool-Aufruf aus. Bei tool_progress-Nachrichten für das Agent-Tool außer Heartbeats benennt subagent_type den laufenden Subagenten-Typ, z. B. general-purpose. subagent_retry ist vorhanden, während dieser Subagent einen API-Fehler-Backoff abwartet, z. B. ein Rate-Limit oder eine Überlastung, mit einer Nachricht pro Wiederholungsversuch. Beide Felder erfordern Agent SDK v0.3.214 oder später. Um einen Wiederholungs-Indikator aus subagent_retry zu rendern:
  • Verfolgen Sie den Indikator nach parent_tool_use_id, das pro Subagent eindeutig ist. tool_use_id wird von parallelen Subagenten aus einem Assistenten-Turn geteilt, daher würde die Verfolgung danach zulassen, dass das Update eines Subagenten den Indikator eines anderen löscht.
  • Löschen Sie den Indikator, wenn ein späterer tool_progress für den gleichen parent_tool_use_id weder mit subagent_retry noch mit heartbeat: true ankommt, oder wenn die Ergebnis-Nachricht des Tools ankommt. Frames mit heartbeat: true melden nur Lebendigkeit, daher behalten Sie den Indikator, wenn einer ankommt. attempt kann max_retries bei persistenten Wiederholungsversuchen überschreiten, daher leiten Sie das Löschen nicht von den Zählern ab.
  • Behandeln Sie error_category als Token zur Auswahl Ihres eigenen Nachrichtentextes, nicht als Anzeigetext. Die Werte sind rate_limit, overloaded, authentication_failed, server_error, cloud_credential_error und unknown. Behandeln Sie einen Wert, den Sie nicht erkennen, wie unknown, weil spätere Versionen Werte hinzufügen können.

SDKAuthStatusMessage

Wird während Authentifizierungsflüssen ausgegeben.

SDKTaskStartedMessage

Wird ausgegeben, wenn eine Aufgabe beginnt. Das task_type-Feld ist "local_bash" für Bash-Befehle und Monitor-Watches, "local_agent" für Subagenten oder "remote_agent".
ambient ist true für Aufgaben, die nicht Teil der Arbeit der Sitzung sind, z. B. Aufgaben, die Claude Code für seinen eigenen Betrieb ausführt. Live-Update-Watcher sind auch ambient, einschließlich Watcher, die der Benutzer angefordert hat. Schließen Sie ambient-Aufgaben aus Aktivitätsindikatoren aus. Das Feld erfordert Agent SDK v0.3.247 oder später. ambient erscheint auch auf SDKTaskNotificationMessage und auf SDKBackgroundTasksChangedMessage-Einträgen. is_backgrounded und spawn_depth beschreiben, wie Claude Code die Aufgabe gestartet hat. Beide Felder erfordern Agent SDK v0.3.238 oder später.
  • is_backgrounded: Claude Code setzt es auf "local_agent"- und "local_bash"-Aufgaben. true bedeutet, die Aufgabe läuft im Hintergrund. false bedeutet, die Aufgabe läuft im Vordergrund, und der Tool-Aufruf, der sie gestartet hat, bleibt blockiert, bis die Aufgabe beendet wird oder in den Hintergrund wechselt.
  • spawn_depth: Claude Code setzt es nur auf "local_agent"-Aufgaben. Ein Subagent, den der Hauptthread gespawnt hat, hat Tiefe 1. Ein Subagent, den ein Tiefe-1-Subagent gespawnt hat, hat Tiefe 2, und so weiter.
Ein fortgesetzter Subagent meldet immer is_backgrounded: true, weil Claude Code jeden fortgesetzten Subagenten im Hintergrund ausführt. Wenn eine Vordergrund-Aufgabe später in den Hintergrund wechselt, meldet Claude Code den neuen is_backgrounded-Wert in einer task_updated-Nachricht, anstatt eine zweite task_started zu senden.

SDKTaskProgressMessage

Wird regelmäßig ausgegeben, während ein Subagent oder eine Hintergrundaufgabe läuft. Für eine Subagenten-Aufgabe trägt das summary-Feld eine modellgenerierte Fortschritts-Zusammenfassung und wird nur ausgefüllt, wenn agentProgressSummaries aktiviert ist. Für einen in den Hintergrund verschobenen MCP-Tool-Aufruf trägt summary den neuesten gemeldeten Fortschritt des MCP-Servers und hängt nicht von dieser Option ab.

SDKTaskUpdatedMessage

Wird ausgegeben, wenn sich der Status einer Hintergrundaufgabe ä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 Hintergrundaufgaben ändert: eine Aufgabe startet, wird abgeschlossen, wird beendet, ein Vordergrund-Agent wird in den Hintergrund verschoben, oder das description- oder ambient-Feld einer Aufgabe ändert sich. Das tasks-Array ist die vollständige aktive Menge. Ersetzen Sie alle zwischengespeicherten Mengen mit jeder Payload, 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. Wenn Sie eine wiederholte initialize-Steueranfrage an eine laufende Sitzung senden, z. B. mit reinitialize() nach einer Transportlücke, folgt Claude Code der Antwort mit einem Snapshot der aktuellen aktiven Menge, auch wenn sie leer ist. Ein wiederverbindender Host erfährt daher, was läuft, ohne auf die nächste Änderung der Mitgliedschaft zu warten. Vor Agent SDK v0.3.239 sendete Claude Code keinen Snapshot nach einer wiederholten initialize. Erfordert Claude Code v2.1.203 oder später.

SDKThinkingTokensMessage

Wird ausgegeben, während Claude einen Thinking-Block produziert, einschließlich eines redigierten. estimated_tokens ist eine laufende Schätzung der bisher im aktuellen Block generierten Thinking-Token, und estimated_tokens_delta ist das Inkrement, das von diesem Frame getragen wird. Verwenden Sie diese Schätzungen für die Fortschrittsanzeige. Wenn das Modell oder der Provider eine Aufschlüsselung meldet, ist die endgültige Anzahl für die Top-Level-Agentenschleife die usage.output_tokens_details.thinking_tokens der Ergebnis-Nachricht, die keine Subagenten-Token enthält. Erfordert Claude Code v2.1.153 oder später.

SDKSessionStateChangedMessage

Wird ausgegeben, wenn Claude Code den Status der Sitzung meldet. Um diese Nachrichten zu erhalten, setzen Sie CLAUDE_CODE_EMIT_SESSION_STATE_EVENTS=1. Claude Code kann denselben Status mehr als einmal melden, lesen Sie eine Nachricht daher als aktuellen Status der Sitzung und nicht als Übergang. Das state-Feld trägt einen dieser Werte:
  • running: Die Sitzung arbeitet.
  • idle: Claude Code wartet auf Ihren nächsten Prompt.
  • requires_action: Die Sitzung ist blockiert, bis eine Anfrage beantwortet wird, die sie an Ihren Host gesendet hat, z. B. eine Berechtigungsabfrage.
Die idle-Nachricht eines Turns und seine result-Nachricht können in beliebiger Reihenfolge ankommen. Um zu ändern, ob idle auf Hintergrundarbeit wie einen Hintergrund-Subagenten oder einen Workflow-Lauf wartet, siehe CLAUDE_CODE_BG_TASKS_REPORT_RUNNING.

SDKFilesPersistedEvent

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

SDKRateLimitEvent

Wird ausgegeben, wenn die Sitzung auf ein Rate-Limit 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 Rate-Limit-Ereignissen, die keine Guthaben-erforderlich-Ablehnungen sind. Erfordert Claude Code v2.1.181 oder später.

SDKLocalCommandOutputMessage

Claude Code gibt diesen Nachrichtentyp nicht aus. Wenn Sie einen Befehl wie /context oder /usage als Prompt senden, kommt seine Ausgabe als SDKAssistantMessage an.

SDKCommandsChangedMessage

Wird ausgegeben, wenn sich die Menge der verfügbaren Befehle während einer Sitzung ändert, z. B. wenn Claude Code Skills entdeckt, wenn der Agent ein Unterverzeichnis betritt. Das commands-Array ist die vollständig aktualisierte Liste, daher ersetzen Sie alle zwischengespeicherten Befehlslisten durch diese Payload. Das Aufrufen von supportedCommands() nach dieser Nachricht gibt die gleiche aktualisierte Liste zurück, weil die Methode den neuesten Push verfolgt; dies erfordert Agent SDK v0.3.216 oder später. In früheren SDK-Versionen gibt supportedCommands() den bei der Initialisierung erfassten Snapshot zurück und spiegelt nie Änderungen während der Sitzung wider. Claude Code gibt diese Nachricht auch aus, wenn die Prompts eines MCP-Servers der Liste beitreten oder sie verlassen, z. B. wenn ein Server nach dem Sitzungsstart die Verbindung herstellt. Dies erfordert Claude Code v2.1.281 oder später.

SDKPromptSuggestionMessage

Wird nach einem Turn ausgegeben, wenn promptSuggestions aktiviert ist und Claude Code eine Suggestion für diesen Turn generiert hat. Enthält den vorhergesagten nächsten Benutzer-Prompt. Für die Turns, die keine erhalten, siehe Wenn Claude Code Suggestions überspringt.

SDKConversationResetMessage

Wird ausgegeben, wenn die Konversation der Sitzung ersetzt wird, ohne die Sitzung zu beenden. In einem query()-Aufruf erzeugen nur /clear und seine Aliase diese Nachricht. Mounten Sie ein leeres Transkript unter new_conversation_id und verwerfen Sie alle zwischengespeicherten Sitzungstitel.
Die optionalen Felder beschreiben den Reset:
  • trigger: was die Konversation verworfen hat. Setzen Sie Ihr Transkript bei jeder conversation_reset-Nachricht zurück, einschließlich einer, bei der dieses Feld fehlt oder einen Wert trägt, den Sie nicht erkennen.
  • user_message_uuid: die uuid der Benutzer-Nachricht, die /clear trug. Verwenden Sie sie, um den Reset mit dieser Nachricht abzugleichen.
  • timestamp: wann der Reset stattfand, als ISO-8601-Zeichenkette in UTC. Verwenden Sie sie zur Anzeige, nicht zur Reihenfolge von Nachrichten.
Die Felder trigger, user_message_uuid und timestamp erfordern Claude Code v2.1.281 oder später. 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" bei der Typprüfung fehl, wenn skipLibCheck deaktiviert war.

AbortError

Benutzerdefinierte Fehlerklasse für Abbruchoperationen.
AbortError ist die einzige Fehlerklasse in der typisierten API des SDK. Andere Fehler, wie das Beenden oder der fehlgeschlagene Start des Claude-Code-Prozesses, lehnen die Nachrichteniteration mit Fehlern ab, die keine SDK-Klasse zum Abgleichen tragen. Fehlerbehebung ordnet diese Fehler nach Nachricht, mit der Ursache und Behebung für jeden.

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 Systemdienste gewähren, die außerhalb der Sandbox reichen. 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. Ihre excludedCommands-Einträge führen stattdessen einen Aufruf außerhalb der Sandbox mit keiner Modellbeteiligung durch; sandbox.excludedCommands behandelt, wann ein Eintrag gilt. Im folgenden Beispiel steht isCommandAuthorized für eine Autorisierungsprüfung, die Sie definieren.
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 Genehmigungsaufforderungen, abgesehen von den Aktionen, die kein Modus automatisch genehmigt. Diese Kombination ermöglicht dem Modell effektiv, die Sandbox-Isolierung stillschweigend zu verlassen.

Siehe auch