Probieren Sie die neue V2-Schnittstelle (Vorschau): Eine vereinfachte Schnittstelle mit send()- und receive()-Mustern ist jetzt verfügbar und macht mehrteilige Gespräche einfacher. Weitere Informationen
npm install @anthropic-ai/claude-agent-sdkquery()Die primäre Funktion für die Interaktion mit Claude Code. Erstellt einen asynchronen Generator, der Nachrichten streamt, wenn sie ankommen.
function query({
prompt,
options
}: {
prompt: string | AsyncIterable<SDKUserMessage>;
options?: Options;
}): Query| Parameter | Typ | Beschreibung |
|---|---|---|
prompt | string | AsyncIterable<SDKUserMessage> | Die Eingabeaufforderung als Zeichenkette oder asynchrones Iterable für den Streaming-Modus |
options | Options | Optionales Konfigurationsobjekt (siehe Options-Typ unten) |
Gibt ein Query-Objekt zurück, das AsyncGenerator<SDKMessage, void> mit zusätzlichen Methoden erweitert.
tool()Erstellt eine typsichere MCP-Tool-Definition zur Verwendung mit SDK MCP-Servern.
function tool<Schema extends ZodRawShape>(
name: string,
description: string,
inputSchema: Schema,
handler: (args: z.infer<ZodObject<Schema>>, extra: unknown) => Promise<CallToolResult>
): SdkMcpToolDefinition<Schema>| Parameter | Typ | Beschreibung |
|---|---|---|
name | string | Der Name des Tools |
description | string | Eine Beschreibung, was das Tool tut |
inputSchema | Schema extends ZodRawShape | Zod-Schema, das die Eingabeparameter des Tools definiert |
handler | (args, extra) => Promise<CallToolResult> | Asynchrone Funktion, die die Tool-Logik ausführt |
createSdkMcpServer()Erstellt eine MCP-Server-Instanz, die im selben Prozess wie Ihre Anwendung ausgeführt wird.
function createSdkMcpServer(options: {
name: string;
version?: string;
tools?: Array<SdkMcpToolDefinition<any>>;
}): McpSdkServerConfigWithInstance| Parameter | Typ | Beschreibung |
|---|---|---|
options.name | string | Der Name des MCP-Servers |
options.version | string | Optionale Versionszeichenkette |
options.tools | Array<SdkMcpToolDefinition> | Array von Tool-Definitionen, die mit tool() erstellt wurden |
OptionsKonfigurationsobjekt für die query()-Funktion.
| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
abortController | AbortController | new AbortController() | Controller zum Abbrechen von Operationen |
additionalDirectories | string[] | [] | Zusätzliche Verzeichnisse, auf die Claude zugreifen kann |
agents | Record<string, [AgentDefinition](#agentdefinition)> | undefined | Programmgesteuerte Definition von Subagenten |
QuerySchnittstelle, die von der query()-Funktion zurückgegeben wird.
interface Query extends AsyncGenerator<SDKMessage, void> {
interrupt(): Promise<void>;
rewindFiles(userMessageUuid: string): Promise<void>;
setPermissionMode(mode: PermissionMode): Promise<void>;
setModel(model?: string): Promise<void>;
setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>;
supportedCommands(): Promise<SlashCommand[]>;
supportedModels(): Promise<ModelInfo[]>;
mcpServerStatus(): Promise<McpServerStatus[]>;
accountInfo(): Promise<AccountInfo>;
}| Methode | Beschreibung |
|---|---|
interrupt() | Unterbricht die Abfrage (nur im Streaming-Eingabemodus verfügbar) |
rewindFiles(userMessageUuid) | Stellt Dateien in ihren Zustand bei der angegebenen Benutzernachricht wieder her. Erfordert enableFileCheckpointing: true. Siehe Datei-Checkpointing |
setPermissionMode() | Ändert den Berechtigungsmodus (nur im Streaming-Eingabemodus verfügbar) |
setModel() | Ändert das Modell (nur im Streaming-Eingabemodus verfügbar) |
setMaxThinkingTokens() | Ändert die maximalen Denktoken (nur im Streaming-Eingabemodus verfügbar) |
supportedCommands() | Gibt verfügbare Schrägstrich-Befehle zurück |
AgentDefinitionKonfiguration für einen programmgesteuert definierten Subagenten.
type AgentDefinition = {
description: string;
tools?: string[];
prompt: string;
model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
}| Feld | Erforderlich | Beschreibung |
|---|---|---|
description | Ja | Natürlichsprachige Beschreibung, wann dieser Agent verwendet werden soll |
tools | Nein | Array von zulässigen Tool-Namen. Wenn weggelassen, erbt alle Tools |
prompt | Ja | Die Systemaufforderung des Agenten |
model | Nein | Modellüberschreibung für diesen Agenten. Wenn weggelassen, verwendet das Hauptmodell |
SettingSourceSteuert, welche dateisystembasierte Konfigurationsquellen das SDK Einstellungen aus lädt.
type SettingSource = 'user' | 'project' | 'local';| Wert | Beschreibung | Standort |
|---|---|---|
'user' | Globale Benutzereinstellungen | ~/.claude/settings.json |
'project' | Gemeinsame Projekteinstellungen (versionskontrolliert) | .claude/settings.json |
'local' | Lokale Projekteinstellungen (gitignoriert) | .claude/settings.local.json |
Wenn settingSources weggelassen oder undefined ist, lädt das SDK keine Dateisystem-Einstellungen. Dies bietet Isolation für SDK-Anwendungen.
Laden Sie alle Dateisystem-Einstellungen (Legacy-Verhalten):
// Laden Sie alle Einstellungen wie SDK v0.0.x
const result = query({
prompt: "Analyze this code",
options: {
settingSources: ['user', 'project', 'local'] // Laden Sie alle Einstellungen
}
});Laden Sie nur bestimmte Einstellungsquellen:
// Laden Sie nur Projekteinstellungen, ignorieren Sie Benutzer und lokal
const result = query({
prompt: "Run CI checks",
options: {
settingSources: ['project'] // Nur .claude/settings.json
}
});Test- und CI-Umgebungen:
// Stellen Sie konsistentes Verhalten in CI sicher, indem Sie lokale Einstellungen ausschließen
const result = query({
prompt: "Run tests",
options: {
settingSources: ['project'], // Nur teamweit gemeinsame Einstellungen
permissionMode: 'bypassPermissions'
}
});SDK-only-Anwendungen:
// Definieren Sie alles programmgesteuert (Standardverhalten)
// Keine Dateisystem-Abhängigkeiten - settingSources standardmäßig auf []
const result = query({
prompt: "Review this PR",
options: {
// settingSources: [] ist der Standard, keine Angabe erforderlich
agents: { /* ... */ },
mcpServers: { /* ... */ },
allowedTools: ['Read', 'Grep', 'Glob']
}
});Laden von CLAUDE.md-Projektanweisungen:
// Laden Sie Projekteinstellungen, um CLAUDE.md-Dateien einzuschließen
const result = query({
prompt: "Add a new feature following project conventions",
options: {
systemPrompt: {
type: 'preset',
preset: 'claude_code' // Erforderlich zur Verwendung von CLAUDE.md
},
settingSources: ['project'], // Lädt CLAUDE.md aus dem Projektverzeichnis
allowedTools: ['Read', 'Write', 'Edit']
}
});Wenn mehrere Quellen geladen werden, werden Einstellungen mit dieser Priorität zusammengeführt (höchste bis niedrigste):
.claude/settings.local.json).claude/settings.json)~/.claude/settings.json)Programmgesteuerte Optionen (wie agents, allowedTools) überschreiben immer Dateisystem-Einstellungen.
PermissionModetype PermissionMode =
| 'default' // Standardberechtigungsverhalten
| 'acceptEdits' // Dateibearbeitungen automatisch akzeptieren
| 'bypassPermissions' // Alle Berechtigungsprüfungen umgehen
| 'plan' // Planungsmodus - keine AusführungCanUseToolBenutzerdefinierter Berechtigungsfunktionstyp zur Steuerung der Tool-Nutzung.
type CanUseTool = (
toolName: string,
input: ToolInput,
options: {
signal: AbortSignal;
suggestions?: PermissionUpdate[];
}
) => Promise<PermissionResult>;PermissionResultErgebnis einer Berechtigungsprüfung.
type PermissionResult =
| {
behavior: 'allow';
updatedInput: ToolInput;
updatedPermissions?: PermissionUpdate[];
}
| {
behavior: 'deny';
message: string;
interrupt?: boolean;
}McpServerConfigKonfiguration für MCP-Server.
type McpServerConfig =
| McpStdioServerConfig
| McpSSEServerConfig
| McpHttpServerConfig
| McpSdkServerConfigWithInstance;McpStdioServerConfigtype McpStdioServerConfig = {
type?: 'stdio';
command: string;
args?: string[];
env?: Record<string, string>;
}McpSSEServerConfigtype McpSSEServerConfig = {
type: 'sse';
url: string;
headers?: Record<string, string>;
}McpHttpServerConfigtype McpHttpServerConfig = {
type: 'http';
url: string;
headers?: Record<string, string>;
}McpSdkServerConfigWithInstancetype McpSdkServerConfigWithInstance = {
type: 'sdk';
name: string;
instance: McpServer;
}SdkPluginConfigKonfiguration zum Laden von Plugins im SDK.
type SdkPluginConfig = {
type: 'local';
path: string;
}| Feld | Typ | Beschreibung |
|---|---|---|
type | 'local' | Muss 'local' sein (derzeit nur lokale Plugins unterstützt) |
path | string | Absoluter oder relativer Pfad zum Plugin-Verzeichnis |
Beispiel:
plugins: [
{ type: 'local', path: './my-plugin' },
{ type: 'local', path: '/absolute/path/to/plugin' }
]Vollständige Informationen zum Erstellen und Verwenden von Plugins finden Sie unter Plugins.
SDKMessageUnion-Typ aller möglichen Nachrichten, die von der Abfrage zurückgegeben werden.
type SDKMessage =
| SDKAssistantMessage
| SDKUserMessage
| SDKUserMessageReplay
| SDKResultMessage
| SDKSystemMessage
| SDKPartialAssistantMessage
| SDKCompactBoundaryMessage;SDKAssistantMessageAntwortnachricht des Assistenten.
type SDKAssistantMessage = {
type: 'assistant';
uuid: UUID;
session_id: string;
message: APIAssistantMessage; // Aus Anthropic SDK
parent_tool_use_id: string | null;
}SDKUserMessageBenutzereingabenachricht.
type SDKUserMessage = {
type: 'user';
uuid?: UUID;
session_id: string;
message: APIUserMessage; // Aus Anthropic SDK
parent_tool_use_id: string | null;
}SDKUserMessageReplayWiedergegebene Benutzernachricht mit erforderlicher UUID.
type SDKUserMessageReplay = {
type: 'user';
uuid: UUID;
session_id: string;
message: APIUserMessage;
parent_tool_use_id: string | null;
}SDKResultMessageEndgültige Ergebnisnachricht.
type SDKResultMessage =
| {
type: 'result';
subtype: 'success';
uuid: UUID;
session_id: string;
duration_ms: number;
duration_api_ms: number;
is_error: boolean;
num_turns: number;
result: string;
total_cost_usd: number;
usage: NonNullableUsage;
modelUsage: { [modelName: string]: ModelUsage };
permission_denials: SDKPermissionDenial[];
structured_output?: unknown;
}
| {
type: 'result';
subtype:
| 'error_max_turns'
| 'error_during_execution'
| 'error_max_budget_usd'
| 'error_max_structured_output_retries';
uuid: UUID;
session_id: string;
duration_ms: number;
duration_api_ms: number;
is_error: boolean;
num_turns: number;
total_cost_usd: number;
usage: NonNullableUsage;
modelUsage: { [modelName: string]: ModelUsage };
permission_denials: SDKPermissionDenial[];
errors: string[];
}SDKSystemMessageSysteminitalisierungsnachricht.
type SDKSystemMessage = {
type: 'system';
subtype: 'init';
uuid: UUID;
session_id: string;
apiKeySource: ApiKeySource;
cwd: string;
tools: string[];
mcp_servers: {
name: string;
status: string;
}[];
model: string;
permissionMode: PermissionMode;
slash_commands: string[];
output_style: string;
}SDKPartialAssistantMessageStreaming-Teilnachricht (nur wenn includePartialMessages wahr ist).
type SDKPartialAssistantMessage = {
type: 'stream_event';
event: RawMessageStreamEvent; // Aus Anthropic SDK
parent_tool_use_id: string | null;
uuid: UUID;
session_id: string;
}SDKCompactBoundaryMessageNachricht, die eine Gesprächskomprimierungsgrenze anzeigt.
type SDKCompactBoundaryMessage = {
type: 'system';
subtype: 'compact_boundary';
uuid: UUID;
session_id: string;
compact_metadata: {
trigger: 'manual' | 'auto';
pre_tokens: number;
};
}SDKPermissionDenialInformationen über eine verweigerte Tool-Nutzung.
type SDKPermissionDenial = {
tool_name: string;
tool_use_id: string;
tool_input: ToolInput;
}Eine umfassende Anleitung zur Verwendung von Hooks mit Beispielen und häufigen Mustern finden Sie im Hooks-Leitfaden.
HookEventVerfügbare Hook-Ereignisse.
type HookEvent =
| 'PreToolUse'
| 'PostToolUse'
| 'PostToolUseFailure'
| 'Notification'
| 'UserPromptSubmit'
| 'SessionStart'
| 'SessionEnd'
| 'Stop'
| 'SubagentStart'
| 'SubagentStop'
| 'PreCompact'
| 'PermissionRequest';HookCallbackHook-Rückruffunktionstyp.
type HookCallback = (
input: HookInput, // Union aller Hook-Eingabetypen
toolUseID: string | undefined,
options: { signal: AbortSignal }
) => Promise<HookJSONOutput>;HookCallbackMatcherHook-Konfiguration mit optionalem Matcher.
interface HookCallbackMatcher {
matcher?: string;
hooks: HookCallback[];
}HookInputUnion-Typ aller Hook-Eingabetypen.
type HookInput =
| PreToolUseHookInput
| PostToolUseHookInput
| PostToolUseFailureHookInput
| NotificationHookInput
| UserPromptSubmitHookInput
| SessionStartHookInput
| SessionEndHookInput
| StopHookInput
| SubagentStartHookInput
| SubagentStopHookInput
| PreCompactHookInput
| PermissionRequestHookInput;BaseHookInputBasisschnittstelle, die alle Hook-Eingabetypen erweitern.
type BaseHookInput = {
session_id: string;
transcript_path: string;
cwd: string;
permission_mode?: string;
}PreToolUseHookInputtype PreToolUseHookInput = BaseHookInput & {
hook_event_name: 'PreToolUse';
tool_name: string;
tool_input: unknown;
}PostToolUseHookInputtype PostToolUseHookInput = BaseHookInput & {
hook_event_name: 'PostToolUse';
tool_name: string;
tool_input: unknown;
tool_response: unknown;
}PostToolUseFailureHookInputtype PostToolUseFailureHookInput = BaseHookInput & {
hook_event_name: 'PostToolUseFailure';
tool_name: string;
tool_input: unknown;
error: string;
is_interrupt?: boolean;
}NotificationHookInputtype NotificationHookInput = BaseHookInput & {
hook_event_name: 'Notification';
message: string;
title?: string;
}UserPromptSubmitHookInputtype UserPromptSubmitHookInput = BaseHookInput & {
hook_event_name: 'UserPromptSubmit';
prompt: string;
}SessionStartHookInputtype SessionStartHookInput = BaseHookInput & {
hook_event_name: 'SessionStart';
source: 'startup' | 'resume' | 'clear' | 'compact';
}SessionEndHookInputtype SessionEndHookInput = BaseHookInput & {
hook_event_name: 'SessionEnd';
reason: ExitReason; // Zeichenkette aus EXIT_REASONS-Array
}StopHookInputtype StopHookInput = BaseHookInput & {
hook_event_name: 'Stop';
stop_hook_active: boolean;
}SubagentStartHookInputtype SubagentStartHookInput = BaseHookInput & {
hook_event_name: 'SubagentStart';
agent_id: string;
agent_type: string;
}SubagentStopHookInputtype SubagentStopHookInput = BaseHookInput & {
hook_event_name: 'SubagentStop';
stop_hook_active: boolean;
}PreCompactHookInputtype PreCompactHookInput = BaseHookInput & {
hook_event_name: 'PreCompact';
trigger: 'manual' | 'auto';
custom_instructions: string | null;
}PermissionRequestHookInputtype PermissionRequestHookInput = BaseHookInput & {
hook_event_name: 'PermissionRequest';
tool_name: string;
tool_input: unknown;
permission_suggestions?: PermissionUpdate[];
}HookJSONOutputHook-Rückgabewert.
type HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput;AsyncHookJSONOutputtype AsyncHookJSONOutput = {
async: true;
asyncTimeout?: number;
}SyncHookJSONOutputtype SyncHookJSONOutput = {
continue?: boolean;
suppressOutput?: boolean;
stopReason?: string;
decision?: 'approve' | 'block';
systemMessage?: string;
reason?: string;
hookSpecificOutput?:
| {
hookEventName: 'PreToolUse';
permissionDecision?: 'allow' | 'deny' | 'ask';
permissionDecisionReason?: string;
updatedInput?: Record<string, unknown>;
}
| {
hookEventName: 'UserPromptSubmit';
additionalContext?: string;
}
| {
hookEventName: 'SessionStart';
additionalContext?: string;
}
| {
hookEventName: 'PostToolUse';
additionalContext?: string;
};
}Dokumentation von Eingabeschemas für alle integrierten Claude Code-Tools. Diese Typen werden aus @anthropic-ai/claude-agent-sdk exportiert und können für typsichere Tool-Interaktionen verwendet werden.
ToolInputHinweis: Dies ist ein reiner Dokumentationstyp zur Verdeutlichung. Er stellt die Union aller Tool-Eingabetypen dar.
type ToolInput =
| AgentInput
| AskUserQuestionInput
| BashInput
| BashOutputInput
| FileEditInput
| FileReadInput
| FileWriteInput
| GlobInput
| GrepInput
| KillShellInput
| NotebookEditInput
| WebFetchInput
| WebSearchInput
| TodoWriteInput
| ExitPlanModeInput
| ListMcpResourcesInput
| ReadMcpResourceInput;Tool-Name: Task
interface AgentInput {
/**
* Eine kurze (3-5 Wörter) Beschreibung der Aufgabe
*/
description: string;
/**
* Die Aufgabe, die der Agent ausführen soll
*/
prompt: string;
/**
* Der Typ des spezialisierten Agenten, der für diese Aufgabe verwendet werden soll
*/
subagent_type: string;
}Startet einen neuen Agenten, um komplexe, mehrstufige Aufgaben autonom zu bearbeiten.
Tool-Name: AskUserQuestion
interface AskUserQuestionInput {
/**
* Fragen, die dem Benutzer gestellt werden sollen (1-4 Fragen)
*/
questions: Array<{
/**
* Die vollständige Frage, die dem Benutzer gestellt werden soll. Sollte klar und spezifisch sein
* und mit einem Fragezeichen enden.
*/
question: string;
/**
* Sehr kurzes Label, das als Chip/Tag angezeigt wird (max. 12 Zeichen).
* Beispiele: "Auth method", "Library", "Approach"
*/
header: string;
/**
* Die verfügbaren Auswahlmöglichkeiten (2-4 Optionen). Eine "Other"-Option wird
* automatisch bereitgestellt.
*/
options: Array<{
/**
* Anzeigetext für diese Option (1-5 Wörter)
*/
label: string;
/**
* Erklärung, was diese Option bedeutet
*/
description: string;
}>;
/**
* Setzen Sie auf true, um mehrere Auswahlmöglichkeiten zu ermöglichen
*/
multiSelect: boolean;
}>;
/**
* Benutzerantworten, die vom Berechtigungssystem ausgefüllt werden.
* Ordnet Fragetext ausgewählten Optionslabeln zu.
* Mehrfachauswahlantworte sind durch Kommas getrennt.
*/
answers?: Record<string, string>;
}Stellt dem Benutzer während der Ausführung Klärungsfragen. Siehe Umgang mit dem AskUserQuestion-Tool für Nutzungsdetails.
Tool-Name: Bash
interface BashInput {
/**
* Der auszuführende Befehl
*/
command: string;
/**
* Optionales Timeout in Millisekunden (max. 600000)
*/
timeout?: number;
/**
* Klare, prägnante Beschreibung, was dieser Befehl in 5-10 Wörtern tut
*/
description?: string;
/**
* Setzen Sie auf true, um diesen Befehl im Hintergrund auszuführen
*/
run_in_background?: boolean;
}Führt Bash-Befehle in einer persistenten Shell-Sitzung mit optionalem Timeout und Hintergrundausführung aus.
Tool-Name: BashOutput
interface BashOutputInput {
/**
* Die ID der Hintergrund-Shell, von der die Ausgabe abgerufen werden soll
*/
bash_id: string;
/**
* Optionaler Regex zum Filtern von Ausgabezeilen
*/
filter?: string;
}Ruft die Ausgabe von einer laufenden oder abgeschlossenen Hintergrund-Bash-Shell ab.
Tool-Name: Edit
interface FileEditInput {
/**
* Der absolute Pfad zur zu ändernden Datei
*/
file_path: string;
/**
* Der zu ersetzende Text
*/
old_string: string;
/**
* Der Text, durch den er ersetzt werden soll (muss sich von old_string unterscheiden)
*/
new_string: string;
/**
* Ersetzen Sie alle Vorkommen von old_string (Standard false)
*/
replace_all?: boolean;
}Führt exakte Zeichenkettenersetzungen in Dateien durch.
Tool-Name: Read
interface FileReadInput {
/**
* Der absolute Pfad zur zu lesenden Datei
*/
file_path: string;
/**
* Die Zeilennummer, ab der gelesen werden soll
*/
offset?: number;
/**
* Die Anzahl der zu lesenden Zeilen
*/
limit?: number;
}Liest Dateien aus dem lokalen Dateisystem, einschließlich Text, Bilder, PDFs und Jupyter-Notebooks.
Tool-Name: Write
interface FileWriteInput {
/**
* Der absolute Pfad zur zu schreibenden Datei
*/
file_path: string;
/**
* Der in die Datei zu schreibende Inhalt
*/
content: string;
}Schreibt eine Datei in das lokale Dateisystem und überschreibt sie, falls vorhanden.
Tool-Name: Glob
interface GlobInput {
/**
* Das Glob-Muster, das mit Dateien abgeglichen werden soll
*/
pattern: string;
/**
* Das Verzeichnis, in dem gesucht werden soll (Standard cwd)
*/
path?: string;
}Schnelle Dateimusterabstimmung, die mit jeder Codebasis-Größe funktioniert.
Tool-Name: Grep
interface GrepInput {
/**
* Das reguläre Ausdrucksmuster, nach dem gesucht werden soll
*/
pattern: string;
/**
* Datei oder Verzeichnis, in dem gesucht werden soll (Standard cwd)
*/
path?: string;
/**
* Glob-Muster zum Filtern von Dateien (z. B. "*.js")
*/
glob?: string;
/**
* Dateityp, in dem gesucht werden soll (z. B. "js", "py", "rust")
*/
type?: string;
/**
* Ausgabemodus: "content", "files_with_matches" oder "count"
*/
output_mode?: 'content' | 'files_with_matches' | 'count';
/**
* Suche ohne Berücksichtigung der Groß-/Kleinschreibung
*/
'-i'?: boolean;
/**
* Zeilennummern anzeigen (für Content-Modus)
*/
'-n'?: boolean;
/**
* Zeilen vor jedem Match anzeigen
*/
'-B'?: number;
/**
* Zeilen nach jedem Match anzeigen
*/
'-A'?: number;
/**
* Zeilen vor und nach jedem Match anzeigen
*/
'-C'?: number;
/**
* Ausgabe auf erste N Zeilen/Einträge begrenzen
*/
head_limit?: number;
/**
* Mehrzeilenmodus aktivieren
*/
multiline?: boolean;
}Leistungsstarkes Suchtool basierend auf ripgrep mit Regex-Unterstützung.
Tool-Name: KillBash
interface KillShellInput {
/**
* Die ID der zu beendenden Hintergrund-Shell
*/
shell_id: string;
}Beendet eine laufende Hintergrund-Bash-Shell nach ihrer ID.
Tool-Name: NotebookEdit
interface NotebookEditInput {
/**
* Der absolute Pfad zur Jupyter-Notebook-Datei
*/
notebook_path: string;
/**
* Die ID der zu bearbeitenden Zelle
*/
cell_id?: string;
/**
* Die neue Quelle für die Zelle
*/
new_source: string;
/**
* Der Typ der Zelle (Code oder Markdown)
*/
cell_type?: 'code' | 'markdown';
/**
* Der Typ der Bearbeitung (Ersetzen, Einfügen, Löschen)
*/
edit_mode?: 'replace' | 'insert' | 'delete';
}Bearbeitet Zellen in Jupyter-Notebook-Dateien.
Tool-Name: WebFetch
interface WebFetchInput {
/**
* Die URL, von der Inhalte abgerufen werden sollen
*/
url: string;
/**
* Die Aufforderung, die auf den abgerufenen Inhalt angewendet werden soll
*/
prompt: string;
}Ruft Inhalte von einer URL ab und verarbeitet sie mit einem KI-Modell.
Tool-Name: WebSearch
interface WebSearchInput {
/**
* Die zu verwendende Suchabfrage
*/
query: string;
/**
* Nur Ergebnisse von diesen Domänen einschließen
*/
allowed_domains?: string[];
/**
* Niemals Ergebnisse von diesen Domänen einschließen
*/
blocked_domains?: string[];
}Durchsucht das Web und gibt formatierte Ergebnisse zurück.
Tool-Name: TodoWrite
interface TodoWriteInput {
/**
* Die aktualisierte Todo-Liste
*/
todos: Array<{
/**
* Die Aufgabenbeschreibung
*/
content: string;
/**
* Der Aufgabenstatus
*/
status: 'pending' | 'in_progress' | 'completed';
/**
* Aktive Form der Aufgabenbeschreibung
*/
activeForm: string;
}>;
}Erstellt und verwaltet eine strukturierte Aufgabenliste zur Verfolgung des Fortschritts.
Tool-Name: ExitPlanMode
interface ExitPlanModeInput {
/**
* Der Plan, der vom Benutzer zur Genehmigung ausgeführt werden soll
*/
plan: string;
}Beendet den Planungsmodus und fordert den Benutzer auf, den Plan zu genehmigen.
Tool-Name: ListMcpResources
interface ListMcpResourcesInput {
/**
* Optionaler Servername zum Filtern von Ressourcen
*/
server?: string;
}Listet verfügbare MCP-Ressourcen von verbundenen Servern auf.
Tool-Name: ReadMcpResource
interface ReadMcpResourceInput {
/**
* Der MCP-Servername
*/
server: string;
/**
* Die zu lesende Ressourcen-URI
*/
uri: string;
}Liest eine bestimmte MCP-Ressource von einem Server.
Dokumentation von Ausgabeschemas für alle integrierten Claude Code-Tools. Diese Typen stellen die tatsächlichen Antwortdaten dar, die von jedem Tool zurückgegeben werden.
ToolOutputHinweis: Dies ist ein reiner Dokumentationstyp zur Verdeutlichung. Er stellt die Union aller Tool-Ausgabetypen dar.
type ToolOutput =
| TaskOutput
| AskUserQuestionOutput
| BashOutput
| BashOutputToolOutput
| EditOutput
| ReadOutput
| WriteOutput
| GlobOutput
| GrepOutput
| KillBashOutput
| NotebookEditOutput
| WebFetchOutput
| WebSearchOutput
| TodoWriteOutput
| ExitPlanModeOutput
| ListMcpResourcesOutput
| ReadMcpResourceOutput;Tool-Name: Task
interface TaskOutput {
/**
* Endgültige Ergebnisnachricht vom Subagenten
*/
result: string;
/**
* Token-Nutzungsstatistiken
*/
usage?: {
input_tokens: number;
output_tokens: number;
cache_creation_input_tokens?: number;
cache_read_input_tokens?: number;
};
/**
* Gesamtkosten in USD
*/
total_cost_usd?: number;
/**
* Ausführungsdauer in Millisekunden
*/
duration_ms?: number;
}Gibt das endgültige Ergebnis vom Subagenten nach Abschluss der delegierten Aufgabe zurück.
Tool-Name: AskUserQuestion
interface AskUserQuestionOutput {
/**
* Die gestellten Fragen
*/
questions: Array<{
question: string;
header: string;
options: Array<{
label: string;
description: string;
}>;
multiSelect: boolean;
}>;
/**
* Die vom Benutzer bereitgestellten Antworten.
* Ordnet Fragetext Antwortzeichenkette zu.
* Mehrfachauswahlantworte sind durch Kommas getrennt.
*/
answers: Record<string, string>;
}Gibt die gestellten Fragen und die Antworten des Benutzers zurück.
Tool-Name: Bash
interface BashOutput {
/**
* Kombinierte stdout- und stderr-Ausgabe
*/
output: string;
/**
* Exitcode des Befehls
*/
exitCode: number;
/**
* Ob der Befehl aufgrund eines Timeouts beendet wurde
*/
killed?: boolean;
/**
* Shell-ID für Hintergrundprozesse
*/
shellId?: string;
}Gibt Befehlsausgabe mit Exitstatus zurück. Hintergundbefehle geben sofort mit einer shellId zurück.
Tool-Name: BashOutput
interface BashOutputToolOutput {
/**
* Neue Ausgabe seit der letzten Überprüfung
*/
output: string;
/**
* Aktueller Shell-Status
*/
status: 'running' | 'completed' | 'failed';
/**
* Exitcode (wenn abgeschlossen)
*/
exitCode?: number;
}Gibt inkrementelle Ausgabe von Hintergrund-Shells zurück.
Tool-Name: Edit
interface EditOutput {
/**
* Bestätigungsnachricht
*/
message: string;
/**
* Anzahl der durchgeführten Ersetzungen
*/
replacements: number;
/**
* Dateipfad, der bearbeitet wurde
*/
file_path: string;
}Gibt Bestätigung erfolgreicher Bearbeitungen mit Ersetzungsanzahl zurück.
Tool name: Read
type ReadOutput =
| TextFileOutput
| ImageFileOutput
| PDFFileOutput
| NotebookFileOutput;
interface TextFileOutput {
/**
* File contents with line numbers
*/
content: string;
/**
* Total number of lines in file
*/
total_lines: number;
/**
* Lines actually returned
*/
lines_returned: number;
}
interface ImageFileOutput {
/**
* Base64 encoded image data
*/
image: string;
/**
* Image MIME type
*/
mime_type: string;
/**
* File size in bytes
*/
file_size: number;
}
interface PDFFileOutput {
/**
* Array of page contents
*/
pages: Array<{
page_number: number;
text?: string;
images?: Array<{
image: string;
mime_type: string;
}>;
}>;
/**
* Total number of pages
*/
total_pages: number;
}
interface NotebookFileOutput {
/**
* Jupyter notebook cells
*/
cells: Array<{
cell_type: 'code' | 'markdown';
source: string;
outputs?: any[];
execution_count?: number;
}>;
/**
* Notebook metadata
*/
metadata?: Record<string, any>;
}Gibt Dateiinhalte in einem für den Dateityp geeigneten Format zurück.
Tool name: Write
interface WriteOutput {
/**
* Success message
*/
message: string;
/**
* Number of bytes written
*/
bytes_written: number;
/**
* File path that was written
*/
file_path: string;
}Gibt eine Bestätigung nach erfolgreichem Schreiben der Datei zurück.
Tool name: Glob
interface GlobOutput {
/**
* Array of matching file paths
*/
matches: string[];
/**
* Number of matches found
*/
count: number;
/**
* Search directory used
*/
search_path: string;
}Gibt Dateipfade zurück, die dem Glob-Muster entsprechen, sortiert nach Änderungszeit.
Tool name: Grep
type GrepOutput =
| GrepContentOutput
| GrepFilesOutput
| GrepCountOutput;
interface GrepContentOutput {
/**
* Matching lines with context
*/
matches: Array<{
file: string;
line_number?: number;
line: string;
before_context?: string[];
after_context?: string[];
}>;
/**
* Total number of matches
*/
total_matches: number;
}
interface GrepFilesOutput {
/**
* Files containing matches
*/
files: string[];
/**
* Number of files with matches
*/
count: number;
}
interface GrepCountOutput {
/**
* Match counts per file
*/
counts: Array<{
file: string;
count: number;
}>;
/**
* Total matches across all files
*/
total: number;
}Gibt Suchergebnisse in dem durch output_mode angegebenen Format zurück.
Tool name: KillBash
interface KillBashOutput {
/**
* Success message
*/
message: string;
/**
* ID of the killed shell
*/
shell_id: string;
}Gibt eine Bestätigung nach Beendigung der Hintergrund-Shell zurück.
Tool name: NotebookEdit
interface NotebookEditOutput {
/**
* Success message
*/
message: string;
/**
* Type of edit performed
*/
edit_type: 'replaced' | 'inserted' | 'deleted';
/**
* Cell ID that was affected
*/
cell_id?: string;
/**
* Total cells in notebook after edit
*/
total_cells: number;
}Gibt eine Bestätigung nach Änderung des Jupyter-Notebooks zurück.
Tool name: WebFetch
interface WebFetchOutput {
/**
* AI model's response to the prompt
*/
response: string;
/**
* URL that was fetched
*/
url: string;
/**
* Final URL after redirects
*/
final_url?: string;
/**
* HTTP status code
*/
status_code?: number;
}Gibt die Analyse des KI-Modells des abgerufenen Webinhalts zurück.
Tool name: WebSearch
interface WebSearchOutput {
/**
* Search results
*/
results: Array<{
title: string;
url: string;
snippet: string;
/**
* Additional metadata if available
*/
metadata?: Record<string, any>;
}>;
/**
* Total number of results
*/
total_results: number;
/**
* The query that was searched
*/
query: string;
}Gibt formatierte Suchergebnisse aus dem Web zurück.
Tool name: TodoWrite
interface TodoWriteOutput {
/**
* Success message
*/
message: string;
/**
* Current todo statistics
*/
stats: {
total: number;
pending: number;
in_progress: number;
completed: number;
};
}Gibt eine Bestätigung mit aktuellen Aufgabenstatistiken zurück.
Tool name: ExitPlanMode
interface ExitPlanModeOutput {
/**
* Confirmation message
*/
message: string;
/**
* Whether user approved the plan
*/
approved?: boolean;
}Gibt eine Bestätigung nach Beendigung des Plan-Modus zurück.
Tool name: ListMcpResources
interface ListMcpResourcesOutput {
/**
* Available resources
*/
resources: Array<{
uri: string;
name: string;
description?: string;
mimeType?: string;
server: string;
}>;
/**
* Total number of resources
*/
total: number;
}Gibt eine Liste der verfügbaren MCP-Ressourcen zurück.
Tool name: ReadMcpResource
interface ReadMcpResourceOutput {
/**
* Resource contents
*/
contents: Array<{
uri: string;
mimeType?: string;
text?: string;
blob?: string;
}>;
/**
* Server that provided the resource
*/
server: string;
}Gibt den Inhalt der angeforderten MCP-Ressource zurück.
PermissionUpdateOperationen zum Aktualisieren von Berechtigungen.
type PermissionUpdate =
| {
type: 'addRules';
rules: PermissionRuleValue[];
behavior: PermissionBehavior;
destination: PermissionUpdateDestination;
}
| {
type: 'replaceRules';
rules: PermissionRuleValue[];
behavior: PermissionBehavior;
destination: PermissionUpdateDestination;
}
| {
type: 'removeRules';
rules: PermissionRuleValue[];
behavior: PermissionBehavior;
destination: PermissionUpdateDestination;
}
| {
type: 'setMode';
mode: PermissionMode;
destination: PermissionUpdateDestination;
}
| {
type: 'addDirectories';
directories: string[];
destination: PermissionUpdateDestination;
}
| {
type: 'removeDirectories';
directories: string[];
destination: PermissionUpdateDestination;
}PermissionBehaviortype PermissionBehavior = 'allow' | 'deny' | 'ask';PermissionUpdateDestinationtype PermissionUpdateDestination =
| 'userSettings' // Global user settings
| 'projectSettings' // Per-directory project settings
| 'localSettings' // Gitignored local settings
| 'session' // Current session onlyPermissionRuleValuetype PermissionRuleValue = {
toolName: string;
ruleContent?: string;
}ApiKeySourcetype ApiKeySource = 'user' | 'project' | 'org' | 'temporary';SdkBetaVerfügbare Beta-Funktionen, die über die Option betas aktiviert werden können. Weitere Informationen finden Sie unter Beta-Header.
type SdkBeta = 'context-1m-2025-08-07';| Value | Description | Compatible Models |
|---|---|---|
'context-1m-2025-08-07' | Aktiviert ein Kontextfenster von 1 Million Token | Claude Sonnet 4, Claude Sonnet 4.5 |
SlashCommandInformationen über einen verfügbaren Schrägstrich-Befehl.
type SlashCommand = {
name: string;
description: string;
argumentHint: string;
}ModelInfoInformationen über ein verfügbares Modell.
type ModelInfo = {
value: string;
displayName: string;
description: string;
}McpServerStatusStatus eines verbundenen MCP-Servers.
type McpServerStatus = {
name: string;
status: 'connected' | 'failed' | 'needs-auth' | 'pending';
serverInfo?: {
name: string;
version: string;
};
}AccountInfoKontoinformationen für den authentifizierten Benutzer.
type AccountInfo = {
email?: string;
organization?: string;
subscriptionType?: string;
tokenSource?: string;
apiKeySource?: string;
}ModelUsagePro-Modell-Nutzungsstatistiken, die in Ergebnismeldungen zurückgegeben werden.
type ModelUsage = {
inputTokens: number;
outputTokens: number;
cacheReadInputTokens: number;
cacheCreationInputTokens: number;
webSearchRequests: number;
costUSD: number;
contextWindow: number;
}ConfigScopetype ConfigScope = 'local' | 'user' | 'project';NonNullableUsageEine Version von Usage mit allen nullable Feldern, die nicht nullable gemacht wurden.
type NonNullableUsage = {
[K in keyof Usage]: NonNullable<Usage[K]>;
}UsageToken-Nutzungsstatistiken (von @anthropic-ai/sdk).
type Usage = {
input_tokens: number | null;
output_tokens: number | null;
cache_creation_input_tokens?: number | null;
cache_read_input_tokens?: number | null;
}CallToolResultMCP-Tool-Ergebnistyp (von @modelcontextprotocol/sdk/types.js).
type CallToolResult = {
content: Array<{
type: 'text' | 'image' | 'resource';
// Additional fields vary by type
}>;
isError?: boolean;
}AbortErrorBenutzerdefinierte Fehlerklasse für Abbruchvorgänge.
class AbortError extends Error {}SandboxSettingsKonfiguration für das Sandbox-Verhalten. Verwenden Sie dies, um Befehls-Sandboxing zu aktivieren und Netzwerkbeschränkungen programmgesteuert zu konfigurieren.
type SandboxSettings = {
enabled?: boolean;
autoAllowBashIfSandboxed?: boolean;
excludedCommands?: string[];
allowUnsandboxedCommands?: boolean;
network?: NetworkSandboxSettings;
ignoreViolations?: SandboxIgnoreViolations;
enableWeakerNestedSandbox?: boolean;
}| Property | Type | Default | Description |
|---|---|---|---|
enabled | boolean | false | Aktivieren Sie den Sandbox-Modus für die Befehlsausführung |
autoAllowBashIfSandboxed | boolean | false | Bash-Befehle automatisch genehmigen, wenn die Sandbox aktiviert ist |
excludedCommands | string[] | [] | Befehle, die Sandbox-Beschränkungen immer umgehen (z. B. ['docker']). Diese werden automatisch ohne Modellbeteiligung unsandboxed ausgeführt |
Dateisystem- und Netzwerkzugriffsbeschränkungen werden NICHT über Sandbox-Einstellungen konfiguriert. Stattdessen werden sie von Berechtigungsregeln abgeleitet:
Verwenden Sie Sandbox-Einstellungen für Befehls-Ausführungs-Sandboxing und Berechtigungsregeln für Dateisystem- und Netzwerkzugriffskontrolle.
import { query } from "@anthropic-ai/claude-agent-sdk";
const result = await query({
prompt: "Build and test my project",
options: {
sandbox: {
enabled: true,
autoAllowBashIfSandboxed: true,
excludedCommands: ["docker"],
network: {
allowLocalBinding: true,
allowUnixSockets: ["/var/run/docker.sock"]
}
}
}
});NetworkSandboxSettingsNetzwerkspezifische Konfiguration für den Sandbox-Modus.
type NetworkSandboxSettings = {
allowLocalBinding?: boolean;
allowUnixSockets?: string[];
allowAllUnixSockets?: boolean;
httpProxyPort?: number;
socksProxyPort?: number;
}| Property | Type | Default | Description |
|---|---|---|---|
allowLocalBinding | boolean | false | Ermöglichen Sie Prozessen, sich an lokale Ports zu binden (z. B. für Dev-Server) |
allowUnixSockets | string[] | [] | Unix-Socket-Pfade, auf die Prozesse zugreifen können (z. B. Docker-Socket) |
allowAllUnixSockets | boolean | false | Ermöglichen Sie den Zugriff auf alle Unix-Sockets |
SandboxIgnoreViolationsKonfiguration zum Ignorieren spezifischer Sandbox-Verstöße.
type SandboxIgnoreViolations = {
file?: string[];
network?: string[];
}| Property | Type | Default | Description |
|---|---|---|---|
file | string[] | [] | Dateipfad-Muster, für die Verstöße ignoriert werden sollen |
network | string[] | [] | Netzwerkmuster, für die Verstöße ignoriert werden sollen |
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.
excludedCommands vs allowUnsandboxedCommands:
excludedCommands: Eine statische Liste von Befehlen, die die Sandbox immer automatisch umgehen (z. B. ['docker']). Das Modell hat keine Kontrolle darüber.allowUnsandboxedCommands: Ermöglicht dem Modell, zur Laufzeit zu entscheiden, ob es die Ausführung außerhalb der Sandbox anfordert, indem es dangerouslyDisableSandbox: true in der Tool-Eingabe setzt.import { query } from "@anthropic-ai/claude-agent-sdk";
const result = await query({
prompt: "Deploy my application",
options: {
sandbox: {
enabled: true,
allowUnsandboxedCommands: true // Model can request unsandboxed execution
},
permissionMode: "default",
canUseTool: async (tool, input) => {
// Check if the model is requesting to bypass the sandbox
if (tool === "Bash" && input.dangerouslyDisableSandbox) {
// The model wants to run this command outside the sandbox
console.log(`Unsandboxed command requested: ${input.command}`);
// Return true to allow, false to deny
return isCommandAuthorized(input.command);
}
return true;
}
}
});Dieses Muster ermöglicht es Ihnen:
Befehle, die mit dangerouslyDisableSandbox: true ausgeführt werden, haben vollständigen Systemzugriff. Stellen Sie sicher, dass Ihr canUseTool-Handler diese Anfragen sorgfältig validiert.
allowDangerouslySkipPermissions | boolean | false | Ermöglichen Sie das Umgehen von Berechtigungen. Erforderlich bei Verwendung von permissionMode: 'bypassPermissions' |
allowedTools | string[] | Alle Tools | Liste der zulässigen Tool-Namen |
betas | SdkBeta[] | [] | Beta-Funktionen aktivieren (z. B. ['context-1m-2025-08-07']) |
canUseTool | CanUseTool | undefined | Benutzerdefinierte Berechtigungsfunktion für die Tool-Nutzung |
continue | boolean | false | Setzen Sie das neueste Gespräch fort |
cwd | string | process.cwd() | Aktuelles Arbeitsverzeichnis |
disallowedTools | string[] | [] | Liste der nicht zulässigen Tool-Namen |
enableFileCheckpointing | boolean | false | Aktivieren Sie die Verfolgung von Dateiänderungen zum Zurückspulen. Siehe Datei-Checkpointing |
env | Dict<string> | process.env | Umgebungsvariablen |
executable | 'bun' | 'deno' | 'node' | Automatisch erkannt | Zu verwendende JavaScript-Laufzeit |
executableArgs | string[] | [] | Argumente, die an die ausführbare Datei übergeben werden |
extraArgs | Record<string, string | null> | {} | Zusätzliche Argumente |
fallbackModel | string | undefined | Modell, das verwendet werden soll, wenn das primäre fehlschlägt |
forkSession | boolean | false | Beim Fortsetzen mit resume zu einer neuen Sitzungs-ID verzweigen, anstatt die ursprüngliche Sitzung fortzusetzen |
hooks | Partial<Record<HookEvent, HookCallbackMatcher[]>> | {} | Hook-Rückrufe für Ereignisse |
includePartialMessages | boolean | false | Teilweise Nachrichtenereignisse einschließen |
maxBudgetUsd | number | undefined | Maximales Budget in USD für die Abfrage |
maxThinkingTokens | number | undefined | Maximale Token für den Denkprozess |
maxTurns | number | undefined | Maximale Gesprächsrunden |
mcpServers | Record<string, [McpServerConfig](#mcpserverconfig)> | {} | MCP-Server-Konfigurationen |
model | string | Standard aus CLI | Claude-Modell, das verwendet werden soll |
outputFormat | { type: 'json_schema', schema: JSONSchema } | undefined | Definieren Sie das Ausgabeformat für Agent-Ergebnisse. Siehe Strukturierte Ausgaben für Details |
pathToClaudeCodeExecutable | string | Verwendet integrierte ausführbare Datei | Pfad zur Claude Code-ausführbaren Datei |
permissionMode | PermissionMode | 'default' | Berechtigungsmodus für die Sitzung |
permissionPromptToolName | string | undefined | MCP-Tool-Name für Berechtigungsaufforderungen |
plugins | SdkPluginConfig[] | [] | Laden Sie benutzerdefinierte Plugins aus lokalen Pfaden. Siehe Plugins für Details |
resume | string | undefined | Sitzungs-ID zum Fortsetzen |
resumeSessionAt | string | undefined | Sitzung bei einer bestimmten Nachrichten-UUID fortsetzen |
sandbox | SandboxSettings | undefined | Konfigurieren Sie das Sandbox-Verhalten programmgesteuert. Siehe Sandbox-Einstellungen für Details |
settingSources | SettingSource[] | [] (keine Einstellungen) | Steuern Sie, welche Dateisystem-Einstellungen geladen werden. Wenn weggelassen, werden keine Einstellungen geladen. Hinweis: Muss 'project' enthalten, um CLAUDE.md-Dateien zu laden |
stderr | (data: string) => void | undefined | Rückruf für stderr-Ausgabe |
strictMcpConfig | boolean | false | Erzwingen Sie strikte MCP-Validierung |
systemPrompt | string | { type: 'preset'; preset: 'claude_code'; append?: string } | undefined (leere Aufforderung) | Systemanforderungskonfiguration. Übergeben Sie eine Zeichenkette für eine benutzerdefinierte Aufforderung oder { type: 'preset', preset: 'claude_code' }, um die Systemaufforderung von Claude Code zu verwenden. Bei Verwendung der Preset-Objektform fügen Sie append hinzu, um die Systemaufforderung mit zusätzlichen Anweisungen zu erweitern |
tools | string[] | { type: 'preset'; preset: 'claude_code' } | undefined | Tool-Konfiguration. Übergeben Sie ein Array von Tool-Namen oder verwenden Sie die Voreinstellung, um die Standard-Tools von Claude Code zu erhalten |
supportedModels() |
| Gibt verfügbare Modelle mit Anzeigeinformationen zurück |
mcpServerStatus() | Gibt den Status verbundener MCP-Server zurück |
accountInfo() | Gibt Kontoinformationen zurück |
allowUnsandboxedCommands | boolean | false | Ermöglichen Sie dem Modell, die Ausführung von Befehlen außerhalb der Sandbox anzufordern. Wenn true, kann das Modell dangerouslyDisableSandbox in der Tool-Eingabe setzen, was auf das Berechtigungssystem zurückfällt |
network | NetworkSandboxSettings | undefined | Netzwerkspezifische Sandbox-Konfiguration |
ignoreViolations | SandboxIgnoreViolations | undefined | Konfigurieren Sie, welche Sandbox-Verstöße ignoriert werden sollen |
enableWeakerNestedSandbox | boolean | false | Aktivieren Sie eine schwächere verschachtelte Sandbox für Kompatibilität |
httpProxyPortnumber |
undefined |
| HTTP-Proxy-Port für Netzwerkanfragen |
socksProxyPort | number | undefined | SOCKS-Proxy-Port für Netzwerkanfragen |