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 conbun 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 objetoQuery 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 unaPromise<WarmQuery> que se resuelve una vez que el subproceso se ha generado y ha completado su protocolo de inicialización.
Ejemplo
Llame astartup() 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 porlastModified 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ónenv:
API_TIMEOUT_MS: tiempo de espera por solicitud en el cliente de Anthropic, en milisegundos. Predeterminado600000. Se aplica al bucle principal y a todos los subagentes.CLAUDE_CODE_MAX_RETRIES: máximo de reintentos de API. Predeterminado10, limitado a15. Cada reintento obtiene su propia ventanaAPI_TIMEOUT_MS, por lo que el tiempo de pared en el peor caso es aproximadamenteAPI_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)más retroceso. Para ejecuciones desatendidas que necesitan esperar a través de interrupciones más largas, establezcaCLAUDE_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 a300y elimina el límite en esta variable.CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: perro guardián de estancamiento para subagentes lanzados conrun_in_background. Predeterminado600000. 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_WATCHDOGconCLAUDE_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; establezcaCLAUDE_ENABLE_STREAM_WATCHDOG=0para desactivarlo.CLAUDE_STREAM_IDLE_TIMEOUT_MStiene un valor predeterminado de300000y 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. Cambiaragenttambié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.
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.
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.
McpServerConfigForProcessTransport es McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig.
SettingSource
Controla qué fuentes de configuración basadas en el sistema de archivos carga el SDK.
Comportamiento predeterminado
CuandosettingSources 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:Precedencia de configuración
Cuando se cargan múltiples fuentes, la configuración se fusiona con esta precedencia (mayor a menor):- Configuración local (
.claude/settings.local.json) - Configuración del proyecto (
.claude/settings.json) - Configuración del usuario (
~/.claude/settings.json)
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:
Tipos de Mensaje
SDKMessage
Tipo de unión de todos los mensajes posibles devueltos por la consulta.
SDKAssistantMessage
Mensaje de respuesta del asistente.
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.
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.
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.
subtype:
api_error_status: el código de estado HTTP del error de API que terminó la conversación. Ausente onullcuando 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ónmessage_start, cuando se abre la transmisión de respuesta. Menor quettft_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".
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.
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.
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)
AskUserQuestion
Nombre de herramienta:AskUserQuestion
Bash
Nombre de herramienta:Bash
Monitor
Nombre de herramienta:Monitor
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
Edit
Nombre de herramienta:Edit
Read
Nombre de herramienta:Read
pages para rangos de páginas PDF (por ejemplo, "1-5").
Write
Nombre de herramienta:Write
Glob
Nombre de herramienta:Glob
Grep
Nombre de herramienta:Grep
TaskStop
Nombre de herramienta:TaskStop
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
WebFetch
Nombre de herramienta:WebFetch
WebSearch
Nombre de herramienta:WebSearch
Workflow
Nombre de herramienta:Workflow
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
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
TaskUpdate
Nombre de herramienta:TaskUpdate
status a "deleted" para eliminarla.
TaskGet
Nombre de herramienta:TaskGet
null cuando el ID no se encuentra.
TaskList
Nombre de herramienta:TaskList
ExitPlanMode
Nombre de herramienta:ExitPlanMode
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
ReadMcpResource
Nombre de herramienta:ReadMcpResourceTool
EnterWorktree
Nombre de herramienta:EnterWorktree
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)
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
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
backgroundTaskId.
Monitor
Nombre de herramienta:Monitor
TaskStop para cancelar la vigilancia temprano.
Edit
Nombre de herramienta:Edit
Read
Nombre de herramienta:Read
type.
Write
Nombre de herramienta:Write
Glob
Nombre de herramienta:Glob
Grep
Nombre de herramienta:Grep
mode: lista de archivos, contenido con coincidencias o conteos de coincidencias.
TaskStop
Nombre de herramienta:TaskStop
NotebookEdit
Nombre de herramienta:NotebookEdit
WebFetch
Nombre de herramienta:WebFetch
WebSearch
Nombre de herramienta:WebSearch
Workflow
Nombre de herramienta:Workflow
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
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
TaskUpdate
Nombre de herramienta:TaskUpdate
TaskGet
Nombre de herramienta:TaskGet
null cuando el ID no se encuentra.
TaskList
Nombre de herramienta:TaskList
ExitPlanMode
Nombre de herramienta:ExitPlanMode
ListMcpResources
Nombre de herramienta:ListMcpResourcesTool
ReadMcpResource
Nombre de herramienta:ReadMcpResourceTool
EnterWorktree
Nombre de herramienta:EnterWorktree
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.
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.
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.
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.
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é.
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
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
CuandoallowUnsandboxedCommands 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 estableciendodangerouslyDisableSandbox: trueen la entrada de herramienta.
- 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
Ver también
- Descripción general del SDK - Conceptos generales del SDK
- Referencia del SDK de Python - Documentación del SDK de Python
- Referencia de CLI - Interfaz de línea de comandos
- Flujos de trabajo comunes - Guías paso a paso