Instalación
Instale el paquete en un entorno virtual. En instalaciones recientes de Debian, Ubuntu y Homebrew Python, ejecutarpip install contra Python del sistema falla con error: externally-managed-environment.
Elegir entre query() y ClaudeSDKClient
El SDK de Python proporciona dos formas de interactuar con Claude Code:
Comparación rápida
Cuándo usar query() (tareas puntuales)
Mejor para:
- Preguntas puntuales donde no necesita historial de conversación
- Tareas independientes que no requieren contexto de intercambios anteriores
- Scripts de automatización simple
- Cuando desea un comienzo nuevo cada vez
Cuándo usar ClaudeSDKClient (conversación continua)
Mejor para:
- Continuar conversaciones - Cuando necesita que Claude recuerde el contexto
- Preguntas de seguimiento - Construir sobre respuestas anteriores
- Aplicaciones interactivas - Interfaces de chat, REPLs
- Lógica impulsada por respuestas - Cuando la siguiente acción depende de la respuesta de Claude
- Control de sesión - Gestionar explícitamente el ciclo de vida de la conversación
Funciones
query()
Crea una nueva sesión para cada interacción con Claude Code de forma predeterminada. Devuelve un iterador asincrónico que produce mensajes a medida que llegan. Cada llamada a query() comienza de nuevo sin memoria de interacciones anteriores a menos que pase continue_conversation=True o resume en ClaudeAgentOptions. Consulte Sessions.
Parámetros
Devuelve
Devuelve unAsyncIterator[Message] que produce mensajes de la conversación.
Ejemplo - Con opciones
tool()
Decorador para definir herramientas MCP con seguridad de tipos.
Parámetros
Opciones de esquema de entrada
-
Mapeo de tipo simple (recomendado):
-
Formato JSON Schema (para validación compleja):
Devuelve
Una función decoradora que envuelve la implementación de la herramienta y devuelve una instancia deSdkMcpTool.
Ejemplo
ToolAnnotations
Re-exportado desde mcp.types (también disponible como from claude_agent_sdk import ToolAnnotations). Todos los campos son sugerencias opcionales; los clientes no deben depender de ellos para decisiones de seguridad.
create_sdk_mcp_server()
Crea un servidor MCP en proceso que se ejecuta dentro de su aplicación Python.
Parámetros
Devuelve
Devuelve un objetoMcpSdkServerConfig que se puede pasar a ClaudeAgentOptions.mcp_servers.
Ejemplo
list_sessions()
Lista sesiones pasadas con metadatos. Filtre por directorio de proyecto o liste sesiones en todos los proyectos. Sincrónico; devuelve inmediatamente.
Parámetros
Tipo de retorno: SDKSessionInfo
Ejemplo
Imprima las 10 sesiones más recientes para un proyecto. Los resultados se ordenan porlast_modified descendente, por lo que el primer elemento es el más nuevo. Omita directory para buscar en todos los proyectos.
get_session_messages()
Recupera mensajes de una sesión pasada. Sincrónico; devuelve inmediatamente.
Parámetros
Tipo de retorno: SessionMessage
Ejemplo
get_session_info()
Lee metadatos para una única sesión por ID sin escanear el directorio del proyecto completo. Sincrónico; devuelve inmediatamente.
Parámetros
Devuelve
SDKSessionInfo, o None si la sesión no se encuentra.
Ejemplo
Busque los metadatos de una única sesión sin escanear el directorio del proyecto. Útil cuando ya tiene un ID de sesión de una ejecución anterior.rename_session()
Renombra una sesión agregando una entrada de título personalizado. Las llamadas repetidas son seguras; el título más reciente gana. Sincrónico.
Parámetros
Genera
ValueError si session_id no es un UUID válido o title está vacío; FileNotFoundError si la sesión no se puede encontrar.
Ejemplo
Renombre la sesión más reciente para que sea más fácil de encontrar más tarde. El nuevo título aparece enSDKSessionInfo.custom_title en lecturas posteriores.
tag_session()
Etiqueta una sesión. Pase None para borrar la etiqueta. Las llamadas repetidas son seguras; la etiqueta más reciente gana. Sincrónico.
Parámetros
Genera
ValueError si session_id no es un UUID válido o tag está vacío después de la sanitización; FileNotFoundError si la sesión no se puede encontrar.
Ejemplo
Etiquete una sesión, luego filtre por esa etiqueta en una lectura posterior. PaseNone para borrar una etiqueta existente.
Clases
ClaudeSDKClient
Mantiene una sesión de conversación en múltiples intercambios. Este es el equivalente de Python de cómo funciona internamente la función query() del SDK de TypeScript - crea un objeto cliente que puede continuar conversaciones.
Características clave
- Continuidad de sesión: Mantiene el contexto de conversación en múltiples llamadas a
query() - Misma conversación: La sesión retiene mensajes anteriores
- Soporte de interrupciones: Puede detener la ejecución a mitad de tarea
- Ciclo de vida explícito: Usted controla cuándo comienza y termina la sesión
- Flujo impulsado por respuestas: Puede reaccionar a respuestas y enviar seguimientos
- Herramientas personalizadas y hooks: Admite herramientas personalizadas (creadas con el decorador
@tool) y hooks
Métodos
Soporte de gestor de contexto
El cliente se puede usar como un gestor de contexto asincrónico para la gestión automática de conexiones:
Importante: Al iterar sobre mensajes, evite usar break para salir temprano ya que esto puede causar problemas de limpieza de asyncio. En su lugar, deje que la iteración se complete naturalmente o use banderas para rastrear cuándo ha encontrado lo que necesita.
Ejemplo - Continuar una conversación
Ejemplo - Entrada de streaming con ClaudeSDKClient
Ejemplo - Usar interrupciones
Comportamiento del búfer después de la interrupción:
interrupt() envía una señal de parada pero no borra el búfer de mensajes. Los mensajes ya producidos por la tarea interrumpida, incluyendo su ResultMessage (con subtype="error_during_execution"), permanecen en el flujo. Debe drenarlos con receive_response() antes de leer la respuesta a una nueva consulta. Si envía una nueva consulta inmediatamente después de interrupt() y llama a receive_response() solo una vez, recibirá los mensajes de la tarea interrumpida, no la respuesta de la nueva consulta.Ejemplo - Control de permisos avanzado
Tipos
@dataclass vs TypedDict: Este SDK utiliza dos tipos de tipos. Las clases decoradas con @dataclass (como ResultMessage, AgentDefinition, TextBlock) son instancias de objeto en tiempo de ejecución y admiten acceso de atributo: msg.result. Las clases definidas con TypedDict (como ThinkingConfigEnabled, McpStdioServerConfig, SyncHookJSONOutput) son dicts simples en tiempo de ejecución y requieren acceso de clave: config["budget_tokens"], no config.budget_tokens. La sintaxis de llamada ClassName(field=value) funciona para ambos, pero solo las dataclasses producen objetos con atributos.SdkMcpTool
Definición para una herramienta MCP del SDK creada con el decorador @tool.
Transport
Clase base abstracta para implementaciones de transporte personalizado. Úsela para comunicarse con el proceso Claude a través de un canal personalizado (por ejemplo, una conexión remota en lugar de un subproceso local).
Importar:
from claude_agent_sdk import Transport
ClaudeAgentOptions
Dataclass de configuración para consultas de Claude Code.
Manejar 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 deClaudeAgentOptions.env:
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 backoff. Para ejecuciones desatendidas que necesitan esperar a través de interrupciones más largas, establezcaCLAUDE_CODE_RETRY_WATCHDOG=1: reintentos de errores de capacidad indefinidamente, y a partir de Claude Code v2.1.199 eleva el valor 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 flujo; 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 la respuesta deja de transmitir. 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.
OutputFormat
Configuración para validación de salida estructurada. Pase esto como un dict al campo output_format en ClaudeAgentOptions:
SystemPromptPreset
Configuración para usar el prompt del sistema preset de Claude Code con adiciones opcionales.
SystemPromptFile
Configuración para cargar un prompt del sistema personalizado desde un archivo en lugar de pasarlo como una cadena. El SDK asigna esto a la bandera CLI --system-prompt-file. Use la forma de archivo cuando el prompt es grande: el SDK pasa un system_prompt de cadena en el argv del subproceso CLI, que está sujeto a límites de longitud de línea de comandos del SO antes de que el SDK envíe cualquier solicitud de API. En Linux, un único argumento más largo que aproximadamente 128 KB falla al generar el proceso con Argument list too long. En Windows, toda la línea de comandos está limitada a aproximadamente 32 KB, por lo que la forma de cadena falla en un umbral más bajo.
SettingSource
Controla qué fuentes de configuración basadas en el sistema de archivos carga el SDK.
Comportamiento predeterminado
Cuandosetting_sources se omite o es None, query() carga la misma configuración del sistema de archivos que el 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. Ver Qué settingSources no controla para entradas que se leen independientemente de esta opción, y cómo deshabilitarlas.
Por qué usar setting_sources
Deshabilitar configuración del sistema de archivos:En Python SDK 0.1.59 y anteriores, una lista vacía se trataba igual que omitir la opción, por lo que
setting_sources=[] no deshabilitaba la configuración del sistema de archivos. Actualice a una versión más nueva si necesita que una lista vacía tenga efecto. El SDK de TypeScript no se ve afectado.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 y allowed_tools 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.
AgentDefinition
Configuración para un subagente definido programáticamente.
Los nombres de campo de
AgentDefinition usan camelCase, como disallowedTools, permissionMode y maxTurns. Estos nombres se asignan directamente al formato de cable compartido con el SDK de TypeScript. Esto difiere de ClaudeAgentOptions, que usa snake_case de Python para campos de nivel superior equivalentes como disallowed_tools y permission_mode. Porque AgentDefinition es una dataclass, pasar una palabra clave snake_case genera un TypeError en el tiempo de construcción.PermissionMode
Modos de permiso para controlar la ejecución de herramientas.
EffortLevel
Niveles de esfuerzo para guiar la profundidad del pensamiento.
CanUseTool
Alias de tipo para funciones de devolución de llamada de permiso de herramienta.
tool_name: Nombre de la herramienta que se está llamandoinput_data: Los parámetros de entrada de la herramientacontext: UnToolPermissionContextcon información adicional
PermissionResult (ya sea PermissionResultAllow o PermissionResultDeny).
La devolución de llamada es el reemplazo del SDK para el prompt de permiso interactivo: se invoca solo cuando el flujo de evaluación de permiso se resuelve en un prompt. Las llamadas de herramienta ya aprobadas por una entrada allowed_tools, 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 deniegan en su lugar, sin invocar la devolución de llamada.
ToolPermissionContext
Información de contexto pasada a devoluciones de llamada de permiso de herramienta.
PermissionResult
Tipo de unión para resultados de devolución de llamada de permiso.
PermissionResultAllow
Resultado indicando que la llamada de herramienta debe permitirse.
PermissionResultDeny
Resultado indicando que la llamada de herramienta debe denegarse.
PermissionUpdate
Configuración para actualizar permisos programáticamente.
PermissionRuleValue
Una regla a agregar, reemplazar o eliminar en una actualización de permiso.
ToolsPreset
Configuración de herramientas preset para usar el conjunto de herramientas predeterminado de Claude Code.
ThinkingConfig
Controla el comportamiento de pensamiento extendido. Una unión de tres configuraciones:
El campo opcional
display controla si el texto de pensamiento se devuelve "summarized" u "omitted". En Claude Opus 4.7 y posteriores, el valor predeterminado de la API es "omitted", por lo que establezca "summarized" para recibir contenido de pensamiento en salidas ThinkingBlock.
Porque estas son clases TypedDict, son dicts simples en tiempo de ejecución. Construya cualquiera como literales de dict o llame a la clase como un constructor; ambos producen un dict. Acceda a campos con config["budget_tokens"], no config.budget_tokens:
SdkBeta
Tipo literal para características beta del SDK.
betas en ClaudeAgentOptions para habilitar características beta.
McpSdkServerConfig
Configuración para servidores MCP del SDK creados con create_sdk_mcp_server().
McpServerConfig
Tipo de unión para configuraciones de servidor MCP.
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
McpServerStatusConfig
La configuración de un servidor MCP como se reporta por get_mcp_status(). Esta es la unión de todas las variantes de transporte McpServerConfig más una variante de salida única claudeai-proxy para servidores proxied a través de claude.ai.
McpSdkServerConfigStatus es la forma serializable de McpSdkServerConfig con solo campos type ("sdk") y name (str); la instance en proceso se omite. McpClaudeAIProxyServerConfig tiene campos type ("claudeai-proxy"), url (str), e id (str).
McpStatusResponse
Respuesta de ClaudeSDKClient.get_mcp_status(). Envuelve la lista de estados del servidor bajo la clave mcpServers.
McpServerStatus
Estado de un servidor MCP conectado, contenido en McpStatusResponse.
SdkPluginConfig
Configuración para cargar plugins en el SDK.
Ejemplo:
Tipos de mensaje
Message
Tipo de unión de todos los mensajes posibles.
UserMessage
Mensaje de entrada del usuario.
AssistantMessage
Mensaje de respuesta del asistente con bloques de contenido.
AssistantMessageError
Posibles tipos de error para mensajes del asistente.
SystemMessage
Mensaje del sistema con metadatos.
ResultMessage
Mensaje de resultado final con información de costo y uso.
subtype determina cuáles otros campos se rellenan. Es uno de "success", "error_during_execution", "error_max_turns", "error_max_budget_usd", o "error_max_structured_output_retries". La clase de datos de Python aplana todas las variantes en una forma, por lo que los campos que no se aplican al subtipo devuelto son None.
Varios campos llevan detalle de diagnóstico cuando la conversación termina en un error:
is_error:Truecuando la conversación terminó en un estado de error. SiempreTrueen los subtiposerror_*. Ensubtype="success"esTruecuando la solicitud del modelo final falló, lo que significa que el bucle del agente se completó pero la última llamada a la API devolvió un error.api_error_status: el código de estado HTTP del error de API de terminación.Nonecuando el turno terminó sin uno. Se rellena solo ensubtype="success".result: texto del mensaje del asistente final ensubtype="success", oNoneen los subtiposerror_*. Cuandosubtype="success"eis_error=True, esto contiene la cadena de error de API si una está disponible pero puede estar vacía, así que verifiqueapi_error_statusy el contenido anterior deAssistantMessagepara obtener detalles.errors: cadenas de error a nivel de bucle como el mensaje de máx-turnos. Se rellena solo en los subtiposerror_*.
usage contiene las siguientes claves cuando está presente:
El dict
model_usage asigna nombres de modelo a uso por modelo. Las claves del dict interno usan camelCase porque el valor se pasa sin modificar desde el proceso CLI subyacente, coincidiendo con el tipo ModelUsage de TypeScript:
StreamEvent
Evento de flujo para actualizaciones de mensaje parcial durante el streaming. Solo se recibe cuando include_partial_messages=True en ClaudeAgentOptions. Importar vía from claude_agent_sdk.types import StreamEvent.
RateLimitEvent
Emitido cuando el estado del límite de velocidad cambia (por ejemplo, de "allowed" a "allowed_warning"). Use esto para advertir a los usuarios antes de que alcancen un límite duro, o para retroceder cuando el estado es "rejected".
RateLimitInfo
Estado del límite de velocidad llevado por RateLimitEvent.
TaskStartedMessage
Emitido cuando comienza una tarea de fondo. Una tarea de fondo es cualquier cosa rastreada fuera del turno principal: un comando Bash en segundo plano, un reloj de Monitor, un subagente generado a través de la herramienta Agent, o un agente remoto. El campo task_type le dice cuál. Este nombre no está relacionado con el cambio de nombre de herramienta Task-a-Agent.
TaskUsage
Datos de token y tiempo para una tarea de fondo.
TaskProgressMessage
Emitido periódicamente con actualizaciones de progreso para una tarea de fondo en ejecución.
TaskNotificationMessage
Emitido cuando una tarea de fondo se completa, falla o se detiene. Las tareas de fondo incluyen comandos Bash run_in_background, relojes de Monitor y subagentes de fondo.
Tipos de bloque de contenido
ContentBlock
Tipo de unión de todos los bloques de contenido.
TextBlock
Bloque de contenido de texto.
ThinkingBlock
Bloque de contenido de pensamiento (para modelos con capacidad de pensamiento).
ToolUseBlock
Bloque de solicitud de uso de herramienta.
ToolResultBlock
Bloque de resultado de ejecución de herramienta.
Tipos de error
ClaudeSDKError
Clase de excepción base para todos los errores del SDK.
CLINotFoundError
Se genera cuando Claude Code CLI no está instalado o no se encuentra.
CLIConnectionError
Se genera cuando la conexión a Claude Code falla.
ProcessError
Se genera cuando el proceso de Claude Code falla.
CLIJSONDecodeError
Se genera cuando el análisis JSON falla.
Tipos de hook
Para una guía completa sobre el uso de hooks con ejemplos y patrones comunes, ver la Guía de Hooks.HookEvent
Tipos de evento de hook soportados.
El SDK de TypeScript admite eventos de hook adicionales no disponibles aún en Python:
SessionStart, SessionEnd, Setup, TeammateIdle, TaskCompleted, ConfigChange, WorktreeCreate, WorktreeRemove, PostToolBatch y MessageDisplay.HookCallback
Definición de tipo para funciones de devolución de llamada de hook.
input: Entrada de hook fuertemente tipada con uniones discriminadas basadas enhook_event_name(verHookInput)tool_use_id: Identificador de uso de herramienta opcional (para hooks relacionados con herramientas)context: Contexto de hook con información adicional
HookJSONOutput que puede contener:
decision:"block"para bloquear la acciónsystemMessage: Mensaje de advertencia mostrado al usuariohookSpecificOutput: Datos de salida específicos del hook
HookContext
Información de contexto pasada a devoluciones de llamada de hook.
HookMatcher
Configuración para hacer coincidir hooks con eventos o herramientas específicas.
HookInput
Tipo de unión de todos los tipos de entrada de hook. El tipo real depende del campo hook_event_name.
BaseHookInput
Campos base presentes en todos los tipos de entrada de hook.
PreToolUseHookInput
Datos de entrada para eventos de hook PreToolUse.
PostToolUseHookInput
Datos de entrada para eventos de hook PostToolUse.
PostToolUseFailureHookInput
Datos de entrada para eventos de hook PostToolUseFailure. Se llama cuando la ejecución de una herramienta falla.
UserPromptSubmitHookInput
Datos de entrada para eventos de hook UserPromptSubmit.
StopHookInput
Datos de entrada para eventos de hook Stop.
SubagentStopHookInput
Datos de entrada para eventos de hook SubagentStop.
PreCompactHookInput
Datos de entrada para eventos de hook PreCompact.
NotificationHookInput
Datos de entrada para eventos de hook Notification.
SubagentStartHookInput
Datos de entrada para eventos de hook SubagentStart.
PermissionRequestHookInput
Datos de entrada para eventos de hook PermissionRequest. Permite que los hooks manejen decisiones de permiso programáticamente.
HookJSONOutput
Tipo de unión para valores de retorno de devolución de llamada de hook.
SyncHookJSONOutput
Salida de hook sincrónico con campos de control y decisión.
Use
continue_ (con guion bajo) en código Python. Se convierte automáticamente a continue cuando se envía al CLI.HookSpecificOutput
Un TypedDict que contiene el nombre del evento de hook y campos específicos del evento. La forma depende del valor hookEventName. Para detalles completos sobre campos disponibles por evento de hook, ver Control execution with hooks.
Una unión discriminada de tipos de salida específicos del evento. El campo hookEventName determina qué campos son válidos.
AsyncHookJSONOutput
Salida de hook asincrónico que difiere la ejecución del hook.
Use
async_ (con guion bajo) en código Python. Se convierte automáticamente a async cuando se envía al CLI.Ejemplo de uso de hook
Este ejemplo registra dos hooks: uno que bloquea comandos bash peligrosos comorm -rf /, y otro que registra todo el uso de herramientas para auditoría. El hook de seguridad solo se ejecuta en comandos Bash (a través del matcher), mientras que el hook de registro se ejecuta en todas las herramientas.
Tipos de entrada/salida de herramienta
Documentación de esquemas de entrada/salida para todas las herramientas integradas de Claude Code. Aunque el SDK de Python no exporta estos como tipos, representan la estructura de entradas y salidas de herramientas en mensajes.Agent
Nombre de herramienta:Agent (anteriormente Task, que aún se acepta como alias)
Entrada:
AskUserQuestion
Nombre de herramienta:AskUserQuestion
Hace preguntas aclaratorias al usuario durante la ejecución. Ver Manejar aprobaciones e entrada del usuario para detalles de uso.
Entrada:
Bash
Nombre de herramienta:Bash
Entrada:
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 stdout, y ws abre un WebSocket y emite un evento por marco de texto. Proporcione exactamente uno de command o ws.
Cuando Monitor ejecuta un comando, sigue las mismas reglas de permiso que Bash; una vigilancia de WebSocket solicita aprobación por separado. La fuente ws requiere Claude Code v2.1.195 o posterior. Ver la referencia de herramienta Monitor para comportamiento y disponibilidad de proveedor.
Entrada:
Edit
Nombre de herramienta:Edit
Entrada:
Read
Nombre de herramienta:Read
Entrada:
Write
Nombre de herramienta:Write
Entrada:
Glob
Nombre de herramienta:Glob
Entrada:
Grep
Nombre de herramienta:Grep
Entrada:
NotebookEdit
Nombre de herramienta:NotebookEdit
Entrada:
WebFetch
Nombre de herramienta:WebFetch
Entrada:
WebSearch
Nombre de herramienta:WebSearch
Entrada:
TodoWrite
Nombre de herramienta:TodoWrite
A partir de Claude Code v2.1.142,
TodoWrite está deshabilitado de forma predeterminada. Use TaskCreate, TaskGet, TaskUpdate, y TaskList en su lugar. Ver 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
Entrada:
TaskUpdate
Nombre de herramienta:TaskUpdate
Entrada:
TaskGet
Nombre de herramienta:TaskGet
Entrada:
TaskList
Nombre de herramienta:TaskList
Entrada:
BashOutput
Nombre de herramienta:BashOutput
Entrada:
KillBash
Nombre de herramienta:KillBash
Entrada:
ExitPlanMode
Nombre de herramienta:ExitPlanMode
Entrada:
ListMcpResources
Nombre de herramienta:ListMcpResourcesTool
Entrada:
ReadMcpResource
Nombre de herramienta:ReadMcpResourceTool
Entrada:
Características avanzadas con ClaudeSDKClient
Construir una interfaz de conversación continua
Usar hooks para modificación de comportamiento
Monitoreo de progreso en tiempo real
Uso de ejemplo
Operaciones básicas de archivo (usando query)
Manejo de errores
Modo de streaming con cliente
Usar herramientas personalizadas con ClaudeSDKClient
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 programáticamente.
El sandbox depende de la compatibilidad de la plataforma y, en Linux, de herramientas como
bubblewrap y socat. De forma predeterminada, cuando enabled es True pero el sandbox no puede iniciarse, los comandos se ejecutan sin sandbox con una advertencia en stderr. Este comportamiento predeterminado difiere del SDK de TypeScript, donde failIfUnavailable tiene un valor predeterminado de true.Establezca "failIfUnavailable": True en su configuración de sandbox para detener en su lugar. La clave aún no está declarada en SandboxSettings, pero el SDK la reenvía a Claude Code, que la respeta. query() luego reporta un ResultMessage con subtype="error_during_execution" y la razón en errors. Observe ese subtipo en lugar de esperar que query() lance una excepción antes de ceder mensajes.Ejemplo de uso
SandboxNetworkConfig
Configuración específica de red para 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 la lista de permitidos de red basada 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 evitarlo. Consulte Limitaciones de seguridad de sandboxing para obtener detalles y Implementación segura para configurar un proxy que termine TLS.
SandboxIgnoreViolations
Configuración para ignorar violaciones de sandbox específicas.
Respaldo 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 la herramienta. Estas solicitudes vuelven al sistema de permisos existente, lo que significa que se invocará su controlador can_use_tool, permitiéndole implementar lógica de autorización personalizada.
excludedCommands vs allowUnsandboxedCommands:excludedCommands: Una lista estática de comandos que siempre evitan 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 la herramienta.
- Auditar solicitudes del modelo: Registrar cuándo el modelo solicita ejecución sin sandbox
- Implementar listas de permitidos: Solo permitir comandos específicos para ejecutarse sin sandbox
- Agregar flujos de trabajo de aprobación: Requerir autorización explícita para operaciones privilegiadas
Ver también
- SDK overview - Conceptos generales del SDK
- TypeScript SDK reference - Documentación del SDK de TypeScript
- CLI reference - Interfaz de línea de comandos
- Common workflows - Guías paso a paso