Prueba la nueva interfaz V2 (vista previa): Una interfaz simplificada con patrones send() y receive() ya está disponible, lo que facilita las conversaciones de múltiples turnos. Más información
npm install @anthropic-ai/claude-agent-sdkquery()La función principal para interactuar con Claude Code. Crea un generador asincrónico que transmite mensajes a medida que llegan.
function query({
prompt,
options
}: {
prompt: string | AsyncIterable<SDKUserMessage>;
options?: Options;
}): Query| Parámetro | Tipo | Descripción |
|---|---|---|
prompt | string | AsyncIterable<SDKUserMessage> | El mensaje de entrada como una cadena o iterable asincrónico para modo de transmisión |
options | Options | Objeto de configuración opcional (ver tipo Options a continuación) |
Retorna un objeto Query que extiende AsyncGenerator<SDKMessage, void> con métodos adicionales.
tool()Crea una definición de herramienta MCP segura en tipos para usar con servidores MCP del SDK.
function tool<Schema extends ZodRawShape>(
name: string,
description: string,
inputSchema: Schema,
handler: (args: z.infer<ZodObject<Schema>>, extra: unknown) => Promise<CallToolResult>
): SdkMcpToolDefinition<Schema>| Parámetro | Tipo | Descripción |
|---|---|---|
name | string | El nombre de la herramienta |
description | string | Una descripción de lo que hace la herramienta |
inputSchema | Schema extends ZodRawShape | Esquema Zod que define los parámetros de entrada de la herramienta |
handler | (args, extra) => Promise<CallToolResult> | Función asincrónica que ejecuta la lógica de la herramienta |
createSdkMcpServer()Crea una instancia de servidor MCP que se ejecuta en el mismo proceso que tu aplicación.
function createSdkMcpServer(options: {
name: string;
version?: string;
tools?: Array<SdkMcpToolDefinition<any>>;
}): McpSdkServerConfigWithInstance| Parámetro | Tipo | Descripción |
|---|---|---|
options.name | string | El nombre del servidor MCP |
options.version | string | Cadena de versión opcional |
options.tools | Array<SdkMcpToolDefinition> | Matriz de definiciones de herramientas creadas con tool() |
OptionsObjeto de configuración para la función query().
| Propiedad | Tipo | Predeterminado | Descripción |
|---|---|---|---|
abortController | AbortController | new AbortController() | Controlador para cancelar operaciones |
additionalDirectories | string[] | [] | Directorios adicionales a los que Claude puede acceder |
agents | Record<string, [AgentDefinition](#agentdefinition)> | undefined | Definir suagentes programáticamente |
QueryInterfaz retornada por la función query().
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>;
}| Método | Descripción |
|---|---|
interrupt() | Interrumpe la consulta (solo disponible en modo de entrada de transmisión) |
rewindFiles(userMessageUuid) | Restaura archivos a su estado en el mensaje de usuario especificado. Requiere enableFileCheckpointing: true. Ver Punto de control de archivos |
setPermissionMode() | Cambia el modo de permiso (solo disponible en modo de entrada de transmisión) |
setModel() | Cambia el modelo (solo disponible en modo de entrada de transmisión) |
setMaxThinkingTokens() | Cambia los tokens de pensamiento máximos (solo disponible en modo de entrada de transmisión) |
supportedCommands() | Retorna comandos de barra diagonal disponibles |
AgentDefinitionConfiguración para un suagente definido programáticamente.
type AgentDefinition = {
description: string;
tools?: string[];
prompt: string;
model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
}| Campo | Requerido | Descripción |
|---|---|---|
description | Sí | Descripción en lenguaje natural de cuándo usar este agente |
tools | No | Matriz de nombres de herramientas permitidas. Si se omite, hereda todas las herramientas |
prompt | Sí | El mensaje del sistema del agente |
model | No | Anulación de modelo para este agente. Si se omite, usa el modelo principal |
SettingSourceControla qué fuentes de configuración basadas en sistema de archivos carga el SDK.
type SettingSource = 'user' | 'project' | 'local';| Valor | Descripción | Ubicación |
|---|---|---|
'user' | Configuración global del usuario | ~/.claude/settings.json |
'project' | Configuración de proyecto compartida (controlada por versión) | .claude/settings.json |
'local' | Configuración de proyecto local (ignorada por git) | .claude/settings.local.json |
Cuando settingSources está omitido o indefinido, el SDK no carga ninguna configuración del sistema de archivos. Esto proporciona aislamiento para aplicaciones del SDK.
Cargar todas las configuraciones del sistema de archivos (comportamiento heredado):
// Cargar todas las configuraciones como lo hizo SDK v0.0.x
const result = query({
prompt: "Analiza este código",
options: {
settingSources: ['user', 'project', 'local'] // Cargar todas las configuraciones
}
});Cargar solo fuentes de configuración específicas:
// Cargar solo configuraciones de proyecto, ignorar usuario y local
const result = query({
prompt: "Ejecutar verificaciones de CI",
options: {
settingSources: ['project'] // Solo .claude/settings.json
}
});Entornos de prueba e integración continua:
// Asegurar comportamiento consistente en CI excluyendo configuraciones locales
const result = query({
prompt: "Ejecutar pruebas",
options: {
settingSources: ['project'], // Solo configuraciones compartidas del equipo
permissionMode: 'bypassPermissions'
}
});Aplicaciones solo del SDK:
// Definir todo programáticamente (comportamiento predeterminado)
// Sin dependencias del sistema de archivos - settingSources predeterminado a []
const result = query({
prompt: "Revisar este PR",
options: {
// settingSources: [] es el predeterminado, no es necesario especificar
agents: { /* ... */ },
mcpServers: { /* ... */ },
allowedTools: ['Read', 'Grep', 'Glob']
}
});Cargando instrucciones de proyecto CLAUDE.md:
// Cargar configuraciones de proyecto para incluir archivos CLAUDE.md
const result = query({
prompt: "Agregar una nueva característica siguiendo convenciones de proyecto",
options: {
systemPrompt: {
type: 'preset',
preset: 'claude_code' // Requerido para usar CLAUDE.md
},
settingSources: ['project'], // Carga CLAUDE.md del directorio de proyecto
allowedTools: ['Read', 'Write', 'Edit']
}
});Cuando se cargan múltiples fuentes, las configuraciones se fusionan con esta precedencia (mayor a menor):
.claude/settings.local.json).claude/settings.json)~/.claude/settings.json)Las opciones programáticas (como agents, allowedTools) siempre anulan las configuraciones del sistema de archivos.
PermissionModetype PermissionMode =
| 'default' // Comportamiento de permiso estándar
| 'acceptEdits' // Aceptar automáticamente ediciones de archivos
| 'bypassPermissions' // Omitir todas las verificaciones de permiso
| 'plan' // Modo de planificación - sin ejecuciónCanUseToolTipo de función de permiso personalizado para controlar el uso de herramientas.
type CanUseTool = (
toolName: string,
input: ToolInput,
options: {
signal: AbortSignal;
suggestions?: PermissionUpdate[];
}
) => Promise<PermissionResult>;PermissionResultResultado de una verificación de permiso.
type PermissionResult =
| {
behavior: 'allow';
updatedInput: ToolInput;
updatedPermissions?: PermissionUpdate[];
}
| {
behavior: 'deny';
message: string;
interrupt?: boolean;
}McpServerConfigConfiguración para servidores MCP.
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;
}SdkPluginConfigConfiguración para cargar complementos en el SDK.
type SdkPluginConfig = {
type: 'local';
path: string;
}| Campo | Tipo | Descripción |
|---|---|---|
type | 'local' | Debe ser 'local' (actualmente solo se admiten complementos locales) |
path | string | Ruta absoluta o relativa al directorio del complemento |
Ejemplo:
plugins: [
{ type: 'local', path: './my-plugin' },
{ type: 'local', path: '/absolute/path/to/plugin' }
]Para información completa sobre cómo crear y usar complementos, ver Complementos.
SDKMessageTipo de unión de todos los mensajes posibles retornados por la consulta.
type SDKMessage =
| SDKAssistantMessage
| SDKUserMessage
| SDKUserMessageReplay
| SDKResultMessage
| SDKSystemMessage
| SDKPartialAssistantMessage
| SDKCompactBoundaryMessage;SDKAssistantMessageMensaje de respuesta del asistente.
type SDKAssistantMessage = {
type: 'assistant';
uuid: UUID;
session_id: string;
message: APIAssistantMessage; // Del SDK de Anthropic
parent_tool_use_id: string | null;
}SDKUserMessageMensaje de entrada del usuario.
type SDKUserMessage = {
type: 'user';
uuid?: UUID;
session_id: string;
message: APIUserMessage; // Del SDK de Anthropic
parent_tool_use_id: string | null;
}SDKUserMessageReplayMensaje de usuario reproducido con UUID requerido.
type SDKUserMessageReplay = {
type: 'user';
uuid: UUID;
session_id: string;
message: APIUserMessage;
parent_tool_use_id: string | null;
}SDKResultMessageMensaje de resultado final.
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[];
}SDKSystemMessageMensaje de inicialización del sistema.
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;
}SDKPartialAssistantMessageMensaje parcial de transmisión (solo cuando includePartialMessages es verdadero).
type SDKPartialAssistantMessage = {
type: 'stream_event';
event: RawMessageStreamEvent; // Del SDK de Anthropic
parent_tool_use_id: string | null;
uuid: UUID;
session_id: string;
}SDKCompactBoundaryMessageMensaje que indica un límite de compactación de conversación.
type SDKCompactBoundaryMessage = {
type: 'system';
subtype: 'compact_boundary';
uuid: UUID;
session_id: string;
compact_metadata: {
trigger: 'manual' | 'auto';
pre_tokens: number;
};
}SDKPermissionDenialInformación sobre un uso de herramienta denegado.
type SDKPermissionDenial = {
tool_name: string;
tool_use_id: string;
tool_input: ToolInput;
}Para una guía completa sobre el uso de ganchos con ejemplos y patrones comunes, ver la guía de Ganchos.
HookEventEventos de gancho disponibles.
type HookEvent =
| 'PreToolUse'
| 'PostToolUse'
| 'PostToolUseFailure'
| 'Notification'
| 'UserPromptSubmit'
| 'SessionStart'
| 'SessionEnd'
| 'Stop'
| 'SubagentStart'
| 'SubagentStop'
| 'PreCompact'
| 'PermissionRequest';HookCallbackTipo de función de devolución de llamada de gancho.
type HookCallback = (
input: HookInput, // Unión de todos los tipos de entrada de gancho
toolUseID: string | undefined,
options: { signal: AbortSignal }
) => Promise<HookJSONOutput>;HookCallbackMatcherConfiguración de gancho con coincidencia opcional.
interface HookCallbackMatcher {
matcher?: string;
hooks: HookCallback[];
}HookInputTipo de unión de todos los tipos de entrada de gancho.
type HookInput =
| PreToolUseHookInput
| PostToolUseHookInput
| PostToolUseFailureHookInput
| NotificationHookInput
| UserPromptSubmitHookInput
| SessionStartHookInput
| SessionEndHookInput
| StopHookInput
| SubagentStartHookInput
| SubagentStopHookInput
| PreCompactHookInput
| PermissionRequestHookInput;BaseHookInputInterfaz base que todos los tipos de entrada de gancho extienden.
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; // Cadena del array EXIT_REASONS
}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[];
}HookJSONOutputValor de retorno de gancho.
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;
};
}Documentación de esquemas de entrada para todas las herramientas integradas de Claude Code. Estos tipos se exportan desde @anthropic-ai/claude-agent-sdk y se pueden usar para interacciones de herramientas seguras en tipos.
ToolInputNota: Este es un tipo de solo documentación para claridad. Representa la unión de todos los tipos de entrada de herramienta.
type ToolInput =
| AgentInput
| AskUserQuestionInput
| BashInput
| BashOutputInput
| FileEditInput
| FileReadInput
| FileWriteInput
| GlobInput
| GrepInput
| KillShellInput
| NotebookEditInput
| WebFetchInput
| WebSearchInput
| TodoWriteInput
| ExitPlanModeInput
| ListMcpResourcesInput
| ReadMcpResourceInput;Nombre de herramienta: Task
interface AgentInput {
/**
* Una descripción breve de la tarea (3-5 palabras)
*/
description: string;
/**
* La tarea que el agente debe realizar
*/
prompt: string;
/**
* El tipo de agente especializado a usar para esta tarea
*/
subagent_type: string;
}Lanza un nuevo agente para manejar tareas complejas y de múltiples pasos de forma autónoma.
Nombre de herramienta: AskUserQuestion
interface AskUserQuestionInput {
/**
* Preguntas a hacer al usuario (1-4 preguntas)
*/
questions: Array<{
/**
* La pregunta completa a hacer al usuario. Debe ser clara, específica,
* y terminar con un signo de interrogación.
*/
question: string;
/**
* Etiqueta muy breve mostrada como chip/etiqueta (máx 12 caracteres).
* Ejemplos: "Método de autenticación", "Biblioteca", "Enfoque"
*/
header: string;
/**
* Las opciones disponibles (2-4 opciones). Una opción "Otro" se
* proporciona automáticamente.
*/
options: Array<{
/**
* Texto de visualización para esta opción (1-5 palabras)
*/
label: string;
/**
* Explicación de lo que significa esta opción
*/
description: string;
}>;
/**
* Establecer en verdadero para permitir múltiples selecciones
*/
multiSelect: boolean;
}>;
/**
* Respuestas del usuario completadas por el sistema de permisos.
* Mapea texto de pregunta a etiqueta(s) de opción seleccionada.
* Las respuestas de selección múltiple están separadas por comas.
*/
answers?: Record<string, string>;
}Hace preguntas aclaratorias al usuario durante la ejecución. Ver Manejo de la herramienta AskUserQuestion para detalles de uso.
Nombre de herramienta: Bash
interface BashInput {
/**
* El comando a ejecutar
*/
command: string;
/**
* Tiempo de espera opcional en milisegundos (máx 600000)
*/
timeout?: number;
/**
* Descripción clara y concisa de lo que hace este comando en 5-10 palabras
*/
description?: string;
/**
* Establecer en verdadero para ejecutar este comando en segundo plano
*/
run_in_background?: boolean;
}Ejecuta comandos bash en una sesión de shell persistente con tiempo de espera opcional y ejecución en segundo plano.
Nombre de herramienta: BashOutput
interface BashOutputInput {
/**
* El ID del shell en segundo plano del que recuperar salida
*/
bash_id: string;
/**
* Expresión regular opcional para filtrar líneas de salida
*/
filter?: string;
}Recupera salida de un shell bash en segundo plano en ejecución o completado.
Nombre de herramienta: Edit
interface FileEditInput {
/**
* La ruta absoluta al archivo a modificar
*/
file_path: string;
/**
* El texto a reemplazar
*/
old_string: string;
/**
* El texto para reemplazarlo (debe ser diferente de old_string)
*/
new_string: string;
/**
* Reemplazar todas las ocurrencias de old_string (predeterminado falso)
*/
replace_all?: boolean;
}Realiza reemplazos exactos de cadenas en archivos.
Nombre de herramienta: Read
interface FileReadInput {
/**
* La ruta absoluta al archivo a leer
*/
file_path: string;
/**
* El número de línea desde el que comenzar a leer
*/
offset?: number;
/**
* El número de líneas a leer
*/
limit?: number;
}Lee archivos del sistema de archivos local, incluyendo texto, imágenes, PDFs y cuadernos Jupyter.
Nombre de herramienta: Write
interface FileWriteInput {
/**
* La ruta absoluta al archivo a escribir
*/
file_path: string;
/**
* El contenido a escribir en el archivo
*/
content: string;
}Escribe un archivo en el sistema de archivos local, sobrescribiendo si existe.
Nombre de herramienta: Glob
interface GlobInput {
/**
* El patrón glob para coincidir archivos
*/
pattern: string;
/**
* El directorio a buscar (predeterminado cwd)
*/
path?: string;
}Coincidencia rápida de patrones de archivo que funciona con cualquier tamaño de base de código.
Nombre de herramienta: Grep
interface GrepInput {
/**
* El patrón de expresión regular a buscar
*/
pattern: string;
/**
* Archivo o directorio a buscar (predeterminado cwd)
*/
path?: string;
/**
* Patrón glob para filtrar archivos (por ejemplo "*.js")
*/
glob?: string;
/**
* Tipo de archivo a buscar (por ejemplo "js", "py", "rust")
*/
type?: string;
/**
* Modo de salida: "content", "files_with_matches", o "count"
*/
output_mode?: 'content' | 'files_with_matches' | 'count';
/**
* Búsqueda insensible a mayúsculas
*/
'-i'?: boolean;
/**
* Mostrar números de línea (para modo de contenido)
*/
'-n'?: boolean;
/**
* Líneas a mostrar antes de cada coincidencia
*/
'-B'?: number;
/**
* Líneas a mostrar después de cada coincidencia
*/
'-A'?: number;
/**
* Líneas a mostrar antes y después de cada coincidencia
*/
'-C'?: number;
/**
* Limitar salida a las primeras N líneas/entradas
*/
head_limit?: number;
/**
* Habilitar modo multilínea
*/
multiline?: boolean;
}Herramienta de búsqueda poderosa construida sobre ripgrep con soporte de expresiones regulares.
Nombre de herramienta: KillBash
interface KillShellInput {
/**
* El ID del shell en segundo plano a matar
*/
shell_id: string;
}Mata un shell bash en segundo plano en ejecución por su ID.
Nombre de herramienta: NotebookEdit
interface NotebookEditInput {
/**
* La ruta absoluta al archivo del cuaderno Jupyter
*/
notebook_path: string;
/**
* El ID de la celda a editar
*/
cell_id?: string;
/**
* La nueva fuente para la celda
*/
new_source: string;
/**
* El tipo de la celda (código o markdown)
*/
cell_type?: 'code' | 'markdown';
/**
* El tipo de edición (reemplazar, insertar, eliminar)
*/
edit_mode?: 'replace' | 'insert' | 'delete';
}Edita celdas en archivos de cuadernos Jupyter.
Nombre de herramienta: WebFetch
interface WebFetchInput {
/**
* La URL de la que obtener contenido
*/
url: string;
/**
* El mensaje a ejecutar en el contenido obtenido
*/
prompt: string;
}Obtiene contenido de una URL y lo procesa con un modelo de IA.
Nombre de herramienta: WebSearch
interface WebSearchInput {
/**
* La consulta de búsqueda a usar
*/
query: string;
/**
* Solo incluir resultados de estos dominios
*/
allowed_domains?: string[];
/**
* Nunca incluir resultados de estos dominios
*/
blocked_domains?: string[];
}Busca en la web y retorna resultados formateados.
Nombre de herramienta: TodoWrite
interface TodoWriteInput {
/**
* La lista de tareas actualizada
*/
todos: Array<{
/**
* La descripción de la tarea
*/
content: string;
/**
* El estado de la tarea
*/
status: 'pending' | 'in_progress' | 'completed';
/**
* Forma activa de la descripción de la tarea
*/
activeForm: string;
}>;
}Crea y gestiona una lista de tareas estructurada para rastrear el progreso.
Nombre de herramienta: ExitPlanMode
interface ExitPlanModeInput {
/**
* El plan a ejecutar por el usuario para aprobación
*/
plan: string;
}Sale del modo de planificación e solicita al usuario que apruebe el plan.
Nombre de herramienta: ListMcpResources
interface ListMcpResourcesInput {
/**
* Nombre de servidor opcional para filtrar recursos por
*/
server?: string;
}Lista recursos MCP disponibles de servidores conectados.
Nombre de herramienta: ReadMcpResource
interface ReadMcpResourceInput {
/**
* El nombre del servidor MCP
*/
server: string;
/**
* El URI del recurso a leer
*/
uri: string;
}Lee un recurso MCP específico de un servidor.
Documentación de esquemas de salida para todas las herramientas integradas de Claude Code. Estos tipos representan los datos de respuesta reales retornados por cada herramienta.
ToolOutputNota: Este es un tipo de solo documentación para claridad. Representa la unión de todos los tipos de salida de herramienta.
type ToolOutput =
| TaskOutput
| AskUserQuestionOutput
| BashOutput
| BashOutputToolOutput
| EditOutput
| ReadOutput
| WriteOutput
| GlobOutput
| GrepOutput
| KillBashOutput
| NotebookEditOutput
| WebFetchOutput
| WebSearchOutput
| TodoWriteOutput
| ExitPlanModeOutput
| ListMcpResourcesOutput
| ReadMcpResourceOutput;Nombre de herramienta: Task
interface TaskOutput {
/**
* Mensaje de resultado final del suagente
*/
result: string;
/**
* Estadísticas de uso de tokens
*/
usage?: {
input_tokens: number;
output_tokens: number;
cache_creation_input_tokens?: number;
cache_read_input_tokens?: number;
};
/**
* Costo total en USD
*/
total_cost_usd?: number;
/**
* Duración de ejecución en milisegundos
*/
duration_ms?: number;
}Retorna el resultado final del suagente después de completar la tarea delegada.
Nombre de herramienta: AskUserQuestion
interface AskUserQuestionOutput {
/**
* Las preguntas que fueron hechas
*/
questions: Array<{
question: string;
header: string;
options: Array<{
label: string;
description: string;
}>;
multiSelect: boolean;
}>;
/**
* Las respuestas proporcionadas por el usuario.
* Mapea texto de pregunta a cadena de respuesta.
* Las respuestas de selección múltiple están separadas por comas.
*/
answers: Record<string, string>;
}Retorna las preguntas hechas y las respuestas del usuario.
Nombre de herramienta: Bash
interface BashOutput {
/**
* Salida combinada de stdout y stderr
*/
output: string;
/**
* Código de salida del comando
*/
exitCode: number;
/**
* Si el comando fue matado debido a tiempo de espera
*/
killed?: boolean;
/**
* ID de shell para procesos en segundo plano
*/
shellId?: string;
}Retorna salida de comando con estado de salida. Los comandos en segundo plano retornan inmediatamente con un shellId.
Nombre de herramienta: BashOutput
interface BashOutputToolOutput {
/**
* Nueva salida desde la última verificación
*/
output: string;
/**
* Estado actual del shell
*/
status: 'running' | 'completed' | 'failed';
/**
* Código de salida (cuando se completa)
*/
exitCode?: number;
}Retorna salida incremental de shells en segundo plano.
Nombre de herramienta: Edit
interface EditOutput {
/**
* Mensaje de confirmación
*/
message: string;
/**
* Número de reemplazos realizados
*/
replacements: number;
/**
* Ruta de archivo que fue editada
*/
file_path: string;
}Retorna confirmación de ediciones exitosas con recuento de reemplazos.
Nombre de la herramienta: Read
type ReadOutput =
| TextFileOutput
| ImageFileOutput
| PDFFileOutput
| NotebookFileOutput;
interface TextFileOutput {
/**
* Contenido del archivo con números de línea
*/
content: string;
/**
* Número total de líneas en el archivo
*/
total_lines: number;
/**
* Líneas realmente devueltas
*/
lines_returned: number;
}
interface ImageFileOutput {
/**
* Datos de imagen codificados en Base64
*/
image: string;
/**
* Tipo MIME de la imagen
*/
mime_type: string;
/**
* Tamaño del archivo en bytes
*/
file_size: number;
}
interface PDFFileOutput {
/**
* Matriz de contenidos de página
*/
pages: Array<{
page_number: number;
text?: string;
images?: Array<{
image: string;
mime_type: string;
}>;
}>;
/**
* Número total de páginas
*/
total_pages: number;
}
interface NotebookFileOutput {
/**
* Celdas del cuaderno Jupyter
*/
cells: Array<{
cell_type: 'code' | 'markdown';
source: string;
outputs?: any[];
execution_count?: number;
}>;
/**
* Metadatos del cuaderno
*/
metadata?: Record<string, any>;
}Devuelve el contenido del archivo en el formato apropiado para el tipo de archivo.
Nombre de la herramienta: Write
interface WriteOutput {
/**
* Mensaje de éxito
*/
message: string;
/**
* Número de bytes escritos
*/
bytes_written: number;
/**
* Ruta del archivo que fue escrito
*/
file_path: string;
}Devuelve confirmación después de escribir exitosamente el archivo.
Nombre de la herramienta: Glob
interface GlobOutput {
/**
* Matriz de rutas de archivo coincidentes
*/
matches: string[];
/**
* Número de coincidencias encontradas
*/
count: number;
/**
* Directorio de búsqueda utilizado
*/
search_path: string;
}Devuelve rutas de archivo que coinciden con el patrón glob, ordenadas por tiempo de modificación.
Nombre de la herramienta: Grep
type GrepOutput =
| GrepContentOutput
| GrepFilesOutput
| GrepCountOutput;
interface GrepContentOutput {
/**
* Líneas coincidentes con contexto
*/
matches: Array<{
file: string;
line_number?: number;
line: string;
before_context?: string[];
after_context?: string[];
}>;
/**
* Número total de coincidencias
*/
total_matches: number;
}
interface GrepFilesOutput {
/**
* Archivos que contienen coincidencias
*/
files: string[];
/**
* Número de archivos con coincidencias
*/
count: number;
}
interface GrepCountOutput {
/**
* Conteos de coincidencias por archivo
*/
counts: Array<{
file: string;
count: number;
}>;
/**
* Total de coincidencias en todos los archivos
*/
total: number;
}Devuelve resultados de búsqueda en el formato especificado por output_mode.
Nombre de la herramienta: KillBash
interface KillBashOutput {
/**
* Mensaje de éxito
*/
message: string;
/**
* ID del shell terminado
*/
shell_id: string;
}Devuelve confirmación después de terminar el shell de fondo.
Nombre de la herramienta: NotebookEdit
interface NotebookEditOutput {
/**
* Mensaje de éxito
*/
message: string;
/**
* Tipo de edición realizada
*/
edit_type: 'replaced' | 'inserted' | 'deleted';
/**
* ID de celda que fue afectada
*/
cell_id?: string;
/**
* Total de celdas en el cuaderno después de la edición
*/
total_cells: number;
}Devuelve confirmación después de modificar el cuaderno Jupyter.
Nombre de la herramienta: WebFetch
interface WebFetchOutput {
/**
* Respuesta del modelo de IA al prompt
*/
response: string;
/**
* URL que fue obtenida
*/
url: string;
/**
* URL final después de redirecciones
*/
final_url?: string;
/**
* Código de estado HTTP
*/
status_code?: number;
}Devuelve el análisis de la IA del contenido web obtenido.
Nombre de la herramienta: WebSearch
interface WebSearchOutput {
/**
* Resultados de búsqueda
*/
results: Array<{
title: string;
url: string;
snippet: string;
/**
* Metadatos adicionales si están disponibles
*/
metadata?: Record<string, any>;
}>;
/**
* Número total de resultados
*/
total_results: number;
/**
* La consulta que fue buscada
*/
query: string;
}Devuelve resultados de búsqueda formateados de la web.
Nombre de la herramienta: TodoWrite
interface TodoWriteOutput {
/**
* Mensaje de éxito
*/
message: string;
/**
* Estadísticas actuales de tareas pendientes
*/
stats: {
total: number;
pending: number;
in_progress: number;
completed: number;
};
}Devuelve confirmación con estadísticas actuales de tareas.
Nombre de la herramienta: ExitPlanMode
interface ExitPlanModeOutput {
/**
* Mensaje de confirmación
*/
message: string;
/**
* Si el usuario aprobó el plan
*/
approved?: boolean;
}Devuelve confirmación después de salir del modo de plan.
Nombre de la herramienta: ListMcpResources
interface ListMcpResourcesOutput {
/**
* Recursos disponibles
*/
resources: Array<{
uri: string;
name: string;
description?: string;
mimeType?: string;
server: string;
}>;
/**
* Número total de recursos
*/
total: number;
}Devuelve lista de recursos MCP disponibles.
Nombre de la herramienta: ReadMcpResource
interface ReadMcpResourceOutput {
/**
* Contenidos del recurso
*/
contents: Array<{
uri: string;
mimeType?: string;
text?: string;
blob?: string;
}>;
/**
* Servidor que proporcionó el recurso
*/
server: string;
}Devuelve el contenido del recurso MCP solicitado.
PermissionUpdateOperaciones para actualizar permisos.
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' // Configuración global del usuario
| 'projectSettings' // Configuración del proyecto por directorio
| 'localSettings' // Configuración local ignorada por Git
| 'session' // Solo sesión actualPermissionRuleValuetype PermissionRuleValue = {
toolName: string;
ruleContent?: string;
}ApiKeySourcetype ApiKeySource = 'user' | 'project' | 'org' | 'temporary';SdkBetaCaracterísticas beta disponibles que se pueden habilitar a través de la opción betas. Consulte Encabezados beta para obtener más información.
type SdkBeta = 'context-1m-2025-08-07';| Valor | Descripción | Modelos Compatibles |
|---|---|---|
'context-1m-2025-08-07' | Habilita la ventana de contexto de 1 millón de tokens | Claude Sonnet 4, Claude Sonnet 4.5 |
SlashCommandInformación sobre un comando de barra disponible.
type SlashCommand = {
name: string;
description: string;
argumentHint: string;
}ModelInfoInformación sobre un modelo disponible.
type ModelInfo = {
value: string;
displayName: string;
description: string;
}McpServerStatusEstado de un servidor MCP conectado.
type McpServerStatus = {
name: string;
status: 'connected' | 'failed' | 'needs-auth' | 'pending';
serverInfo?: {
name: string;
version: string;
};
}AccountInfoInformación de cuenta para el usuario autenticado.
type AccountInfo = {
email?: string;
organization?: string;
subscriptionType?: string;
tokenSource?: string;
apiKeySource?: string;
}ModelUsageEstadísticas de uso por modelo devueltas en mensajes de resultado.
type ModelUsage = {
inputTokens: number;
outputTokens: number;
cacheReadInputTokens: number;
cacheCreationInputTokens: number;
webSearchRequests: number;
costUSD: number;
contextWindow: number;
}ConfigScopetype ConfigScope = 'local' | 'user' | 'project';NonNullableUsageUna versión de Usage con todos los campos anulables hechos no anulables.
type NonNullableUsage = {
[K in keyof Usage]: NonNullable<Usage[K]>;
}UsageEstadísticas de uso de tokens (de @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;
}CallToolResultTipo de resultado de herramienta MCP (de @modelcontextprotocol/sdk/types.js).
type CallToolResult = {
content: Array<{
type: 'text' | 'image' | 'resource';
// Los campos adicionales varían según el tipo
}>;
isError?: boolean;
}AbortErrorClase de error personalizada para operaciones de aborto.
class AbortError extends Error {}SandboxSettingsConfiguración para el comportamiento del sandbox. Utilice esto para habilitar el sandboxing de comandos y configurar restricciones de red mediante programación.
type SandboxSettings = {
enabled?: boolean;
autoAllowBashIfSandboxed?: boolean;
excludedCommands?: string[];
allowUnsandboxedCommands?: boolean;
network?: NetworkSandboxSettings;
ignoreViolations?: SandboxIgnoreViolations;
enableWeakerNestedSandbox?: boolean;
}| Propiedad | Tipo | Predeterminado | Descripción |
|---|---|---|---|
enabled | boolean | false | Habilitar modo sandbox para ejecución de comandos |
autoAllowBashIfSandboxed | boolean | false | Aprobar automáticamente comandos bash cuando el sandbox está habilitado |
excludedCommands | string[] | [] | Comandos que siempre omiten restricciones de sandbox (por ejemplo, ['docker']). Estos se ejecutan sin sandbox automáticamente sin intervención del modelo |
Las restricciones de acceso al sistema de archivos y red NO se configuran a través de la configuración de sandbox. En su lugar, se derivan de reglas de permiso:
Utilice la configuración de sandbox para el sandboxing de ejecución de comandos y reglas de permiso para el control de acceso al sistema de archivos y red.
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"]
}
}
}
});NetworkSandboxSettingsConfiguración específica de red para modo sandbox.
type NetworkSandboxSettings = {
allowLocalBinding?: boolean;
allowUnixSockets?: string[];
allowAllUnixSockets?: boolean;
httpProxyPort?: number;
socksProxyPort?: number;
}| Propiedad | Tipo | Predeterminado | Descripción |
|---|---|---|---|
allowLocalBinding | boolean | false | Permitir que los procesos se vinculen a puertos locales (por ejemplo, para servidores de desarrollo) |
allowUnixSockets | string[] | [] | Rutas de socket Unix que los procesos pueden acceder (por ejemplo, socket de Docker) |
allowAllUnixSockets | boolean | false | Permitir acceso a todos los sockets Unix |
SandboxIgnoreViolationsConfiguración para ignorar violaciones de sandbox específicas.
type SandboxIgnoreViolations = {
file?: string[];
network?: string[];
}| Propiedad | Tipo | Predeterminado | Descripción |
|---|---|---|---|
file | string[] | [] | Patrones de ruta de archivo para ignorar violaciones |
network | string[] | [] | Patrones de red para ignorar violaciones |
Cuando allowUnsandboxedCommands está habilitado, el modelo puede solicitar ejecutar comandos fuera del sandbox estableciendo dangerouslyDisableSandbox: true en la entrada de la herramienta. Estas solicitudes recurren al sistema de permisos existente, lo que significa que se invocará su controlador canUseTool, permitiéndole implementar lógica de autorización personalizada.
excludedCommands vs allowUnsandboxedCommands:
excludedCommands: Una lista estática de comandos que siempre omiten el sandbox automáticamente (por ejemplo, ['docker']). El modelo no tiene control sobre esto.allowUnsandboxedCommands: Permite que el modelo decida en tiempo de ejecución si solicitar ejecución sin sandbox estableciendo dangerouslyDisableSandbox: true en la entrada de la herramienta.import { query } from "@anthropic-ai/claude-agent-sdk";
const result = await query({
prompt: "Deploy my application",
options: {
sandbox: {
enabled: true,
allowUnsandboxedCommands: true // El modelo puede solicitar ejecución sin sandbox
},
permissionMode: "default",
canUseTool: async (tool, input) => {
// Verificar si el modelo está solicitando omitir el sandbox
if (tool === "Bash" && input.dangerouslyDisableSandbox) {
// El modelo quiere ejecutar este comando fuera del sandbox
console.log(`Unsandboxed command requested: ${input.command}`);
// Devolver true para permitir, false para denegar
return isCommandAuthorized(input.command);
}
return true;
}
}
});Este patrón le permite:
Los comandos que se ejecutan con dangerouslyDisableSandbox: true tienen acceso completo al sistema. Asegúrese de que su controlador canUseTool valide estas solicitudes cuidadosamente.
allowDangerouslySkipPermissions |
boolean |
false |
Habilitar omisión de permisos. Requerido al usar permissionMode: 'bypassPermissions' |
allowedTools | string[] | Todas las herramientas | Lista de nombres de herramientas permitidas |
betas | SdkBeta[] | [] | Habilitar características beta (por ejemplo, ['context-1m-2025-08-07']) |
canUseTool | CanUseTool | undefined | Función de permiso personalizada para el uso de herramientas |
continue | boolean | false | Continuar la conversación más reciente |
cwd | string | process.cwd() | Directorio de trabajo actual |
disallowedTools | string[] | [] | Lista de nombres de herramientas no permitidas |
enableFileCheckpointing | boolean | false | Habilitar seguimiento de cambios de archivos para rebobinar. Ver Punto de control de archivos |
env | Dict<string> | process.env | Variables de entorno |
executable | 'bun' | 'deno' | 'node' | Detectado automáticamente | Tiempo de ejecución de JavaScript a usar |
executableArgs | string[] | [] | Argumentos a pasar al ejecutable |
extraArgs | Record<string, string | null> | {} | Argumentos adicionales |
fallbackModel | string | undefined | Modelo a usar si el principal falla |
forkSession | boolean | false | Al reanudar con resume, bifurcar a un nuevo ID de sesión en lugar de continuar la sesión original |
hooks | Partial<Record<HookEvent, HookCallbackMatcher[]>> | {} | Devoluciones de llamada de gancho para eventos |
includePartialMessages | boolean | false | Incluir eventos de mensajes parciales |
maxBudgetUsd | number | undefined | Presupuesto máximo en USD para la consulta |
maxThinkingTokens | number | undefined | Tokens máximos para el proceso de pensamiento |
maxTurns | number | undefined | Turnos de conversación máximos |
mcpServers | Record<string, [McpServerConfig](#mcpserverconfig)> | {} | Configuraciones de servidor MCP |
model | string | Predeterminado de CLI | Modelo Claude a usar |
outputFormat | { type: 'json_schema', schema: JSONSchema } | undefined | Definir formato de salida para resultados del agente. Ver Salidas estructuradas para detalles |
pathToClaudeCodeExecutable | string | Usa ejecutable integrado | Ruta al ejecutable de Claude Code |
permissionMode | PermissionMode | 'default' | Modo de permiso para la sesión |
permissionPromptToolName | string | undefined | Nombre de herramienta MCP para solicitudes de permiso |
plugins | SdkPluginConfig[] | [] | Cargar complementos personalizados desde rutas locales. Ver Complementos para detalles |
resume | string | undefined | ID de sesión a reanudar |
resumeSessionAt | string | undefined | Reanudar sesión en un UUID de mensaje específico |
sandbox | SandboxSettings | undefined | Configurar comportamiento de sandbox programáticamente. Ver Configuración de sandbox para detalles |
settingSources | SettingSource[] | [] (sin configuración) | Controlar qué configuraciones basadas en sistema de archivos cargar. Cuando se omite, no se carga ninguna configuración. Nota: Debe incluir 'project' para cargar archivos CLAUDE.md |
stderr | (data: string) => void | undefined | Devolución de llamada para salida de stderr |
strictMcpConfig | boolean | false | Aplicar validación MCP estricta |
systemPrompt | string | { type: 'preset'; preset: 'claude_code'; append?: string } | undefined (mensaje vacío) | Configuración de mensaje del sistema. Pasar una cadena para mensaje personalizado, o { type: 'preset', preset: 'claude_code' } para usar el mensaje del sistema de Claude Code. Al usar la forma de objeto preestablecido, agregar append para extender el mensaje del sistema con instrucciones adicionales |
tools | string[] | { type: 'preset'; preset: 'claude_code' } | undefined | Configuración de herramientas. Pasar una matriz de nombres de herramientas o usar el preestablecido para obtener las herramientas predeterminadas de Claude Code |
supportedModels() |
| Retorna modelos disponibles con información de visualización |
mcpServerStatus() | Retorna estado de servidores MCP conectados |
accountInfo() | Retorna información de cuenta |
allowUnsandboxedCommands | boolean | false | Permitir que el modelo solicite ejecutar comandos fuera del sandbox. Cuando es true, el modelo puede establecer dangerouslyDisableSandbox en la entrada de la herramienta, que recurre al sistema de permisos |
network | NetworkSandboxSettings | undefined | Configuración de sandbox específica de red |
ignoreViolations | SandboxIgnoreViolations | undefined | Configurar qué violaciones de sandbox ignorar |
enableWeakerNestedSandbox | boolean | false | Habilitar un sandbox anidado más débil para compatibilidad |
httpProxyPortnumber |
undefined |
| Puerto proxy HTTP para solicitudes de red |
socksProxyPort | number | undefined | Puerto proxy SOCKS para solicitudes de red |