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 den CLI-Subprozess vor, indem sie ihn spawnt und den Initialize-Handshake abschließt, bevor ein Prompt verfügbar ist. Das zurückgegebene WarmQuery-Handle akzeptiert später einen Prompt und schreibt ihn 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 ein Prompt 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

Definiert in @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

forkSession()

Kopiert das Transkript einer Sitzung in eine neue Sitzung, sodass Sie die Konversation in eine andere Richtung lenken können, während das Original unverändert bleibt. Um von einem früheren Punkt der Konversation abzuzweigen, übergeben Sie upToMessageId.

Parameter

Gibt { sessionId } zurück, die UUID der neuen Sitzung. Übergeben Sie sie als resume, um den Fork fortzusetzen. Der Fork enthält nicht die Datei-Checkpoints der ursprünglichen Sitzung, sodass Sie ihn nicht auf einen Checkpoint zurücksetzen können, der vor dem Fork erstellt wurde. forkSession() wirft einen Fehler, wenn:
  • sessionId keine UUID ist
  • die Sitzung nicht gefunden werden kann oder keine Nachrichten enthält
  • upToMessageId mit keiner Nachricht im Transkript übereinstimmt

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 Funktion query().

Langsame oder hängende API-Antworten behandeln

Der CLI-Subprozess liest mehrere Umgebungsvariablen, die API-Timeouts und die Erkennung hängender Vorgänge steuern. Übergeben Sie sie über die Option env:
  • API_TIMEOUT_MS: Timeout pro Anfrage im Anthropic-Client, in Millisekunden. Standard 600000. Gilt für die Hauptschleife und alle Subagenten.
  • CLAUDE_CODE_MAX_RETRIES: maximale Anzahl an API-Wiederholungsversuchen. Standard 10, begrenzt auf 15. Jeder Wiederholungsversuch erhält ein eigenes API_TIMEOUT_MS-Zeitfenster. Für unbeaufsichtigte Läufe, die längere Ausfälle überstehen müssen, setzen Sie CLAUDE_CODE_RETRY_WATCHDOG=1: Damit werden vorübergehende Kapazitätsfehler unbegrenzt erneut versucht, und ab Claude Code v2.1.199 wird der Standardwert für andere vorübergehende Fehler auf 300 angehoben und die Obergrenze dieser Variable aufgehoben.
  • CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: Watchdog für hängende Subagenten. Solange der Stream-Watchdog aktiv ist, beträgt der Standard CLAUDE_STREAM_IDLE_TIMEOUT_MS plus 5 Minuten, was 600000 ergibt, sofern Sie diese Variable nicht erhöhen. Bei ausgeschaltetem Stream-Watchdog beträgt der Standard 600000. Vor v2.1.257 betrug der Standard immer 600000. Der Timer wird bei jedem Stream-Ereignis zurückgesetzt. Bei einem Hänger bricht Claude Code den Subagenten ab und meldet dies an den übergeordneten Agenten. Bei einem Hintergrund-Subagenten markiert es außerdem die Aufgabe als fehlgeschlagen und hängt ein eventuelles Teilergebnis an.
  • CLAUDE_ENABLE_STREAM_WATCHDOG mit CLAUDE_STREAM_IDLE_TIMEOUT_MS: Stream-Watchdog, der die Anfrage abbricht, wenn die Header eingetroffen sind, der Response-Body aber nicht mehr gestreamt wird. Der Watchdog ist für alle Anbieter standardmäßig aktiv; setzen Sie CLAUDE_ENABLE_STREAM_WATCHDOG=0, um ihn zu deaktivieren. CLAUDE_STREAM_IDLE_TIMEOUT_MS hat den Standardwert 300000 und wird auf dieses Minimum begrenzt. Was Claude Code nach dem Abbruch tut, abhängig davon, wie weit die Antwort fortgeschritten war, beschreibt Automatische Wiederholungsversuche. Während der Watchdog eine Antwort abwartet, die ein Gateway hinter ANTHROPIC_BASE_URL mit Keep-alive-Pings offen hält, erhält ein Host, der includePartialMessages setzt, weiterhin ping-Stream-Ereignisse. Werten Sie diese Frames daher als Lebenszeichen, anstatt die Sitzung bei Stille per Timeout zu beenden. Vor v2.1.257 endeten die Frames 5 Minuten nach dem letzten echten Stream-Ereignis.

Query-Objekt

Von der Funktion query() zurückgegebene Schnittstelle.

Methoden

applyFlagSettings()

Ändert Einstellungen in einer laufenden Sitzung, ohne die Abfrage neu zu starten. Verwenden Sie die Methode, wenn sich eine Einstellung ohne eigenen Setter während der Sitzung ändern muss, etwa um permissions zu verschärfen, nachdem der Agent nicht vertrauenswürdige Eingaben gelesen hat. setModel() und setPermissionMode() sind eigene Setter für diese beiden Schlüssel; applyFlagSettings() ist die allgemeine Form, die eine beliebige Teilmenge der Einstellungsschlüssel akzeptiert, und die Übergabe von model hier verhält sich genauso wie setModel(). Nur einige Schlüssel wirken während der Sitzung:
  • Wirksam ab dem nächsten Turn: effortLevel, ultracode, permissions, hooks, skillOverrides, fastMode, agent. Ein Wechsel von agent wendet ab dem nächsten Turn auch die Modellüberschreibung und die Hooks dieses Agenten an. Sein System-Prompt wirkt ab dem nächsten Turn oder, in einer Sitzung, die einen aufgezeichneten System-Prompt wiederverwendet, sobald die Sitzung komprimiert wird.
  • Wirksam während des aktuellen Turns: model. Wenn Sie model wechseln, während Claude an einem Turn arbeitet, wird die Antwort, die Claude gerade erzeugt, mit dem alten Modell abgeschlossen, und der Rest des Turns verwendet ab dem nächsten Aufruf, den Claude Code an das Modell richtet, das neue Modell. Subagenten behalten ihr eigenes Modell. Vor v2.1.212 wartete ein Wechsel mitten im Turn auf den nächsten Turn.
  • Keine Wirkung während der Sitzung: die Optionen für den System-Prompt. Diese werden einmalig beim Start aufgelöst, sodass die laufende Sitzung den ursprünglichen Wert behält, obwohl der Aufruf erfolgreich ist. Um sie zu ändern, starten Sie eine neue Sitzung.
effortLevel akzeptiert den Namen einer Effort-Stufe. Es akzeptiert außerdem "ultracode", was die Effort-Stufe xhigh mit aktiviertem Ultracode anfordert. applyFlagSettings() deklariert effortLevel ohne diesen Wert, übergeben Sie daher in TypeScript { ultracode: true, effortLevel: "xhigh" } für dasselbe Ergebnis oder nur den Schlüssel ultracode, um Ultracode bei der aktuellen Effort-Stufe der Sitzung einzuschalten. Der Wert ultracode erfordert Claude Code v2.1.203 oder höher und wird nur von applyFlagSettings() akzeptiert, nicht vom Schlüssel effortLevel in einer Einstellungsdatei. Vor v2.1.284 setzte der Schlüssel ultracode allein die Stufe auch auf xhigh. Die Werte werden in die Flag-Einstellungsebene geschrieben und über das zusammengeführt, was die Inline-Option settings von query() beim Start gesetzt hat. Dies ist dieselbe Ebene, die der Abschnitt zur Rangfolge auf dieser Seite als programmatische Optionen bezeichnet. Aufeinanderfolgende Aufrufe führen die Schlüssel der obersten Ebene flach zusammen. Ein zweiter Aufruf mit { permissions: {...} } ersetzt das gesamte permissions-Objekt des vorherigen Aufrufs, anstatt tief darin zusammengeführt zu werden. Um einen mit applyFlagSettings() gesetzten Schlüssel zu löschen, übergeben Sie null für diesen Schlüssel. Die meisten Schlüssel fallen dann zunächst auf einen Wert zurück, den die Option settings von query() beim Start gesetzt hat, und danach auf Quellen mit niedrigerem Vorrang. Ein gelöschtes model wird auf das Standardmodell von Claude Code zurückgesetzt, selbst wenn eine Einstellungsdatei model setzt. Die Übergabe von undefined hat keine Wirkung, da die JSON-Serialisierung diesen Wert verwirft. Drei Schlüssel neben model setzen den Sitzungszustand zurück, anstatt auf einen Fallback zurückzufallen:
  • effortLevel: null setzt die Sitzung auf die Standard-Effort-Stufe des Modells zurück, nicht auf die Option effort von query() oder ein effortLevel aus einer Einstellungsdatei.
  • agent: null führt den Hauptthread ab dem nächsten Turn ohne Agenten aus, anstatt die Option agent von query() oder ein agent aus einer Einstellungsdatei wiederherzustellen. Wenn der gelöschte Agent ein eigenes Modell angewendet hatte, kehrt die Sitzung zu dem Modell zurück, das sie beim Start aufgelöst hat.
  • ultracode: null schaltet Ultracode aus, wie false, anstatt einen ultracode-Wert aus einer Einstellungsdatei wiederherzustellen. Die Sitzung behält ihre aktuelle Effort-Stufe; übergeben Sie daher effortLevel im selben Aufruf, um sie zu ändern.
Nur im Streaming-Eingabemodus verfügbar, dieselbe Einschränkung wie bei setModel() und setPermissionMode(). Das folgende Beispiel wechselt das aktive Modell während der Sitzung und löscht dann die Überschreibung, sodass das Modell auf das Standardmodell von Claude Code zurückgesetzt wird.
applyFlagSettings() ist nur in TypeScript verfügbar. Das Python SDK stellt keine entsprechende Methode bereit.

updateSettings()

Schreibt einen zugelassenen Schlüssel in eine Einstellungsdatei auf der Festplatte, sodass der Wert für spätere Sitzungen erhalten bleibt, die diese Quelle laden. Jede Quelle akzeptiert einen Schlüssel mit einem Zeichenfolgenwert:
  • "localSettings": akzeptiert outputStyle und führt ihn in die lokale Einstellungsdatei des Projekts, .claude/settings.local.json, zusammen. Der neue Stil wird bei der nächsten Anfrage der Sitzung wirksam.
  • "userSettings": akzeptiert effortLevel und speichert ihn als Standard-Effort-Stufe für das aktuelle Modell der Sitzung unter modelSettings in Ihrer Benutzereinstellungsdatei. Die Übergabe von max schreibt nichts, da max nur für die Sitzung gilt. Die laufende Sitzung behält in jedem Fall ihre aktuelle Effort-Stufe; rufen Sie daher applyFlagSettings() auf, wenn Sie diese ebenfalls ändern möchten. Diese Quelle erfordert TypeScript SDK v0.3.277 oder höher, das Claude Code v2.1.277 bündelt.
Der Aufruf wird abgelehnt, wenn die Anfrage einen anderen Schlüssel enthält, wenn die Sitzung über einen Remote-Transport läuft und wenn die settingSources der Sitzung die angegebene Quelle ausschließen. Das Löschen eines Schlüssels wird nicht unterstützt.

toggleMcpServer()

Das Deaktivieren eines Servers trennt seine Verbindung und entfernt seine Tools aus der Sitzung. Für Server, die Sie während der Sitzung hinzugefügt haben, und für prozessinterne Server 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 prozessinterner 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 erfordert 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

Von startup() zurückgegebenes Handle. Der Subprozess ist bereits gestartet und initialisiert, sodass der Aufruf von query() auf diesem Handle den Prompt direkt an einen bereiten Prozess schreibt, ohne Startlatenz.

Methoden

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

SpareProcess

Alpha. Von prewarm() zurückgegebenes Handle: ein gestarteter Claude Code-Prozess, der noch an keine Sitzung gebunden ist und einmal beansprucht werden kann. Erfordert TypeScript Agent SDK v0.3.282 oder höher.

Member

options.cwd ist erforderlich. Eine Beanspruchung kann außerdem 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, zum Beispiel für einen Ordner, der nicht existiert, oder für einen, dessen Projekteinstellungen env, agent oder model setzen. Nach einer Verweigerung erhält ein Prompt, den claim() bereits gesendet hat, ein Fehlerergebnis, dessen Text mit not_claimed beginnt, und die zurückgegebene Abfrage wirft danach einen Fehler. Umschließen Sie die Schleife der Abfrage mit einem try-Block, um nach dem Fehler fortzufahren. Wenn claimed mit einer Meldung abgelehnt wird, die mit option_not_applied beginnt, läuft die Sitzung ohne das angeforderte model oder maxThinkingTokens. Nach jeder anderen Ablehnung wurde Ihr Prompt nicht ausgeführt; starten Sie die Sitzung daher stattdessen mit query().

SDKControlInitializeResponse

Rückgabetyp von initializationResult(). Enthält Initialisierungsdaten der Sitzung.
hooks_applied gibt an, ob Claude Code die hooks registriert hat, die die initialize-Anfrage enthielt. Das SDK sendet diese Anfrage einmal beim Start der Sitzung und erneut bei jedem Aufruf von reinitialize(). Das Feld erfordert Agent SDK v0.3.238 oder höher. Claude Code lässt das Feld weg, wenn die Anfrage keine Hooks enthielt. Wenn die Anfrage Hooks enthielt, hängt der Wert davon ab, ob es sich um die erste Initialisierung der Sitzung handelt, und bei einer wiederholten davon, wie sie die Sitzung erreicht hat:
  • true: Claude Code hat die Hooks registriert. Die erste Initialisierung einer Sitzung gibt diesen Wert zurück. Eine wiederholte Initialisierung, die über stdin der CLI gesendet wird, gibt ebenfalls true zurück. In diesem Fall ersetzen die Hooks der neuen Anfrage die zuvor registrierten Hooks.
  • false: Claude Code hat die Hooks ignoriert. Eine wiederholte Initialisierung, die an eine Remote-Sitzung gesendet wird, gibt diesen Wert zurück, sodass ein zweiter Client, der einer Sitzung beitritt, die vom ersten Client registrierten Hooks nicht ersetzen kann.
Vor Agent SDK v0.3.238 enthielt die Antwort das Feld nie, und Claude Code ignorierte hooks bei jeder wiederholten Initialisierung. Das Feld sdkMcpServerManifests der Anfrage und das Feld sdk_mcp_manifests_parked der Antwort dienen den prozessinternen SDK-MCP-Servern, die Sie mit createSdkMcpServer() erstellt haben. Ihre Anwendung setzt oder liest keines dieser Felder. claude_code_version ist die Claude-Code-Version des Prozesses, der die Turns der Sitzung ausführt. Es ist derselbe Wert, den die Init-Nachricht SDKSystemMessage enthält, sodass Sie die CLI-Version bereits vor dem ersten Turn lesen können.
  • Das Feld erfordert Agent SDK v0.3.296 oder höher, das Claude Code v2.1.296 bündelt.
  • Wenn das Feld undefined ist und Sie pathToClaudeCodeExecutable setzen, verweisen Sie damit auf Claude Code v2.1.296 oder höher.
Die Antwort meldet immer fast_mode_state, und wenn etwas den Fast-Modus blockiert, enthält fast_mode_disabled_reason zusätzlich den Ursachencode, sodass Sie den blockierten Zustand erklären können, anstatt die Verfügbarkeit selbst erneut abzuleiten. Beide Verhaltensweisen erfordern Claude Code v2.1.219 oder höher. Vor v2.1.219 ließ die Antwort fast_mode_state weg, wenn der Fast-Modus nicht verfügbar war, und enthielt nie eine Ursache. Zu den Ursachencodes und ihrer Bedeutung siehe fast_mode_disabled_reason in der Ergebnisnachricht. Der Wrapper der Steuerungsantwort für ein erfolgreiches initialize enthält außerdem ein Array pending_permission_requests. Das Feld befindet sich im Wrapper der Antwort selbst, nicht in der obigen SDKControlInitializeResponse-Payload. Jeder Eintrag ist eine vollständige control_request-Nachricht mit derselben Form { type: "control_request", request_id, request }, in der die Sitzung während der Ausführung Berechtigungsanfragen streamt. Das Array listet die Berechtigungsanfragen auf, die dieser Claude Code-Prozess ausgegeben und noch nicht aufgelöst hat. Das SDK liest das Array für Sie und leitet jeden Eintrag an Ihren canUseTool-Callback weiter, dieselbe erneute Zustellung, die reinitialize() nach einer Unterbrechung des Transports auslöst. Behandeln Sie wiederholte Anfrage-IDs idempotent, da ein Eintrag eine Anfrage wiederholen kann, die der Callback bereits vor dem Verbindungsabbruch erhalten hat. Das Array ist in einer erfolgreichen initialize-Antwort immer vorhanden und leer, wenn dieser Prozess keine unaufgelöste Berechtigungsanfrage hat. Erfordert Claude Code v2.1.268 oder höher. Frühere Versionen konnten das Feld weglassen; wenn Sie das Wire-Protokoll selbst parsen, werten Sie ein fehlendes Feld daher als Hinweis auf eine ältere CLI und nicht als Beweis, dass nichts aussteht.

SDKControlInterruptResponse

Die Unterbrechungsquittung: der Wert, mit dem interrupt() bei einer CLI aufgelöst wird, die die Fähigkeit interrupt_receipt_v1 in SDKSystemMessage.capabilities ankündigt. Erfordert Claude Code v2.1.205 oder höher. Frühere CLIs beantworten die Unterbrechung mit einer leeren Erfolgs-Payload, sodass interrupt() mit undefined aufgelöst wird.
still_queued listet die UUIDs der Benutzernachrichten auf, die beim Eintreffen der Unterbrechung ausstanden: Nachrichten, die sich noch in der Warteschlange befinden, sowie alle Nachrichten, die Claude Code bereits für den nächsten Turn aus der Warteschlange genommen hatte. Sobald der erste Turn der Sitzung begonnen hat, verarbeitet Claude Code die aufgelisteten Nachrichten nach der Unterbrechung, sofern Sie sie nicht vorher abbrechen, und kann mehrere zu einem Turn zusammenfassen. Wenn Sie unterbrechen, bevor der erste Turn beginnt, bricht Claude Code diesen Turn ab, sobald er beginnt, und die aufgelisteten Nachrichten in diesem Turn erhalten keine Antwort. Verwenden Sie die Quittung, um zu entscheiden, ob Sie etwas erneut senden. Eine aufgelistete Nachricht, die Sie nicht abbrechen, gelangt in die Konversation, unabhängig davon, ob sie eine Antwort erhält; ein erneutes Senden stellt sie Claude also doppelt zu. Berücksichtigen Sie bei der Auswertung der Liste folgende Einschränkungen:
  • Es erscheinen nur Nachrichten, die mit einer UUID in die Warteschlange gestellt wurden. Ein leeres Array bedeutet nicht, dass nichts anderes ausgeführt wird.
  • Es werden nur Nachrichten des Hauptthreads aufgelistet. An einen Subagenten adressierte Nachrichten sind nicht erfasst.
  • Die Liste kann UUIDs enthalten, die Ihr Client nie gesendet hat, etwa Auslöser geplanter Aufgaben. Ignorieren Sie UUIDs, die Sie nicht kennen, anstatt sie als Fehler zu behandeln.
Ein Client, der das Steuerungsprotokoll der CLI direkt statt über interrupt() bedient, kann in der Steuerungsanfrage interrupt den Wert cancel_queued: true setzen. Claude Code ab v2.1.219 kündigt die Unterstützung mit der Fähigkeit interrupt_cancel_queued_v1 in SDKSystemMessage.capabilities an; ältere CLIs ignorieren das Feld und lassen Nachrichten in der Warteschlange wie gewohnt ausführen. Eine solche Unterbrechung bricht außerdem jede Nachricht ab, die andernfalls unter still_queued aufgeführt würde: Die Quittung listet sie stattdessen unter cancelled auf, still_queued ist leer, und keine von ihnen wird ausgeführt. Für die Liste cancelled gelten dieselben Einschränkungen wie für still_queued. Die Methode interrupt() sendet nie cancel_queued, sodass die Quittungen, mit denen sie aufgelöst wird, kein cancelled enthalten. Die Quittung ist eine Momentaufnahme zum Zeitpunkt der Verarbeitung der Unterbrechung, und bei einer sauberen Unterbrechung trifft sie vor der SDKResultMessage des unterbrochenen Turns ein. Lesen Sie die Quittung, anstatt die Warteschlange nach diesem Ergebnis zu prüfen: Die Schleife startet sofort den nächsten Turn aus der Warteschlange, sodass sich die Warteschlange, die Sie nach dem Ergebnis prüfen, bereits geändert hat.

SDKControlGetContextUsageResponse

Rückgabetyp von getContextUsage(). Mit dem Standardwert für detail ist dies dieselbe Payload, die Claude Code für den Befehl /context in einer interaktiven Sitzung darstellt. Neben den Token-Zahlen enthält sie daher Anzeigefelder wie color und gridRows, mit denen Claude Code das Nutzungsraster von /context zeichnet. Das optionale Argument detail der Methode legt fest, wie Claude Code jede Kategorie zählt. Das Argument detail erfordert Agent SDK v0.3.257 oder höher.
  • 'full': der Standard. Claude Code zählt jede Kategorie mit API-Anfragen zur Token-Zählung. Diese Anfragen erscheinen nicht im Nachrichtenstream, sodass eine Kostenverfolgung, die den Stream liest, sie nicht sieht. Auf der Anthropic API wird die Token-Zählung nicht berechnet.
  • 'summary': Übergeben Sie { detail: 'summary' }, um stattdessen eine Antwort auf Basis der Nutzung der letzten Antwort und lokaler Schätzungen zu erhalten. Es werden keine Anfragen zur Token-Zählung gesendet, und die Zahlen pro Kategorie sind Näherungswerte.
Wenn Sie /context als Prompt senden, anstatt die Methode aufzurufen, hängt Claude Code eine SDKContextUsage-Payload an das Feld context_usage der Assistant-Nachricht an, die das Ergebnis liefert. Dieses Feld erfordert Agent SDK v0.3.232 oder höher.
Die Zuordnung der Token lesen Sie aus den Sammlungsfeldern:
  • categories enthält die Summen pro Kategorie. Das Feld kind jedes Eintrags klassifiziert die Zeile mit denselben Werten wie SDKContextUsageCategory. Klassifizieren Sie Zeilen anhand dieses Felds statt anhand des Anzeigenamens name. Das Feld erfordert Agent SDK v0.3.268 oder höher.
  • mcpTools und agents ordnen Token einzelnen MCP-Tools und Subagenten zu.
  • memoryFiles listet jede geladene Memory-Datei mit ihren Kosten auf.
  • skills.skillFrontmatter ordnet die Token der Skill-Auflistung jedem enthaltenen Skill zu. Die Zählungen pro Skill messen den Auflistungseintrag jedes Skills so, wie Claude Code ihn tatsächlich sendet; dieser kann kürzer sein als das vollständige Frontmatter des Skills. Vergleichen Sie skills.totalSkills mit skills.includedSkills, um zu sehen, ob jeder gefundene Skill in die Auflistung aufgenommen wurde.
totalTokens ist die aktuelle Kontextnutzung der Sitzung, und maxTokens ist das Fenster, an dem diese Nutzung gemessen wird. Dieses Fenster ist das Kontextfenster des Modells oder, falls zutreffend, das niedrigere Fenster der automatischen Komprimierung. rawMaxTokens enthält denselben Wert wie maxTokens, und percentage ist totalTokens als gerundeter Prozentsatz dieses Fensters. apiUsage enthält die Nutzung aus der letzten API-Antwort, keine laufende Summe für die Sitzung. Claude Code lässt die optionalen Diagnosefelder deferredBuiltinTools, systemTools und systemPromptSections ungesetzt; rechnen Sie also damit, dass sie fehlen, obwohl der Typ sie deklariert.

SDKControlReadFileResponse

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

Was readFile() lesen kann

readFile() stellt eine kleinere Menge von Dateien bereit als das Read-Tool:
  • Eine reguläre Datei in einem der Arbeitsverzeichnisse der Sitzung, etwa cwd und additionalDirectories
  • Einige von Claude Codes eigenen Dateien für die Sitzung, etwa Tool-Ergebnisse
Read-Ablehnungs- und Nachfrageregeln blockieren weiterhin einen passenden Pfad, und eine weit gefasste Read-Erlaubnisregel öffnet readFile() nicht den Rest des Dateisystems. 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 der MCP-Server-Status der Sitzung, in denselben Formen, die supportedCommands(), supportedAgents() und mcpServerStatus() zurückgeben. supportedAgents() gibt weiterhin die bei der Initialisierung erfasste Liste zurück; lesen Sie daher agents hier, um die Menge nach einem Neuladen zu erhalten
  • plugins: jedes geladene Plugin mit seinem name und seinem Installationspfad path. version gibt wieder, was das Manifest des Plugins deklariert, und wird vom Plugin-Autor gesteuert; validieren Sie den Wert daher, bevor Sie ihm vertrauen. Er fehlt, wenn das Manifest keinen deklariert
  • error_count: die Anzahl der Fehler beim Laden von Plugins
Übergeben Sie { holdOnCacheImpact: true } an reloadPlugins(), um ein Neuladen zurückzuhalten, das den Prompt-Cache der Konversation ungültig machen würde, anstatt es anzuwenden. Claude Code führt die Prüfung aus, die der interaktive Befehl /reload-plugins vornimmt, bevor er vor den Cache-Kosten warnt. Die Option erfordert Agent SDK v0.3.268 oder höher. Eine ausführbare Claude Code-Datei älter als v2.1.268, etwa eine, auf die Sie pathToClaudeCodeExecutable verweisen lassen, ignoriert die Option und wendet das Neuladen an. Wenn Sie die Option übergeben, lesen Sie held, um zu erfahren, was geschehen ist:
  • true: Das Neuladen wurde nicht angewendet, und die Sammlungsfelder beschreiben die Sitzung in ihrem unveränderten Zustand. cache_impact gibt an, was das Anwenden ändern würde. Um trotzdem anzuwenden, rufen Sie reloadPlugins() erneut ohne die Option auf.
  • false: Die Prüfung hat keine Auswirkung auf den Cache festgestellt, und das Neuladen wurde angewendet.
  • Fehlend: Sie haben die Option nicht übergeben, oder die ausführbare Claude Code-Datei ist älter als v2.1.268 und hat das Neuladen angewendet.
cache_impact ist nur zusammen mit held: true vorhanden. mcp_servers_added und mcp_servers_removed nennen die Plugin-MCP-Server, die das Neuladen registrieren oder entfernen würde, als eingeschränkte Namen der Form plugin:<plugin>:<server>. Die Namen stammen von Plugin-Autoren; validieren Sie sie daher, bevor Sie sie anzeigen. lsp_tool_change gibt an, ob das Anwenden das LSP-Tool hinzufügen oder entfernen würde, oder ist null, wenn beides nicht zutrifft. Die may--Formen bedeuten, dass die Prüfung die ausstehende Plugin-Menge nicht vollständig einsehen konnte.

SDKControlReloadSkillsResponse

Rückgabetyp von reloadSkills().
skills listet die nach dem Neuladen verfügbaren Skills auf, in derselben SlashCommand-Form, 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 enthält. Erfordert TypeScript Agent SDK v0.3.280 oder höher.
Übergeben Sie readMcpResource() den Servernamen so, wie mcpServerStatus() ihn meldet, und eine ui://-URI, etwa die ui.resourceUri, die ein Tool in seinem _meta deklariert. Der Aufruf wird abgelehnt bei jedem anderen URI-Schema, bei einem SDK-MCP-Server, den Ihre Anwendung selbst hostet, und bei einem Server, der nicht verbunden ist. Er ist verfügbar, wenn die capabilities der Init-Nachricht mcp_read_resource_v1 enthalten. Jeder contents-Eintrag ist ein Inhaltselement, so wie der Server es gesendet hat, abzüglich aller _meta-Schlüssel unter dem Präfix com.anthropic/, das für Claude Code reserviert ist. blob enthält Base64-Daten für ein binäres Element, und _meta ist das eigene _meta des Elements, in das ein MCP-Apps-Server die Werte ui.csp und ui.permissions der Ressource legt. Die Inhalte sind nicht vertrauenswürdiges HTML von Drittanbietern; stellen Sie sie daher in einer Sandbox dar.

AgentDefinition

Konfiguration für einen programmatisch definierten Subagenten.

AgentMcpServerSpec

Gibt die MCP-Server an, die einem Subagenten zur Verfügung stehen. Kann ein Servername sein (ein String, der auf einen Server aus der mcpServers-Konfiguration des übergeordneten Agenten verweist) oder ein Inline-Konfigurationsdatensatz, der Servernamen auf Konfigurationen abbildet.
Dabei ist McpServerConfigForProcessTransport gleich McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig.

SettingSource

Steuert, aus welchen dateisystembasierten Konfigurationsquellen das SDK Einstellungen lädt.

Standardverhalten

Wenn settingSources weggelassen wird oder undefined ist, lädt query() dieselben Dateisystemeinstellungen wie die Claude Code CLI: Benutzer, Projekt und lokal. Unter Was settingSources nicht steuert finden Sie Eingaben, die unabhängig von dieser Option gelesen werden, und wie Sie diese deaktivieren.

Warum settingSources verwenden

Dateisystemeinstellungen deaktivieren:
Nur bestimmte Einstellungsquellen laden:
Um Projektanweisungen aus CLAUDE.md zu laden, nehmen Sie "project" in settingSources auf. Unter System-Prompts anpassen erfahren Sie, wie das Laden von CLAUDE.md mit den System-Prompt-Optionen zusammenwirkt.

Vorrang von Einstellungen

Wenn mehrere Quellen geladen werden, werden die Einstellungen mit dieser Rangfolge zusammengeführt (von der höchsten zur niedrigsten):
  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 Dateisystemeinstellungen. Verwaltete Richtlinieneinstellungen haben Vorrang vor programmatischen Optionen.

PermissionMode

CanUseTool

Typ einer benutzerdefinierten Berechtigungsfunktion zur Steuerung der Tool-Nutzung. Die Funktion ist der SDK-Ersatz für die interaktive Berechtigungsabfrage: Sie wird nur aufgerufen, wenn der Ablauf der Berechtigungsauswertung zu einer Abfrage führt. Tool-Aufrufe, die bereits durch einen allowedTools-Eintrag, eine Allow-Regel in den Einstellungen oder den Berechtigungsmodus wie acceptEdits oder bypassPermissions genehmigt sind, rufen sie nie auf. Um jeden Tool-Aufruf zu kontrollieren, verwenden Sie stattdessen einen PreToolUse-Hook. Eine Allow-Regel genehmigt die Aktionen, die kein Modus automatisch genehmigt, nicht vorab; unter Wie Berechtigungen ausgewertet werden erfahren Sie, welche davon den Callback erreichen und was im Modus dontAsk und auto geschieht.
Der Callback beantwortet die Anfrage normalerweise, 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 und dabei requestId zurückgibt; das SDK schreibt die Antwort dann nicht in seinen Transport. Die Rückgabe von null in jedem anderen Fall blockiert den Tool-Aufruf auf unbestimmte Zeit, da nie eine control_response gesendet wird und Berechtigungsabfragen keinen Timeout haben. Die Option requestId und der Rückgabewert null erfordern Claude Code v2.1.199 oder höher.

PermissionResult

Ergebnis einer Berechtigungsprüfung.

ToolConfig

Konfiguration für das Verhalten integrierter Tools.

McpServerConfig

Konfiguration für MCP-Server.

McpStdioServerConfig

McpSSEServerConfig

McpHttpServerConfig

McpSdkServerConfigWithInstance

McpClaudeAIProxyServerConfig

SdkPluginConfig

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

Nachrichtentypen

SDKMessage

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

SDKAssistantMessage

Assistenten-Antwortnachricht.
Das message-Feld ist eine BetaMessage aus dem Anthropic SDK. Es enthält Felder wie id, content, model, stop_reason und usage. SDKAssistantMessageError ist einer von: 'authentication_failed', 'oauth_org_not_allowed', '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. agent_id identifiziert den Subagenten, der die Nachricht erzeugt hat, und fehlt bei Nachrichten des Hauptthreads. Der Wert entspricht der task_id in den task_started- und anderen Task-Ereignissen dieses Subagenten und bleibt unverändert, wenn der Subagent fortgesetzt wird. Das Feld erfordert Agent SDK v0.3.292 oder höher. Ordnen Sie die Nachrichten eines Subagenten seinen Task-Ereignissen über agent_id zu, statt die parent_tool_use_id einer Nachricht mit der tool_use_id eines Task-Ereignisses zu paaren. Wenn ein Tool-Aufruf den Subagenten fortsetzt, tragen die Task-Ereignisse die tool_use_id dieses Aufrufs, während die Nachrichten die parent_tool_use_id des Tool-Aufrufs behalten, der den Subagenten ursprünglich gestartet hat, sodass die beiden nicht mehr übereinstimmen. Claude Code setzt user_message_uuid und user_message_uuids in der ersten Assistentennachricht des Turns, unter den in user_message_uuid beschriebenen Bedingungen. Wenn der Turn einen Turn fortsetzt, der durch einen Neustart unterbrochen wurde, tragen die Assistentennachrichten mit diesen Feldern 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. usage_report ist eine strukturierte Kopie des /usage-Berichts, typisiert als SDKUsageReport, und erfordert Agent SDK v0.3.273 oder höher. Wenn Sie /usage als Prompt senden, liefert Claude Code den Bericht als Assistentennachricht, deren message.content den Text enthält. usage_report wird nur dann an diese Nachricht angehängt, wenn die Sitzung alle folgenden Bedingungen erfüllt:
  • Die Sitzung authentifiziert sich mit claude.ai-Anmeldedaten
  • Die Anmeldedaten weisen einen bekannten Plantyp aus oder tragen den Scope user:profile
  • Das Konto nutzt keine nutzungsbasierte Abrechnung
Ein claude setup-token-Token, das als CLAUDE_CODE_OAUTH_TOKEN übergeben wird, erfüllt diese Bedingungen standardmäßig nicht, da es nur den Scope user:inference trägt. Andere Sitzungen, etwa Sitzungen mit API-Schlüssel, liefern den Text ohne das Feld, ebenso wie frühere Versionen. Lesen Sie den Bericht aus dem Feld, wenn es vorhanden ist, und greifen Sie andernfalls auf den Text zurück.

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. Jedes Einfügefeld hat eine Größenbeschränkung:
  • pasted_content: Wenn die Einträge zusammen mit den darin enthaltenen Inhaltsblöcken mehr als 1.000 ergeben, ignoriert Claude Code das gesamte Feld.
  • inline_pastes: Claude Code verwendet die ersten 100 nicht leeren Einträge und ignoriert den Rest.
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:
Eine Benutzernachricht, die ein Subagent erzeugt, etwa das tool_result für einen seiner eigenen Tool-Aufrufe, trägt agent_id. Siehe SDKAssistantMessage, wo das Feld und seine Versionsanforderung definiert sind. 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 wie content und resourceLinks bleiben erhalten, und was Claude erhält, ändert sich nicht. Claude Code ab v2.1.287 wendet diese Obergrenze an. Zwei Arten von Tools verhalten sich anders:
    • Tools von prozessinternen SDK-Servern sind ausgenommen und liefern das Objekt vollständig.
    • Ein Tool, dessen tools/list-Eintrag eine MCP-Apps-ui://-Ressource deklariert, hat ab Claude Code v2.1.295 ein Limit von 8.388.608 Zeichen; Versionen vor v2.1.295 nehmen es aus.

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 dieser Turn einen Turn fortsetzt, der durch einen Neustart unterbrochen wurde. In beiden Zweigen vorhanden. 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 erzeugt, um einen unterbrochenen Turn unter CLAUDE_CODE_RESUME_INTERRUPTED_TURN fortzusetzen: Wenn der letzte Prompt des unterbrochenen Turns eine reguläre, von Ihnen gesendete Nachricht ist, unabhängig davon, ob sie den Turn eröffnet hat oder von Claude Code während des Turns aufgenommen wurde, beantwortet der fortgesetzte Turn zunächst diese Nachricht. resume_reason unterscheidet die Frames des fortgesetzten Turns von denen des unterbrochenen Versuchs. Wenn der letzte Prompt keine reguläre Nachricht von Ihnen ist, beantwortet der fortgesetzte Turn zunächst keine Ihrer Nachrichten. Wenn Claude Code zwischen Tool-Aufrufen eine reguläre Nachricht von Ihnen aufnimmt, beantwortet der Turn ab dann die aufgenommene Nachricht. Die Rückgabe des Prompts des unterbrochenen Turns erfordert Agent SDK v0.3.268 oder höher.
  • 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 dieser Turn einen Turn fortsetzt, der durch einen Neustart unterbrochen wurde. Claude Code setzt dieses Feld bei einem Turn, der einen unterbrochenen Turn unter CLAUDE_CODE_RESUME_INTERRUPTED_TURN fortsetzt, damit Sie Antwort und Ergebnis des fortgesetzten Turns von denen des unterbrochenen Versuchs unterscheiden können. Erfordert Agent SDK v0.3.268 oder höher. Claude Code setzt das Feld auf zwei Arten von Frames:
  • Das Ergebnis des fortgesetzten Turns: im Erfolgs- wie im Fehlerzweig, unabhängig davon, ob das Ergebnis user_message_uuid trägt.
  • Die Antwort-Frames des fortgesetzten Turns: diejenigen, die user_message_uuid tragen.
Der Wert ist ein kurzes Token in Kleinbuchstaben, etwa interrupted_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

Partielle Streaming-Nachricht (nur wenn includePartialMessages true ist). Das Feld parent_tool_use_id ist immer null: Stream-Ereignisse werden nur für die Hauptsitzung ausgegeben. Zur Zuordnung zu Subagenten verwenden Sie vollständige Nachrichten, die agent_id und parent_tool_use_id tragen, oder aktivieren Sie forwardSubagentText, um Text und Thinking von Subagenten als vollständige Nachrichten zu erhalten.
Claude Code setzt user_message_uuid und user_message_uuids im ersten Nicht-Ping-Stream-Ereignis des Turns und erneut, wenn sich die Nachricht ändert, die der Turn beantwortet, unter den in user_message_uuid beschriebenen Bedingungen. Wenn der Turn einen Turn fortsetzt, der durch einen Neustart unterbrochen wurde, tragen die Stream-Ereignisse mit diesen Feldern 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

SDKUsageReport

Strukturierte Form des /usage-Berichts, getragen als usage_report in der SDKAssistantMessage, die ein /usage-Ergebnis liefert. Agent SDK v0.3.273 und höher exportieren den Typ. Der Typ ist experimentell: Seine Form kann sich ändern.
Die Felder der obersten Ebene sind session und rate_limits:
  • session: die laufenden Kosten- und Nutzungssummen von Claude Code, gelesen aus demselben Ledger wie total_cost_usd und modelUsage in SDKResultMessage. Jeder model_usage-Eintrag ist ein ModelUsage.
  • rate_limits: die Nutzungszeilen des Plans in limits und die Ausgaben des Nutzungsguthabens in extra_usage. Der Wert ist null, wenn Claude Code die Nutzung des Plans nicht abrufen konnte, etwa wenn dem OAuth-Token der Sitzung der Scope user:profile fehlt.
Claude Code berechnet session.total_cost_usd lokal aus Token-Zählungen; es handelt sich also um eine Schätzung und nicht um das, was Ihr Plan abrechnet. Die vom Server gemeldeten Ausgaben des Nutzungsguthabens stehen im separaten extra_usage-Block. Siehe Kosten und Nutzung verfolgen für die Hinweise zur Genauigkeit. limits enthält die Nutzungszeilen des Servers so, wie der Server sie gesendet hat: Welche Zähler gelten sowie deren Geltungsbereich, Bezeichnungen, Schweregrad und Reihenfolge bestimmt der Server; stellen Sie die Zeilen daher unverändert dar.
  • Ein leeres Array bedeutet, dass der Server keine Zähler gemeldet hat.
  • null bedeutet, dass Claude Code keine Zeilen zu melden hat.
Jede Zeile von limits beschreibt einen Nutzungszähler: Vor Agent SDK v0.3.277 deklarierte der Typ severity und is_active als optional und nullable, und eine Zeile konnte ohne sie eintreffen. extra_usage sind die Ausgaben und die Obergrenze des Nutzungsguthabens für den Abrechnungszeitraum, wie der Server sie meldet, vorhanden, wenn der Plan Nutzungsguthaben hat. Beträge werden in der kleinsten Einheit von currency angegeben, bei USD in Cent.
  • monthly_limit ist null, wenn dieses Konto keine eigene Ausgabenobergrenze hat. Stellen Sie null bei Team- und Enterprise-Plänen nicht als unbegrenzt dar.
  • is_enabled ist false, solange das Nutzungsguthaben keine Anfragen bezahlen kann.

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. Eine Hintergrundaufgabe kann mehr als einmal unter derselben task_id ausgeführt werden, etwa wenn Claude einen Subagenten fortsetzt. Jeder Lauf hat seine eigene run_id. Wenn die Benachrichtigung eines Laufs Ihre Sitzung als Benutzernachricht erreicht, enthält runId im task-notification-Origin dieser Nachricht denselben Wert. Eine Benachrichtigung kann eintreffen, nachdem der nächste Lauf der Aufgabe bereits begonnen hat, und trägt dennoch die ID des früheren Laufs. Um festzustellen, zu welchem Lauf ein Turn gehört, vergleichen Sie runId, nicht task_id. Erfordert TypeScript Agent SDK v0.3.292 oder höher.

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 ohne den Peer-Umschlag, bytegenau identisch mit dem, was das Modell sieht. Vorhanden bei einer einzelnen Nachricht eines Teammitglieds, fehlt, wenn mehrere zusammengeführt werden; bei einem sitzungsübergreifenden Peer nur vorhanden, wenn der Turn aus genau einem von Claude Code gebildeten Peer-Umschlag besteht. Stellen Sie name und body dar, anstatt den Nachrichtentext erneut zu parsen. Vor v2.1.299 behielten zusammengeführte Nachrichten den body der ersten Nachricht. Erfordert Claude Code v2.1.205 oder höher.
  • 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 integrierte 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 Agenten, um komplexe, mehrstufige Aufgaben autonom zu bewältigen.

AskUserQuestion

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

Bash

Tool-Name: Bash
Führt Bash-Befehle 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 das 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 Hintergrundaufgabe abgerufen; Claude liest die Ausgabedatei einer Hintergrundaufgabe 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").
  • allow_large ermöglicht es Claude, eine Textdatei über die üblichen Größenbeschränkungen hinaus zu lesen, wenn das Kontextfenster der Sitzung Platz bietet. Es erfordert Agent SDK v0.3.296 oder später, das Claude Code v2.1.296 enthält.
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 Hintergrundaufgabe oder Shell nach ID. Ab v2.1.198 akzeptiert task_id auch einen Agent-Team-Teamkollegen oder einen benannten Hintergrund-Agenten nach Agent-ID oder Name.

NotebookEdit

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

WebFetch

Tool-Name: WebFetch
Ruft Inhalte von einer URL ab und verarbeitet sie mit einem KI-Modell. offset ist die Anzahl der Zeichen, die ab dem Anfang der Seite übersprungen werden. Claude setzt es, um eine lange Seite weiterzulesen. Das Feld erfordert Agent SDK v0.3.290 oder später.

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 Opus 4.7, Claude Sonnet 4.6, Claude Haiku 4.5 und früheren Modellen 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 gemergten 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 Log 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. 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. level ist optional und enthält die Effort-Stufe, die Claude für das Review meldet. Claude Code vergleicht sie nicht mit der Stufe, auf der das Review ausgeführt wurde, daher können die beiden voneinander abweichen. 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 mit diesem Inhalt zusammen 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. limit legt fest, wie viele Artifacts eine Auflistung höchstens zurückgibt, von 1 bis 200. Ein limit über 50 erfordert Agent SDK v0.3.292 oder später. Ohne limit gibt eine Auflistung bis zu 25 zurück.
  • capabilities: die Laufzeit-Funktionen, die die veröffentlichte Seite verwendet, nach Funktionsnamen indiziert, 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 integrierte 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 Hintergrundaufgaben 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 Turn überlebt, wie Befehle, die von der Hauptkonversation 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 Hintergrundaufgaben-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 Hintergrundaufgabe 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 Opus 4.7, Claude Sonnet 4.6, Claude Haiku 4.5 und früheren Modellen 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 Plan-Modus 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 Plan-Modus 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, den level-Wert, den Claude übergeben hat, 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. Ein Listenergebnis meldet außerdem total, die Anzahl der Artefakte, die dem aufgelisteten Umfang entsprechen, einschließlich derer jenseits von limit. Wenn total_at_least gesetzt ist, ist diese Zahl eine untere Grenze, und es können weitere Artefakte existieren. Beide Felder erfordern Agent SDK v0.3.292 oder später.

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 Tool-Liste angewendet wurde, error bedeutet, dass die Neuabfrage fehlgeschlagen ist und die vorherige Tool-Liste 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 übergibt Ihren display-Wert nicht an einige Anbieter, etwa Amazon Bedrock und Google Clouds Agent Platform. Bei diesen Anbietern geben Opus 4.7 und später 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: Außerhalb einer Cloud-Sitzung trennt Claude Code die Server, die ein früherer setMcpServers()-Aufruf hinzugefügt hat, sowie die In-Process-SDK-Server und listet sie in removed auf. Andere Server laufen weiter und werden nicht in removed aufgeführt, darunter die Stdio-, HTTP- und SSE-Server aus der mcpServers-Option, Server aus Einstellungsdateien und von Plugins bereitgestellte Server.
  • Server, die der Aufruf benennt: Claude Code ersetzt einen Stdio-, HTTP- oder SSE-Server, den ein früherer setMcpServers()-Aufruf hinzugefügt hat, nur, wenn sich seine Konfiguration von der unterscheidet, die Sie übergeben haben. Ein In-Process-SDK-Server, der bereits unter diesem Namen registriert ist, bleibt unverändert; um einen auszutauschen, lassen Sie ihn in einem Aufruf weg und fügen Sie ihn im nächsten hinzu.
  • 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 die Felder run_id und ambient siehe SDKTaskStartedMessage, das sie und ihre Versionsanforderungen definiert.
reason wird gesetzt, wenn eine Aufgabe aus einem anderen Grund als ihrem eigenen Abschluss, Fehlschlag oder Stopp endet, und erfordert Agent SDK v0.3.273 oder später. Claude Code setzt es nur in Sitzungen, die sich über claude.ai verbinden: Cloud-Sitzungen, einschließlich solcher auf selbst gehosteten Runnern, und Remote-Control-Sitzungen. Ein lokaler query()-Aufruf setzt es nie. Sein einziger Wert, worker_restart, bedeutet, dass der Claude-Code-Prozess, der die Aufgabe ausgeführt hat, neu gestartet wurde. Die Benachrichtigung trägt den Status "stopped", behandeln Sie die Aufgabe daher weder als abgeschlossen noch als fehlgeschlagen. 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".
run_id identifiziert einen Lauf der Aufgabe. Wenn eine Aufgabe erneut unter derselben task_id läuft, z. B. ein Subagent, den Claude fortsetzt, erhält der neue Lauf eine neue run_id. Das Feld erfordert Agent SDK v0.3.292 oder später. Verwenden Sie es, um die Läufe einer Aufgabe auseinanderzuhalten:
  • Nachrichten einem Lauf zuordnen: Die Nachrichten task_started, task_progress, task_updated und task_notification eines Laufs tragen dieselbe run_id. Der Eintrag des Laufs in jeder SDKBackgroundTasksChangedMessage trägt sie ebenfalls, ebenso die runId im Origin der Benutzer-Nachricht, die die Benachrichtigung des Laufs liefert.
  • Eine verspätete Nachricht erkennen: Als einfache Zeichenketten verglichen, sortieren sich die Lauf-IDs einer Aufgabe in der Reihenfolge, in der die Läufe gestartet wurden; eine Nachricht, deren run_id vor dem Lauf einsortiert wird, den Sie gerade anzeigen, stammt daher aus einem früheren Lauf. Behandeln Sie den Wert abgesehen von diesem Vergleich als opak.
  • Auf task_id zurückgreifen: Wenn eine Nachricht keine run_id trägt, z. B. die task_notification, die eine fortgesetzte Sitzung ausgibt, um eine vom früheren Prozess gestartete Aufgabe abzuschließen, ordnen Sie sie über task_id zu.
Zum Beispiel stammen diese drei Nachrichten, gekürzt auf ihre identifizierenden Felder, von einem Hintergrund-Subagenten, den Claude einmal fortgesetzt hat. Die beiden task_started-Nachrichten teilen sich eine task_id, und die Benachrichtigung, die den ersten Lauf beendet hat, trägt die ID des ersten Laufs:
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. parent_task_id enthält die task_id des Subagenten, der diese Aufgabe gestartet hat. Verwenden Sie es, um jede Aufgabe unter dem Subagenten zu gruppieren, der sie gestartet hat. Claude Code setzt es bei Subagenten-, Bash- und Monitor-Aufgaben. Das Feld erfordert Agent SDK v0.3.292 oder später. Es fehlt, wenn:
  • Der Hauptthread die Aufgabe gestartet hat
  • Claude Code die übergeordnete Aufgabe nicht mehr verfolgt
  • Ein Teammitglied oder ein Agent innerhalb eines Workflows die Aufgabe gestartet hat
Die übergeordnete Aufgabe kann eine Vordergrund-Aufgabe oder eine bereits beendete Aufgabe sein, behandeln Sie daher eine ID, die Sie nicht erkennen, so, als gäbe es keine übergeordnete Aufgabe.

SDKTaskProgressMessage

Wird regelmäßig ausgegeben, während ein Subagent oder eine Hintergrundaufgabe läuft. Für das run_id-Feld siehe SDKTaskStartedMessage, das es und seine Versionsanforderung definiert. 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(). Für das run_id-Feld siehe SDKTaskStartedMessage, das es und seine Versionsanforderung definiert.

SDKBackgroundTasksChangedMessage

Wird ausgegeben, wenn sich die Menge der aktiven Hintergrundaufgaben ändert: eine Aufgabe startet, wird abgeschlossen oder wird beendet; ein Vordergrund-Agent wird in den Hintergrund verschoben; oder das description-, ambient- oder parent_task_id-Feld einer Aufgabe ändert sich. Für die Felder run_id und parent_task_id in jedem Eintrag siehe SDKTaskStartedMessage, das sie und ihre Versionsanforderungen definiert. 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. Wenn eine Aufgabe endet, kommen ihre task_updated- und task_notification-Nachrichten vor der background_tasks_changed-Nachricht an, die sie aus der Liste entfernt. Ansonsten ist die Reihenfolge relativ zu den Pro-Aufgaben-Ereignissen nicht spezifiziert. 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.
subagent_type benennt den Subagenten-Typ bei Einträgen, deren task_type "local_agent" ist, z. B. general-purpose oder den Namen eines benutzerdefinierten Subagenten. Das Feld erfordert Agent SDK v0.3.293 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