Saltar al contenido principal

Instalación

El SDK incluye un binario nativo de Claude Code para su plataforma como una dependencia opcional como @anthropic-ai/claude-agent-sdk-darwin-arm64. No necesita instalar Claude Code por separado. Si su gestor de paquetes omite las dependencias opcionales, el SDK lanza Native CLI binary for <platform> not found; en su lugar, establezca pathToClaudeCodeExecutable en un binario claude instalado por separado.

Compilar a un ejecutable único

Cuando compila su aplicación en un ejecutable de un solo archivo con bun build --compile, el SDK no puede resolver el binario CLI incluido en tiempo de ejecución. require.resolve no funciona dentro del sistema de archivos virtual $bunfs del ejecutable compilado, por lo que el SDK lanza Native CLI binary for <platform> not found. Para solucionar esto, incruste el binario de plataforma como un activo de archivo, extráigalo a una ruta real al inicio con extractFromBunfs(), y pase esa ruta a pathToClaudeCodeExecutable. El asistente extractFromBunfs() requiere @anthropic-ai/claude-agent-sdk v0.3.144 o posterior. El ejemplo a continuación se compila para macOS en Apple Silicon:
extractFromBunfs() copia el binario incrustado fuera del sistema de archivos virtual del ejecutable compilado a un directorio temporal por usuario y devuelve la ruta real. Fuera de un ejecutable compilado, devuelve la ruta de entrada sin cambios, por lo que el mismo código se ejecuta en desarrollo sin modificación. Cada ejecutable compilado incrusta el binario de una única plataforma. Haga coincidir el paquete de plataforma en la importación con su --target:
  • Para compilación cruzada, instale el paquete de plataforma que no coincida, por ejemplo npm install @anthropic-ai/claude-agent-sdk-linux-x64 --force.
  • En Windows, la subruta del binario es claude.exe, por ejemplo @anthropic-ai/claude-agent-sdk-win32-x64/claude.exe.

Funciones

query()

La función principal para interactuar con Claude Code. Crea un generador asincrónico que transmite mensajes a medida que llegan.

Parámetros

Devuelve

Devuelve un objeto Query que extiende AsyncGenerator<SDKMessage, void> con métodos adicionales.

startup()

Precalienta el subproceso CLI iniciándolo y completando el protocolo de inicialización antes de que un mensaje esté disponible. El identificador WarmQuery devuelto acepta un mensaje más tarde y lo escribe en un proceso ya listo, por lo que la primera llamada a query() se resuelve sin pagar el costo de generación e inicialización del subproceso en línea.

Parámetros

Devuelve

Devuelve una Promise<WarmQuery> que se resuelve una vez que el subproceso se ha generado y ha completado su protocolo de inicialización.

Ejemplo

Llame a startup() temprano, por ejemplo al inicio de la aplicación, luego llame a .query() en el identificador devuelto una vez que un mensaje esté listo. Esto mueve la generación del subproceso e inicialización fuera de la ruta crítica.

tool()

Crea una definición de herramienta MCP segura de tipos para usar con servidores MCP del SDK.

Parámetros

ToolAnnotations

Re-exportado desde @modelcontextprotocol/sdk/types.js. Todos los campos son sugerencias opcionales; los clientes no deben confiar en ellos para decisiones de seguridad.

createSdkMcpServer()

Crea una instancia de servidor MCP que se ejecuta en el mismo proceso que su aplicación.

Parámetros

listSessions()

Descubre y enumera sesiones pasadas con metadatos ligeros. Filtre por directorio de proyecto o enumere sesiones en todos los proyectos.

Parámetros

Tipo de retorno: SDKSessionInfo

Ejemplo

Imprima las 10 sesiones más recientes para un proyecto. Los resultados se ordenan por lastModified descendente, por lo que el primer elemento es el más nuevo. Omita dir para buscar en todos los proyectos.

getSessionMessages()

Lee mensajes de usuario y asistente de una transcripción de sesión pasada.

Parámetros

Tipo de retorno: SessionMessage

Ejemplo

getSessionInfo()

Lee metadatos para una única sesión por ID sin escanear el directorio de proyecto completo.

Parámetros

Devuelve SDKSessionInfo, o undefined si la sesión no se encuentra.

renameSession()

Cambia el nombre de una sesión añadiendo una entrada de título personalizado. Las llamadas repetidas son seguras; el título más reciente gana.

Parámetros

tagSession()

Etiqueta una sesión. Pase null para borrar la etiqueta. Las llamadas repetidas son seguras; la etiqueta más reciente gana.

Parámetros

resolveSettings()

Resuelve la configuración efectiva de Claude Code para un directorio determinado utilizando el mismo motor de fusión que la CLI, sin generar la CLI de Claude. Úselo para inspeccionar qué configuración vería una llamada a query() antes de invocar una.
Esta función es alfa y su API puede cambiar antes de la estabilización. Lee fuentes MDM, incluidas plist de macOS y HKLM/HKCU de Windows, para paridad con el inicio de la CLI, pero no ejecuta el subproceso policyHelper configurado por el administrador. El campo permissions.defaultMode se devuelve tal como está de todos los niveles, incluida la configuración del proyecto. El filtro de confianza que la CLI aplica antes de honrar los modos de permiso escalonados no se aplica.

Parámetros

resolveSettings() acepta un único objeto de opciones. Todos los campos son opcionales.

Tipo de retorno: ResolvedSettings

resolveSettings() devuelve un objeto que describe la configuración fusionada y la fuente que contribuyó a cada clave.

Ejemplo

El ejemplo a continuación resuelve la configuración para un directorio de proyecto e imprime la fuente que controla el período de limpieza.

Tipos

Options

Objeto de configuración para la función query().

Manejo de respuestas de API lentas o estancadas

El subproceso CLI lee varias variables de entorno que controlan los tiempos de espera de API y la detección de estancamiento. Páselas a través de la opción env:
  • API_TIMEOUT_MS: tiempo de espera por solicitud en el cliente de Anthropic, en milisegundos. Predeterminado 600000. Se aplica al bucle principal y a todos los subagentes.
  • CLAUDE_CODE_MAX_RETRIES: máximo de reintentos de API. Predeterminado 10, limitado a 15. Cada reintento obtiene su propia ventana API_TIMEOUT_MS, por lo que el tiempo de pared en el peor caso es aproximadamente API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1) más retroceso. Para ejecuciones desatendidas que necesitan esperar a través de interrupciones más largas, establezca CLAUDE_CODE_RETRY_WATCHDOG=1: reintenta errores de capacidad indefinidamente, y a partir de Claude Code v2.1.199 eleva el predeterminado para otros errores transitorios a 300 y elimina el límite en esta variable.
  • CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: perro guardián de estancamiento para subagentes lanzados con run_in_background. Predeterminado 600000. Se reinicia en cada evento de transmisión; en caso de estancamiento, aborta el subagente, marca la tarea como fallida y expone el error al padre con cualquier resultado parcial. No se aplica a subagentes síncronos.
  • CLAUDE_ENABLE_STREAM_WATCHDOG con CLAUDE_STREAM_IDLE_TIMEOUT_MS: aborta la solicitud cuando los encabezados han llegado pero el cuerpo de respuesta deja de transmitirse. El perro guardián está activado de forma predeterminada para todos los proveedores; establezca CLAUDE_ENABLE_STREAM_WATCHDOG=0 para desactivarlo. CLAUDE_STREAM_IDLE_TIMEOUT_MS tiene un valor predeterminado de 300000 y se fija a ese mínimo. La solicitud abortada pasa por la ruta de reintento normal.

Objeto Query

Interfaz devuelta por la función query().

Métodos

applyFlagSettings()

Cambia settings en una sesión en ejecución sin reiniciar la consulta. Úselo cuando una configuración que no tiene un setter dedicado necesite cambiar a mitad de sesión, como restringir permissions después de que el agente lea entrada no confiable. setModel() y setPermissionMode() son setters dedicados para esas dos claves; applyFlagSettings() es la forma general que acepta cualquier subconjunto de las claves de configuración, y pasar model aquí se comporta igual que setModel(). Solo algunas claves tienen efecto a mitad de sesión:
  • Aplicadas en el siguiente turno: model, effortLevel, ultracode, permissions, hooks, skillOverrides, fastMode, agent. Cambiar agent también aplica la anulación de modelo, hooks y mensaje del sistema de ese agente en el siguiente turno.
  • Sin efecto a mitad de sesión: las opciones de mensaje del sistema. Estos se resuelven una vez al inicio, por lo que la sesión en ejecución mantiene el valor original aunque la llamada tenga éxito. Para cambiarlos, inicie una nueva sesión.
effortLevel acepta un nombre de nivel de esfuerzo. También acepta "ultracode", que ejecuta la sesión a esfuerzo xhigh y activa ultracode. El tipo Settings declara effortLevel sin ese valor, así que pase el equivalente { ultracode: true } en TypeScript. El valor ultracode requiere Claude Code v2.1.203 o posterior y solo es aceptado por applyFlagSettings(), no por la clave effortLevel en un archivo de configuración. Los valores se escriben en la capa de configuración de marca, la misma capa que la opción settings en línea de query() completa al inicio. La configuración de marca se encuentra cerca de la parte superior del orden de precedencia de configuración: anulan la configuración de usuario, proyecto y local, y solo la configuración de política administrada puede anularlas. Esta es la misma capa que la sección de precedencia en la página llama opciones programáticas. Las llamadas sucesivas fusionan superficialmente las claves de nivel superior. Una segunda llamada con { permissions: {...} } reemplaza el objeto permissions completo de la llamada anterior en lugar de fusionarse profundamente en él. Para borrar una clave de la capa de marca y recurrir a fuentes de menor precedencia, pase null para esa clave. Pasar undefined no tiene efecto porque la serialización JSON lo elimina. Solo disponible en modo de entrada de transmisión, la misma restricción que setModel() y setPermissionMode(). El ejemplo a continuación cambia el modelo activo a mitad de sesión, luego borra la anulación para que el modelo recurra a lo que especifique la configuración del usuario o proyecto.
applyFlagSettings() es solo TypeScript. El SDK de Python no expone un método equivalente.

WarmQuery

Identificador devuelto por startup(). El subproceso ya está generado e inicializado, por lo que llamar a query() en este identificador escribe el mensaje directamente en un proceso listo sin latencia de inicio.

Métodos

WarmQuery implementa AsyncDisposable, por lo que se puede usar con await using para limpieza automática.

SDKControlInitializeResponse

Tipo de retorno de initializationResult(). Contiene datos de inicialización de sesión.
Cuando un cliente envía initialize a una sesión que ya se está ejecutando, el contenedor de respuesta de control también lleva una matriz pending_permission_requests opcional. El campo está en el contenedor de respuesta en sí, no en la carga SDKControlInitializeResponse anterior. Cada entrada es un mensaje control_request completo con la misma forma { type: "control_request", request_id, request } que la sesión transmite para solicitudes de permiso mientras se ejecuta. Estas son solicitudes que se emitieron antes de que el cliente se conectara y aún están esperando una respuesta. El SDK lee la matriz para usted y envía cada entrada a su devolución de llamada canUseTool, el mismo reenvío que reinitialize() activa después de una brecha de transporte. Maneje IDs de solicitud repetidos de forma idempotente, porque una entrada puede repetir una solicitud que la devolución de llamada ya recibió antes de que se cayera la conexión.

SDKControlInterruptResponse

El recibo de interrupción: el valor que interrupt() se resuelve con en una CLI que anuncia la capacidad interrupt_receipt_v1 en SDKSystemMessage.capabilities. Requiere Claude Code v2.1.205 o posterior. Las CLIs anteriores responden a la interrupción con una carga de éxito vacía, por lo que interrupt() se resuelve a undefined.
still_queued enumera los UUIDs de los mensajes de usuario que sobreviven a la interrupción: mensajes aún en la cola, más cualquier lote ya dequeued para el siguiente turno pero aún no alcanzable por la anulación. Cada uno se ejecuta como su propio turno después de la interrupción a menos que lo cancele primero. Use el recibo para decidir si debe reenviar algo; reenviar un mensaje que ya está listado produce un turno duplicado. Interprete la lista con estas advertencias:
  • Solo los mensajes que fueron encolados con un UUID aparecen. Una matriz vacía no significa que nada más se ejecutará.
  • Solo se enumeran los mensajes del hilo principal. Los mensajes dirigidos a un subagente están fuera del alcance.
  • La lista puede incluir UUIDs que su cliente nunca envió, como activadores de tareas programadas. Ignore los UUIDs que no reconozca en lugar de tratarlos como un error.
El recibo es una instantánea tomada en el momento en que se procesa la interrupción, y en una interrupción limpia llega antes del SDKResultMessage del turno interrumpido. Lea el recibo en lugar de inspeccionar la cola después de ese resultado: el bucle inicia el siguiente turno en cola inmediatamente, por lo que la cola que inspecciona después del resultado ya ha cambiado.

AgentDefinition

Configuración para un subagente definido mediante programación.

AgentMcpServerSpec

Especifica servidores MCP disponibles para un subagente. Puede ser un nombre de servidor (cadena que hace referencia a un servidor de la configuración mcpServers del padre) o una configuración de servidor en línea que mapea nombres de servidor a configuraciones.
Donde McpServerConfigForProcessTransport es McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig.

SettingSource

Controla qué fuentes de configuración basadas en el sistema de archivos carga el SDK.

Comportamiento predeterminado

Cuando settingSources se omite o es undefined, query() carga la misma configuración del sistema de archivos que la CLI de Claude Code: usuario, proyecto y local. La configuración de política administrada se carga en todos los casos; la configuración administrada por servidor se obtiene cuando la sesión se autentica con una credencial de organización en una configuración elegible. Vea What settingSources does not control para entradas que se leen independientemente de esta opción, y cómo deshabilitarlas.

Por qué usar settingSources

Deshabilitar configuración del sistema de archivos:
Cargue toda la configuración del sistema de archivos explícitamente:
Cargue solo fuentes de configuración específicas:
Entornos de prueba e IC:
Aplicaciones solo SDK:
Cargando instrucciones de proyecto CLAUDE.md:

Precedencia de configuración

Cuando se cargan múltiples fuentes, la configuración se fusiona con esta precedencia (mayor a menor):
  1. Configuración local (.claude/settings.local.json)
  2. Configuración del proyecto (.claude/settings.json)
  3. Configuración del usuario (~/.claude/settings.json)
Las opciones programáticas como agents, allowedTools y settings anulan la configuración del sistema de archivos de usuario, proyecto y local. La configuración de política administrada tiene precedencia sobre las opciones programáticas.

PermissionMode

CanUseTool

Tipo de función de permiso personalizado para controlar el uso de herramientas. La función es el reemplazo del SDK para el mensaje de permiso interactivo: se invoca solo cuando el flujo de evaluación de permisos se resuelve en un mensaje. Las llamadas de herramientas ya aprobadas por una entrada allowedTools, una regla de permiso de configuración, o el modo de permiso, como acceptEdits o bypassPermissions, nunca la invocan. Para controlar cada llamada de herramienta, use un hook PreToolUse en su lugar. AskUserQuestion, herramientas MCP marcadas requiresUserInteraction, y herramientas de conector que su organización estableció en ask la alcanzan incluso cuando una regla de permiso coincide. En modo dontAsk estas llamadas se niegan en su lugar, sin invocarla.
La devolución de llamada normalmente resuelve la solicitud devolviendo un PermissionResult, que el SDK escribe de vuelta sobre su transporte como control_response. Devuelva null solo cuando su aplicación ya haya enviado control_response para esta solicitud sobre su propio canal, repitiendo requestId; el SDK luego omite escribir la respuesta a su transporte. Devolver null en cualquier otro caso deja la llamada de herramienta bloqueada indefinidamente, porque nunca se envía control_response y los mensajes de permiso no tienen tiempo de espera. La opción requestId y el valor de retorno null requieren Claude Code v2.1.199 o posterior.

PermissionResult

Resultado de una verificación de permiso.

ToolConfig

Configuración para el comportamiento de herramientas integradas.

McpServerConfig

Configuración para servidores MCP.

McpStdioServerConfig

McpSSEServerConfig

McpHttpServerConfig

McpSdkServerConfigWithInstance

McpClaudeAIProxyServerConfig

SdkPluginConfig

Configuración para cargar plugins en el SDK.
Ejemplo:
Para información completa sobre la creación y uso de plugins, vea Plugins.

Tipos de Mensaje

SDKMessage

Tipo de unión de todos los mensajes posibles devueltos por la consulta.

SDKAssistantMessage

Mensaje de respuesta del asistente.
El campo message es un BetaMessage del SDK de Anthropic. Incluye campos como id, content, model, stop_reason y usage. SDKAssistantMessageError es uno de: 'authentication_failed', 'oauth_org_not_allowed', 'billing_error', 'rate_limit', 'overloaded', 'invalid_request', 'model_not_found', 'server_error', 'max_output_tokens', u 'unknown'. 'model_not_found' significa que el modelo seleccionado no existe o no está disponible para su cuenta o implementación. 'overloaded' significa que la API devolvió un 529 porque el servidor está a capacidad, a diferencia de 'rate_limit', que es un 429 contra su cuota.

SDKUserMessage

Mensaje de entrada del usuario.
Establezca shouldQuery en false para añadir el mensaje a la transcripción sin activar un turno del asistente. El mensaje se mantiene y se fusiona en el siguiente mensaje de usuario que sí activa un turno. Use esto para inyectar contexto, como la salida de un comando que ejecutó fuera de banda, sin gastar una llamada de modelo en él. En un mensaje que lleva un bloque tool_result, tool_use_result es el objeto de salida estructurada de la herramienta en lugar del texto enviado al modelo. Su forma depende de la herramienta nombrada por el bloque tool_use coincidente, por lo que el campo se escribe como unknown; las formas integradas se enumeran en Tipos de Salida de Herramienta. Para la herramienta Agent, tool_use_result es AgentOutput. En un resultado completed, content contiene el informe del subagente sin el ID del agente y el remolque de uso que Claude Code añade al texto tool_result, así que renderice desde tool_use_result en lugar de analizar ese texto.

SDKUserMessageReplay

Mensaje de usuario reproducido con UUID requerido.
Un turno de usuario inyectado desde fuera de la sesión, uno cuyo origin es peer o channel, llega a la transmisión como una reproducción ya sea que se entregó durante un turno activo o inició un nuevo turno mientras la sesión estaba inactiva. Antes de v2.1.207, un turno inyectado entregado mientras la sesión estaba inactiva no producía ningún mensaje en la transmisión y solo aparecía cuando volvía a leer la transcripción.

SDKResultMessage

Mensaje de resultado final.
Varios campos en el resultado llevan detalles de diagnóstico más allá de subtype:
  • api_error_status: el código de estado HTTP del error de API que terminó la conversación. Ausente o null cuando el turno terminó sin un error de API.
  • ttft_ms: tiempo hasta el primer token en milisegundos, medido cuando llega el primer mensaje completo del asistente. Presente solo en el brazo de éxito.
  • ttft_stream_ms: tiempo en milisegundos hasta el primer evento de transmisión message_start, cuando se abre la transmisión de respuesta. Menor que ttft_ms; la brecha entre los dos es el tiempo dedicado a transmitir el primer mensaje. Presente solo en el brazo de éxito.
  • terminal_reason: por qué terminó el bucle. Uno de "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", o "turn_setup_failed".
  • fast_mode_state: uno de "on", "off", o "cooldown".
El campo origin reenvía el SDKMessageOrigin del mensaje de usuario que activó este resultado. Cuando una tarea de fondo finaliza y el SDK inyecta un turno de seguimiento sintético, el SDKResultMessage resultante lleva origin: { kind: "task-notification" }. Verifique este campo para distinguir los resultados que responden a su solicitud de los resultados emitidos para seguimientos de tareas de fondo, para que pueda enrutar o suprimir estos últimos. El campo está ausente para los resultados emitidos antes de cualquier turno de usuario, como errores de inicio. Cuando un hook PreToolUse devuelve permissionDecision: "defer", el resultado tiene stop_reason: "tool_deferred" y deferred_tool_use lleva el id, name e input de la herramienta pendiente. Lea este campo para mostrar la solicitud en su propia interfaz de usuario, luego reanude con el mismo session_id para continuar. Consulte Diferir una llamada de herramienta para más tarde para el viaje completo.

SDKSystemMessage

Mensaje de inicialización del sistema.
El array capabilities nombra los comportamientos de protocolo que esta CLI implementa, para que pueda detectar características en lugar de comparar cadenas claude_code_version. Es un conjunto abierto: ignore los valores que no reconozca y verifique la capacidad específica cuyo comportamiento depende. El campo requiere Claude Code v2.1.205 o posterior y está ausente en CLI anteriores.

SDKPartialAssistantMessage

Mensaje parcial de transmisión (solo cuando includePartialMessages es true). El campo parent_tool_use_id siempre es null: los eventos de transmisión se emiten solo para la sesión principal. Para la atribución de subagentes, use mensajes completos, que llevan parent_tool_use_id, o habilite forwardSubagentText para recibir texto y pensamiento de subagentes como mensajes completos.

SDKCompactBoundaryMessage

Mensaje que indica un límite de compactación de conversación.

SDKInformationalMessage

Pancarta de texto genérica emitida por el bucle. Lleva líneas de estado sin error, retroalimentación de hooks como la razón de bloqueo de un hook UserPromptSubmit, y salida de comandos. Renderice content como texto sin formato en el level dado.

SDKWorkerShuttingDownMessage

Se emite en el desmontaje elegante del worker para que los clientes remotos puedan mostrar por qué el worker desapareció en lugar de esperar el tiempo de espera del latido. El reason es una cadena corta en snake_case establecida por la CLI del host, como "host_exit" o "remote_control_disabled". Actúe sobre esto solo cuando transmita en vivo. Una sesión reanudada reproduce instancias pasadas de este mensaje, así que ignórelas en ese caso.

SDKPluginInstallMessage

Evento de progreso de instalación de plugin. Se emite cuando CLAUDE_CODE_SYNC_PLUGIN_INSTALL está establecido, para que su aplicación Agent SDK pueda rastrear la instalación de plugins del mercado antes del primer turno. Los estados started y completed cierran la instalación general. Los estados installed y failed reportan mercados individuales e incluyen name.

SDKPermissionDeniedMessage

Evento de transmisión emitido cuando el sistema de permisos deniega automáticamente una llamada de herramienta sin un aviso interactivo. Úselo para renderizar la denegación en su interfaz de usuario a medida que sucede, en lugar de solo observar el resultado de la herramienta is_error que sigue. La ruta de solicitud interactiva llega a su aplicación por separado a través de la devolución de llamada canUseTool. Las denegaciones emitidas por un hook PreToolUse no se reportan a través de este evento. Este evento requiere Claude Code v2.1.136 o posterior.

SDKPermissionDenial

Información sobre un uso de herramienta denegado.

SDKMessageOrigin

Procedencia de un mensaje con rol de usuario. Esto aparece como origin en SDKUserMessage y se reenvía al SDKResultMessage correspondiente para que pueda saber qué activó un turno determinado.

Tipos de Hook

Para una guía completa sobre el uso de hooks con ejemplos y patrones comunes, vea la guía de Hooks.

HookEvent

Eventos de hook disponibles.

HookCallback

Tipo de función de devolución de llamada de hook.

HookCallbackMatcher

Configuración de hook con coincidencia opcional.

HookInput

Tipo de unión de todos los tipos de entrada de hook.

BaseHookInput

Interfaz base que todos los tipos de entrada de hook extienden.
El campo prompt_id es un UUID que identifica el mensaje del usuario que se está procesando actualmente. Coincide con el atributo prompt.id en eventos de OpenTelemetry y está ausente hasta la primera entrada del usuario. Requiere Claude Code v2.1.196 o posterior.

PreToolUseHookInput

PostToolUseHookInput

PostToolUseFailureHookInput

PostToolBatchHookInput

Se activa una vez después de que cada llamada de herramienta en un lote se haya resuelto, antes de la siguiente solicitud del modelo. tool_response lleva el contenido serializado de tool_result que el modelo ve; la forma difiere del objeto Output estructurado de PostToolUseHookInput.

NotificationHookInput

UserPromptSubmitHookInput

SessionStartHookInput

SessionEndHookInput

StopHookInput

SubagentStartHookInput

SubagentStopHookInput

PreCompactHookInput

PermissionRequestHookInput

SetupHookInput

TeammateIdleHookInput

TaskCompletedHookInput

ConfigChangeHookInput

WorktreeCreateHookInput

WorktreeRemoveHookInput

MessageDisplayHookInput

HookJSONOutput

Valor de retorno de hook.

AsyncHookJSONOutput

SyncHookJSONOutput

Tipos de Entrada de Herramienta

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 de tipos.

ToolInputSchemas

Unión de todos los tipos de entrada de herramienta, exportados desde @anthropic-ai/claude-agent-sdk.

Agent

Nombre de herramienta: Agent (anteriormente Task, que aún se acepta como alias)
Lanza un nuevo agente para manejar tareas complejas de múltiples pasos de forma autónoma.

AskUserQuestion

Nombre de herramienta: AskUserQuestion
Hace preguntas aclaratorias al usuario durante la ejecución. Vea Manejar aprobaciones e entrada del usuario para detalles de uso.

Bash

Nombre de herramienta: Bash
Ejecuta comandos bash en una sesión de shell persistente con tiempo de espera opcional y ejecución en segundo plano.

Monitor

Nombre de herramienta: Monitor
Ejecuta una fuente de fondo y entrega cada evento a Claude para que pueda reaccionar sin sondeo: command ejecuta un script y emite un evento por línea de stdout, y ws abre un WebSocket y emite un evento por marco de texto. Proporcione exactamente uno de command o ws. La fuente ws requiere Claude Code v2.1.195 o posterior. Establezca persistent: true para vigilancias de duración de sesión como colas de registro. Cuando Monitor ejecuta un comando, sigue las mismas reglas de permiso que Bash; una vigilancia de WebSocket solicita aprobación por separado. Vea la referencia de herramienta Monitor para comportamiento y disponibilidad de proveedor.

TaskOutput

Nombre de herramienta: TaskOutput
Recupera salida de una tarea de fondo en ejecución o completada.

Edit

Nombre de herramienta: Edit
Realiza reemplazos de cadena exactos en archivos.

Read

Nombre de herramienta: Read
Lee archivos del sistema de archivos local, incluyendo texto, imágenes, PDFs y cuadernos Jupyter. Use pages para rangos de páginas PDF (por ejemplo, "1-5").

Write

Nombre de herramienta: Write
Escribe un archivo en el sistema de archivos local, sobrescribiendo si existe.

Glob

Nombre de herramienta: Glob
Coincidencia de patrón de archivo rápida que funciona con cualquier tamaño de base de código.

Grep

Nombre de herramienta: Grep
Herramienta de búsqueda poderosa construida en ripgrep con soporte de expresiones regulares.

TaskStop

Nombre de herramienta: TaskStop
Detiene una tarea de fondo en ejecución o shell por ID. A partir de v2.1.198, task_id también acepta un compañero de equipo de agentes o un agente de fondo nombrado por ID de agente o nombre.

NotebookEdit

Nombre de herramienta: NotebookEdit
Edita celdas en archivos de cuaderno Jupyter.

WebFetch

Nombre de herramienta: WebFetch
Obtiene contenido de una URL y lo procesa con un modelo de IA.

WebSearch

Nombre de herramienta: WebSearch
Busca en la web y devuelve resultados formateados.

Workflow

Nombre de herramienta: Workflow
Ejecuta un flujo de trabajo dinámico: un script que orquesta muchos subagentes en segundo plano y devuelve un resultado consolidado. La herramienta Workflow está disponible en Agent SDK v0.3.149 y posterior. Se requiere al menos uno de script, name o scriptPath.

TodoWrite

Nombre de herramienta: TodoWrite
Crea y gestiona una lista de tareas estructurada para rastrear el progreso.
A partir de TypeScript Agent SDK 0.3.142, TodoWrite está deshabilitado de forma predeterminada. Use TaskCreate, TaskGet, TaskUpdate y TaskList en su lugar. Vea Migrar a herramientas Task para actualizar su código de monitoreo, o establezca CLAUDE_CODE_ENABLE_TASKS=0 para revertir a TodoWrite.

TaskCreate

Nombre de herramienta: TaskCreate
Crea una única tarea y devuelve su ID asignado.

TaskUpdate

Nombre de herramienta: TaskUpdate
Parcha una tarea por ID. Establezca status a "deleted" para eliminarla.

TaskGet

Nombre de herramienta: TaskGet
Devuelve detalles completos para una tarea, o null cuando el ID no se encuentra.

TaskList

Nombre de herramienta: TaskList
Devuelve una instantánea de todas las tareas en la lista actual.

ExitPlanMode

Nombre de herramienta: ExitPlanMode
Sale del modo de planificación. El campo allowedPrompts está deprecado e ignorado; Claude Code aún lo acepta para que los llamadores existentes y las transcripciones se validen. Antes de v2.1.205, solicitaba permisos de Bash basados en mensajes para implementar el plan.

ListMcpResources

Nombre de herramienta: ListMcpResourcesTool
Enumera recursos MCP disponibles de servidores conectados.

ReadMcpResource

Nombre de herramienta: ReadMcpResourceTool
Lee un recurso MCP específico de un servidor.

EnterWorktree

Nombre de herramienta: EnterWorktree
Crea e ingresa a un worktree git temporal para trabajo aislado. Pase path para cambiar a un worktree existente en lugar de crear uno nuevo. En la primera entrada, el destino debe ser un worktree registrado del repositorio actual o, en un espacio de trabajo de múltiples repositorios, de un repositorio anidado dentro de él; desde dentro de una sesión de worktree debe estar bajo .claude/worktrees/ del repositorio de la sesión. name y path son mutuamente excluyentes.

Tipos de Salida de Herramienta

Documentación de esquemas de salida para todas las herramientas integradas de Claude Code. Estos tipos se exportan desde @anthropic-ai/claude-agent-sdk y representan los datos de respuesta reales devueltos por cada herramienta.

ToolOutputSchemas

Unión de todos los tipos de salida de herramienta.

Agent

Nombre de herramienta: Agent (anteriormente Task, que aún se acepta como alias)
Devuelve el resultado del subagente. Discriminado en el campo status: "completed" para tareas terminadas, "async_launched" para tareas de fondo, y "remote_launched" para tareas que Claude Code envió a una sesión en la nube remota, donde sessionUrl vincula a esa sesión e taskId la identifica. El campo resolvedModel en las variantes completed y async_launched nombra el modelo en el que el subagente realmente se ejecutó, que puede diferir del modelo model solicitado cuando availableModels u otra anulación se aplica. Este campo requiere Claude Code v2.1.174 o posterior. En la variante completed, worktreePath se establece cuando el subagente se ejecutó en un worktree git aislado, y worktreeBranch nombra la rama de ese worktree cuando Claude Code la creó. usage.service_tier lleva la cadena de nivel de servicio que la API reportó para las solicitudes del subagente. Antes de v2.1.207, el tipo publicado era más estrecho. Omitía worktreePath, worktreeBranch, citations, toolStats.frameCount, y los campos de uso inference_geo, speed, e iterations, y escribía service_tier como "standard" | "priority" | "batch". Los campos que el tipo marca como opcionales pueden estar ausentes en los resultados registrados por versiones anteriores.

AskUserQuestion

Nombre de herramienta: AskUserQuestion
Devuelve las preguntas hechas y las respuestas del usuario. response se establece cuando el usuario escribió una respuesta de forma libre en lugar de responder las preguntas estructuradas; cuando está presente, Claude recibe “El usuario respondió: …” en lugar de la lista de respuestas por pregunta.

Bash

Nombre de herramienta: Bash
Devuelve la salida del comando con stdout/stderr divididos. Los comandos de fondo incluyen un backgroundTaskId.

Monitor

Nombre de herramienta: Monitor
Devuelve el ID de tarea de fondo para el monitor en ejecución. Use este ID con TaskStop para cancelar la vigilancia temprano.

Edit

Nombre de herramienta: Edit
Devuelve el diff estructurado de la operación de edición.

Read

Nombre de herramienta: Read
Devuelve el contenido del archivo en un formato apropiado para el tipo de archivo. Discriminado en el campo type.

Write

Nombre de herramienta: Write
Devuelve el resultado de escritura con información de diff estructurado.

Glob

Nombre de herramienta: Glob
Devuelve rutas de archivo que coinciden con el patrón glob, ordenadas por hora de modificación.

Grep

Nombre de herramienta: Grep
Devuelve resultados de búsqueda. La forma varía por mode: lista de archivos, contenido con coincidencias o conteos de coincidencias.

TaskStop

Nombre de herramienta: TaskStop
Devuelve confirmación después de detener la tarea de fondo.

NotebookEdit

Nombre de herramienta: NotebookEdit
Devuelve el resultado de la edición del cuaderno con contenido de archivo original y actualizado.

WebFetch

Nombre de herramienta: WebFetch
Devuelve el contenido obtenido con estado HTTP y metadatos.

WebSearch

Nombre de herramienta: WebSearch
Devuelve resultados de búsqueda de la web.

Workflow

Nombre de herramienta: Workflow
Devuelve inmediatamente después de que la herramienta acepta la invocación. El resultado final llega más tarde como una finalización de tarea. Verifique error antes de tratar la ejecución como iniciada: un script que falla su verificación de sintaxis devuelve status: "async_launched" con error establecido, y nunca se ejecuta.

TodoWrite

Nombre de herramienta: TodoWrite
Devuelve las listas de tareas anteriores y actualizadas.
A partir de TypeScript Agent SDK 0.3.142, TodoWrite está deshabilitado de forma predeterminada. Use TaskCreate, TaskGet, TaskUpdate, y TaskList en su lugar. Consulte Migrar a herramientas de tareas para actualizar su código de monitoreo, o establezca CLAUDE_CODE_ENABLE_TASKS=0 para revertir a TodoWrite.

TaskCreate

Nombre de herramienta: TaskCreate
Devuelve la tarea creada con su ID asignado.

TaskUpdate

Nombre de herramienta: TaskUpdate
Devuelve el resultado de la actualización, incluyendo qué campos cambiaron.

TaskGet

Nombre de herramienta: TaskGet
Devuelve el registro de tarea completo, o null cuando el ID no se encuentra.

TaskList

Nombre de herramienta: TaskList
Devuelve una instantánea de todas las tareas en la lista actual.

ExitPlanMode

Nombre de herramienta: ExitPlanMode
Devuelve el estado del plan después de salir del modo de planificación.

ListMcpResources

Nombre de herramienta: ListMcpResourcesTool
Devuelve una matriz de recursos MCP disponibles.

ReadMcpResource

Nombre de herramienta: ReadMcpResourceTool
Devuelve el contenido del recurso MCP solicitado.

EnterWorktree

Nombre de herramienta: EnterWorktree
Devuelve información sobre el worktree git.

Tipos de Permiso

PermissionUpdate

Operaciones para actualizar permisos.

PermissionBehavior

PermissionUpdateDestination

PermissionRuleValue

Otros Tipos

ApiKeySource

SdkBeta

Características beta disponibles que se pueden habilitar a través de la opción betas. Vea Encabezados Beta para más información.
La beta context-1m-2025-08-07 se retiró a partir del 30 de abril de 2026. Pasar este valor con Claude Sonnet 4.5 o Sonnet 4 no tiene efecto, y las solicitudes que excedan la ventana de contexto estándar de 200k tokens devuelven un error. Para usar una ventana de contexto de 1M tokens, migre a Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7 o Claude Opus 4.8, que incluyen contexto de 1M a precios estándar sin encabezado beta requerido.

SlashCommand

Información sobre un comando slash disponible.

ModelInfo

Información sobre un modelo disponible.

AgentInfo

Información sobre un subagente disponible que se puede invocar a través de la herramienta Agent.

McpServerStatus

Estado de un servidor MCP conectado.

McpServerStatusConfig

La configuración de un servidor MCP como se reporta por mcpServerStatus(). Esta es la unión de todos los tipos de transporte de servidor MCP.
Vea McpServerConfig para detalles sobre cada tipo de transporte.

AccountInfo

Información de cuenta para el usuario autenticado.

ModelUsage

Estadísticas de uso por modelo devueltas en mensajes de resultado. El valor costUSD es una estimación del lado del cliente. Vea Rastrear costo y uso para advertencias de facturación.

ConfigScope

NonNullableUsage

Una versión de Usage con todos los campos anulables hechos no anulables.

Usage

Estadísticas de uso de tokens. Este es el tipo BetaUsage de @anthropic-ai/sdk.
BetaServerToolUsage y BetaIterationsUsage se definen en @anthropic-ai/sdk.

CallToolResult

Tipo de resultado de herramienta MCP (desde @modelcontextprotocol/sdk/types.js). structuredContent es un objeto JSON que se puede devolver junto con content, incluyendo bloques de imagen. Vea Devolver datos estructurados.

ThinkingConfig

Controla el comportamiento de pensamiento/razonamiento de Claude. Tiene precedencia sobre el maxThinkingTokens deprecado.
El campo display opcional controla si el texto de pensamiento se devuelve "summarized" u "omitted". En Claude Opus 4.7 y posterior, el valor predeterminado de la API es "omitted", así que establezca "summarized" para recibir contenido de pensamiento en bloques thinking.

SpawnedProcess

Interfaz para generación de proceso personalizado (usada con la opción spawnClaudeCodeProcess). ChildProcess ya satisface esta interfaz.

SpawnOptions

Opciones pasadas a la función de generación personalizada.
El campo signal le indica a su función de generación cuándo desmantelar el proceso. Páselo como la opción signal al spawn() de Node, o páselo a su controlador de desmontaje de VM o contenedor.Esta señal no se activa en el instante en que Options.abortController se aborta. El SDK primero cierra la entrada estándar del proceso y espera aproximadamente dos segundos para que la CLI se apague limpiamente, luego aborta esta señal. Para reaccionar en el momento en que la persona que llama aborta, en su lugar escuche en su propio Options.abortController.signal, que su función de generación puede referenciar desde su alcance envolvente.

McpSetServersResult

Resultado de una operación setMcpServers().

RewindFilesResult

Resultado de una operación rewindFiles().

SDKStatusMessage

Mensaje de actualización de estado (por ejemplo, compactación).

SDKTaskNotificationMessage

Notificación cuando una tarea de fondo se completa, falla o se detiene. Las tareas de fondo incluyen comandos Bash run_in_background, vigilancias Monitor y subagentes de fondo.

SDKToolUseSummaryMessage

Resumen del uso de herramientas en una conversación.

SDKHookStartedMessage

Se emite cuando un hook comienza a ejecutarse. Claude Code entrega este mensaje, SDKHookProgressMessage y SDKHookResponseMessage al flujo de mensajes inmediatamente, incluso mientras un hook SessionStart o Setup aún se está ejecutando durante el inicio de sesión. Claude Code v2.1.169 a v2.1.203 entregó estos mensajes en un lote después de que un hook SessionStart o Setup se completó; v2.1.204 restauró la entrega en vivo.

SDKHookProgressMessage

Se emite mientras un hook se está ejecutando, con salida de stdout/stderr.

SDKHookResponseMessage

Se emite cuando un hook termina de ejecutarse.

SDKToolProgressMessage

Se emite periódicamente mientras se ejecuta una herramienta para indicar progreso.

SDKAuthStatusMessage

Se emite durante flujos de autenticación.

SDKTaskStartedMessage

Se emite cuando comienza una tarea de fondo. El campo task_type es "local_bash" para comandos Bash de fondo y vigilancias Monitor, "local_agent" para subagentes, o "remote_agent".

SDKTaskProgressMessage

Se emite periódicamente mientras se ejecuta un subagente o tarea de fondo. El campo summary se completa solo cuando agentProgressSummaries está habilitado.

SDKTaskUpdatedMessage

Se emite cuando el estado de una tarea de fondo cambia, como cuando transiciona de running a completed. Combine patch en su mapa de tareas local con clave task_id. El campo end_time es una marca de tiempo de época Unix en milisegundos, comparable con Date.now().

SDKBackgroundTasksChangedMessage

Se emite siempre que el conjunto de tareas de fondo activas cambia: una tarea comienza, se completa, se mata, o un agente en primer plano se pone en segundo plano. El array tasks es el conjunto completo activo. Reemplace cualquier conjunto en caché con cada carga útil en lugar de emparejar eventos task_started y task_notification, para que el siguiente cambio de membresía corrija cualquier evento que haya perdido. El orden relativo a esos eventos por tarea no está especificado, así que no correlacione los dos flujos. Nada se emite al inicio. Reinicie a un conjunto vacío siempre que el proceso CLI de la sesión comience o se reinicie y deje que el siguiente cambio de membresía lo repuele. Requiere Claude Code v2.1.203 o posterior.

SDKThinkingTokensMessage

Se emite mientras Claude está produciendo un bloque de pensamiento, incluyendo uno redactado, llevando una estimación en ejecución de los tokens de pensamiento generados hasta ahora. estimated_tokens es el total en ejecución para el bloque de pensamiento actual y estimated_tokens_delta es el incremento llevado por este fotograma. Úselo para visualización de progreso. El recuento final para el bucle de agente de nivel superior es el usage.output_tokens del mensaje de resultado, que no incluye tokens de subagente; use modelUsage para contabilidad de árbol completo. Requiere Claude Code v2.1.153 o posterior.

SDKFilesPersistedEvent

Se emite cuando los puntos de control de archivo se persisten en el disco.

SDKRateLimitEvent

Se emite cuando la sesión encuentra un límite de velocidad.
Cuando errorCode es "credits_required", el rechazo proviene de una suscripción de claude.ai cuyo uso incluido se ha agotado, y la sesión no puede continuar hasta que el usuario compre créditos de uso. canUserPurchaseCredits indica si el usuario autenticado puede comprar créditos para la cuenta, y hasChargeableSavedPaymentMethod indica si hay un método de pago guardado en el archivo. Los tres campos están ausentes en eventos de límite de velocidad que no son rechazos de créditos requeridos. Requiere Claude Code v2.1.181 o posterior.

SDKLocalCommandOutputMessage

Salida de un comando slash local (por ejemplo, /voice o /usage). Se muestra como texto de estilo asistente en la transcripción.

SDKCommandsChangedMessage

Se emite cuando el conjunto de comandos disponibles cambia a mitad de sesión, como cuando se descubren skills al entrar en un subdirectorio. El array commands es la lista completa actualizada, así que reemplace cualquier lista de comandos en caché con esta carga útil. Llamar a supportedCommands() nuevamente no es equivalente: ese método devuelve la instantánea capturada en la inicialización y no refleja cambios a mitad de sesión.

SDKPromptSuggestionMessage

Se emite después de cada turno cuando promptSuggestions está habilitado. Contiene un mensaje de usuario predicho siguiente.

SDKConversationResetMessage

Se emite cuando la conversación de la sesión se reemplaza sin terminar la sesión, como después de /clear, al salir del modo plan, o cuando comienza una conversación nueva. Monte una transcripción vacía bajo new_conversation_id y descarte cualquier título de sesión en caché.
Las tipificaciones publicadas del SDK declaran SDKConversationResetMessage en Claude Code v2.1.203 y posterior. Antes de v2.1.203, SDKMessage hacía referencia al tipo sin declararlo, por lo que el estrechamiento en type === "conversation_reset" no pasaba la verificación de tipos cuando skipLibCheck estaba deshabilitado.

AbortError

Clase de error personalizado para operaciones de aborto.

Configuración de Sandbox

SandboxSettings

Configuración para el comportamiento de sandbox. Use esto para habilitar el sandboxing de comandos y configurar restricciones de red mediante programación.
El sandbox depende de la compatibilidad de la plataforma y, en Linux, de herramientas como bubblewrap y socat. Cuando enabled es true y el sandbox no puede iniciarse, query() reporta un mensaje result con subtype: "error_during_execution" y la razón en errors. Para una única llamada a query(), el SDK lanza después de ceder ese resultado de error, así que envuelva el bucle en un bloque try para continuar más allá. Consulte Manejar el resultado para el contrato de error.Para ejecutar sin sandbox en su lugar, establezca failIfUnavailable: false.

Ejemplo de uso

Seguridad de socket Unix: La opción allowUnixSockets puede otorgar acceso a servicios del sistema poderosos. Por ejemplo, permitir /var/run/docker.sock efectivamente otorga acceso completo al sistema host a través de la API de Docker, omitiendo el aislamiento de sandbox. Solo permita sockets Unix que sean estrictamente necesarios y comprenda las implicaciones de seguridad de cada uno.

SandboxNetworkConfig

Configuración específica de red para el modo sandbox. Estas configuraciones se aplican a comandos Bash en sandbox cuando enabled es true en la SandboxSettings principal. No restringen la herramienta WebFetch, que utiliza reglas de permisos en su lugar.
El proxy de sandbox integrado aplica allowedDomains basándose en el nombre de host solicitado y no termina ni inspecciona el tráfico TLS, por lo que técnicas como domain fronting potencialmente pueden omitirlo. Consulte Limitaciones de seguridad de sandboxing para obtener detalles y Implementación segura para configurar un proxy que termine TLS.

SandboxFilesystemConfig

Configuración específica del sistema de archivos para el modo sandbox.

Fallback de Permisos para Comandos Sin Sandbox

Cuando allowUnsandboxedCommands está habilitado, el modelo puede solicitar ejecutar comandos fuera del sandbox estableciendo dangerouslyDisableSandbox: true en la entrada de herramienta. Estas solicitudes se vuelven al sistema de permisos existente, lo que significa que se invoca su controlador canUseTool, permitiéndole implementar lógica de autorización personalizada. En el ejemplo siguiente, isCommandAuthorized representa una verificación de autorización que usted define.
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 herramienta.
Este patrón le permite:
  • Auditar solicitudes del modelo: Registre cuándo el modelo solicita ejecución sin sandbox
  • Implementar listas de permitidos: Solo permita comandos específicos para ejecutarse sin sandbox
  • Agregar flujos de trabajo de aprobación: Requiera autorización explícita para operaciones privilegiadas
Los comandos que se ejecutan con dangerouslyDisableSandbox: true tienen acceso completo al sistema. Asegúrese de que su controlador canUseTool valide estas solicitudes cuidadosamente.Si permissionMode se establece en bypassPermissions y allowUnsandboxedCommands está habilitado, el modelo puede ejecutar autónomamente comandos fuera del sandbox sin solicitudes de aprobación (una regla ask explícita aún fuerza una). Esta combinación efectivamente permite que el modelo escape del aislamiento de sandbox silenciosamente.

Ver también