SpyBara
Go Premium

Documentation 2026-10-06 23:59 UTC to 2026-10-07 19:00 UTC

54 files changed +643 −589. View all changes and history on the product overview
2026
Wed 7 20:01 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59

agent-sdk/hooks.md +50 −50

Details

20 20 

21<Steps>21<Steps>

22 <Step title="Se dispara un evento">22 <Step title="Se dispara un evento">

23 Algo sucede durante la ejecución del agente y el SDK dispara un evento: una herramienta está a punto de ser llamada (`PreToolUse`), una herramienta devolvió un resultado (`PostToolUse`), un subagente se inició o se detuvo, el agente está inactivo, o la ejecución finalizó. Vea la [lista completa de eventos](#available-hooks).23 Algo sucede durante la ejecución del agente y el SDK dispara un evento: una herramienta está a punto de ser llamada (`PreToolUse`), una herramienta devolvió un resultado (`PostToolUse`), un subagente se inició o se detuvo, el agente está inactivo, o la ejecución finalizó. Consulta la [lista completa de eventos](#available-hooks).

24 </Step>24 </Step>

25 25 

26 <Step title="El SDK recopila hooks registrados">26 <Step title="El SDK recopila hooks registrados">

27 El SDK verifica si hay hooks registrados para ese tipo de evento. Esto incluye hooks de devolución de llamada que pasa en `options.hooks` y hooks de comandos de shell de archivos de configuración cuando la entrada [`settingSources`](/docs/es/agent-sdk/typescript#settingsource) o [`setting_sources`](/docs/es/agent-sdk/python#settingsource) correspondiente está habilitada, lo cual lo está para las opciones predeterminadas de `query()`.27 El SDK verifica si hay hooks registrados para ese tipo de evento. Esto incluye hooks de devolución de llamada que pasas en `options.hooks` y hooks de comandos de shell de archivos de configuración cuando la entrada [`settingSources`](/docs/es/agent-sdk/typescript#settingsource) o [`setting_sources`](/docs/es/agent-sdk/python#settingsource) correspondiente está habilitada, lo cual lo está para las opciones predeterminadas de `query()`.

28 </Step>28 </Step>

29 29 

30 <Step title="Los matchers filtran qué hooks se ejecutan">30 <Step title="Los matchers filtran qué hooks se ejecutan">


32 </Step>32 </Step>

33 33 

34 <Step title="Se ejecutan las funciones de devolución de llamada">34 <Step title="Se ejecutan las funciones de devolución de llamada">

35 Cada hook coincidente recibe su [función de devolución de llamada](#callback-functions) con información sobre lo que está sucediendo: el nombre de la herramienta, sus argumentos, el ID de sesión y otros detalles específicos del evento.35 La [función de devolución de llamada](#callback-functions) de cada hook coincidente recibe información sobre lo que está sucediendo: el nombre de la herramienta, sus argumentos, el ID de sesión y otros detalles específicos del evento.

36 </Step>36 </Step>

37 37 

38 <Step title="Su devolución de llamada devuelve una decisión">38 <Step title="Tu devolución de llamada devuelve una decisión">

39 Después de realizar cualquier operación (registro, llamadas a API, validación), su devolución de llamada devuelve un [objeto de salida](#outputs) que le dice al agente qué hacer: permitir la operación, bloquearla, modificar la entrada o inyectar contexto en la conversación.39 Después de realizar cualquier operación (registro, llamadas a API, validación), tu devolución de llamada devuelve un [objeto de salida](#outputs) que le dice al agente qué hacer: permitir la operación, bloquearla, modificar la entrada o inyectar contexto en la conversación.

40 </Step>40 </Step>

41</Steps>41</Steps>

42 42 


140 ```140 ```

141</CodeGroup>141</CodeGroup>

142 142 

143Cuando ejecuta cualquiera de los scripts, Claude intenta crear el archivo `.env`, el hook niega la llamada de herramienta, y la respuesta final de Claude explica que no puede crear archivos `.env`.143Cuando ejecutas cualquiera de los scripts, Claude intenta crear el archivo `.env` y el hook niega la llamada a herramienta.

144 144 

145<h2 id="available-hooks">145<h2 id="available-hooks">

146 Hooks disponibles146 Hooks disponibles


179| `ConfigChange` | No | Sí | Archivo de configuración cambia | Recargar configuración dinámicamente |179| `ConfigChange` | No | Sí | Archivo de configuración cambia | Recargar configuración dinámicamente |

180| `InstructionsLoaded` | No | Sí | Se carga un archivo `CLAUDE.md` o de reglas en el contexto | Auditar qué archivos de instrucciones se cargan |180| `InstructionsLoaded` | No | Sí | Se carga un archivo `CLAUDE.md` o de reglas en el contexto | Auditar qué archivos de instrucciones se cargan |

181| `WorktreeCreate` | No | Sí | Git worktree creado | Rastrear espacios de trabajo aislados |181| `WorktreeCreate` | No | Sí | Git worktree creado | Rastrear espacios de trabajo aislados |

182| `WorktreeRemove` | No | Sí | Git worktree eliminado | Limpiar recursos de espacio de trabajo |182| `WorktreeRemove` | No | Sí | Se está eliminando un worktree creado por un hook `WorktreeCreate` | Limpiar recursos de espacio de trabajo |

183| `CwdChanged` | No | Sí | El directorio de trabajo cambia durante una sesión | Recargar variables de entorno por directorio |183| `CwdChanged` | No | Sí | El directorio de trabajo cambia durante una sesión | Recargar variables de entorno por directorio |

184| `FileChanged` | No | Sí | Un archivo vigilado se modifica, crea o elimina | Recargar configuración cuando cambian archivos del proyecto |184| `FileChanged` | No | Sí | Un archivo vigilado se modifica, crea o elimina | Recargar configuración cuando cambian archivos del proyecto |

185| `DirectoryAdded` | No | Sí | Se agrega un directorio de trabajo durante una sesión | Instalar dependencias para un repositorio agregado a mitad de sesión |185| `DirectoryAdded` | No | Sí | Se agrega un directorio de trabajo durante una sesión | Instalar dependencias para un repositorio agregado a mitad de sesión |


188 Configurar hooks188 Configurar hooks

189</h2>189</h2>

190 190 

191Para configurar un hook, páselo en el campo `hooks` de sus opciones de agente (`ClaudeAgentOptions` en Python, el objeto `options` en TypeScript). Este fragmento asume que ya ha definido una devolución de llamada de hook, como `protect_env_files` en Python o `protectEnvFiles` en TypeScript del ejemplo anterior:191Para configurar un hook, pásalo en el campo `hooks` de tus opciones de agente (`ClaudeAgentOptions` en Python, el objeto `options` en TypeScript). Este fragmento asume que ya has definido una devolución de llamada de hook, como `protect_env_files` en Python o `protectEnvFiles` en TypeScript del ejemplo anterior:

192 192 

193<CodeGroup>193<CodeGroup>

194 ```python Python theme={null}194 ```python Python theme={null}


219La opción `hooks` es un diccionario en Python u objeto en TypeScript, donde:219La opción `hooks` es un diccionario en Python u objeto en TypeScript, donde:

220 220 

221* **Las claves**: [nombres de eventos de hook](#available-hooks) como `'PreToolUse'`, `'PostToolUse'` y `'Stop'`221* **Las claves**: [nombres de eventos de hook](#available-hooks) como `'PreToolUse'`, `'PostToolUse'` y `'Stop'`

222* **Los valores**: matrices de [matchers](#matchers), cada una conteniendo un patrón de filtro opcional y sus [funciones de devolución de llamada](#callback-functions)222* **Los valores**: matrices de [matchers](#matchers), cada una conteniendo un patrón de filtro opcional y tus [funciones de devolución de llamada](#callback-functions)

223 223 

224<h3 id="matchers">224<h3 id="matchers">

225 Matchers225 Matchers

226</h3>226</h3>

227 227 

228Use matchers para filtrar cuándo se disparan sus devoluciones de llamada. El campo `matcher` coincide con un valor diferente dependiendo del tipo de evento de hook. Por ejemplo, los hooks basados en herramientas coinciden con el nombre de la herramienta, mientras que los hooks `Notification` coinciden con el tipo de notificación.228Usa matchers para filtrar cuándo se disparan tus devoluciones de llamada. El campo `matcher` coincide con un valor diferente dependiendo del tipo de evento de hook. Por ejemplo, los hooks basados en herramientas coinciden con el nombre de la herramienta, mientras que los hooks `Notification` coinciden con el tipo de notificación.

229 229 

230Los matchers del SDK siguen las mismas reglas que [matchers en archivos de configuración](/docs/es/hooks#matcher-patterns). Esa sección documenta las rutas de evaluación de cadena exacta y expresión regular, sus requisitos de versión, y los valores de matcher para cada tipo de evento.230Los matchers del SDK siguen las mismas reglas que [matchers en archivos de configuración](/docs/es/hooks#matcher-patterns). Esa sección documenta las rutas de evaluación de cadena exacta y expresión regular, sus requisitos de versión, y los valores de matcher para cada tipo de evento.

231 231 

232| Opción | Tipo | Predeterminado | Descripción |232| Opción | Tipo | Predeterminado | Descripción |

233| - | - | - | - |233| - | - | - | - |

234| `matcher` | `string` | `undefined` | Patrón coincidido contra el campo de filtro del evento, siguiendo las [reglas para matchers en archivos de configuración](/docs/es/hooks#matcher-patterns). Para hooks de herramientas, este es el nombre de la herramienta. Las herramientas integradas incluyen `Bash`, `Read`, `Write`, `Edit`, `Glob`, `Grep`, `WebFetch`, `Agent` y otros (vea [Tipos de entrada de herramienta](/docs/es/agent-sdk/typescript#tool-input-types) para la lista completa). Las herramientas MCP usan el patrón `mcp__<server>__<action>`, donde `<server>` es la clave que usa en la configuración `mcpServers`. |234| `matcher` | `string` | `undefined` | Patrón coincidido contra el campo de filtro del evento, siguiendo las [reglas para matchers en archivos de configuración](/docs/es/hooks#matcher-patterns). Para hooks de herramientas, este es el nombre de la herramienta. Las herramientas integradas incluyen `Bash`, `Read`, `Write`, `Edit`, `Glob`, `Grep`, `WebFetch`, `Agent` y otros (consulta [Tipos de entrada de herramienta](/docs/es/agent-sdk/typescript#tool-input-types) para la lista completa). Las herramientas MCP usan el patrón `mcp__<server>__<action>`, donde `<server>` es la clave que usas en la configuración `mcpServers`. |

235| `hooks` | `HookCallback[]` | - | Requerido. Matriz de funciones de devolución de llamada a ejecutar cuando el patrón coincide |235| `hooks` | `HookCallback[]` | - | Requerido. Matriz de funciones de devolución de llamada a ejecutar cuando el patrón coincide |

236| `timeout` | `number` | `undefined` | Tiempo de espera en segundos. Cuando se omite, Claude Code aplica el [tiempo de espera predeterminado del evento](#hook-timeout). Sus devoluciones de llamada del SDK siguen los valores predeterminados del hook `command` |236| `timeout` | `number` | `undefined` | Tiempo de espera en segundos. Cuando se omite, Claude Code aplica el [tiempo de espera predeterminado del evento](#hook-timeout). Tus devoluciones de llamada del SDK siguen los valores predeterminados del hook `command` |

237 237 

238Use el patrón `matcher` para dirigirse a herramientas específicas siempre que sea posible. Un matcher con `'Bash'` solo se ejecuta para comandos Bash, mientras que omitir el patrón ejecuta sus devoluciones de llamada para cada ocurrencia del evento. Omítalo a propósito para registrar cada llamada de herramienta que su sesión realiza.238Usa el patrón `matcher` para dirigirte a herramientas específicas siempre que sea posible. Un matcher con `'Bash'` solo se ejecuta para comandos Bash, mientras que omitir el patrón ejecuta tus devoluciones de llamada para cada ocurrencia del evento. Omítelo a propósito para registrar cada llamada a herramienta que realiza tu sesión.

239 239 

240<h3 id="callback-functions">240<h3 id="callback-functions">

241 Funciones de devolución de llamada241 Funciones de devolución de llamada


247 247 

248Cada devolución de llamada de hook recibe tres argumentos:248Cada devolución de llamada de hook recibe tres argumentos:

249 249 

250* **Datos de entrada:** un objeto tipado que contiene detalles del evento. Cada tipo de hook tiene su propia forma de entrada. Por ejemplo, `PreToolUseHookInput` incluye `tool_name` y `tool_input`, mientras que `NotificationHookInput` incluye `message`. Vea las definiciones de tipo completas en las referencias del SDK de [TypeScript](/docs/es/agent-sdk/typescript#hookinput) y [Python](/docs/es/agent-sdk/python#hookinput).250* **Datos de entrada:** un objeto tipado que contiene detalles del evento. Cada tipo de hook tiene su propia forma de entrada. Por ejemplo, `PreToolUseHookInput` incluye `tool_name` y `tool_input`, mientras que `NotificationHookInput` incluye `message`. Consulta las definiciones de tipo completas en las referencias del SDK de [TypeScript](/docs/es/agent-sdk/typescript#hookinput) y [Python](/docs/es/agent-sdk/python#hookinput).

251 * Todas las entradas de hook comparten `session_id`, `cwd` y `hook_event_name`.251 * Todas las entradas de hook comparten `session_id`, `cwd` y `hook_event_name`.

252 * `agent_id` y `agent_type` se rellenan cuando el hook se dispara dentro de un subagente. En TypeScript, estos están en la entrada de hook base y disponibles para todos los tipos de hook. En Python, son campos opcionales en `PreToolUse`, `PostToolUse`, `PostToolUseFailure` y `PermissionRequest`, y campos requeridos en `SubagentStart` y `SubagentStop`.252 * `agent_id` y `agent_type` se rellenan cuando el hook se dispara dentro de un subagente. En TypeScript, estos están en la entrada de hook base y disponibles para todos los tipos de hook. En Python, son campos opcionales en `PreToolUse`, `PostToolUse`, `PostToolUseFailure` y `PermissionRequest`, y campos requeridos en `SubagentStart` y `SubagentStop`.

253* **ID de uso de herramienta** (`str | None` / `string | undefined`): correlaciona eventos `PreToolUse` y `PostToolUse` para la misma llamada de herramienta.253* **ID de uso de herramienta** (`str | None` / `string | undefined`): correlaciona eventos `PreToolUse` y `PostToolUse` para la misma llamada a herramienta.

254* **Contexto:** en TypeScript, contiene una propiedad `signal` (`AbortSignal`) para cancelación. En Python, este argumento está reservado para uso futuro.254* **Contexto:** en TypeScript, contiene una propiedad `signal` (`AbortSignal`) para cancelación. En Python, este argumento está reservado para uso futuro.

255 255 

256<h4 id="outputs">256<h4 id="outputs">

257 Salidas257 Salidas

258</h4>258</h4>

259 259 

260Su devolución de llamada devuelve un objeto con dos categorías de campos:260Tu devolución de llamada devuelve un objeto con dos categorías de campos:

261 261 

262* **Campos de nivel superior** se aceptan en cada evento: `systemMessage` muestra un mensaje al usuario, y `continue` (`continue_` en Python) determina si el agente sigue ejecutándose después de este hook. Algunos eventos los descartan o los entregan en otro lugar. Cada [sección del evento](/docs/es/hooks#hook-events) en la página de hooks dice dónde llegan.262* **Campos de nivel superior** se aceptan en cada evento: `systemMessage` muestra un mensaje al usuario, y `continue` (`continue_` en Python) determina si el agente sigue ejecutándose después de este hook. Algunos eventos los descartan o los entregan en otro lugar. Cada [sección del evento](/docs/es/hooks#hook-events) en la página de hooks dice dónde llegan.

263* **`hookSpecificOutput`** controla la operación actual. Los campos que estableces dentro dependen del tipo de evento de hook:263* **`hookSpecificOutput`** controla la operación actual. Los campos que estableces dentro dependen del tipo de evento de hook:

264 * Para hooks `PreToolUse`, aquí es donde estableces `permissionDecision` (`"allow"`, `"deny"`, `"ask"` o `"defer"`), `permissionDecisionReason` e `updatedInput`. Si devuelves `"defer"`, el turno termina con un mensaje de resultado cuyo `stop_reason` es `"tool_deferred"`, para que puedas [reanudar la llamada más tarde](/docs/es/hooks#defer-a-tool-call-for-later).264 * Para hooks `PreToolUse`, aquí es donde estableces `permissionDecision` (`"allow"`, `"deny"`, `"ask"` o `"defer"`), `permissionDecisionReason` e `updatedInput`. Si devuelves `"defer"`, el turno termina con un mensaje de resultado cuyo `stop_reason` es `"tool_deferred"`, para que puedas [reanudar la llamada más tarde](/docs/es/hooks#defer-a-tool-call-for-later).

265 * Para hooks `PostToolUse`, puedes establecer `additionalContext` para agregar información al resultado de la herramienta. Para reemplazar la salida de la herramienta antes de que Claude la vea, establece `updatedToolOutput`, que funciona para cualquier herramienta en ambos SDK. El campo anterior `updatedMCPToolOutput` reemplaza solo la salida de herramientas MCP y está obsoleto.265 * Para hooks `PostToolUse`, puedes establecer `additionalContext` para agregar información al resultado de la herramienta. Para reemplazar la salida de la herramienta antes de que Claude la vea, establece `updatedToolOutput`, que funciona para cualquier herramienta en ambos SDK. El campo anterior `updatedMCPToolOutput` reemplaza solo la salida de herramientas MCP.

266 * En el SDK de TypeScript, una devolución de llamada `PostToolUse` también puede devolver `classifierContext`, una nota breve sobre el resultado de la llamada a herramienta para el clasificador de permisos del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode). Debido a que tu devolución de llamada se ejecuta en el proceso propio de tu aplicación, el clasificador puede considerar una declaración de usuario que retransmitas en la nota como intención del usuario. El campo requiere TypeScript Agent SDK v0.3.236 o posterior. [Anotar un resultado para el clasificador del modo automático](/docs/es/hooks#annotate-a-result-for-the-auto-mode-classifier) cubre el límite de longitud, la regla de solo sincrónico, y qué no poner en la nota.266 * En el SDK de TypeScript, una devolución de llamada `PostToolUse` también puede devolver `classifierContext`, una nota breve sobre el resultado de la llamada a herramienta para el clasificador de permisos del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode). Debido a que tu devolución de llamada se ejecuta en el proceso propio de tu aplicación, el clasificador puede considerar una declaración de usuario que retransmitas en la nota como intención del usuario. El campo requiere TypeScript Agent SDK v0.3.236 o posterior. [Anotar un resultado para el clasificador del modo automático](/docs/es/hooks#annotate-a-result-for-the-auto-mode-classifier) cubre el límite de longitud, la regla de solo sincrónico, y qué no poner en la nota.

267 267 

268Devuelva `{}` para permitir la operación sin cambios. Los hooks de devolución de llamada del SDK usan el mismo formato de salida JSON que [hooks de comandos de shell de Claude Code](/docs/es/hooks#json-output), que documenta cada campo y opción específica del evento. Para las definiciones de tipo del SDK, vea las referencias del SDK de [TypeScript](/docs/es/agent-sdk/typescript#synchookjsonoutput) y [Python](/docs/es/agent-sdk/python#synchookjsonoutput).268Devuelve `{}` para permitir la operación sin cambios. Los hooks de devolución de llamada del SDK usan el mismo formato de salida JSON que [hooks de comandos de shell de Claude Code](/docs/es/hooks#json-output), que documenta cada campo y opción específica del evento. Para las definiciones de tipo del SDK, consulta las referencias del SDK de [TypeScript](/docs/es/agent-sdk/typescript#synchookjsonoutput) y [Python](/docs/es/agent-sdk/python#synchookjsonoutput).

269 269 

270<Note>270<Note>

271 Cuando se aplican múltiples hooks o reglas de permiso, `deny` tiene prioridad sobre `defer`, que tiene prioridad sobre `ask`, que tiene prioridad sobre `allow`. Si algún hook devuelve `deny`, la operación se bloquea independientemente de otros hooks.271 Cuando se aplican múltiples hooks o reglas de permisos, `deny` tiene prioridad sobre `defer`, que tiene prioridad sobre `ask`, que tiene prioridad sobre `allow`. Si algún hook devuelve `deny`, la operación se bloquea independientemente de otros hooks.

272</Note>272</Note>

273 273 

274<h4 id="asynchronous-output">274<h4 id="asynchronous-output">

275 Salida asincrónica275 Salida asincrónica

276</h4>276</h4>

277 277 

278De forma predeterminada, el agente espera a que su hook devuelva antes de continuar. Si su hook realiza un efecto secundario, como registro o envío de webhook, y no necesita influir en el comportamiento del agente, puede devolver una salida asincrónica en su lugar. Esto le dice al agente que continúe inmediatamente sin esperar a que el hook termine. En este fragmento, `send_to_logging_service` en Python y `sendToLoggingService` en TypeScript representan cualquier función de registro que defina:278De forma predeterminada, el agente espera a que tu hook devuelva antes de continuar. Si tu hook realiza un efecto secundario, como registro o envío de webhook, y no necesita influir en el comportamiento del agente, puedes devolver una salida asincrónica en su lugar. Esto le dice al agente que continúe inmediatamente sin esperar a que el hook termine. En este fragmento, `send_to_logging_service` en Python y `sendToLoggingService` en TypeScript representan cualquier función de registro que definas:

279 279 

280<CodeGroup>280<CodeGroup>

281 ```python Python theme={null}281 ```python Python theme={null}


296 296 

297| Campo | Tipo | Descripción |297| Campo | Tipo | Descripción |

298| - | - | - |298| - | - | - |

299| `async` | `true` | Señala modo asincrónico. El agente continúa sin esperar. En Python, use `async_` para evitar la palabra clave reservada. |299| `async` | `true` | Señala modo asincrónico. El agente continúa sin esperar. En Python, usa `async_` para evitar la palabra clave reservada. |

300| `asyncTimeout` | `number` | Tiempo de espera opcional en milisegundos para la operación de fondo |300| `asyncTimeout` | `number` | Tiempo de espera opcional en milisegundos para la operación en segundo plano |

301 301 

302<Note>302<Note>

303 Las salidas asincrónicas no pueden bloquear, modificar o inyectar contexto en la operación ya que el agente ya ha avanzado. Úselas solo para efectos secundarios como registro, métricas o notificaciones.303 Las salidas asincrónicas no pueden bloquear, modificar o inyectar contexto en la operación ya que el agente ya ha avanzado. Úsalas solo para efectos secundarios como registro, métricas o notificaciones.

304</Note>304</Note>

305 305 

306<h2 id="examples">306<h2 id="examples">


801 Hook no se dispara801 Hook no se dispara

802</h3>802</h3>

803 803 

804* Verifique que el nombre del evento de hook sea correcto y sensible a mayúsculas (`PreToolUse`, no `preToolUse`)804* Verifica que el nombre del evento de hook sea correcto y sensible a mayúsculas (`PreToolUse`, no `preToolUse`)

805* Verifique que su patrón de matcher coincida exactamente con el nombre de la herramienta805* Verifica que tu patrón de matcher coincida exactamente con el nombre de la herramienta

806* Asegúrese de que el hook esté bajo el tipo de evento correcto en `options.hooks`806* Asegúrate de que el hook esté bajo el tipo de evento correcto en `options.hooks`

807* Para hooks que no son de herramientas que admiten matchers, como `Notification` y `SubagentStop`, los matchers coinciden contra campos diferentes, y `Stop` ignora los matchers por completo (vea [patrones de matcher](/docs/es/hooks#matcher-patterns))807* Para hooks que no son de herramientas que admiten matchers, como `Notification` y `SubagentStop`, los matchers coinciden contra campos diferentes, y `Stop` ignora los matchers por completo (consulta [patrones de matcher](/docs/es/hooks#matcher-patterns))

808* Los hooks pueden no dispararse cuando el agente alcanza el límite [`max_turns`](/docs/es/agent-sdk/python#claudeagentoptions) porque la sesión termina antes de que los hooks puedan ejecutarse808* Los hooks pueden no dispararse cuando el agente alcanza el límite [`max_turns`](/docs/es/agent-sdk/python#claudeagentoptions) porque la sesión termina antes de que los hooks puedan ejecutarse

809 809 

810<h3 id="matcher-not-filtering-as-expected">810<h3 id="matcher-not-filtering-as-expected">

811 Matcher no filtra como se esperaba811 Matcher no filtra como se esperaba

812</h3>812</h3>

813 813 

814Los matchers solo coinciden con nombres de herramientas, no con rutas de archivo u otros argumentos. Para filtrar por ruta de archivo, verifique `tool_input.file_path` dentro de su hook:814Los matchers solo coinciden con nombres de herramientas, no con rutas de archivo u otros argumentos. Para filtrar por ruta de archivo, verifica `tool_input.file_path` dentro de tu hook:

815 815 

816```typescript theme={null}816```typescript theme={null}

817const myHook: HookCallback = async (input, toolUseID, { signal }) => {817const myHook: HookCallback = async (input, toolUseID, { signal }) => {


828 Tiempo de espera del hook828 Tiempo de espera del hook

829</h3>829</h3>

830 830 

831Claude Code ejecuta cada devolución de llamada con un tiempo de espera, que usted establece en segundos con el campo `timeout` en su `HookMatcher`. Cuando no establece uno, Claude Code utiliza el valor predeterminado del evento: 600 segundos para la mayoría de eventos, 30 segundos para `UserPromptSubmit`, `PreModelSwitch` y `PostModelSwitch`, y 10 segundos para `MessageDisplay`. Claude Code ejecuta devoluciones de llamada `SessionEnd` durante el apagado bajo el [presupuesto de tiempo de espera SessionEnd](/docs/es/hooks#sessionend-input) más corto, 1,5 segundos de forma predeterminada.831Claude Code ejecuta cada devolución de llamada con un tiempo de espera, que estableces en segundos con el campo `timeout` en su `HookMatcher`. Cuando no estableces uno, Claude Code utiliza el valor predeterminado del evento: 600 segundos para la mayoría de eventos, 30 segundos para `UserPromptSubmit`, `PreModelSwitch` y `PostModelSwitch`, y 10 segundos para `MessageDisplay`. Claude Code ejecuta devoluciones de llamada `SessionEnd` durante el apagado bajo el [presupuesto de tiempo de espera SessionEnd](/docs/es/hooks#sessionend-input) más corto, 1,5 segundos de forma predeterminada.

832 832 

833Cuando una devolución de llamada excede su tiempo de espera, Claude Code la cancela y descarta su salida, y la sesión continúa en lugar de colgarse. Lo que sucede a continuación depende del evento:833Cuando una devolución de llamada excede su tiempo de espera, Claude Code la cancela y descarta su salida, y la sesión continúa en lugar de colgarse. Lo que sucede a continuación depende del evento:

834 834 

835* `PreToolUse`: Claude Code no ejecuta la llamada de herramienta, Claude recibe un resultado de herramienta indicando que el hook no respondió antes de su tiempo de espera, y el turno continúa. Si otro hook `PreToolUse` devolvió una denegación explícita, Claude recibe esa denegación en lugar del error de tiempo de espera. Antes de v2.1.210, Claude Code reportaba el tiempo de espera a Claude como un rechazo del usuario, lo que hacía que las sesiones desatendidas se detuvieran y esperaran entrada.835* `PreToolUse`: Claude Code no ejecuta la llamada a herramienta, Claude recibe un resultado de herramienta indicando que el hook no respondió antes de su tiempo de espera, y el turno continúa. Si otro hook `PreToolUse` devolvió una denegación explícita, Claude recibe esa denegación en lugar del error de tiempo de espera. Antes de v2.1.210, Claude Code reportaba el tiempo de espera a Claude como un rechazo del usuario, lo que hacía que las sesiones desatendidas se detuvieran y esperaran entrada.

836* `PostToolUse` y `PostToolUseFailure`: Claude Code mantiene el resultado de la herramienta y el turno continúa.836* `PostToolUse` y `PostToolUseFailure`: Claude Code mantiene el resultado de la herramienta y el turno continúa.

837* `UserPromptSubmit` y [`UserPromptExpansion`](/docs/es/hooks#userpromptexpansion): Claude Code bloquea el mensaje con un mensaje que nombra el hook y el tiempo de espera, y la sesión continúa. Debido a que una devolución de llamada en estos eventos puede actuar como una puerta de política, Claude Code nunca permite que un mensaje con tiempo de espera agotado pase sin ser revisado. Antes de v2.1.208, Claude Code terminaba la consulta con `error_during_execution` cuando una devolución de llamada en estos eventos agotaba el tiempo de espera.837* `UserPromptSubmit` y [`UserPromptExpansion`](/docs/es/hooks#userpromptexpansion): Claude Code bloquea el prompt con un mensaje que nombra el hook y el tiempo de espera, y la sesión continúa. Debido a que una devolución de llamada en estos eventos puede actuar como una puerta de política, Claude Code nunca permite que un prompt cuyo tiempo de espera se agotó pase sin ser revisado. Antes de v2.1.208, Claude Code terminaba la consulta con `error_during_execution` cuando se agotaba el tiempo de espera de una devolución de llamada en estos eventos.

838* `Stop` y `SubagentStop`: la devolución de llamada con tiempo de espera agotado cuenta como no devolver ninguna decisión. El agente o subagente se detiene como si esa devolución de llamada lo hubiera permitido, y una decisión de sus otros hooks en el evento aún se aplica. Antes de Claude Code v2.1.273, una devolución de llamada `Stop` o `SubagentStop` con tiempo de espera agotado contaba como una ejecución de hook fallida, y Claude Code descartaba las decisiones de sus otros hooks en el evento.838* `Stop` y `SubagentStop`: la devolución de llamada con tiempo de espera agotado cuenta como no devolver ninguna decisión. El agente o subagente se detiene como si esa devolución de llamada lo hubiera permitido, y una decisión de tus otros hooks en el evento aún se aplica. Antes de Claude Code v2.1.273, una devolución de llamada `Stop` o `SubagentStop` con tiempo de espera agotado contaba como una ejecución de hook fallida, y Claude Code descartaba las decisiones de tus otros hooks en el evento.

839* `SessionStart`: la devolución de llamada con tiempo de espera agotado cuenta como no devolver ninguna salida, y la sesión continúa con la salida de sus otros hooks `SessionStart`.839* `SessionStart`: la devolución de llamada con tiempo de espera agotado cuenta como no devolver ninguna salida, y la sesión continúa con la salida de tus otros hooks `SessionStart`.

840* `PreModelSwitch`: Claude Code bloquea el cambio de modelo. Un hook que no responde no ha aprobado el cambio.840* `PreModelSwitch`: Claude Code bloquea el cambio de modelo. Un hook que no responde no ha aprobado el cambio.

841* Otros eventos, como `Notification`, `PreCompact` y `PostModelSwitch`: Claude Code registra el fallo y continúa.841* Otros eventos, como `Notification`, `PreCompact` y `PostModelSwitch`: Claude Code registra el fallo y continúa.

842 842 

843La primera vez que una devolución de llamada `Stop` o `SessionStart` agota el tiempo de espera en la sesión principal, Claude Code también agrega un [`SDKInformationalMessage`](/docs/es/agent-sdk/typescript#sdkinformationalmessage) al flujo de mensajes diciendo que la aplicación que impulsa la sesión no respondió. Los tiempos de espera posteriores no repiten ese mensaje mientras su aplicación permanece sin responder.843La primera vez que se agota el tiempo de espera de una devolución de llamada `Stop` o `SessionStart` en la sesión principal, Claude Code también agrega un [`SDKInformationalMessage`](/docs/es/agent-sdk/typescript#sdkinformationalmessage) al flujo de mensajes diciendo que la aplicación que impulsa la sesión no respondió. Los tiempos de espera posteriores no repiten ese mensaje mientras tu aplicación permanece sin responder.

844 844 

845Si interrumpe la consulta mientras una devolución de llamada está pendiente, Claude Code cancela la llamada de herramienta pendiente. Antes de v2.1.208, la llamada de herramienta podría proceder si interrumpía durante una devolución de llamada `PreToolUse` pendiente.845Si interrumpes la consulta mientras una devolución de llamada está pendiente, Claude Code cancela la llamada a herramienta pendiente. Antes de v2.1.208, la llamada a herramienta podía proceder si interrumpías durante una devolución de llamada `PreToolUse` pendiente.

846 846 

847Si su devolución de llamada necesita más tiempo, establezca un `timeout` más alto en su `HookMatcher`. En TypeScript, use el `AbortSignal` del tercer argumento de devolución de llamada para manejar la cancelación correctamente cuando se agote el tiempo de espera.847Si tu devolución de llamada necesita más tiempo, establece un `timeout` más alto en su `HookMatcher`. En TypeScript, usa el `AbortSignal` del tercer argumento de la devolución de llamada para manejar la cancelación correctamente cuando se agote el tiempo de espera.

848 848 

849<h3 id="tool-blocked-unexpectedly">849<h3 id="tool-blocked-unexpectedly">

850 Herramienta bloqueada inesperadamente850 Herramienta bloqueada inesperadamente

851</h3>851</h3>

852 852 

853* Verifique todos los hooks `PreToolUse` para devoluciones de `permissionDecision: 'deny'`853* Verifica todos los hooks `PreToolUse` en busca de devoluciones de `permissionDecision: 'deny'`

854* Agregue registro a sus hooks para ver qué `permissionDecisionReason` están devolviendo854* Agrega registro a tus hooks para ver qué `permissionDecisionReason` están devolviendo

855* Verifique que los patrones de matcher no sean demasiado amplios: un matcher vacío coincide con todas las herramientas855* Verifica que los patrones de matcher no sean demasiado amplios: un matcher vacío coincide con todas las herramientas

856 856 

857<h3 id="modified-input-not-applied">857<h3 id="modified-input-not-applied">

858 Entrada modificada no aplicada858 Entrada modificada no aplicada

859</h3>859</h3>

860 860 

861* Asegúrese de que `updatedInput` esté dentro de `hookSpecificOutput`, no en el nivel superior:861* Asegúrate de que `updatedInput` esté dentro de `hookSpecificOutput`, no en el nivel superior:

862 862 

863 ```typescript theme={null}863 ```typescript theme={null}

864 return {864 return {


870 };870 };

871 ```871 ```

872 872 

873* No empareje `updatedInput` con `permissionDecision: 'defer'`, que descarta la entrada modificada. Omitir `permissionDecision` está bien: la entrada modificada aún se aplica a través de la evaluación de permiso normal. También puede devolver `'allow'` para aprobar automáticamente la entrada modificada u `'ask'` para mostrarla al usuario para su aprobación873* No emparejes `updatedInput` con `permissionDecision: 'defer'`, que descarta la entrada modificada. Omitir `permissionDecision` está bien: la entrada modificada aún se aplica a través de la evaluación de permisos normal. También puedes devolver `'allow'` para aprobar automáticamente la entrada modificada u `'ask'` para mostrarla al usuario para su aprobación

874 874 

875* Incluya `hookEventName` en `hookSpecificOutput` para identificar para qué tipo de hook es la salida875* Incluye `hookEventName` en `hookSpecificOutput` para identificar para qué tipo de hook es la salida

876 876 

877<h3 id="session-hooks-not-available-in-python">877<h3 id="session-hooks-not-available-in-python">

878 Hooks de sesión no disponibles en Python878 Hooks de sesión no disponibles en Python

879</h3>879</h3>

880 880 

881`SessionStart` y `SessionEnd` pueden registrarse como hooks de devolución de llamada del SDK en TypeScript, pero no están disponibles en el SDK de Python porque su tipo `HookEvent` los omite. En Python, solo están disponibles como [hooks de comandos de shell](/docs/es/hooks#hook-events) definidos en archivos de configuración como `.claude/settings.json`. Para cargar hooks de comandos de shell desde su aplicación SDK, incluya la fuente de configuración apropiada con [`setting_sources`](/docs/es/agent-sdk/python#settingsource) o [`settingSources`](/docs/es/agent-sdk/typescript#settingsource):881`SessionStart` y `SessionEnd` pueden registrarse como hooks de devolución de llamada del SDK en TypeScript, pero no están disponibles en el SDK de Python porque su tipo `HookEvent` los omite. En Python, solo están disponibles como [hooks de comandos de shell](/docs/es/hooks#hook-events) definidos en archivos de configuración como `.claude/settings.json`. Los archivos de configuración que carga tu aplicación SDK dependen de [`setting_sources`](/docs/es/agent-sdk/python#settingsource) o [`settingSources`](/docs/es/agent-sdk/typescript#settingsource). Si estableces esa opción, incluye la fuente que contiene los hooks:

882 882 

883<CodeGroup>883<CodeGroup>

884 ```python Python theme={null}884 ```python Python theme={null}


894 ```894 ```

895</CodeGroup>895</CodeGroup>

896 896 

897Para ejecutar lógica de inicialización como una devolución de llamada del SDK de Python en su lugar, use el primer mensaje de `client.receive_response()` como su disparador.897Para ejecutar lógica de inicialización como una devolución de llamada del SDK de Python en su lugar, usa el primer mensaje de `client.receive_response()` como tu disparador.

898 898 

899<h3 id="subagent-permission-prompts-multiplying">899<h3 id="subagent-permission-prompts-multiplying">

900 Solicitudes de permiso de subagente multiplicándose900 Solicitudes de permiso de subagentes multiplicándose

901</h3>901</h3>

902 902 

903Al generar múltiples subagentes, cada uno puede solicitar permisos por separado para sus propias llamadas de herramienta. Para evitar solicitudes repetidas, use hooks `PreToolUse` para aprobar automáticamente herramientas específicas, o configure reglas de permiso, que los subagentes [heredan de la conversación padre](/docs/es/sub-agents#permission-modes).903Al generar múltiples subagentes, cada uno puede solicitar permisos por separado para sus propias llamadas a herramientas. Para evitar solicitudes repetidas, usa hooks `PreToolUse` para aprobar automáticamente herramientas específicas, o configura reglas de permisos, que los subagentes [heredan de la conversación padre](/docs/es/sub-agents#permission-modes).

904 904 

905<h3 id="recursive-hook-loops-with-subagents">905<h3 id="recursive-hook-loops-with-subagents">

906 Bucles recursivos de hook con subagentes906 Bucles recursivos de hook con subagentes


908 908 

909Un hook `UserPromptSubmit` que genera subagentes puede crear bucles infinitos si esos subagentes disparan el mismo hook. Para prevenir esto:909Un hook `UserPromptSubmit` que genera subagentes puede crear bucles infinitos si esos subagentes disparan el mismo hook. Para prevenir esto:

910 910 

911* Use una variable compartida o estado de sesión para rastrear si ya está dentro de un subagente911* Usa una variable compartida o estado de sesión para rastrear si ya estás dentro de un subagente

912* Alcance los hooks para ejecutarse solo para la sesión del agente de nivel superior912* Limita los hooks para que solo se ejecuten en la sesión del agente de nivel superior

913 913 

914<h3 id="systemmessage-not-appearing-in-output">914<h3 id="systemmessage-not-appearing-in-output">

915 systemMessage no aparece en la salida915 systemMessage no aparece en la salida

916</h3>916</h3>

917 917 

918El campo `systemMessage` muestra un mensaje al usuario, no al modelo. En Claude Code v2.1.227 o posterior, el `systemMessage` de un hook puede aparecer en el flujo de mensajes como un [`SDKInformationalMessage`](/docs/es/agent-sdk/typescript#sdkinformationalmessage). Si lo hace depende del evento. Cada [sección del evento](/docs/es/hooks#hook-events) en la página de hooks dice cómo aparece la salida. Para pasar contexto al modelo en su lugar, devuelva [`additionalContext`](/docs/es/hooks#add-context-for-claude).918El campo `systemMessage` muestra un mensaje al usuario, no al modelo. En Claude Code v2.1.227 o posterior, el `systemMessage` de un hook puede aparecer en el flujo de mensajes como un [`SDKInformationalMessage`](/docs/es/agent-sdk/typescript#sdkinformationalmessage). Que aparezca o no depende del evento. Cada [sección del evento](/docs/es/hooks#hook-events) en la página de hooks indica cómo aparece la salida. Para pasar contexto al modelo en su lugar, devuelve [`additionalContext`](/docs/es/hooks#add-context-for-claude).

919 919 

920Antes de v2.1.227, el SDK exponía la salida de hooks en el flujo de mensajes solo para hooks `SessionStart` y `Setup`. Para cualquier otro evento, la salida aparecía solo en los eventos del ciclo de vida que [`includeHookEvents`](/docs/es/agent-sdk/typescript#options) (`include_hook_events` en Python) agrega. La entrada de esa opción cubre qué eventos del ciclo de vida produce cada evento de hook.920Antes de v2.1.227, el SDK exponía la salida de hooks en el flujo de mensajes solo para hooks `SessionStart` y `Setup`. Para cualquier otro evento, la salida aparecía solo en los eventos del ciclo de vida que [`includeHookEvents`](/docs/es/agent-sdk/typescript#options) (`include_hook_events` en Python) agrega. La entrada de esa opción cubre qué eventos del ciclo de vida produce cada evento de hook.

921 921 

922Si necesita exponer decisiones de hook a su aplicación de manera confiable, regístrelas por separado o use un canal de salida dedicado.922Si necesitas exponer decisiones de hook a tu aplicación de manera confiable, regístralas por separado o usa un canal de salida dedicado.

923 923 

924<h2 id="related-resources">924<h2 id="related-resources">

925 Recursos relacionados925 Recursos relacionados

agent-sdk/python.md +213 −212

Details

44 Funciones44 Funciones

45</h2>45</h2>

46 46 

47<Note>Los bloques de firma y fragmentos desnudos de `async for` / `async with` en esta página son ilustrativos. Para ejecutarlos, envuelva el cuerpo en `async def main(): ...` y llame a `asyncio.run(main())`.</Note>47<Note>Los bloques de firma y fragmentos desnudos de `async for` / `async with` en esta página son ilustrativos. Para ejecutarlos, envuelve el cuerpo en `async def main(): ...` y llama a `asyncio.run(main())`.</Note>

48 48 

49<h3 id="query">49<h3 id="query">

50 `query()`50 `query()`

51</h3>51</h3>

52 52 

53Crea 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`](#claudeagentoptions). Consulte [Sessions](/docs/es/agent-sdk/sessions).53Crea 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 pases `continue_conversation=True` o `resume` en [`ClaudeAgentOptions`](#claudeagentoptions). Consulta [Sessions](/docs/es/agent-sdk/sessions).

54 54 

55```python theme={null}55```python theme={null}

56async def query(56async def query(


122| :- | :- | :- |122| :- | :- | :- |

123| `name` | `str` | Identificador único para la herramienta |123| `name` | `str` | Identificador único para la herramienta |

124| `description` | `str` | Descripción legible de lo que hace la herramienta |124| `description` | `str` | Descripción legible de lo que hace la herramienta |

125| `input_schema` | `type \| dict[str, Any]` | Esquema que define los parámetros de entrada de la herramienta. Consulte [Opciones de esquema de entrada](#input-schema-options) |125| `input_schema` | `type \| dict[str, Any]` | Esquema que define los parámetros de entrada de la herramienta. Consulta [Opciones de esquema de entrada](#input-schema-options) |

126| `annotations` | [`ToolAnnotations`](#toolannotations)` \| None` | Anotaciones opcionales de herramienta MCP que proporcionan sugerencias de comportamiento a los clientes |126| `annotations` | [`ToolAnnotations`](#toolannotations)` \| None` | Anotaciones opcionales de herramienta MCP que proporcionan sugerencias de comportamiento a los clientes |

127 127 

128<h4 id="input-schema-options">128<h4 id="input-schema-options">


194 `ToolAnnotations`194 `ToolAnnotations`

195</h4>195</h4>

196 196 

197Sugerencias de comportamiento para una herramienta, pasadas como el argumento `annotations` de [`tool()`](#tool). `ToolAnnotations` extiende `mcp.types.ToolAnnotations` del SDK de MCP con un campo `maxResultSizeChars`, y puede escribir cada sugerencia en camelCase o snake\_case: `ToolAnnotations(readOnlyHint=True)` y `ToolAnnotations(read_only_hint=True)` son equivalentes. También puede pasar un `mcp.types.ToolAnnotations` simple dondequiera que el SDK acepte anotaciones.197Sugerencias de comportamiento para una herramienta, pasadas como el argumento `annotations` de [`tool()`](#tool). `ToolAnnotations` extiende `mcp.types.ToolAnnotations` del SDK de MCP con un campo `maxResultSizeChars`, y puedes escribir cada sugerencia en camelCase o snake\_case: `ToolAnnotations(readOnlyHint=True)` y `ToolAnnotations(read_only_hint=True)` son equivalentes. Para volver a leer una sugerencia desde el objeto, usa la escritura que declara tu paquete `mcp` instalado: `.readOnlyHint` en `mcp` 1.x y `.read_only_hint` en 2.x, mientras que `.maxResultSizeChars` funciona en ambas. También puedes pasar un `mcp.types.ToolAnnotations` simple dondequiera que el SDK acepte anotaciones.

198 198 

199Los nombres snake\_case y el campo `maxResultSizeChars` tipado requieren Python Agent SDK 0.2.140 o posterior. Las versiones 0.1.31 a 0.2.139 re-exportan `mcp.types.ToolAnnotations` sin cambios. En las versiones 0.1.55 a 0.2.139 aún puede pasar `maxResultSizeChars` como argumento de palabra clave: la clase MCP acepta campos adicionales, y el SDK reenvía el valor a Claude Code.199Los nombres snake\_case y el campo `maxResultSizeChars` tipado requieren Python Agent SDK 0.2.140 o posterior. Las versiones 0.1.31 a 0.2.139 re-exportan `mcp.types.ToolAnnotations` sin cambios. En las versiones 0.1.55 a 0.2.139 aún puedes pasar `maxResultSizeChars` como argumento de palabra clave: la clase MCP acepta campos adicionales, y el SDK reenvía el valor a Claude Code.

200 200 

201Todos los campos son opcionales. Los clientes no deben depender de las sugerencias para decisiones de seguridad.201Todos los campos son opcionales. Los clientes no deben depender de las sugerencias para decisiones de seguridad.

202 202 


207| `destructiveHint` | `bool \| None` | `True` | Si es `True`, la herramienta puede realizar actualizaciones destructivas (solo significativo cuando `readOnlyHint` es `False`) |207| `destructiveHint` | `bool \| None` | `True` | Si es `True`, la herramienta puede realizar actualizaciones destructivas (solo significativo cuando `readOnlyHint` es `False`) |

208| `idempotentHint` | `bool \| None` | `False` | Si es `True`, las llamadas repetidas con los mismos argumentos no tienen efecto adicional (solo significativo cuando `readOnlyHint` es `False`) |208| `idempotentHint` | `bool \| None` | `False` | Si es `True`, las llamadas repetidas con los mismos argumentos no tienen efecto adicional (solo significativo cuando `readOnlyHint` es `False`) |

209| `openWorldHint` | `bool \| None` | `True` | Si es `True`, la herramienta interactúa con entidades externas (por ejemplo, búsqueda web). Si es `False`, el dominio de la herramienta es cerrado (por ejemplo, una herramienta de memoria) |209| `openWorldHint` | `bool \| None` | `True` | Si es `True`, la herramienta interactúa con entidades externas (por ejemplo, búsqueda web). Si es `False`, el dominio de la herramienta es cerrado (por ejemplo, una herramienta de memoria) |

210| `maxResultSizeChars` | `int \| None` | `None` | Número de caracteres hasta los cuales Claude Code mantiene el resultado de texto de esta herramienta en línea en la conversación en lugar de guardarlo en un archivo, hasta 500.000. Los resultados que contienen imágenes no se ven afectados. Una configuración de Claude Code en lugar de una sugerencia MCP: el SDK la envía en `_meta` de la herramienta como `anthropic/maxResultSizeChars`. Consulte [Raise the limit for a specific tool](/docs/es/mcp#raise-the-limit-for-a-specific-tool) |210| `maxResultSizeChars` | `int \| None` | `None` | Número de caracteres hasta los cuales Claude Code mantiene el resultado de texto de esta herramienta en línea en la conversación en lugar de guardarlo en un archivo, hasta 500.000. Los resultados que contienen imágenes no se ven afectados. Un ajuste de Claude Code en lugar de una sugerencia MCP: el SDK lo envía en `_meta` de la herramienta como `anthropic/maxResultSizeChars`. Consulta [Raise the limit for a specific tool](/docs/es/mcp#raise-the-limit-for-a-specific-tool) |

211 211 

212```python theme={null}212```python theme={null}

213from claude_agent_sdk import tool, ToolAnnotations213from claude_agent_sdk import tool, ToolAnnotations


228 `create_sdk_mcp_server()`228 `create_sdk_mcp_server()`

229</h3>229</h3>

230 230 

231Crea un servidor MCP en proceso que se ejecuta dentro de su aplicación Python.231Crea un servidor MCP en proceso que se ejecuta dentro de tu aplicación Python.

232 232 

233```python theme={null}233```python theme={null}

234def create_sdk_mcp_server(234def create_sdk_mcp_server(


289 `list_sessions()`289 `list_sessions()`

290</h3>290</h3>

291 291 

292Lista sesiones pasadas con metadatos. Filtre por directorio de proyecto o liste sesiones en todos los proyectos. Sincrónico; devuelve inmediatamente.292Lista sesiones pasadas con metadatos. Filtra por directorio de proyecto o lista sesiones en todos los proyectos. Sincrónico; devuelve inmediatamente.

293 293 

294```python theme={null}294```python theme={null}

295def list_sessions(295def list_sessions(


308| :- | :- | :- | :- |308| :- | :- | :- | :- |

309| `directory` | `str \| None` | `None` | Directorio para listar sesiones. Cuando se omite, devuelve sesiones en todos los proyectos |309| `directory` | `str \| None` | `None` | Directorio para listar sesiones. Cuando se omite, devuelve sesiones en todos los proyectos |

310| `limit` | `int \| None` | `None` | Número máximo de sesiones a devolver |310| `limit` | `int \| None` | `None` | Número máximo de sesiones a devolver |

311| `offset` | `int` | `0` | Número de sesiones a omitir desde el inicio de los resultados ordenados. Úselo con `limit` para paginación |311| `offset` | `int` | `0` | Número de sesiones a omitir desde el inicio de los resultados ordenados. Úsalo con `limit` para paginación |

312| `include_worktrees` | `bool` | `True` | Cuando `directory` está dentro de un repositorio git, incluya sesiones de todas las rutas de worktree |312| `include_worktrees` | `bool` | `True` | Cuando `directory` está dentro de un repositorio git, incluye sesiones de todas las rutas de worktree |

313 313 

314<h4 id="return-type-sdksessioninfo">314<h4 id="return-type-sdksessioninfo">

315 Tipo de retorno: `SDKSessionInfo`315 Tipo de retorno: `SDKSessionInfo`


318| Propiedad | Tipo | Descripción |318| Propiedad | Tipo | Descripción |

319| :- | :- | :- |319| :- | :- | :- |

320| `session_id` | `str` | Identificador único de sesión |320| `session_id` | `str` | Identificador único de sesión |

321| `summary` | `str` | Título de visualización: título personalizado, resumen generado automáticamente o primer prompt |321| `summary` | `str` | Título de visualización: título personalizado, prompt más reciente, resumen generado automáticamente o primer prompt |

322| `last_modified` | `int` | Última hora de modificación en milisegundos desde la época |322| `last_modified` | `int` | Última hora de modificación en milisegundos desde la época |

323| `file_size` | `int \| None` | Tamaño del archivo de sesión en bytes (`None` para backends de almacenamiento remoto) |323| `file_size` | `int \| None` | Tamaño del archivo de sesión en bytes (`None` para backends de almacenamiento remoto) |

324| `custom_title` | `str \| None` | Título de sesión establecido por el usuario |324| `custom_title` | `str \| None` | Título de sesión: el título establecido por el usuario, o el título generado automáticamente cuando no se ha establecido ninguno |

325| `first_prompt` | `str \| None` | Primer prompt de usuario significativo en la sesión |325| `first_prompt` | `str \| None` | Primer prompt de usuario significativo en la sesión |

326| `git_branch` | `str \| None` | Rama de Git al final de la sesión |326| `git_branch` | `str \| None` | Rama de Git al final de la sesión |

327| `cwd` | `str \| None` | Directorio de trabajo para la sesión |327| `cwd` | `str \| None` | Directorio de trabajo para la sesión |


332 Ejemplo332 Ejemplo

333</h4>333</h4>

334 334 

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

336 336 

337```python theme={null}337```python theme={null}

338from claude_agent_sdk import list_sessions338from claude_agent_sdk import list_sessions


422 Ejemplo422 Ejemplo

423</h4>423</h4>

424 424 

425Busque 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.425Busca los metadatos de una única sesión sin escanear el directorio del proyecto. Útil cuando ya tienes un ID de sesión de una ejecución anterior.

426 426 

427```python theme={null}427```python theme={null}

428from claude_agent_sdk import get_session_info428from claude_agent_sdk import get_session_info


462 Ejemplo462 Ejemplo

463</h4>463</h4>

464 464 

465Renombre la sesión más reciente para que sea más fácil de encontrar más tarde. El nuevo título aparece en [`SDKSessionInfo.custom_title`](#return-type-sdksessioninfo) en lecturas posteriores.465Renombra la sesión más reciente para que sea más fácil de encontrar más tarde. El nuevo título aparece en [`SDKSessionInfo.custom_title`](#return-type-sdksessioninfo) en lecturas posteriores.

466 466 

467```python theme={null}467```python theme={null}

468from claude_agent_sdk import list_sessions, rename_session468from claude_agent_sdk import list_sessions, rename_session


476 `tag_session()`476 `tag_session()`

477</h3>477</h3>

478 478 

479Etiqueta una sesión. Pase `None` para borrar la etiqueta. Las llamadas repetidas son seguras; la etiqueta más reciente gana. Sincrónico.479Etiqueta una sesión. Pasa `None` para borrar la etiqueta. Las llamadas repetidas son seguras; la etiqueta más reciente gana. Sincrónico.

480 480 

481```python theme={null}481```python theme={null}

482def tag_session(482def tag_session(


502 Ejemplo502 Ejemplo

503</h4>503</h4>

504 504 

505Etiquete una sesión, luego filtre por esa etiqueta en una lectura posterior. Pase `None` para borrar una etiqueta existente.505Etiqueta una sesión y luego filtra por esa etiqueta en una lectura posterior. Pasa `None` para borrar una etiqueta existente.

506 506 

507```python theme={null}507```python theme={null}

508from claude_agent_sdk import list_sessions, tag_session508from claude_agent_sdk import list_sessions, tag_session


813 `Transport`813 `Transport`

814</h3>814</h3>

815 815 

816Clase base abstracta para implementaciones de transporte personalizadas. Utilícela 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).816Clase base abstracta para implementaciones de transporte personalizadas. Úsala para comunicarte con el proceso de Claude a través de un canal personalizado (por ejemplo, una conexión remota en lugar de un subproceso local).

817 817 

818<Warning>818<Warning>

819 Esta es una API interna de bajo nivel. La interfaz puede cambiar en futuras versiones. Las implementaciones personalizadas deben actualizarse para coincidir con cualquier cambio de interfaz.819 Esta es una API interna de bajo nivel. La interfaz puede cambiar en futuras versiones. Las implementaciones personalizadas deben actualizarse para coincidir con cualquier cambio de interfaz.


852| `read_messages()` | Iterador asincrónico que produce mensajes JSON analizados |852| `read_messages()` | Iterador asincrónico que produce mensajes JSON analizados |

853| `close()` | Cerrar la conexión y limpiar recursos |853| `close()` | Cerrar la conexión y limpiar recursos |

854| `is_ready()` | Devuelve `True` si el transporte puede enviar y recibir |854| `is_ready()` | Devuelve `True` si el transporte puede enviar y recibir |

855| `end_input()` | Cerrar el flujo de entrada (por ejemplo, cerrar stdin para transportes de subproceso) |855| `end_input()` | Cerrar el stream de entrada (por ejemplo, cerrar stdin para transportes de subproceso) |

856 856 

857Importación: `from claude_agent_sdk import Transport`857Importación: `from claude_agent_sdk import Transport`

858 858 


918 918 

919| Propiedad | Tipo | Predeterminado | Descripción |919| Propiedad | Tipo | Predeterminado | Descripción |

920| :- | :- | :- | :- |920| :- | :- | :- | :- |

921| `tools` | `list[str] \| ToolsPreset \| None` | `None` | Configuración de herramientas. Utilice `{"type": "preset", "preset": "claude_code"}` para las herramientas predeterminadas de Claude Code |921| `tools` | `list[str] \| ToolsPreset \| None` | `None` | Configuración de herramientas. Usa `{"type": "preset", "preset": "claude_code"}` para las herramientas predeterminadas de Claude Code |

922| `allowed_tools` | `list[str]` | `[]` | Herramientas para aprobar automáticamente sin solicitar. Esto no restringe Claude solo a estas herramientas. Si nombra una de las [herramientas de seguimiento de tareas](/docs/es/agent-sdk/todo-tracking#model-availability) aquí, Claude Code también opta por la sesión. Otras herramientas no listadas se transfieren a `permission_mode` y `can_use_tool`. Utilice `disallowed_tools` para bloquear herramientas. Consulte [Permisos](/docs/es/agent-sdk/permissions#allow-and-deny-rules) |922| `allowed_tools` | `list[str]` | `[]` | Herramientas que se aprueban automáticamente sin pedir confirmación. Esto no restringe a Claude solo a estas herramientas. Si nombras aquí una de las [herramientas de seguimiento de tareas](/docs/es/agent-sdk/todo-tracking#model-availability), Claude Code también habilita esa función en la sesión. Las demás herramientas no listadas pasan a `permission_mode` y `can_use_tool`. Usa `disallowed_tools` para bloquear herramientas. Consulta [Permisos](/docs/es/agent-sdk/permissions#allow-and-deny-rules) |

923| `system_prompt` | `str \| SystemPromptPreset \| SystemPromptCustom \| SystemPromptFile \| None` | `None` | Configuración de indicación del sistema. Pase una cadena para un indicador personalizado, `{"type": "preset", "preset": "claude_code"}` para el indicador del sistema de Claude Code con `"append"` opcional, `{"type": "custom", "prompt": "..."}` para un indicador personalizado que también puede establecer `"snapshot"`, o `{"type": "file", "path": "..."}` para cargar un indicador grande desde el disco. Consulte [`SystemPromptPreset`](#systempromptpreset), [`SystemPromptCustom`](#systempromptcustom), y [`SystemPromptFile`](#systempromptfile) |923| `system_prompt` | `str \| SystemPromptPreset \| SystemPromptCustom \| SystemPromptFile \| None` | `None` | Configuración del prompt del sistema. Pasa una cadena para un prompt personalizado, `{"type": "preset", "preset": "claude_code"}` para el prompt del sistema de Claude Code con `"append"` opcional, `{"type": "custom", "prompt": "..."}` para un prompt personalizado que también puede establecer `"snapshot"`, o `{"type": "file", "path": "..."}` para cargar un prompt grande desde el disco. Consulta [`SystemPromptPreset`](#systempromptpreset), [`SystemPromptCustom`](#systempromptcustom) y [`SystemPromptFile`](#systempromptfile) |

924| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | Configuraciones de servidor MCP o ruta al archivo de configuración |924| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | Configuraciones de servidores MCP o ruta al archivo de configuración |

925| `strict_mcp_config` | `bool` | `False` | Cuando es `True`, utilice solo los servidores pasados en `mcp_servers` e ignore el proyecto `.mcp.json`, la configuración del usuario, los servidores MCP proporcionados por plugins, y los [conectores de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai). Se asigna a la bandera CLI `--strict-mcp-config` |925| `strict_mcp_config` | `bool` | `False` | Cuando es `True`, usa solo los servidores pasados en `mcp_servers` e ignora el `.mcp.json` del proyecto, la configuración del usuario, los servidores MCP proporcionados por plugins y los [conectores de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai). Corresponde al flag de la CLI `--strict-mcp-config` |

926| `permission_mode` | `PermissionMode \| None` | `None` | Modo de permiso para el uso de herramientas |926| `permission_mode` | `PermissionMode \| None` | `None` | Modo de permisos para el uso de herramientas |

927| `continue_conversation` | `bool` | `False` | Continuar la conversación más reciente |927| `continue_conversation` | `bool` | `False` | Continuar la conversación más reciente |

928| `resume` | `str \| None` | `None` | ID de sesión para reanudar |928| `resume` | `str \| None` | `None` | ID de sesión para reanudar |

929| `session_id` | `str \| None` | `None` | Utilice un ID de sesión específico en lugar de uno generado automáticamente. Debe ser un UUID válido. No se puede combinar con `continue_conversation` o `resume` a menos que `fork_session` también esté configurado |929| `session_id` | `str \| None` | `None` | Usar un ID de sesión específico en lugar de uno generado automáticamente. Debe ser un UUID válido. No se puede combinar con `continue_conversation` o `resume` a menos que `fork_session` también esté establecido |

930| `max_turns` | `int \| None` | `None` | Máximo de turnos agentes (viajes de ronda de uso de herramientas) |930| `max_turns` | `int \| None` | `None` | Máximo de turnos agénticos (ciclos de ida y vuelta de uso de herramientas) |

931| `max_budget_usd` | `float \| None` | `None` | Detener la consulta cuando la estimación de costo del lado del cliente alcance este valor en USD. Se compara con la misma estimación que `total_cost_usd`. Para advertencias de precisión y comportamiento de reinicio, consulte [Rastrear costo y uso](/docs/es/agent-sdk/cost-tracking) |931| `max_budget_usd` | `float \| None` | `None` | Detener la consulta cuando la estimación de costo del lado del cliente alcance este valor en USD. Cuenta solo el gasto propio de la llamada; los totales restaurados de una sesión reanudada no cuentan. Para advertencias de precisión y comportamiento de reinicio, consulta [Rastrear costo y uso](/docs/es/agent-sdk/cost-tracking) |

932| `disallowed_tools` | `list[str]` | `[]` | Herramientas a denegar. Un nombre simple como `"Bash"` elimina la herramienta del contexto de Claude. Una regla con alcance como `"Bash(rm *)"` deja la herramienta disponible y deniega llamadas coincidentes en cada modo de permiso, incluido `bypassPermissions`, para el comando [tal como está escrito](/docs/es/permissions#bash-rule-limits). Consulte [Permisos](/docs/es/agent-sdk/permissions#allow-and-deny-rules) |932| `disallowed_tools` | `list[str]` | `[]` | Herramientas a denegar. Un nombre simple como `"Bash"` elimina la herramienta del contexto de Claude. Una regla con alcance como `"Bash(rm *)"` deja la herramienta disponible y deniega las llamadas coincidentes en todos los modos de permisos, incluido `bypassPermissions`, para el comando [tal como está escrito](/docs/es/permissions#bash-rule-limits). Consulta [Permisos](/docs/es/agent-sdk/permissions#allow-and-deny-rules) |

933| `enable_file_checkpointing` | `bool` | `False` | Habilitar el seguimiento de cambios de archivo para rebobinar. Consulte [Punto de control de archivo](/docs/es/agent-sdk/file-checkpointing) |933| `enable_file_checkpointing` | `bool` | `False` | Habilitar el seguimiento de cambios de archivos para rebobinar. Consulta [Checkpointing de archivos](/docs/es/agent-sdk/file-checkpointing) |

934| `model` | `str \| None` | `None` | Alias de modelo Claude o nombre de modelo completo. Consulte [valores aceptados e IDs específicos del proveedor](/docs/es/model-config#available-models) |934| `model` | `str \| None` | `None` | Alias de modelo de Claude o nombre de modelo completo. Consulta [valores aceptados e IDs específicos del proveedor](/docs/es/model-config#available-models) |

935| `fallback_model` | `str \| None` | `None` | Modelo de respaldo a utilizar si el modelo principal falla. Acepta una lista separada por comas. Para orientación, consulte [Elegir un modelo](/docs/es/agent-sdk/configuration#choose-a-model) |935| `fallback_model` | `str \| None` | `None` | Modelo de respaldo a usar si el modelo principal falla. Acepta una lista separada por comas. Para orientación, consulta [Elegir un modelo](/docs/es/agent-sdk/configuration#choose-a-model) |

936| `betas` | `list[SdkBeta]` | `[]` | Características beta para habilitar. Consulte [`SdkBeta`](#sdkbeta) para opciones disponibles |936| `betas` | `list[SdkBeta]` | `[]` | Características beta para habilitar. Consulta [`SdkBeta`](#sdkbeta) para ver las opciones disponibles |

937| `output_format` | `dict[str, Any] \| None` | `None` | Formato de salida para respuestas estructuradas (por ejemplo, `{"type": "json_schema", "schema": {...}}`). Consulte [Salidas estructuradas](/docs/es/agent-sdk/structured-outputs) para detalles |937| `output_format` | `dict[str, Any] \| None` | `None` | Formato de salida para respuestas estructuradas (por ejemplo, `{"type": "json_schema", "schema": {...}}`). Consulta [Salidas estructuradas](/docs/es/agent-sdk/structured-outputs) para más detalles |

938| `permission_prompt_tool_name` | `str \| None` | `None` | Nombre de herramienta MCP para indicadores de permiso |938| `permission_prompt_tool_name` | `str \| None` | `None` | Nombre de herramienta MCP para solicitudes de permiso |

939| `cwd` | `str \| Path \| None` | `None` | Directorio de trabajo actual |939| `cwd` | `str \| Path \| None` | `None` | Directorio de trabajo actual |

940| `cli_path` | `str \| Path \| None` | `None` | Ruta personalizada al ejecutable CLI de Claude Code |940| `cli_path` | `str \| Path \| None` | `None` | Ruta personalizada al ejecutable de la CLI de Claude Code |

941| `settings` | `str \| None` | `None` | Ruta a un archivo de configuración o una cadena JSON en línea |941| `settings` | `str \| None` | `None` | Ruta a un archivo de configuración o una cadena JSON en línea |

942| `add_dirs` | `list[str \| Path]` | `[]` | Directorios adicionales a los que Claude puede acceder. El SDK pasa cada entrada a Claude Code como `--add-dir`, por lo que con la fuente de configuración `project` Claude Code también [carga las skills, comandos y subagentes del directorio](/docs/es/permissions#additional-directories-grant-file-access-not-configuration) |942| `add_dirs` | `list[str \| Path]` | `[]` | Directorios adicionales a los que Claude puede acceder. El SDK pasa cada entrada a Claude Code como `--add-dir`, por lo que con la fuente de configuración `project` Claude Code también [carga los skills, comandos y subagentes del directorio](/docs/es/permissions#additional-directories-grant-file-access-not-configuration) |

943| `env` | `dict[str, str]` | `{}` | Variables de entorno fusionadas en la parte superior del entorno de proceso heredado. Consulte [Variables de entorno](/docs/es/env-vars) para variables que lee la CLI subyacente, y [Manejar respuestas API lentas o estancadas](#handle-slow-or-stalled-api-responses) para variables relacionadas con tiempos de espera. Establezca `CLAUDE_AGENT_SDK_CLIENT_APP` para identificar su aplicación en el encabezado User-Agent |943| `env` | `dict[str, str]` | `{}` | Variables de entorno que se fusionan sobre el entorno de proceso heredado. Consulta [Variables de entorno](/docs/es/env-vars) para ver las variables que lee la CLI subyacente, y [Manejar respuestas de API lentas o estancadas](#handle-slow-or-stalled-api-responses) para las variables relacionadas con tiempos de espera. Establece `CLAUDE_AGENT_SDK_CLIENT_APP` para identificar tu aplicación en el encabezado User-Agent |

944| `extra_args` | `dict[str, str \| None]` | `{}` | Argumentos CLI adicionales para pasar directamente a la CLI |944| `extra_args` | `dict[str, str \| None]` | `{}` | Argumentos de CLI adicionales para pasar directamente a la CLI |

945| `max_buffer_size` | `int \| None` | `None` | Máximo de bytes al almacenar en búfer la salida estándar de CLI |945| `max_buffer_size` | `int \| None` | `None` | Máximo de bytes al almacenar en búfer la salida estándar de la CLI |

946| `debug_stderr` | `Any` | `sys.stderr` | *Obsoleto* - El SDK ignora este valor. Utilice la devolución de llamada `stderr` para salida de stderr de CLI |946| `debug_stderr` | `Any` | `sys.stderr` | *Obsoleto* - El SDK ignora este valor. Usa el callback `stderr` para la salida stderr de la CLI |

947| `stderr` | `Callable[[str], None] \| None` | `None` | Función de devolución de llamada para salida de stderr desde CLI |947| `stderr` | `Callable[[str], None] \| None` | `None` | Función de callback para la salida stderr de la CLI |

948| `can_use_tool` | [`CanUseTool`](#canusetool) ` \| None` | `None` | Devolución de llamada de permiso de herramienta, invocada solo cuando el [flujo de permiso](/docs/es/agent-sdk/permissions#how-permissions-are-evaluated) se transfiere a un indicador. No se invoca para llamadas aprobadas automáticamente por `allowed_tools`, reglas de permiso, o `permission_mode`. Una regla de permiso no aprueba previamente las [acciones que ningún modo aprueba automáticamente](/docs/es/permission-modes#actions-no-mode-auto-approves). Consulte [`CanUseTool`](#canusetool) para detalles |948| `can_use_tool` | [`CanUseTool`](#canusetool) ` \| None` | `None` | Callback de permisos de herramientas, que se invoca solo cuando el [flujo de permisos](/docs/es/agent-sdk/permissions#how-permissions-are-evaluated) termina en una solicitud de permiso. No se invoca para llamadas aprobadas automáticamente por `allowed_tools`, reglas de permiso o `permission_mode`. Una regla de permiso no aprueba previamente las [acciones que ningún modo aprueba automáticamente](/docs/es/permission-modes#actions-no-mode-auto-approves). Consulta [`CanUseTool`](#canusetool) para más detalles |

949| `hooks` | `dict[HookEvent, list[HookMatcher]] \| None` | `None` | Configuraciones de hooks para interceptar eventos |949| `hooks` | `dict[HookEvent, list[HookMatcher]] \| None` | `None` | Configuraciones de hooks para interceptar eventos |

950| `user` | `str \| None` | `None` | En plataformas POSIX, la cuenta de usuario del SO bajo la cual se ejecuta el subproceso de Claude Code. Claude Code mantiene el entorno del proceso padre, incluido `HOME`, y se ejecuta en `cwd` |950| `user` | `str \| None` | `None` | En plataformas POSIX, la cuenta de usuario del SO con la que se ejecuta el subproceso de Claude Code. Claude Code mantiene el entorno del proceso padre, incluido `HOME`, y se ejecuta en `cwd` |

951| `include_partial_messages` | `bool` | `False` | Incluir eventos de transmisión de mensajes parciales. Cuando está habilitado, se producen mensajes [`StreamEvent`](#streamevent) |951| `include_partial_messages` | `bool` | `False` | Incluir eventos de streaming de mensajes parciales. Cuando está habilitado, se producen mensajes [`StreamEvent`](#streamevent) |

952| `include_hook_events` | `bool` | `False` | Incluir eventos del ciclo de vida de hooks en el flujo de mensajes como objetos `HookEventMessage` |952| `include_hook_events` | `bool` | `False` | Incluir eventos del ciclo de vida de hooks en el stream de mensajes como objetos `HookEventMessage` |

953| `forward_subagent_text` | `bool` | `False` | Reenviar bloques de texto y pensamiento de subagentes en el flujo de mensajes. Sin esta opción, Claude Code emite bloques `tool_use` y `tool_result` de subagentes pero no texto ni pensamiento. Requiere Python Agent SDK 0.2.140 o posterior |953| `forward_subagent_text` | `bool` | `False` | Reenviar bloques de texto y de pensamiento de subagentes en el stream de mensajes. Sin esta opción, Claude Code emite bloques `tool_use` y `tool_result` de subagentes, pero no texto ni pensamiento. Requiere Python Agent SDK 0.2.140 o posterior |

954| `verbatim_prompts` | `bool` | `False` | Entregar cada indicador tal como está escrito. El SDK envía cada mensaje del usuario con `client_composed` establecido en `True`. Consulte [`client_composed`](/docs/es/agent-sdk/typescript#sdkusermessage) para ver qué omite Claude Code en esos mensajes. Utilice esta opción cuando el texto del indicador incluya contenido que el usuario final no escribió. Para control por turno, déjelo desactivado y establezca `"client_composed": True` en mensajes individuales transmitidos en su lugar. Mientras la opción está activada, el SDK sobrescribe cualquier valor `client_composed` que establezca. Requiere Python Agent SDK 0.2.158 o posterior y Claude Code v2.1.248 o posterior; la CLI incluida en esas versiones de SDK satisface el requisito de Claude Code |954| `verbatim_prompts` | `bool` | `False` | Entregar cada prompt tal como está escrito. El SDK envía cada mensaje del usuario con `client_composed` establecido en `True`. Consulta [`client_composed`](/docs/es/agent-sdk/typescript#sdkusermessage) para ver qué omite Claude Code en esos mensajes. Usa esta opción cuando el texto de tu prompt incluya contenido que el usuario final no escribió. Para control por turno, déjala desactivada y, en su lugar, establece `"client_composed": True` en mensajes individuales enviados en streaming. Mientras la opción está activada, el SDK sobrescribe cualquier valor de `client_composed` que establezcas. Requiere Python Agent SDK 0.2.158 o posterior y Claude Code v2.1.248 o posterior; la CLI incluida en esas versiones del SDK cumple el requisito de Claude Code |

955| `fork_session` | `bool` | `False` | Al reanudar con `resume`, bifurcar a un nuevo ID de sesión en lugar de continuar la sesión original |955| `fork_session` | `bool` | `False` | Al reanudar con `resume`, bifurcar a un nuevo ID de sesión en lugar de continuar la sesión original |

956| `resume_session_at` | `str \| None` | `None` | Al reanudar, cargar la conversación solo hasta e incluyendo el mensaje con este UUID. Utilice con `resume`, y generalmente `fork_session`, para ramificar desde un punto anterior. Requiere Python Agent SDK 0.2.137 o posterior |956| `resume_session_at` | `str \| None` | `None` | Al reanudar, cargar la conversación solo hasta el mensaje con este UUID, inclusive. Úsalo con `resume`, y normalmente con `fork_session`, para crear una rama desde un punto anterior. Requiere Python Agent SDK 0.2.137 o posterior |

957| `resume_drops_turn` | `str \| None` | `None` | UUID del indicador del usuario cuyo turno descarta un truncamiento `resume_session_at`. Cuando se establece, la CLI rechaza la reanudación si el rango descartado contiene entradas no atribuibles a ese turno. Requiere Python Agent SDK 0.2.137 o posterior y Claude Code v2.1.223 o posterior; la CLI incluida en esas versiones de SDK satisface el requisito de Claude Code |957| `resume_drops_turn` | `str \| None` | `None` | UUID del prompt del usuario cuyo turno descarta un truncamiento de `resume_session_at`. Cuando se establece, la CLI rechaza la reanudación si el rango descartado contiene entradas no atribuibles a ese turno. Requiere Python Agent SDK 0.2.137 o posterior y Claude Code v2.1.223 o posterior; la CLI incluida en esas versiones del SDK cumple el requisito de Claude Code |

958| `agents` | `dict[str, AgentDefinition] \| None` | `None` | Subagentes definidos programáticamente |958| `agents` | `dict[str, AgentDefinition] \| None` | `None` | Subagentes definidos programáticamente |

959| `plugins` | `list[SdkPluginConfig]` | `[]` | Cargar plugins personalizados desde rutas locales. Consulte [Plugins](/docs/es/agent-sdk/plugins) para detalles |959| `plugins` | `list[SdkPluginConfig]` | `[]` | Cargar plugins personalizados desde rutas locales. Consulta [Plugins](/docs/es/agent-sdk/plugins) para más detalles |

960| `sandbox` | [`SandboxSettings`](#sandboxsettings) ` \| None` | `None` | Configurar el comportamiento del sandbox programáticamente. Consulte [Configuración de sandbox](#sandboxsettings) para detalles |960| `sandbox` | [`SandboxSettings`](#sandboxsettings) ` \| None` | `None` | Configurar el comportamiento del sandbox programáticamente. Consulta [Configuración del sandbox](#sandboxsettings) para más detalles |

961| `setting_sources` | `list[SettingSource] \| None` | `None` (Valores predeterminados de CLI: todas las fuentes) | Controlar qué configuración del sistema de archivos cargar. Pase `[]` para deshabilitar la configuración de usuario, proyecto y local. Con `skills` establecido y este campo sin establecer, solo se cargan las fuentes de usuario y proyecto. Establezca `setting_sources` explícitamente para mantener la configuración local. La política administrada por punto final se carga independientemente; 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](/docs/es/server-managed-settings#platform-availability). Para entradas leídas independientemente de esta opción, consulte [Lo que settingSources no controla](/docs/es/agent-sdk/claude-code-features#what-settingsources-does-not-control) |961| `setting_sources` | `list[SettingSource] \| None` | `None` (valores predeterminados de la CLI: todas las fuentes) | Controlar qué configuración del sistema de archivos se carga. Pasa `[]` para deshabilitar la configuración de usuario, de proyecto y local. Con `skills` establecido y este campo sin establecer, solo se cargan las fuentes de usuario y de proyecto. Establece `setting_sources` explícitamente para mantener la configuración local. La política administrada por endpoint se carga de todos modos; 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](/docs/es/server-managed-settings#platform-availability). Para las entradas que se leen independientemente de esta opción, consulta [Lo que settingSources no controla](/docs/es/agent-sdk/claude-code-features#what-settingsources-does-not-control) |

962| `skills` | `list[str] \| Literal["all"] \| None` | `None` | Skills disponibles para la sesión. Pase `"all"` para habilitar cada skill descubierto, o una lista de nombres de skills. Pase solo nombres exactos. El SDK rechaza nombres mal formados y en forma de comodín con un `ValueError` antes de iniciar el proceso de Claude Code; esta verificación requiere Python Agent SDK 0.2.129 o posterior. Cuando se establece, el SDK agrega automáticamente la herramienta Skill a `allowed_tools`. Si también pasa `tools`, incluya `"Skill"` en esa lista. Consulte [Skills](/docs/es/agent-sdk/skills) |962| `skills` | `list[str] \| Literal["all"] \| None` | `None` | Skills disponibles para la sesión. Pasa `"all"` para habilitar todos los skills descubiertos, o una lista de nombres de skills. Pasa solo nombres exactos. El SDK rechaza los nombres mal formados y con comodines con un `ValueError` antes de iniciar el proceso de Claude Code; esta verificación requiere Python Agent SDK 0.2.129 o posterior. Cuando se establece, el SDK agrega automáticamente la herramienta Skill a `allowed_tools`. Si también pasas `tools`, incluye `"Skill"` en esa lista. Consulta [Skills](/docs/es/agent-sdk/skills) |

963| `max_thinking_tokens` | `int \| None` | `None` | *Obsoleto* - Máximo de tokens para bloques de pensamiento. Utilice `thinking` en su lugar |963| `max_thinking_tokens` | `int \| None` | `None` | *Obsoleto* - Máximo de tokens para bloques de pensamiento. Usa `thinking` en su lugar |

964| `thinking` | [`ThinkingConfig`](#thinkingconfig) ` \| None` | `None` | Controla el comportamiento del pensamiento extendido. Tiene precedencia sobre `max_thinking_tokens` |964| `thinking` | [`ThinkingConfig`](#thinkingconfig) ` \| None` | `None` | Controla el comportamiento del pensamiento extendido. Tiene precedencia sobre `max_thinking_tokens` |

965| `effort` | [`EffortLevel`](#effortlevel) ` \| None` | `None` | Nivel de esfuerzo para la profundidad del pensamiento. Consulte [ajustar el nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) |965| `effort` | [`EffortLevel`](#effortlevel) ` \| None` | `None` | Nivel de esfuerzo para la profundidad del pensamiento. Consulta [ajustar el nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) |

966| `session_store` | [`SessionStore`](/docs/es/agent-sdk/session-storage#the-sessionstore-interface) ` \| None` | `None` | Reflejar transcripciones de sesión en un backend externo para que otro host pueda reanudarlas. Consulte [Persistir sesiones en almacenamiento externo](/docs/es/agent-sdk/session-storage) |966| `session_store` | [`SessionStore`](/docs/es/agent-sdk/session-storage#the-sessionstore-interface) ` \| None` | `None` | Replicar las transcripciones de sesión en un backend externo para que otro host pueda reanudarlas. Consulta [Persistir sesiones en almacenamiento externo](/docs/es/agent-sdk/session-storage) |

967| `session_store_flush` | `Literal["batched", "eager"]` | `"batched"` | Cuándo vaciar entradas de transcripción reflejadas a `session_store`. `"batched"` vacía una vez por turno o cuando el búfer se llena; `"eager"` activa un vaciado en segundo plano después de cada fotograma. Se ignora cuando `session_store` es `None` |967| `session_store_flush` | `Literal["batched", "eager"]` | `"batched"` | Cuándo volcar las entradas de transcripción replicadas en `session_store`. `"batched"` vuelca una vez por turno o cuando el búfer se llena; `"eager"` activa un volcado en segundo plano después de cada frame. Se ignora cuando `session_store` es `None` |

968| `load_timeout_ms` | `int` | `60000` | Tiempo de espera por llamada para `session_store.load()` y `list_subkeys()` durante la materialización de reanudación, en milisegundos |968| `load_timeout_ms` | `int` | `60000` | Tiempo de espera por llamada para `session_store.load()` y `list_subkeys()` durante la materialización de la reanudación, en milisegundos |

969| `task_budget` | `TaskBudget \| None` | `None` | Presupuesto de tokens del lado de la API. Se envía como `output_config.task_budget` con el encabezado beta `task-budgets-2026-03-13`. Pase `{"total": <int>}`. |969| `task_budget` | `TaskBudget \| None` | `None` | Presupuesto de tokens del lado de la API. Se envía como `output_config.task_budget` con el encabezado beta `task-budgets-2026-03-13`. Pasa `{"total": <int>}`. |

970 970 

971<h4 id="handle-slow-or-stalled-api-responses">971<h4 id="handle-slow-or-stalled-api-responses">

972 Manejar respuestas API lentas o estancadas972 Manejar respuestas de API lentas o estancadas

973</h4>973</h4>

974 974 

975El 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 `ClaudeAgentOptions.env`:975El subproceso de la CLI lee varias variables de entorno que controlan los tiempos de espera de la API y la detección de estancamientos. Pásalas a través de `ClaudeAgentOptions.env`:

976 976 

977```python theme={null}977```python theme={null}

978from claude_agent_sdk import ClaudeAgentOptions978from claude_agent_sdk import ClaudeAgentOptions


987```987```

988 988 

989* `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.989* `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.

990* `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 backoff. Para ejecuciones desatendidas que necesitan esperar a través de interrupciones más largas, establezca [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/es/errors#tune-retry-behavior): reintenta errores de capacidad transitoria indefinidamente y, en Claude Code v2.1.199 o posterior, eleva el predeterminado para otros errores transitorios a `300` y elimina el límite en esta variable.990* `CLAUDE_CODE_MAX_RETRIES`: máximo de reintentos de la API. Predeterminado `10`, limitado a `15`. Cada reintento obtiene su propia ventana de `API_TIMEOUT_MS`, por lo que el tiempo real en el peor caso es aproximadamente `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` más el backoff. Para ejecuciones desatendidas que necesitan esperar durante interrupciones más largas, establece [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/es/errors#tune-retry-behavior): reintenta indefinidamente los errores transitorios de capacidad y, en Claude Code v2.1.199 o posterior, eleva el predeterminado para otros errores transitorios a `300` y elimina el límite de esta variable.

991* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: perro guardián de estancamiento para subagentes. Mientras el perro guardián de flujo está activado, el predeterminado es `CLAUDE_STREAM_IDLE_TIMEOUT_MS` más 5 minutos, lo que suma `600000` a menos que eleve esa variable. Con el perro guardián de flujo desactivado, el predeterminado es `600000`. Antes de v2.1.257, el predeterminado era siempre `600000`.991* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: watchdog de estancamiento para subagentes. Mientras el watchdog de stream está activado, el predeterminado es `CLAUDE_STREAM_IDLE_TIMEOUT_MS` más 5 minutos, lo que da `600000` a menos que aumentes esa variable. Con el watchdog de stream desactivado, el predeterminado es `600000`. Antes de v2.1.257, el predeterminado era siempre `600000`.

992 992 

993 El temporizador se reinicia en cada evento de flujo. En un estancamiento, Claude Code aborta el subagente e informa el estancamiento al padre. Para un subagente en segundo plano, también marca la tarea como fallida y adjunta cualquier resultado parcial.993 El temporizador se reinicia con cada evento de stream. Ante un estancamiento, Claude Code aborta el subagente e informa el estancamiento al padre. Para un subagente en segundo plano, también marca la tarea como fallida y adjunta cualquier resultado parcial.

994* `CLAUDE_ENABLE_STREAM_WATCHDOG` con `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: perro guardián de flujo que 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 predeterminado de `300000` y se fija a ese mínimo. Después del aborto, [Reintentos automáticos](/docs/es/errors#automatic-retries) cubre lo que Claude Code hace, según qué tan lejos haya progresado la respuesta.994* `CLAUDE_ENABLE_STREAM_WATCHDOG` con `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: watchdog de stream que aborta la solicitud cuando los encabezados han llegado pero el cuerpo de la respuesta deja de transmitirse en streaming. El watchdog está activado de forma predeterminada para todos los proveedores; establece `CLAUDE_ENABLE_STREAM_WATCHDOG=0` para desactivarlo. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` tiene un predeterminado de `300000` y se ajusta a ese mínimo. Después del aborto, [Reintentos automáticos](/docs/es/errors#automatic-retries) explica lo que hace Claude Code según cuánto haya avanzado la respuesta.

995 995 

996 Mientras el perro guardián espera una respuesta que una puerta de enlace detrás de `ANTHROPIC_BASE_URL` mantiene abierta con pings de keep-alive, un host que establece `include_partial_messages` sigue recibiendo mensajes [`StreamEvent`](#streamevent) de `ping`. Lea esos fotogramas como vivacidad en lugar de agotar el tiempo de espera de la sesión en silencio. Antes de v2.1.257, los fotogramas se detenían 5 minutos después del último evento de flujo real.996 Mientras el watchdog espera una respuesta que un gateway detrás de `ANTHROPIC_BASE_URL` mantiene abierta con pings de keep-alive, un host que establece `include_partial_messages` sigue recibiendo mensajes [`StreamEvent`](#streamevent) de tipo `ping`. Interpreta esos frames como señal de actividad en lugar de agotar el tiempo de espera de la sesión por silencio. Antes de v2.1.257, los frames se detenían 5 minutos después del último evento de stream real.

997 997 

998<h3 id="outputformat">998<h3 id="outputformat">

999 `OutputFormat`999 `OutputFormat`

1000</h3>1000</h3>

1001 1001 

1002Configuración para validación de salida estructurada. Pase esto como un `dict` al campo `output_format` en `ClaudeAgentOptions`:1002Configuración para la validación de salida estructurada. Pásala como un `dict` al campo `output_format` de `ClaudeAgentOptions`:

1003 1003 

1004```python theme={null}1004```python theme={null}

1005# Forma de dict esperada para output_format1005# Forma de dict esperada para output_format

1006{1006{

1007 "type": "json_schema",1007 "type": "json_schema",

1008 "schema": {...}, # Su definición de JSON Schema1008 "schema": {...}, # Tu definición de JSON Schema

1009}1009}

1010```1010```

1011 1011 

1012| Campo | Requerido | Descripción |1012| Campo | Requerido | Descripción |

1013| :- | :- | :- |1013| :- | :- | :- |

1014| `type` | Sí | Debe ser `"json_schema"` para validación de JSON Schema |1014| `type` | Sí | Debe ser `"json_schema"` para la validación con JSON Schema |

1015| `schema` | Sí | Definición de JSON Schema para validación de salida |1015| `schema` | Sí | Definición de JSON Schema para la validación de salida |

1016 1016 

1017<h3 id="systempromptpreset">1017<h3 id="systempromptpreset">

1018 `SystemPromptPreset`1018 `SystemPromptPreset`

1019</h3>1019</h3>

1020 1020 

1021Configuración para usar el indicador del sistema preestablecido de Claude Code con adiciones opcionales.1021Configuración para usar el prompt del sistema preestablecido de Claude Code con adiciones opcionales.

1022 1022 

1023```python theme={null}1023```python theme={null}

1024class SystemPromptPreset(TypedDict):1024class SystemPromptPreset(TypedDict):


1031 1031 

1032| Campo | Requerido | Descripción |1032| Campo | Requerido | Descripción |

1033| :- | :- | :- |1033| :- | :- | :- |

1034| `type` | Sí | Debe ser `"preset"` para usar un indicador del sistema preestablecido |1034| `type` | Sí | Debe ser `"preset"` para usar un prompt del sistema preestablecido |

1035| `preset` | Sí | Debe ser `"claude_code"` para usar el indicador del sistema de Claude Code |1035| `preset` | Sí | Debe ser `"claude_code"` para usar el prompt del sistema de Claude Code |

1036| `append` | No | Instrucciones adicionales para agregar al indicador del sistema preestablecido |1036| `append` | No | Instrucciones adicionales para agregar al prompt del sistema preestablecido |

1037| `exclude_dynamic_sections` | No | Mover contexto por usuario, como la ubicación de memoria automática, del indicador del sistema al primer mensaje del usuario. Mejora la reutilización de caché de indicadores entre usuarios y máquinas. Consulte [Modificar indicadores del sistema](/docs/es/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |1037| `exclude_dynamic_sections` | No | Mover el contexto por usuario, como la ubicación de la memoria automática, del prompt del sistema al primer mensaje del usuario. Mejora la reutilización de la caché de prompts entre usuarios y máquinas. Consulta [Modificar prompts del sistema](/docs/es/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |

1038| `snapshot` | No | Establezca en `False` para reconstruir el indicador del sistema en cada solicitud en lugar de [reutilizar el indicador que la sesión registró en su primera solicitud](/docs/es/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session). Requiere `claude-agent-sdk` v0.2.153 o posterior |1038| `snapshot` | No | Establécelo en `False` para reconstruir el prompt del sistema en cada solicitud en lugar de [reutilizar el prompt que la sesión registró en su primera solicitud](/docs/es/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session). Requiere `claude-agent-sdk` v0.2.153 o posterior |

1039 1039 

1040<h3 id="systempromptcustom">1040<h3 id="systempromptcustom">

1041 `SystemPromptCustom`1041 `SystemPromptCustom`

1042</h3>1042</h3>

1043 1043 

1044Un indicador del sistema personalizado en forma de objeto, equivalente a pasar una cadena como `system_prompt`, que también puede establecer `snapshot`. Requiere `claude-agent-sdk` v0.2.153 o posterior.1044Un prompt del sistema personalizado en forma de objeto, equivalente a pasar una cadena como `system_prompt`, que también puede establecer `snapshot`. Requiere `claude-agent-sdk` v0.2.153 o posterior.

1045 1045 

1046```python theme={null}1046```python theme={null}

1047class SystemPromptCustom(TypedDict):1047class SystemPromptCustom(TypedDict):


1053| Campo | Requerido | Descripción |1053| Campo | Requerido | Descripción |

1054| :- | :- | :- |1054| :- | :- | :- |

1055| `type` | Sí | Debe ser `"custom"` |1055| `type` | Sí | Debe ser `"custom"` |

1056| `prompt` | Sí | El texto del indicador del sistema. Se pasa a la CLI como un argumento de línea de comandos, por lo que se aplican los [límites de longitud de línea de comandos](#systempromptfile) |1056| `prompt` | Sí | El texto del prompt del sistema. Se pasa a la CLI como un argumento de línea de comandos, por lo que se aplican los [límites de longitud de la línea de comandos](#systempromptfile) |

1057| `snapshot` | No | Igual que [`SystemPromptPreset.snapshot`](#systempromptpreset), aplicado a `prompt` |1057| `snapshot` | No | Igual que [`SystemPromptPreset.snapshot`](#systempromptpreset), aplicado a `prompt` |

1058 1058 

1059<h3 id="systempromptfile">1059<h3 id="systempromptfile">

1060 `SystemPromptFile`1060 `SystemPromptFile`

1061</h3>1061</h3>

1062 1062 

1063Configuración para cargar un indicador del sistema personalizado desde un archivo en lugar de pasarlo como una cadena. El SDK asigna esto a la bandera CLI [`--system-prompt-file`](/docs/es/cli-reference#system-prompt-flags). Utilice la forma de archivo cuando el indicador 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.1063Configuración para cargar un prompt del sistema personalizado desde un archivo en lugar de pasarlo como una cadena. El SDK lo asigna al flag de la CLI [`--system-prompt-file`](/docs/es/cli-reference#system-prompt-flags). Usa la forma de archivo cuando el prompt sea grande: el SDK pasa un `system_prompt` de tipo cadena en el argv del subproceso de la CLI, que está sujeto a los límites de longitud de la línea de comandos del SO antes de que el SDK envíe cualquier solicitud a la API. En Linux, un único argumento de más de 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 con un umbral más bajo.

1064 1064 

1065```python theme={null}1065```python theme={null}

1066class SystemPromptFile(TypedDict):1066class SystemPromptFile(TypedDict):


1070 1070 

1071| Campo | Requerido | Descripción |1071| Campo | Requerido | Descripción |

1072| :- | :- | :- |1072| :- | :- | :- |

1073| `type` | Sí | Debe ser `"file"` para cargar el indicador desde el disco |1073| `type` | Sí | Debe ser `"file"` para cargar el prompt desde el disco |

1074| `path` | Sí | Ruta a un archivo que contiene el indicador del sistema |1074| `path` | Sí | Ruta a un archivo que contiene el prompt del sistema |

1075 1075 

1076<h3 id="settingsource">1076<h3 id="settingsource">

1077 `SettingSource`1077 `SettingSource`

1078</h3>1078</h3>

1079 1079 

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

1081 1081 

1082```python theme={null}1082```python theme={null}

1083SettingSource = Literal["user", "project", "local"]1083SettingSource = Literal["user", "project", "local"]


1086| Valor | Descripción | Ubicación |1086| Valor | Descripción | Ubicación |

1087| :- | :- | :- |1087| :- | :- | :- |

1088| `"user"` | Configuración global del usuario | `~/.claude/settings.json` |1088| `"user"` | Configuración global del usuario | `~/.claude/settings.json` |

1089| `"project"` | Configuración del proyecto compartido (controlada por versión) | `.claude/settings.json` |1089| `"project"` | Configuración compartida del proyecto (bajo control de versiones) | `.claude/settings.json` |

1090| `"local"` | Configuración del proyecto local, ignorada en git cuando Claude Code guarda una configuración en ella | `.claude/settings.local.json` |1090| `"local"` | Configuración local del proyecto, ignorada por git cuando Claude Code guarda un ajuste en ella | `.claude/settings.local.json` |

1091 1091 

1092<h4 id="default-behavior">1092<h4 id="default-behavior">

1093 Comportamiento predeterminado1093 Comportamiento predeterminado

1094</h4>1094</h4>

1095 1095 

1096Cuando `setting_sources` se omite o es `None` y `skills` no está establecido, `query()` carga la misma configuración del sistema de archivos que la CLI de Claude Code: usuario, proyecto y local. Con `skills` establecido, la fila [`setting_sources`](#claudeagentoptions) describe el predeterminado actual. La política administrada por punto final 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](/docs/es/server-managed-settings#platform-availability). Para más información, consulte [Lo que settingSources no controla](/docs/es/agent-sdk/claude-code-features#what-settingsources-does-not-control).1096Cuando `setting_sources` se omite o es `None` y `skills` no está establecido, `query()` carga la misma configuración del sistema de archivos que la CLI de Claude Code: de usuario, de proyecto y local. Con `skills` establecido, la fila [`setting_sources`](#claudeagentoptions) describe el predeterminado actual. La política administrada por endpoint 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](/docs/es/server-managed-settings#platform-availability). Para más información, consulta [Lo que settingSources no controla](/docs/es/agent-sdk/claude-code-features#what-settingsources-does-not-control).

1097 1097 

1098<h4 id="why-use-setting_sources">1098<h4 id="why-use-setting_sources">

1099 Por qué usar setting\_sources1099 Por qué usar setting\_sources

1100</h4>1100</h4>

1101 1101 

1102**Deshabilitar configuración del sistema de archivos:**1102**Deshabilitar la configuración del sistema de archivos:**

1103 1103 

1104```python theme={null}1104```python theme={null}

1105# No cargar configuración de usuario, proyecto o local desde el disco1105# No cargar configuración de usuario, proyecto o local desde el disco


1121```1121```

1122 1122 

1123<Note>1123<Note>

1124 En Python SDK 0.1.59 y anterior, 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 reciente si necesita que una lista vacía tenga efecto. El SDK de TypeScript no se ve afectado.1124 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. Actualiza a una versión más reciente si necesitas que una lista vacía tenga efecto. El SDK de TypeScript no se ve afectado.

1125</Note>1125</Note>

1126 1126 

1127**Cargar solo fuentes de configuración específicas:**1127**Cargar solo fuentes de configuración específicas:**


1145asyncio.run(main())1145asyncio.run(main())

1146```1146```

1147 1147 

1148**Aplicaciones solo SDK:**1148**Aplicaciones solo con SDK:**

1149 1149 

1150```python theme={null}1150```python theme={null}

1151# Definir todo programáticamente.1151# Definir todo programáticamente.

1152# Pase [] para optar por no usar fuentes de configuración del sistema de archivos.1152# Pasa [] para excluir las fuentes de configuración del sistema de archivos.

1153import asyncio1153import asyncio

1154from claude_agent_sdk import AgentDefinition, ClaudeAgentOptions, query1154from claude_agent_sdk import AgentDefinition, ClaudeAgentOptions, query

1155 1155 


1174asyncio.run(main())1174asyncio.run(main())

1175```1175```

1176 1176 

1177Para cargar instrucciones del proyecto CLAUDE.md, incluya `"project"` en `setting_sources`. Consulte [Modificar indicadores del sistema](/docs/es/agent-sdk/modifying-system-prompts#claude-md-files-for-project-level-instructions) para ver cómo la carga de CLAUDE.md interactúa con las opciones de indicador del sistema.1177Para cargar las instrucciones del proyecto de CLAUDE.md, incluye `"project"` en `setting_sources`. Consulta [Modificar prompts del sistema](/docs/es/agent-sdk/modifying-system-prompts#claude-md-files-for-project-level-instructions) para ver cómo interactúa la carga de CLAUDE.md con las opciones del prompt del sistema.

1178 1178 

1179<h4 id="settings-precedence">1179<h4 id="settings-precedence">

1180 Precedencia de configuración1180 Precedencia de configuración

1181</h4>1181</h4>

1182 1182 

1183Cuando se cargan múltiples fuentes, la configuración se fusiona con esta precedencia (mayor a menor):1183Cuando se cargan varias fuentes, la configuración se fusiona con esta precedencia (de mayor a menor):

1184 1184 

11851. Configuración local (`.claude/settings.local.json`)11851. Configuración local (`.claude/settings.local.json`)

11862. Configuración del proyecto (`.claude/settings.json`)11862. Configuración del proyecto (`.claude/settings.json`)

11873. Configuración del usuario (`~/.claude/settings.json`)11873. Configuración del usuario (`~/.claude/settings.json`)

1188 1188 

1189Las opciones programáticas como `agents`, `allowed_tools` 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.1189Las opciones programáticas como `agents`, `allowed_tools` y `settings` sobrescriben la configuración del sistema de archivos de usuario, de proyecto y local. La configuración de política administrada tiene precedencia sobre las opciones programáticas.

1190 1190 

1191<h3 id="agentdefinition">1191<h3 id="agentdefinition">

1192 `AgentDefinition`1192 `AgentDefinition`


1215| Campo | Requerido | Descripción |1215| Campo | Requerido | Descripción |

1216| :- | :- | :- |1216| :- | :- | :- |

1217| `description` | Sí | Descripción en lenguaje natural de cuándo usar este agente |1217| `description` | Sí | Descripción en lenguaje natural de cuándo usar este agente |

1218| `prompt` | Sí | El indicador del sistema del agente |1218| `prompt` | Sí | El prompt del sistema del agente |

1219| `tools` | No | Matriz de nombres de herramientas permitidas. Si se omite, hereda cada [herramienta disponible para subagentes](/docs/es/sub-agents#available-tools) |1219| `tools` | No | Array de nombres de herramientas permitidas. Si se omite, hereda todas las [herramientas disponibles para subagentes](/docs/es/sub-agents#available-tools) |

1220| `disallowedTools` | No | Matriz de nombres de herramientas a eliminar del conjunto de herramientas del agente. También se aceptan patrones a nivel de servidor MCP: `mcp__server` o `mcp__server__*` elimina cada herramienta de ese servidor, y `mcp__*` elimina cada herramienta MCP de cualquier servidor |1220| `disallowedTools` | No | Array de nombres de herramientas que se eliminan del conjunto de herramientas del agente. También se aceptan patrones a nivel de servidor MCP: `mcp__server` o `mcp__server__*` elimina todas las herramientas de ese servidor, y `mcp__*` elimina todas las herramientas MCP de cualquier servidor |

1221| `model` | No | Anulación de modelo para este agente. Acepta un alias como `"sonnet"`, `"opus"`, `"haiku"`, o `"inherit"`, o un ID de modelo completo. Cuando lo omite, Claude Code elige el modelo en el [orden de modelo de subagente](/docs/es/sub-agents#choose-a-model) |1221| `model` | No | Sobrescritura del modelo para este agente. Acepta un alias como `"sonnet"`, `"opus"`, `"haiku"` o `"inherit"`, o un ID de modelo completo. Cuando lo omites, Claude Code elige el modelo según el [orden de modelos de subagentes](/docs/es/sub-agents#choose-a-model) |

1222| `skills` | No | Lista de nombres de skills para precargar en el contexto del agente al inicio. Las skills no listadas siguen siendo invocables a través de la herramienta Skill |1222| `skills` | No | Lista de nombres de skills para precargar en el contexto del agente al inicio. Los skills no listados siguen siendo invocables a través de la herramienta Skill |

1223| `memory` | No | Fuente de memoria para este agente: `"user"`, `"project"`, o `"local"` |1223| `memory` | No | Fuente de memoria para este agente: `"user"`, `"project"` o `"local"` |

1224| `mcpServers` | No | Servidores MCP disponibles para este agente. Cada entrada es un nombre de servidor o un dict `{name: config}` en línea |1224| `mcpServers` | No | Servidores MCP disponibles para este agente. Cada entrada es un nombre de servidor o un dict `{name: config}` en línea |

1225| `initialPrompt` | No | Se envía automáticamente como el primer turno del usuario cuando este agente se ejecuta como el agente del hilo principal |1225| `initialPrompt` | No | Se envía automáticamente como el primer turno del usuario cuando este agente se ejecuta como el agente del hilo principal |

1226| `maxTurns` | No | Número máximo de turnos agentes antes de que el agente se detenga |1226| `maxTurns` | No | Número máximo de turnos agénticos antes de que el agente se detenga |

1227| `background` | No | Ejecutar este agente como una tarea de fondo no bloqueante cuando se invoca |1227| `background` | No | Ejecutar este agente como una tarea en segundo plano no bloqueante cuando se invoca |

1228| `effort` | No | Nivel de esfuerzo de razonamiento para este agente. Acepta un nivel nombrado o un entero. Consulte [`EffortLevel`](#effortlevel) |1228| `effort` | No | Nivel de esfuerzo de razonamiento para este agente. Acepta un nivel con nombre o un entero. Consulta [`EffortLevel`](#effortlevel) |

1229| `permissionMode` | No | Modo de permiso para la ejecución de herramientas dentro de este agente. Las [reglas de herencia de subagentes](/docs/es/agent-sdk/permissions#available-modes) deciden cuándo se aplica. Consulte [`PermissionMode`](#permissionmode) |1229| `permissionMode` | No | Modo de permisos para la ejecución de herramientas dentro de este agente. Las [reglas de herencia de subagentes](/docs/es/agent-sdk/permissions#available-modes) deciden cuándo se aplica. Consulta [`PermissionMode`](#permissionmode) |

1230 1230 

1231<Note>1231<Note>

1232 Los nombres de campo `AgentDefinition` utilizan 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 utiliza snake\_case de Python para los campos de nivel superior equivalentes como `disallowed_tools` y `permission_mode`. Debido a que `AgentDefinition` es una dataclass, pasar una palabra clave snake\_case genera un `TypeError` en el tiempo de construcción.1232 Los nombres de campo de `AgentDefinition` usan camelCase, como `disallowedTools`, `permissionMode` y `maxTurns`. Estos nombres corresponden directamente al formato de transmisión compartido con el SDK de TypeScript. Esto difiere de `ClaudeAgentOptions`, que usa snake\_case de Python para los campos de nivel superior equivalentes, como `disallowed_tools` y `permission_mode`. Como `AgentDefinition` es una dataclass, pasar una palabra clave en snake\_case genera un `TypeError` al construirla.

1233</Note>1233</Note>

1234 1234 

1235<h3 id="permissionmode">1235<h3 id="permissionmode">

1236 `PermissionMode`1236 `PermissionMode`

1237</h3>1237</h3>

1238 1238 

1239Modos de permiso para controlar la ejecución de herramientas.1239Modos de permisos para controlar la ejecución de herramientas.

1240 1240 

1241```python theme={null}1241```python theme={null}

1242PermissionMode = Literal[1242PermissionMode = Literal[

1243 "default", # Comportamiento de permiso estándar1243 "default", # Comportamiento de permisos estándar

1244 "acceptEdits", # Aceptar automáticamente ediciones de archivo1244 "acceptEdits", # Aceptar automáticamente ediciones de archivos

1245 "plan", # Modo de planificación - explorar sin editar1245 "plan", # Modo de planificación - explorar sin editar

1246 "dontAsk", # Denegar cualquier cosa no preaprobada en lugar de solicitar1246 "dontAsk", # Denegar todo lo no preaprobado en lugar de pedir confirmación

1247 "bypassPermissions", # Omitir verificaciones de permiso; las reglas de solicitud explícita aún solicitan (usar con cuidado)1247 "bypassPermissions", # Omitir verificaciones de permisos; las reglas ask explícitas siguen pidiendo confirmación (usar con cuidado)

1248 "auto", # El clasificador del modelo aprueba o deniega indicadores de permiso1248 "auto", # Un clasificador de modelo revisa acciones como comandos de shell y solicitudes de red

1249]1249]

1250```1250```

1251 1251 


1260 "low", # Pensamiento mínimo, respuestas más rápidas1260 "low", # Pensamiento mínimo, respuestas más rápidas

1261 "medium", # Pensamiento moderado1261 "medium", # Pensamiento moderado

1262 "high", # Razonamiento profundo1262 "high", # Razonamiento profundo

1263 "xhigh", # Razonamiento extendido; vuelve a "high" en modelos que no lo admiten1263 "xhigh", # Razonamiento extendido; recurre a "high" en modelos que no lo admiten

1264 "max", # Esfuerzo máximo1264 "max", # Esfuerzo máximo

1265]1265]

1266```1266```


1269 `CanUseTool`1269 `CanUseTool`

1270</h3>1270</h3>

1271 1271 

1272Alias de tipo para funciones de devolución de llamada de permiso de herramienta.1272Alias de tipo para funciones de callback de permisos de herramientas.

1273 1273 

1274```python theme={null}1274```python theme={null}

1275CanUseTool = Callable[1275CanUseTool = Callable[


1277]1277]

1278```1278```

1279 1279 

1280La devolución de llamada recibe:1280El callback recibe:

1281 1281 

1282* `tool_name`: Nombre de la herramienta que se está llamando1282* `tool_name`: Nombre de la herramienta que se está llamando

1283* `input_data`: Los parámetros de entrada de la herramienta1283* `input_data`: Los parámetros de entrada de la herramienta


1285 1285 

1286Devuelve un `PermissionResult` (ya sea `PermissionResultAllow` o `PermissionResultDeny`).1286Devuelve un `PermissionResult` (ya sea `PermissionResultAllow` o `PermissionResultDeny`).

1287 1287 

1288La devolución de llamada es el reemplazo del SDK para el indicador de permiso interactivo: se invoca solo cuando el [flujo de evaluación de permiso](/docs/es/agent-sdk/permissions#how-permissions-are-evaluated) se resuelve en un indicador. 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, utilice un [hook `PreToolUse`](/docs/es/agent-sdk/hooks) en su lugar.1288El callback es el reemplazo del SDK para la solicitud de permiso interactiva: se invoca solo cuando el [flujo de evaluación de permisos](/docs/es/agent-sdk/permissions#how-permissions-are-evaluated) termina en una solicitud de permiso. Las llamadas a herramientas ya aprobadas por una entrada de `allowed_tools`, una regla allow de la configuración o el modo de permisos, como `acceptEdits` o `bypassPermissions`, nunca lo invocan. Para controlar cada llamada a herramienta, usa en su lugar un [hook `PreToolUse`](/docs/es/agent-sdk/hooks).

1289 1289 

1290Una regla de permiso no aprueba previamente las [acciones que ningún modo aprueba automáticamente](/docs/es/permission-modes#actions-no-mode-auto-approves); consulte [Cómo se evalúan los permisos](/docs/es/agent-sdk/permissions#how-permissions-are-evaluated) para ver cuál de ellas llega a la devolución de llamada y qué sucede en modo `dontAsk` y `auto`.1290Una regla allow no aprueba previamente las [acciones que ningún modo aprueba automáticamente](/docs/es/permission-modes#actions-no-mode-auto-approves); consulta [Cómo se evalúan los permisos](/docs/es/agent-sdk/permissions#how-permissions-are-evaluated) para ver cuáles de ellas llegan al callback y qué sucede en los modos `dontAsk` y `auto`.

1291 1291 

1292<h3 id="toolpermissioncontext">1292<h3 id="toolpermissioncontext">

1293 `ToolPermissionContext`1293 `ToolPermissionContext`

1294</h3>1294</h3>

1295 1295 

1296Información de contexto pasada a devoluciones de llamada de permiso de herramienta.1296Información de contexto que se pasa a los callbacks de permisos de herramientas.

1297 1297 

1298```python theme={null}1298```python theme={null}

1299@dataclass1299@dataclass


1311 1311 

1312| Campo | Tipo | Descripción |1312| Campo | Tipo | Descripción |

1313| :- | :- | :- |1313| :- | :- | :- |

1314| `signal` | `Any \| None` | Reservado para soporte futuro de señal de aborto |1314| `signal` | `Any \| None` | Reservado para el futuro soporte de señal de aborto |

1315| `suggestions` | `list[PermissionUpdate]` | Sugerencias de actualización de permiso de la CLI. Los indicadores de Bash incluyen una sugerencia con el destino `localSettings`, por lo que devolverla en `updated_permissions` escribe la regla en `.claude/settings.local.json` y persiste entre sesiones. |1315| `suggestions` | `list[PermissionUpdate]` | Sugerencias de actualización de permisos de la CLI. Las solicitudes de permiso de Bash incluyen una sugerencia con el destino `localSettings`, por lo que devolverla en `updated_permissions` escribe la regla en `.claude/settings.local.json` y persiste entre sesiones. |

1316| `tool_use_id` | `str \| None` | Identificador de la llamada de herramienta específica para la que es este indicador. Siempre se completa cuando se entrega a `can_use_tool` |1316| `tool_use_id` | `str \| None` | Identificador de la llamada a herramienta específica a la que corresponde esta solicitud. Siempre se completa cuando se entrega a `can_use_tool` |

1317| `agent_id` | `str \| None` | ID del subagente cuando la llamada se origina desde un subagente; `None` para el agente principal |1317| `agent_id` | `str \| None` | ID del subagente cuando la llamada se origina en un subagente; `None` para el agente principal |

1318| `blocked_path` | `str \| None` | Ruta de archivo que activó la solicitud de permiso, cuando sea aplicable. Por ejemplo, cuando un comando Bash intenta acceder a una ruta fuera de directorios permitidos |1318| `blocked_path` | `str \| None` | Ruta de archivo que activó la solicitud de permiso, cuando corresponda. Por ejemplo, cuando un comando de Bash intenta acceder a una ruta fuera de los directorios permitidos |

1319| `decision_reason` | `str \| None` | Razón por la que se activó esta solicitud de permiso. Reenviado desde el `permissionDecisionReason` de un hook PreToolUse cuando el hook devolvió `"ask"` |1319| `decision_reason` | `str \| None` | Motivo por el que se activó esta solicitud de permiso. Se reenvía desde el `permissionDecisionReason` de un hook PreToolUse cuando el hook devolvió `"ask"` |

1320| `title` | `str \| None` | Oración de indicador de permiso completo, como `Claude wants to read foo.txt`. Utilice como texto de indicador principal cuando esté presente |1320| `title` | `str \| None` | Oración completa de la solicitud de permiso, como `Claude wants to read foo.txt`. Úsala como texto principal de la solicitud cuando esté presente |

1321| `display_name` | `str \| None` | Frase de sustantivo corto para la acción de herramienta, como `Read file`, adecuada para etiquetas de botón |1321| `display_name` | `str \| None` | Frase nominal corta para la acción de la herramienta, como `Read file`, adecuada para etiquetas de botones |

1322| `description` | `str \| None` | Subtítulo legible por humanos para la interfaz de usuario de permiso |1322| `description` | `str \| None` | Subtítulo legible por humanos para la interfaz de permisos |

1323 1323 

1324<h3 id="permissionresult">1324<h3 id="permissionresult">

1325 `PermissionResult`1325 `PermissionResult`

1326</h3>1326</h3>

1327 1327 

1328Tipo de unión para resultados de devolución de llamada de permiso.1328Tipo de unión para los resultados del callback de permisos.

1329 1329 

1330```python theme={null}1330```python theme={null}

1331PermissionResult = PermissionResultAllow | PermissionResultDeny1331PermissionResult = PermissionResultAllow | PermissionResultDeny


1335 `PermissionResultAllow`1335 `PermissionResultAllow`

1336</h3>1336</h3>

1337 1337 

1338Resultado indicando que la llamada de herramienta debe permitirse.1338Resultado que indica que la llamada a herramienta debe permitirse.

1339 1339 

1340```python theme={null}1340```python theme={null}

1341@dataclass1341@dataclass


1348| Campo | Tipo | Predeterminado | Descripción |1348| Campo | Tipo | Predeterminado | Descripción |

1349| :- | :- | :- | :- |1349| :- | :- | :- | :- |

1350| `behavior` | `Literal["allow"]` | `"allow"` | Debe ser "allow" |1350| `behavior` | `Literal["allow"]` | `"allow"` | Debe ser "allow" |

1351| `updated_input` | `dict[str, Any] \| None` | `None` | Entrada modificada a usar en lugar de la original |1351| `updated_input` | `dict[str, Any] \| None` | `None` | Entrada modificada que se usa en lugar de la original |

1352| `updated_permissions` | `list[PermissionUpdate] \| None` | `None` | Actualizaciones de permiso a aplicar |1352| `updated_permissions` | `list[PermissionUpdate] \| None` | `None` | Actualizaciones de permisos que se aplican |

1353 1353 

1354<h3 id="permissionresultdeny">1354<h3 id="permissionresultdeny">

1355 `PermissionResultDeny`1355 `PermissionResultDeny`

1356</h3>1356</h3>

1357 1357 

1358Resultado indicando que la llamada de herramienta debe denegarse.1358Resultado que indica que la llamada a herramienta debe denegarse.

1359 1359 

1360```python theme={null}1360```python theme={null}

1361@dataclass1361@dataclass


1368| Campo | Tipo | Predeterminado | Descripción |1368| Campo | Tipo | Predeterminado | Descripción |

1369| :- | :- | :- | :- |1369| :- | :- | :- | :- |

1370| `behavior` | `Literal["deny"]` | `"deny"` | Debe ser "deny" |1370| `behavior` | `Literal["deny"]` | `"deny"` | Debe ser "deny" |

1371| `message` | `str` | `""` | Mensaje explicando por qué se denegó la herramienta |1371| `message` | `str` | `""` | Mensaje que explica por qué se denegó la herramienta |

1372| `interrupt` | `bool` | `False` | Si se debe interrumpir la ejecución actual |1372| `interrupt` | `bool` | `False` | Si se debe interrumpir la ejecución actual |

1373 1373 

1374<h3 id="permissionupdate">1374<h3 id="permissionupdate">


1399 1399 

1400| Campo | Tipo | Descripción |1400| Campo | Tipo | Descripción |

1401| :- | :- | :- |1401| :- | :- | :- |

1402| `type` | `Literal[...]` | El tipo de operación de actualización de permiso |1402| `type` | `Literal[...]` | El tipo de operación de actualización de permisos |

1403| `rules` | `list[PermissionRuleValue] \| None` | Reglas para operaciones de agregar/reemplazar/eliminar |1403| `rules` | `list[PermissionRuleValue] \| None` | Reglas para operaciones de agregar/reemplazar/eliminar |

1404| `behavior` | `Literal["allow", "deny", "ask"] \| None` | Comportamiento para operaciones basadas en reglas |1404| `behavior` | `Literal["allow", "deny", "ask"] \| None` | Comportamiento para operaciones basadas en reglas |

1405| `mode` | `PermissionMode \| None` | Modo para operación setMode |1405| `mode` | `PermissionMode \| None` | Modo para la operación setMode |

1406| `directories` | `list[str] \| None` | Directorios para operaciones de agregar/eliminar directorio |1406| `directories` | `list[str] \| None` | Directorios para operaciones de agregar/eliminar directorios |

1407| `destination` | `Literal[...] \| None` | Dónde aplicar la actualización de permiso |1407| `destination` | `Literal[...] \| None` | Dónde aplicar la actualización de permisos |

1408 1408 

1409<h3 id="permissionrulevalue">1409<h3 id="permissionrulevalue">

1410 `PermissionRuleValue`1410 `PermissionRuleValue`

1411</h3>1411</h3>

1412 1412 

1413Una regla a agregar, reemplazar o eliminar en una actualización de permiso.1413Una regla para agregar, reemplazar o eliminar en una actualización de permisos.

1414 1414 

1415```python theme={null}1415```python theme={null}

1416@dataclass1416@dataclass


1423 `ToolsPreset`1423 `ToolsPreset`

1424</h3>1424</h3>

1425 1425 

1426Configuración de herramientas preestablecidas para usar el conjunto de herramientas predeterminado de Claude Code.1426Configuración de herramientas preestablecida para usar el conjunto de herramientas predeterminado de Claude Code.

1427 1427 

1428```python theme={null}1428```python theme={null}

1429class ToolsPreset(TypedDict):1429class ToolsPreset(TypedDict):


1461 1461 

1462| Variante | Campos | Descripción |1462| Variante | Campos | Descripción |

1463| :- | :- | :- |1463| :- | :- | :- |

1464| `adaptive` | `type`, `display` | Claude decide adaptativamente cuándo pensar |1464| `adaptive` | `type`, `display` | Claude decide de forma adaptativa cuándo pensar |

1465| `enabled` | `type`, `budget_tokens`, `display` | Habilitar pensamiento con un presupuesto de token específico |1465| `enabled` | `type`, `budget_tokens`, `display` | Habilitar el pensamiento con un presupuesto de tokens específico |

1466| `disabled` | `type` | Deshabilitar pensamiento |1466| `disabled` | `type` | Deshabilitar el pensamiento |

1467 1467 

1468El campo `display` opcional controla si el texto de pensamiento se devuelve `"summarized"` u `"omitted"`. En Claude Opus 4.7 y posterior, el predeterminado de API es `"omitted"`, por lo que establezca `"summarized"` para recibir contenido de pensamiento en salidas [`ThinkingBlock`](#thinkingblock). Claude Code no envía `display` a Amazon Bedrock ni a la Plataforma de Agentes de Google Cloud, por lo que en esos proveedores Opus 4.7 y posterior devuelven salidas `ThinkingBlock` vacías incluso cuando establece `display` en `"summarized"`.1468El campo opcional `display` controla si el texto del pensamiento se devuelve `"summarized"` u `"omitted"`. En Claude Opus 4.7 y posteriores, el predeterminado de la API es `"omitted"`, así que establece `"summarized"` para recibir el contenido del pensamiento en las salidas [`ThinkingBlock`](#thinkingblock). Claude Code no incluye `display` en las solicitudes a algunos proveedores, como Amazon Bedrock y Agent Platform de Google Cloud. En esos proveedores, Opus 4.7 y posteriores devuelven salidas `ThinkingBlock` vacías incluso cuando estableces `display` en `"summarized"`.

1469 1469 

1470Debido a que estas son clases `TypedDict`, son dicts simples en tiempo de ejecución. Construyalas como literales de dict o llame a la clase como un constructor; ambos producen un `dict`. Acceda a los campos con `config["budget_tokens"]`, no `config.budget_tokens`:1470Como estas son clases `TypedDict`, son dicts simples en tiempo de ejecución. Puedes construirlas como literales de dict o llamar a la clase como un constructor; ambas formas producen un `dict`. Accede a los campos con `config["budget_tokens"]`, no con `config.budget_tokens`:

1471 1471 

1472```python theme={null}1472```python theme={null}

1473from claude_agent_sdk import ClaudeAgentOptions, ThinkingConfigEnabled1473from claude_agent_sdk import ClaudeAgentOptions, ThinkingConfigEnabled


1485 `TaskBudget`1485 `TaskBudget`

1486</h3>1486</h3>

1487 1487 

1488Presupuesto de tarea del lado de la API en tokens, utilizado con el campo `task_budget` en `ClaudeAgentOptions`.1488Presupuesto de tarea del lado de la API en tokens, que se usa con el campo `task_budget` de `ClaudeAgentOptions`.

1489 1489 

1490```python theme={null}1490```python theme={null}

1491class TaskBudget(TypedDict):1491class TaskBudget(TypedDict):


1494 1494 

1495| Campo | Tipo | Descripción |1495| Campo | Tipo | Descripción |

1496| :- | :- | :- |1496| :- | :- | :- |

1497| `total` | `int` | Presupuesto de token total para la tarea |1497| `total` | `int` | Presupuesto total de tokens para la tarea |

1498 1498 

1499Debido a que esto es un `TypedDict`, páselo como un dict simple, como `ClaudeAgentOptions(task_budget={"total": 50000})`.1499Como es un `TypedDict`, pásalo como un dict simple, por ejemplo `ClaudeAgentOptions(task_budget={"total": 50000})`.

1500 1500 

1501<h3 id="sdkbeta">1501<h3 id="sdkbeta">

1502 `SdkBeta`1502 `SdkBeta`

1503</h3>1503</h3>

1504 1504 

1505Tipo literal para características beta del SDK.1505Tipo literal para las características beta del SDK.

1506 1506 

1507```python theme={null}1507```python theme={null}

1508SdkBeta = Literal["context-1m-2025-08-07"]1508SdkBeta = Literal["context-1m-2025-08-07"]

1509```1509```

1510 1510 

1511Utilice con el campo `betas` en `ClaudeAgentOptions` para habilitar características beta.1511Úsalo con el campo `betas` de `ClaudeAgentOptions` para habilitar características beta.

1512 1512 

1513<Warning>1513<Warning>

1514 En la Claude API, la beta `context-1m-2025-08-07` está retirada para Claude Sonnet 4.5 y Claude Sonnet 4. Si todavía la pasas con cualquiera de esos modelos, las solicitudes que superan la ventana de contexto estándar de 200K tokens devuelven un error, así que elimínala de `betas`. Para ejecutar una sesión con una ventana de contexto de 1M tokens, establece `model` en un modelo que [se ejecute con la ventana de 1M de forma predeterminada](/docs/es/model-config#extended-context), como `claude-sonnet-5-5` o `claude-opus-5-5`. Para un modelo que alcanza 1M solo mediante su variante `[1m]`, agrega el sufijo al ID del modelo, como en `claude-opus-4-6[1m]`.1514 En la Claude API, la beta `context-1m-2025-08-07` está retirada para Claude Sonnet 4.5 y Claude Sonnet 4. Si todavía la pasas con cualquiera de esos modelos, las solicitudes que superan la ventana de contexto estándar de 200K tokens devuelven un error, así que elimínala de `betas`. Para ejecutar una sesión con una ventana de contexto de 1M tokens, establece `model` en un modelo que [se ejecute con la ventana de 1M de forma predeterminada](/docs/es/model-config#extended-context), como `claude-sonnet-5-5` o `claude-opus-5-5`. Para un modelo que alcanza 1M solo mediante su variante `[1m]`, agrega el sufijo al ID del modelo, como en `claude-opus-4-6[1m]`.


1531 `McpServerConfig`1531 `McpServerConfig`

1532</h3>1532</h3>

1533 1533 

1534Tipo de unión para configuraciones de servidor MCP.1534Tipo de unión para configuraciones de servidores MCP.

1535 1535 

1536```python theme={null}1536```python theme={null}

1537McpServerConfig = (1537McpServerConfig = (


1545 1545 

1546```python theme={null}1546```python theme={null}

1547class McpStdioServerConfig(TypedDict):1547class McpStdioServerConfig(TypedDict):

1548 type: NotRequired[Literal["stdio"]] # Opcional para compatibilidad hacia atrás1548 type: NotRequired[Literal["stdio"]] # Opcional para compatibilidad con versiones anteriores

1549 command: str1549 command: str

1550 args: NotRequired[list[str]]1550 args: NotRequired[list[str]]

1551 env: NotRequired[dict[str, str]]1551 env: NotRequired[dict[str, str]]


1577 `McpServerStatusConfig`1577 `McpServerStatusConfig`

1578</h3>1578</h3>

1579 1579 

1580La configuración de un servidor MCP tal como se informa mediante [`get_mcp_status()`](#methods). Esta es la unión de todas las variantes de transporte [`McpServerConfig`](#mcpserverconfig) más una variante de solo salida `claudeai-proxy` para servidores proxificados a través de claude.ai.1580La configuración de un servidor MCP tal como la informa [`get_mcp_status()`](#methods). Es la unión de todas las variantes de transporte de [`McpServerConfig`](#mcpserverconfig) más una variante `claudeai-proxy` de solo salida para servidores que pasan por proxy a través de claude.ai.

1581 1581 

1582```python theme={null}1582```python theme={null}

1583McpServerStatusConfig = (1583McpServerStatusConfig = (


1589)1589)

1590```1590```

1591 1591 

1592`McpSdkServerConfigStatus` es la forma serializable de [`McpSdkServerConfig`](#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`).1592`McpSdkServerConfigStatus` es la forma serializable de [`McpSdkServerConfig`](#mcpsdkserverconfig) con solo los campos `type` (`"sdk"`) y `name` (`str`); se omite la `instance` en proceso. `McpClaudeAIProxyServerConfig` tiene los campos `type` (`"claudeai-proxy"`), `url` (`str`) e `id` (`str`).

1593 1593 

1594<h3 id="mcpstatusresponse">1594<h3 id="mcpstatusresponse">

1595 `McpStatusResponse`1595 `McpStatusResponse`

1596</h3>1596</h3>

1597 1597 

1598Respuesta de [`ClaudeSDKClient.get_mcp_status()`](#methods). Envuelve la lista de estados del servidor bajo la clave `mcpServers`.1598Respuesta de [`ClaudeSDKClient.get_mcp_status()`](#methods). Envuelve la lista de estados de servidores bajo la clave `mcpServers`.

1599 1599 

1600```python theme={null}1600```python theme={null}

1601class McpStatusResponse(TypedDict):1601class McpStatusResponse(TypedDict):


1622| Campo | Tipo | Descripción |1622| Campo | Tipo | Descripción |

1623| :- | :- | :- |1623| :- | :- | :- |

1624| `name` | `str` | Nombre del servidor |1624| `name` | `str` | Nombre del servidor |

1625| `status` | `str` | Uno de `"connected"`, `"failed"`, `"needs-auth"`, `"pending"`, o `"disabled"` |1625| `status` | `str` | Uno de `"connected"`, `"failed"`, `"needs-auth"`, `"pending"` o `"disabled"` |

1626| `serverInfo` | `dict` (opcional) | Nombre y versión del servidor (`{"name": str, "version": str}`) |1626| `serverInfo` | `dict` (opcional) | Nombre y versión del servidor (`{"name": str, "version": str}`) |

1627| `error` | `str` (opcional) | Mensaje de error si el servidor no se conectó |1627| `error` | `str` (opcional) | Mensaje de error si el servidor no pudo conectarse |

1628| `config` | [`McpServerStatusConfig`](#mcpserverstatusconfig) (opcional) | Configuración del servidor. Misma forma que [`McpServerConfig`](#mcpserverconfig) (stdio, SSE, HTTP, o SDK), más una variante `claudeai-proxy` para servidores conectados a través de claude.ai |1628| `config` | [`McpServerStatusConfig`](#mcpserverstatusconfig) (opcional) | Configuración del servidor. Misma forma que [`McpServerConfig`](#mcpserverconfig) (stdio, SSE, HTTP o SDK), más una variante `claudeai-proxy` para servidores conectados a través de claude.ai |

1629| `scope` | `str` (opcional) | Alcance de configuración |1629| `scope` | `str` (opcional) | Alcance de la configuración |

1630| `tools` | `list` (opcional) | Herramientas proporcionadas por este servidor, cada una con campos `name`, `description`, y `annotations` |1630| `tools` | `list` (opcional) | Herramientas proporcionadas por este servidor, cada una con los campos `name`, `description` y `annotations` |

1631 1631 

1632<h3 id="contextusageresponse">1632<h3 id="contextusageresponse">

1633 `ContextUsageResponse`1633 `ContextUsageResponse`

1634</h3>1634</h3>

1635 1635 

1636Respuesta de [`ClaudeSDKClient.get_context_usage()`](#methods). Este es el mismo payload que Claude Code renderiza para el comando `/context` en una sesión interactiva, por lo que junto con los conteos de tokens lleva campos de visualización como `color` y `gridRows` que Claude Code utiliza para dibujar la cuadrícula de uso de `/context`.1636Respuesta de [`ClaudeSDKClient.get_context_usage()`](#methods). Es el mismo payload que Claude Code renderiza para el comando `/context` en una sesión interactiva, por lo que, junto con los recuentos de tokens, incluye campos de visualización como `color` y `gridRows` que Claude Code usa para dibujar la cuadrícula de uso de `/context`.

1637 1637 

1638Claude Code construye este payload enviando varias solicitudes a la API de [conteo de tokens](https://platform.claude.com/docs/en/build-with-claude/token-counting). Estas solicitudes no aparecen en el flujo de mensajes, por lo que el seguimiento de costos que lee el flujo no las verá. En la API de Anthropic, el conteo de tokens no se factura.1638Claude Code construye este payload enviando varias solicitudes a la API de [conteo de tokens](https://platform.claude.com/docs/en/build-with-claude/token-counting). Estas solicitudes no aparecen en el stream de mensajes, por lo que el seguimiento de costos que lee el stream no las verá. En la API de Anthropic, el conteo de tokens no se factura.

1639 1639 

1640```python theme={null}1640```python theme={null}

1641class ContextUsageResponse(TypedDict):1641class ContextUsageResponse(TypedDict):


1660 apiUsage: NotRequired[dict[str, Any] | None]1660 apiUsage: NotRequired[dict[str, Any] | None]

1661```1661```

1662 1662 

1663Cada entrada `ContextUsageCategory` lleva `name`, `tokens`, `color`, y una bandera `isDeferred` opcional. `totalTokens` es el uso de contexto actual de la sesión, y `maxTokens` es la ventana contra la que se mide el uso. Esa ventana es la ventana de contexto del modelo, o la ventana de compactación automática más baja cuando se aplica una, y `rawMaxTokens` lleva el mismo valor que `maxTokens`. `apiUsage` contiene el uso de la respuesta de API más reciente, no un total acumulado para la sesión. Claude Code deja sin establecer las claves opcionales `deferredBuiltinTools`, `systemTools` y `systemPromptSections`, por lo que espere que estén ausentes incluso aunque el tipo las declare.1663Cada entrada de `ContextUsageCategory` incluye `name`, `tokens`, `color` y un flag opcional `isDeferred`. `totalTokens` es el uso de contexto actual de la sesión, y `maxTokens` es la ventana con la que se mide ese uso. Esa ventana es la ventana de contexto del modelo, o la ventana de compactación automática más baja cuando corresponde, y `rawMaxTokens` contiene el mismo valor que `maxTokens`. `apiUsage` contiene el uso de la respuesta de API más reciente, no un total acumulado de la sesión. Claude Code deja sin establecer las claves opcionales `deferredBuiltinTools`, `systemTools` y `systemPromptSections`, así que espera que estén ausentes aunque el tipo las declare.

1664 1664 

1665<h3 id="sdkpluginconfig">1665<h3 id="sdkpluginconfig">

1666 `SdkPluginConfig`1666 `SdkPluginConfig`


1688]1688]

1689```1689```

1690 1690 

1691Para información completa sobre cómo crear y usar plugins, consulte [Plugins](/docs/es/agent-sdk/plugins).1691Para obtener información completa sobre cómo crear y usar plugins, consulta [Plugins](/docs/es/agent-sdk/plugins).

1692 1692 

1693<h2 id="message-types">1693<h2 id="message-types">

1694 Tipos de mensaje1694 Tipos de mensaje


1736| `tool_use_result` | `dict[str, Any] \| None` | Datos de resultado de herramienta si es aplicable |1736| `tool_use_result` | `dict[str, Any] \| None` | Datos de resultado de herramienta si es aplicable |

1737| `origin` | `MessageOrigin \| None` | Procedencia de este mensaje, rellenado en turnos inyectados como notificaciones de tareas y mensajes de pares. `None` cuando la CLI no lo atribuyó. Requiere Python Agent SDK 0.2.137 o posterior |1737| `origin` | `MessageOrigin \| None` | Procedencia de este mensaje, rellenado en turnos inyectados como notificaciones de tareas y mensajes de pares. `None` cuando la CLI no lo atribuyó. Requiere Python Agent SDK 0.2.137 o posterior |

1738 1738 

1739El SDK pasa `tool_use_result` a través de la CLI sin modificar. Para una herramienta en un servidor MCP externo cuyo resultado contiene bloques `resource_link`, el dict tiene una clave `resourceLinks` que contiene una lista de dicts con las claves del tipo TypeScript [`SDKMcpResourceLink`](/docs/es/agent-sdk/typescript#sdkmcpresourcelink). Claude recibe cada enlace como una línea de texto en el resultado de la herramienta. Para renderizar los archivos que devolvió el servidor, lea `resourceLinks` en lugar de analizar ese texto. La clave `resourceLinks` requiere Python Agent SDK 0.2.150 o posterior y Claude Code v2.1.257 o posterior; la CLI incluida con esa versión del SDK satisface el requisito de Claude Code.1739El SDK pasa `tool_use_result` a través de la CLI sin modificar. Para una herramienta en un servidor MCP externo cuyo resultado contiene bloques `resource_link`, el dict tiene una clave `resourceLinks` que contiene una lista de dicts con las claves del tipo TypeScript [`SDKMcpResourceLink`](/docs/es/agent-sdk/typescript#sdkmcpresourcelink). Claude recibe cada enlace como una línea de texto en el resultado de la herramienta. Para renderizar los archivos que devolvió el servidor, lee `resourceLinks` en lugar de analizar ese texto. La clave `resourceLinks` requiere Python Agent SDK 0.2.150 o posterior y Claude Code v2.1.257 o posterior; la CLI incluida con esa versión del SDK satisface el requisito de Claude Code.

1740 1740 

1741La CLI omite la clave cuando el resultado no tiene enlaces y en resultados de subagentes. La CLI mantiene como máximo 50 enlaces por resultado y deja de agregar enlaces una vez que la lista alcanza 64 KiB de JSON serializado. Una herramienta que define en proceso con [`tool()`](#tool) nunca produce la clave, porque el SDK aplana sus bloques `resource_link` a texto antes de que la CLI vea el resultado.1741La CLI omite la clave cuando el resultado no tiene enlaces y en resultados de subagentes. La CLI mantiene como máximo 50 enlaces por resultado y deja de agregar enlaces una vez que la lista alcanza 64 KiB de JSON serializado. Una herramienta que defines en proceso con [`tool()`](#tool) nunca produce la clave, porque el SDK aplana sus bloques `resource_link` a texto antes de que la CLI vea el resultado.

1742 1742 

1743<h3 id="assistantmessage">1743<h3 id="assistantmessage">

1744 `AssistantMessage`1744 `AssistantMessage`


1789]1789]

1790```1790```

1791 1791 

1792El proceso CLI subyacente puede emitir tipos de error que este Literal no enumera, como `max_output_tokens`. El SDK pasa el valor sin modificar, así que trate las cadenas fuera de esta lista de la manera que trata `unknown`. El tipo TypeScript [`SDKAssistantMessageError`](/docs/es/agent-sdk/typescript#sdkassistantmessage) enumera el conjunto completo de valores que la CLI puede emitir.1792El proceso CLI subyacente puede emitir tipos de error que este Literal no enumera, como `max_output_tokens`. El SDK pasa el valor sin modificar, así que trata las cadenas fuera de esta lista de la misma manera en que tratas `unknown`. El tipo TypeScript [`SDKAssistantMessageError`](/docs/es/agent-sdk/typescript#sdkassistantmessage) enumera el conjunto completo de valores que la CLI puede emitir.

1793 1793 

1794<h3 id="systemmessage">1794<h3 id="systemmessage">

1795 `SystemMessage`1795 `SystemMessage`


1842 1842 

1843* `is_error`: `True` cuando la conversación terminó en un estado de error. Siempre `True` en los subtipos `error_*`. En `subtype="success"` es `True` cuando 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.1843* `is_error`: `True` cuando la conversación terminó en un estado de error. Siempre `True` en los subtipos `error_*`. En `subtype="success"` es `True` cuando 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.

1844* `api_error_status`: el código de estado HTTP del error de API de terminación. `None` cuando el turno terminó sin uno. Se rellena solo en `subtype="success"`.1844* `api_error_status`: el código de estado HTTP del error de API de terminación. `None` cuando el turno terminó sin uno. Se rellena solo en `subtype="success"`.

1845* `result`: texto del mensaje del asistente final en `subtype="success"`, o `None` en los subtipos `error_*`. Cuando `subtype="success"` e `is_error=True`, esto contiene la cadena de error de API si una está disponible pero puede estar vacía, así que verifique `api_error_status` y el contenido anterior de `AssistantMessage` para obtener detalles.1845* `result`: texto del mensaje del asistente final en `subtype="success"`, o `None` en los subtipos `error_*`. Cuando `subtype="success"` e `is_error=True`, esto contiene la cadena de error de API si una está disponible pero puede estar vacía, así que verifica `api_error_status` y el contenido anterior de `AssistantMessage` para obtener detalles.

1846* `errors`: cadenas de error a nivel de bucle como el mensaje de máx-turnos. Se rellena solo en los subtipos `error_*`.1846* `errors`: cadenas de error a nivel de bucle como el mensaje de máx-turnos. Se rellena solo en los subtipos `error_*`.

1847* `terminal_reason`: por qué terminó el bucle de consulta, como `"completed"`, `"max_turns"`, `"api_error"`, `"aborted_streaming"`, o `"aborted_tools"`. Un valor de `"aborted_streaming"` o `"aborted_tools"` significa que el turno fue abortado antes de completarse. Las causas comunes son [`interrupt()`](#claudesdkclient) y una devolución de llamada de permiso que devuelve [`PermissionResultDeny`](#permissionresultdeny) con `interrupt=True`. `None` en versiones de CLI que preceden al campo, en resultados de comandos locales como `/voice` o `/usage`, que omiten el bucle de consulta, o en resultados de error sintetizados emitidos cuando la sesión falla fatalmente. Refleja el [`SDKResultMessage.terminal_reason`](/docs/es/agent-sdk/typescript#sdkresultmessage) del SDK de TypeScript, que enumera el conjunto completo de valores.1847* `terminal_reason`: por qué terminó el bucle de consulta, como `"completed"`, `"max_turns"`, `"api_error"`, `"aborted_streaming"`, o `"aborted_tools"`. Un valor de `"aborted_streaming"` o `"aborted_tools"` significa que el turno fue abortado antes de completarse. Las causas comunes son [`interrupt()`](#claudesdkclient) y una devolución de llamada de permiso que devuelve [`PermissionResultDeny`](#permissionresultdeny) con `interrupt=True`. `None` en versiones de CLI que preceden al campo, en resultados de comandos locales como `/voice` o `/usage`, que omiten el bucle de consulta, o en resultados de error sintetizados emitidos cuando la sesión falla fatalmente. Refleja el [`SDKResultMessage.terminal_reason`](/docs/es/agent-sdk/typescript#sdkresultmessage) del SDK de TypeScript, que enumera el conjunto completo de valores.

1848* `origin`: origen del mensaje del usuario que activó este turno. En [modo de entrada de streaming](/docs/es/agent-sdk/streaming-vs-single-mode), verifique esto para distinguir el resultado de su propio prompt, donde `origin` es `None` o `{"kind": "human"}`, del resultado de un turno inyectado como una notificación de tarea de fondo. Requiere Python Agent SDK 0.2.137 o posterior.1848* `origin`: origen del mensaje del usuario que activó este turno. En [modo de entrada de streaming](/docs/es/agent-sdk/streaming-vs-single-mode), verifica esto para distinguir el resultado de tu propio prompt, donde `origin` es `None` o `{"kind": "human"}`, del resultado de un turno inyectado como una notificación de tarea en segundo plano. Requiere Python Agent SDK 0.2.137 o posterior.

1849 1849 

1850El dict `usage` cubre solo el bucle del agente principal y excluye subagentes y otras llamadas de modelo anidadas o auxiliares. En [modo de entrada de streaming](/docs/es/agent-sdk/streaming-vs-single-mode), los valores son por turno. Prefiera `model_usage` para contabilidad de token y costo. El dict `usage` contiene las siguientes claves cuando está presente:1850El dict `usage` cubre solo el bucle del agente principal y excluye subagentes y otras llamadas de modelo anidadas o auxiliares. En [modo de entrada de streaming](/docs/es/agent-sdk/streaming-vs-single-mode), los valores son por turno. Prefiere `model_usage` para contabilidad de token y costo. El dict `usage` contiene las siguientes claves cuando está presente:

1851 1851 

1852| Clave | Tipo | Descripción |1852| Clave | Tipo | Descripción |

1853| - | - | - |1853| - | - | - |

1854| `input_tokens` | `int` | Tokens de entrada consumidos por el bucle del agente de nivel superior. [Los tokens de subagentes no se incluyen](/docs/es/agent-sdk/cost-tracking#get-the-total-cost-of-a-query); use `model_usage` para contabilidad de árbol completo. |1854| `input_tokens` | `int` | Tokens de entrada consumidos por el bucle del agente de nivel superior. [Los tokens de subagentes no se incluyen](/docs/es/agent-sdk/cost-tracking#get-the-total-cost-of-a-query); usa `model_usage` para contabilidad de árbol completo. |

1855| `output_tokens` | `int` | Tokens de salida generados por el bucle del agente de nivel superior. Los tokens de subagentes no se incluyen. |1855| `output_tokens` | `int` | Tokens de salida generados por el bucle del agente de nivel superior. Los tokens de subagentes no se incluyen. |

1856| `cache_creation_input_tokens` | `int` | Tokens usados para crear nuevas entradas de caché. |1856| `cache_creation_input_tokens` | `int` | Tokens usados para crear nuevas entradas de caché. |

1857| `cache_read_input_tokens` | `int` | Tokens leídos de entradas de caché existentes. |1857| `cache_read_input_tokens` | `int` | Tokens leídos de entradas de caché existentes. |

1858 1858 

1859El dict `model_usage` asigna nombres de modelo a uso por modelo. Cubre cada llamada de modelo realizada a través de la canalización de consulta: el bucle principal, subagentes y llamadas internas como compactación y agentes de Workflow. Las llamadas auxiliares fuera de esa canalización, como el clasificador de permisos y solicitudes de conteo de tokens, se excluyen de `model_usage`. Trate `model_usage` como una estimación, no como un estado de facturación.1859El dict `model_usage` asigna nombres de modelo a uso por modelo. Cubre cada llamada de modelo realizada a través de la canalización de consulta: el bucle principal, subagentes y llamadas internas como compactación y agentes de Workflow. Las llamadas auxiliares fuera de esa canalización, como el clasificador de permisos y solicitudes de conteo de tokens, se excluyen de `model_usage`. Trata `model_usage` como una estimación, no como un estado de facturación.

1860 1860 

1861En [modo de entrada de streaming](/docs/es/agent-sdk/streaming-vs-single-mode), `model_usage` y `total_cost_usd` son acumulativos entre turnos, así que lea el resultado más reciente en lugar de sumar entre resultados. Una llamada que reanuda una sesión también cuenta los [totales restaurados de las llamadas anteriores de la sesión](/docs/es/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). Vea [Rastrear costos en modo de entrada de streaming](/docs/es/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode) para reiniciaciones y [Recuperar totales después de un bloqueo de sesión](/docs/es/agent-sdk/cost-tracking#recover-totals-after-a-session-crash) para resultados puestos a cero.1861En [modo de entrada de streaming](/docs/es/agent-sdk/streaming-vs-single-mode), `model_usage` y `total_cost_usd` son acumulativos entre turnos, así que lee el resultado más reciente en lugar de sumar entre resultados. Una llamada que reanuda una sesión también cuenta los [totales restaurados de las llamadas anteriores de la sesión](/docs/es/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). Consulta [Rastrear costos en modo de entrada de streaming](/docs/es/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode) para reiniciaciones y [Recuperar totales después de un bloqueo de sesión](/docs/es/agent-sdk/cost-tracking#recover-totals-after-a-session-crash) para resultados puestos a cero.

1862 1862 

1863Cada valor en `model_usage` es un TypedDict `ModelUsage`, importado vía `from claude_agent_sdk.types import ModelUsage`. Sus claves usan camelCase porque el SDK pasa el valor sin modificar desde el proceso CLI subyacente, coincidiendo con el tipo TypeScript [`ModelUsage`](/docs/es/agent-sdk/typescript#modelusage):1863Cada valor en `model_usage` es un TypedDict `ModelUsage`, importado vía `from claude_agent_sdk.types import ModelUsage`. Sus claves usan camelCase porque el SDK pasa el valor sin modificar desde el proceso CLI subyacente, coincidiendo con el tipo TypeScript [`ModelUsage`](/docs/es/agent-sdk/typescript#modelusage):

1864 1864 


1869| `cacheReadInputTokens` | `int` | Tokens de lectura de caché para este modelo. |1869| `cacheReadInputTokens` | `int` | Tokens de lectura de caché para este modelo. |

1870| `cacheCreationInputTokens` | `int` | Tokens de creación de caché para este modelo. |1870| `cacheCreationInputTokens` | `int` | Tokens de creación de caché para este modelo. |

1871| `webSearchRequests` | `int` | Solicitudes de búsqueda web realizadas por este modelo. |1871| `webSearchRequests` | `int` | Solicitudes de búsqueda web realizadas por este modelo. |

1872| `thinkingTokens` | `int` | Tokens de pensamiento generados por este modelo, ya contados en `outputTokens`. Ausente hasta que un turno se ejecute en una versión de Claude Code que lo registre, y no declarado en el TypedDict, así que léalo con `.get()`. Requiere Python Agent SDK 0.2.150 o posterior, cuya CLI incluida lo registra. |1872| `thinkingTokens` | `int` | Tokens de pensamiento generados por este modelo, ya contados en `outputTokens`. Ausente hasta que un turno se ejecute en una versión de Claude Code que lo registre, y no declarado en el TypedDict, así que léelo con `.get()`. Requiere Python Agent SDK 0.2.150 o posterior, cuya CLI incluida lo registra. |

1873| `costUSD` | `float` | Costo estimado en USD para este modelo, calculado del lado del cliente. Vea [Rastrear costo y uso](/docs/es/agent-sdk/cost-tracking) para advertencias de facturación. |1873| `costUSD` | `float` | Costo estimado en USD para este modelo, calculado del lado del cliente. Consulta [Rastrear costo y uso](/docs/es/agent-sdk/cost-tracking) para advertencias de facturación. |

1874| `contextWindow` | `int` | Tamaño de ventana de contexto para este modelo. |1874| `contextWindow` | `int` | Tamaño de ventana de contexto para este modelo. |

1875| `maxOutputTokens` | `int` | Límite de token de salida máximo para este modelo. |1875| `maxOutputTokens` | `int` | Límite de token de salida máximo para este modelo. |

1876| `canonicalModel` | `str` | ID de modelo canónico utilizado para la búsqueda de precios. Puede diferir de la cadena de modelo sin procesar por la que se indexa la entrada, como un ID específico del proveedor o un alias. No siempre presente. |1876| `canonicalModel` | `str` | ID de modelo canónico utilizado para la búsqueda de precios. Puede diferir de la cadena de modelo sin procesar por la que se indexa la entrada, como un ID específico del proveedor o un alias. No siempre presente. |

1877| `provider` | `str` | Proveedor de API que sirvió este modelo, como `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle`, o `gateway`. No siempre presente. |1877| `provider` | `str` | Proveedor de API que sirvió este modelo, como `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle`, o `gateway`. No siempre presente. |

1878| `costBasis` | `str` | Tabla de precios con la que se calculó el precio de la solicitud más reciente de este modelo: `list` para el precio de lista, `managed` para una tabla [`modelPricing`](/docs/es/settings-reference#modelpricing), o `unknown` cuando ninguna coincidió con el ID del modelo. No siempre presente, y no declarado en el TypedDict, así que léelo con `.get()`. Requiere Claude Code v2.1.246 o posterior. |

1878 1879 

1879<h3 id="streamevent">1880<h3 id="streamevent">

1880 `StreamEvent`1881 `StreamEvent`

1881</h3>1882</h3>

1882 1883 

1883Evento 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`.1884Evento de streaming 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`.

1884 1885 

1885```python theme={null}1886```python theme={null}

1886@dataclass1887@dataclass


1895| :- | :- | :- |1896| :- | :- | :- |

1896| `uuid` | `str` | Identificador único para este evento |1897| `uuid` | `str` | Identificador único para este evento |

1897| `session_id` | `str` | Identificador de sesión |1898| `session_id` | `str` | Identificador de sesión |

1898| `event` | `dict[str, Any]` | Los datos del evento de flujo de API de Claude sin procesar |1899| `event` | `dict[str, Any]` | Los datos del evento de streaming de API de Claude sin procesar |

1899| `parent_tool_use_id` | `str \| None` | Siempre `None`. Los eventos de flujo se emiten solo para la sesión principal. Para la atribución de subagentes, use mensajes completos como [`AssistantMessage`](#assistantmessage) |1900| `parent_tool_use_id` | `str \| None` | Siempre `None`. Los eventos de streaming se emiten solo para la sesión principal. Para la atribución de subagentes, usa mensajes completos como [`AssistantMessage`](#assistantmessage) |

1900 1901 

1901<h3 id="ratelimitevent">1902<h3 id="ratelimitevent">

1902 `RateLimitEvent`1903 `RateLimitEvent`

1903</h3>1904</h3>

1904 1905 

1905Emitido 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"`.1906Emitido cuando el estado del rate limit cambia (por ejemplo, de `"allowed"` a `"allowed_warning"`). Usa esto para advertir a los usuarios antes de que alcancen un límite duro, o para retroceder cuando el estado es `"rejected"`.

1906 1907 

1907```python theme={null}1908```python theme={null}

1908@dataclass1909@dataclass


1914 1915 

1915| Campo | Tipo | Descripción |1916| Campo | Tipo | Descripción |

1916| :- | :- | :- |1917| :- | :- | :- |

1917| `rate_limit_info` | [`RateLimitInfo`](#ratelimitinfo) | Estado actual del límite de velocidad |1918| `rate_limit_info` | [`RateLimitInfo`](#ratelimitinfo) | Estado actual del rate limit |

1918| `uuid` | `str` | Identificador único del evento |1919| `uuid` | `str` | Identificador único del evento |

1919| `session_id` | `str` | Identificador de sesión |1920| `session_id` | `str` | Identificador de sesión |

1920 1921 


1922 `RateLimitInfo`1923 `RateLimitInfo`

1923</h3>1924</h3>

1924 1925 

1925Estado del límite de velocidad llevado por [`RateLimitEvent`](#ratelimitevent).1926Estado del rate limit llevado por [`RateLimitEvent`](#ratelimitevent).

1926 1927 

1927```python theme={null}1928```python theme={null}

1928RateLimitStatus = Literal["allowed", "allowed_warning", "rejected"]1929RateLimitStatus = Literal["allowed", "allowed_warning", "rejected"]


1945 1946 

1946| Campo | Tipo | Descripción |1947| Campo | Tipo | Descripción |

1947| :- | :- | :- |1948| :- | :- | :- |

1948| `status` | `RateLimitStatus` | Estado actual. `"allowed_warning"` significa acercarse al límite; `"rejected"` significa que se alcanzó el límite |1949| `status` | `RateLimitStatus` | Estado actual, uno de `"allowed"`, `"allowed_warning"` o `"rejected"`. `"allowed_warning"` significa acercarse al límite; `"rejected"` significa que se alcanzó el límite |

1949| `resets_at` | `int \| None` | Marca de tiempo Unix cuando se reinicia la ventana del límite de velocidad |1950| `resets_at` | `int \| None` | Marca de tiempo Unix cuando se reinicia la ventana del rate limit |

1950| `rate_limit_type` | `RateLimitType \| None` | Qué ventana de límite de velocidad se aplica |1951| `rate_limit_type` | `RateLimitType \| None` | Qué ventana de rate limit se aplica |

1951| `utilization` | `float \| None` | Fracción del límite de velocidad consumido (0.0 a 1.0) |1952| `utilization` | `float \| None` | Fracción del rate limit consumida (0.0 a 1.0) |

1952| `overage_status` | `RateLimitStatus \| None` | Estado del uso de exceso de pago por uso, si es aplicable |1953| `overage_status` | `RateLimitStatus \| None` | Estado del uso de exceso de pago por uso, si es aplicable |

1953| `overage_resets_at` | `int \| None` | Marca de tiempo Unix cuando se reinicia la ventana de exceso |1954| `overage_resets_at` | `int \| None` | Marca de tiempo Unix cuando se reinicia la ventana de exceso |

1954| `overage_disabled_reason` | `str \| None` | Por qué el exceso no está disponible, si el estado es `"rejected"` |1955| `overage_disabled_reason` | `str \| None` | Por qué el exceso no está disponible, si el estado es `"rejected"` |

1955| `raw` | `dict[str, Any]` | Dict sin procesar completo del CLI, incluyendo campos no modelados arriba |1956| `raw` | `dict[str, Any]` | Dict sin procesar completo de la CLI, incluyendo campos no modelados arriba |

1956 1957 

1957<h3 id="conversationresetmessage">1958<h3 id="conversationresetmessage">

1958 `ConversationResetMessage`1959 `ConversationResetMessage`

1959</h3>1960</h3>

1960 1961 

1961Emitido cuando la conversación se reemplaza sin terminar la conexión, como después de `/clear`. Vea [Rastrear costos en modo de entrada de streaming](/docs/es/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode) para cómo un reinicio afecta los totales en ejecución en objetos `ResultMessage` posteriores. Requiere Python Agent SDK 0.2.137 o posterior.1962Emitido cuando la conversación se reemplaza sin terminar la conexión, como después de `/clear`. Consulta [Rastrear costos en modo de entrada de streaming](/docs/es/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode) para ver cómo un reinicio afecta los totales en ejecución en objetos `ResultMessage` posteriores. Requiere Python Agent SDK 0.2.137 o posterior.

1962 1963 

1963```python theme={null}1964```python theme={null}

1964@dataclass1965@dataclass


1970 1971 

1971| Campo | Tipo | Descripción |1972| Campo | Tipo | Descripción |

1972| :- | :- | :- |1973| :- | :- | :- |

1973| `new_conversation_id` | `str` | Identificador opaco para la conversación nueva. No es el `session_id` de mensajes posteriores; lea eso del siguiente mensaje |1974| `new_conversation_id` | `str` | Identificador opaco para la conversación nueva. No es el `session_id` de mensajes posteriores; léelo del siguiente mensaje |

1974| `uuid` | `str` | Identificador único del mensaje |1975| `uuid` | `str` | Identificador único del mensaje |

1975| `session_id` | `str` | ID de la sesión que fue reiniciada. Los mensajes después del reinicio llevan un nuevo `session_id` |1976| `session_id` | `str` | ID de la sesión que fue reiniciada. Los mensajes después del reinicio llevan un nuevo `session_id` |

1976 1977 


1978 `TaskStartedMessage`1979 `TaskStartedMessage`

1979</h3>1980</h3>

1980 1981 

1981Emitido 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](#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`.1982Emitido cuando comienza una tarea en segundo plano. Una tarea en segundo plano es cualquier cosa rastreada fuera del turno principal: un comando Bash en segundo plano, una vigilancia de [Monitor](#monitor), un subagente generado a través de la herramienta Agent, o un agente remoto. El campo `task_type` te indica cuál. Este nombre no está relacionado con el cambio de nombre de herramienta `Task`-a-`Agent`.

1982 1983 

1983```python theme={null}1984```python theme={null}

1984@dataclass1985@dataclass


1998| `uuid` | `str` | Identificador único del mensaje |1999| `uuid` | `str` | Identificador único del mensaje |

1999| `session_id` | `str` | Identificador de sesión |2000| `session_id` | `str` | Identificador de sesión |

2000| `tool_use_id` | `str \| None` | ID de uso de herramienta asociado |2001| `tool_use_id` | `str \| None` | ID de uso de herramienta asociado |

2001| `task_type` | `str \| None` | Qué tipo de tarea de fondo: `"local_bash"` para Bash de fondo y relojes de Monitor, `"local_agent"`, o `"remote_agent"` |2002| `task_type` | `str \| None` | Qué tipo de tarea en segundo plano: `"local_bash"` para Bash en segundo plano y vigilancias de Monitor, `"local_agent"`, o `"remote_agent"` |

2002 2003 

2003<h3 id="taskusage">2004<h3 id="taskusage">

2004 `TaskUsage`2005 `TaskUsage`

2005</h3>2006</h3>

2006 2007 

2007Datos de token y tiempo para una tarea de fondo.2008Datos de token y tiempo para una tarea en segundo plano.

2008 2009 

2009```python theme={null}2010```python theme={null}

2010class TaskUsage(TypedDict):2011class TaskUsage(TypedDict):


2017 `TaskProgressMessage`2018 `TaskProgressMessage`

2018</h3>2019</h3>

2019 2020 

2020Emitido periódicamente con actualizaciones de progreso para una tarea de fondo en ejecución.2021Emitido periódicamente con actualizaciones de progreso para una tarea en segundo plano en ejecución.

2021 2022 

2022```python theme={null}2023```python theme={null}

2023@dataclass2024@dataclass


2045 `TaskNotificationMessage`2046 `TaskNotificationMessage`

2046</h3>2047</h3>

2047 2048 

2048Emitido 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.2049Emitido cuando una tarea en segundo plano se completa, falla o se detiene. Las tareas en segundo plano incluyen comandos Bash `run_in_background`, vigilancias de Monitor y subagentes en segundo plano.

2049 2050 

2050```python theme={null}2051```python theme={null}

2051@dataclass2052@dataclass


2071| `tool_use_id` | `str \| None` | ID de uso de herramienta asociado |2072| `tool_use_id` | `str \| None` | ID de uso de herramienta asociado |

2072| `usage` | `TaskUsage \| None` | Uso de token final para la tarea |2073| `usage` | `TaskUsage \| None` | Uso de token final para la tarea |

2073 2074 

2074Cuando la CLI [mueve una llamada de herramienta MCP larga al fondo](/docs/es/mcp#automatic-backgrounding-of-long-tool-calls), el resultado de la herramienta para esa llamada contiene solo un marcador de posición y el resultado real de la llamada llega en este mensaje. En una notificación `"completed"` para tal llamada, la CLI agrega una clave `resource_links` que enumera los archivos que devolvió la herramienta por referencia, con las mismas entradas y límites que la clave `resourceLinks` en [`UserMessage.tool_use_result`](#usermessage). La clave `resource_links` requiere Python Agent SDK 0.2.150 o posterior y Claude Code v2.1.257 o posterior; la CLI incluida con esa versión del SDK satisface el requisito de Claude Code.2075Cuando la CLI [mueve una llamada a herramienta MCP larga a segundo plano](/docs/es/mcp#automatic-backgrounding-of-long-tool-calls), el resultado de la herramienta para esa llamada contiene solo un marcador de posición y el resultado real de la llamada llega en este mensaje. En una notificación `"completed"` para tal llamada, la CLI agrega una clave `resource_links` que enumera los archivos que devolvió la herramienta por referencia, con las mismas entradas y límites que la clave `resourceLinks` en [`UserMessage.tool_use_result`](#usermessage). La clave `resource_links` requiere Python Agent SDK 0.2.150 o posterior y Claude Code v2.1.257 o posterior; la CLI incluida con esa versión del SDK satisface el requisito de Claude Code.

2075 2076 

2076La clase de datos no tiene campo para `resource_links`. Léalo del dict `data` que el mensaje hereda de [`SystemMessage`](#systemmessage): `message.data.get("resource_links")`. Haga coincidir la notificación con la llamada usando `tool_use_id`. La CLI omite la clave cuando el resultado no tenía enlaces y en notificaciones para tareas que no son llamadas de herramienta MCP.2077La clase de datos no tiene campo para `resource_links`. Léelo del dict `data` que el mensaje hereda de [`SystemMessage`](#systemmessage): `message.data.get("resource_links")`. Haz coincidir la notificación con la llamada usando `tool_use_id`. La CLI omite la clave cuando el resultado no tenía enlaces y en notificaciones para tareas que no son llamadas a herramientas MCP.

2077 2078 

2078<h2 id="content-block-types">2079<h2 id="content-block-types">

2079 Tipos de bloque de contenido2080 Tipos de bloque de contenido


2153 Tipos de error2154 Tipos de error

2154</h2>2155</h2>

2155 2156 

2156Los tipos a continuación definen lo que su código detecta. Para entradas vinculadas a los mensajes de error que estos tipos generan, con la causa y la solución para cada uno, consulte [Solución de problemas](/docs/es/agent-sdk/troubleshooting).2157Los tipos a continuación definen lo que tu código detecta. Para entradas vinculadas a los mensajes de error que estos tipos generan, con la causa y la solución para cada uno, consulta [Solución de problemas](/docs/es/agent-sdk/troubleshooting).

2157 2158 

2158<h3 id="claudesdkerror">2159<h3 id="claudesdkerror">

2159 `ClaudeSDKError`2160 `ClaudeSDKError`


2166 """Base error for Claude SDK."""2167 """Base error for Claude SDK."""

2167```2168```

2168 2169 

2169Cuando una consulta `query()` de un solo turno termina con un resultado de error, por ejemplo un error de límite de turnos, el SDK genera una [`ResultError`](#resulterror) después de ceder el mensaje de resultado final. Las versiones del SDK del Agente Python anteriores a 0.2.140 generaban una `Exception` simple que no era una subclase de `ClaudeSDKError`.2170Cuando una consulta `query()` de un solo turno termina con un resultado de error, por ejemplo un error de límite de turnos, el SDK genera una [`ResultError`](#resulterror).

2170 2171 

2171<h3 id="clinotfounderror">2172<h3 id="clinotfounderror">

2172 `CLINotFoundError`2173 `CLINotFoundError`


2216 `ResultError`2217 `ResultError`

2217</h3>2218</h3>

2218 2219 

2219Se genera después del [`ResultMessage`](#resultmessage) final cuando el proceso de Claude Code se cierra porque la ejecución terminó con un resultado de error, como un error de límite de turnos o un error de API. `ResultError` es una subclase de `ProcessError`, por lo que un controlador `except ProcessError` existente también lo detecta. Sus atributos llevan los campos de ese mensaje de resultado, por lo que puede ramificarse según por qué falló la ejecución sin analizar el texto del mensaje. Requiere Python Agent SDK 0.2.140 o posterior.2220Se genera cuando el proceso de Claude Code se cierra porque la ejecución terminó con un [mensaje de resultado](#resultmessage) de error, como un error de límite de turnos o un error de API. `ResultError` es una subclase de `ProcessError`, por lo que un controlador `except ProcessError` existente también lo detecta. Sus atributos llevan los campos de ese mensaje de resultado, por lo que puedes actuar según por qué falló la ejecución sin analizar el texto del mensaje. Requiere Python Agent SDK 0.2.140 o posterior.

2220 2221 

2221```python theme={null}2222```python theme={null}

2222class ResultError(ProcessError):2223class ResultError(ProcessError):


2229 data: dict[str, Any] # the raw result message payload2230 data: dict[str, Any] # the raw result message payload

2230```2231```

2231 2232 

2232Para distinguir los fallos, compruebe `terminal_reason` antes de `subtype`. Cuando la solicitud final falla, como en un error de API, Claude Code informa `subtype` `"success"` con la causa en `terminal_reason`, por ejemplo `"api_error"`; cuando un límite que establece termina la ejecución, como `max_turns` o `max_budget_usd`, informa un subtipo `error_*`.2233Para distinguir los fallos, comprueba `terminal_reason` antes de `subtype`. Cuando la solicitud final falla, como en un error de API, Claude Code informa `subtype` `"success"` con la causa en `terminal_reason`, por ejemplo `"api_error"`; cuando un límite que estableces termina la ejecución, como `max_turns` o `max_budget_usd`, informa un subtipo `error_*`.

2233 2234 

2234<h3 id="clijsondecodeerror">2235<h3 id="clijsondecodeerror">

2235 `CLIJSONDecodeError`2236 `CLIJSONDecodeError`


2370| `session_id` | `str` | Identificador de sesión actual |2371| `session_id` | `str` | Identificador de sesión actual |

2371| `transcript_path` | `str` | Ruta al archivo de transcripción de sesión |2372| `transcript_path` | `str` | Ruta al archivo de transcripción de sesión |

2372| `cwd` | `str` | Directorio de trabajo actual |2373| `cwd` | `str` | Directorio de trabajo actual |

2373| `permission_mode` | `str` (opcional) | Modo de permiso actual |2374| `permission_mode` | `str` (opcional) | Modo de permisos actual |

2374 2375 

2375<h3 id="pretoolusehookinput">2376<h3 id="pretoolusehookinput">

2376 `PreToolUseHookInput`2377 `PreToolUseHookInput`


2627```2628```

2628 2629 

2629<Note>2630<Note>

2630 Use `continue_` (con guion bajo) en código Python. Se convierte automáticamente a `continue` cuando se envía al CLI.2631 Usa `continue_` (con guion bajo) en código Python. Se convierte automáticamente a `continue` cuando se envía al CLI.

2631</Note>2632</Note>

2632 2633 

2633<h4 id="hookspecificoutput">2634<h4 id="hookspecificoutput">

2634 `HookSpecificOutput`2635 `HookSpecificOutput`

2635</h4>2636</h4>

2636 2637 

2637Una unión discriminada de tipos de salida específicos del evento `TypedDict`. El campo `hookEventName` determina qué campos son válidos. Para detalles completos sobre campos disponibles por evento de hook, ver [Control execution with hooks](/docs/es/agent-sdk/hooks#outputs).2638Una unión discriminada de tipos de salida específicos del evento `TypedDict`. El campo `hookEventName` determina qué campos son válidos. Para detalles completos sobre campos disponibles por evento de hook, ver [Controlar la ejecución con hooks](/docs/es/agent-sdk/hooks#outputs).

2638 2639 

2639```python theme={null}2640```python theme={null}

2640class PreToolUseHookSpecificOutput(TypedDict):2641class PreToolUseHookSpecificOutput(TypedDict):


2649 hookEventName: Literal["PostToolUse"]2650 hookEventName: Literal["PostToolUse"]

2650 additionalContext: NotRequired[str]2651 additionalContext: NotRequired[str]

2651 updatedToolOutput: NotRequired[Any]2652 updatedToolOutput: NotRequired[Any]

2652 updatedMCPToolOutput: NotRequired[Any] # Deprecated: use updatedToolOutput, which works for all tools2653 updatedMCPToolOutput: NotRequired[Any] # MCP tools only. Prefer updatedToolOutput, which works for all tools

2653 2654 

2654 2655 

2655class PostToolUseFailureHookSpecificOutput(TypedDict):2656class PostToolUseFailureHookSpecificOutput(TypedDict):


2701```2702```

2702 2703 

2703<Note>2704<Note>

2704 Use `async_` (con guion bajo) en código Python. Se convierte automáticamente a `async` cuando se envía al CLI.2705 Usa `async_` (con guion bajo) en código Python. Se convierte automáticamente a `async` cuando se envía al CLI.

2705</Note>2706</Note>

2706 2707 

2707<h3 id="hook-usage-example">2708<h3 id="hook-usage-example">

2708 Ejemplo de uso de hook2709 Ejemplo de uso de hook

2709</h3>2710</h3>

2710 2711 

2711Este ejemplo registra dos hooks: uno que bloquea comandos bash peligrosos como `rm -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.2712Este ejemplo registra dos hooks: uno que bloquea comandos Bash peligrosos como `rm -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.

2712 2713 

2713```python theme={null}2714```python theme={null}

2714import asyncio2715import asyncio


2767 Tipos de entrada/salida de herramienta2768 Tipos de entrada/salida de herramienta

2768</h2>2769</h2>

2769 2770 

2770Documentació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.2771Documentación de esquemas de entrada/salida para 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.

2771 2772 

2772Cada salida mostrada es el valor que usted lee desde [`UserMessage.tool_use_result`](#usermessage) para esa herramienta. Los nombres de clave aparecen exactamente como Claude Code los emite. Una clave anotada `| None` con un comentario "presente cuando" u "opcional" se omite cuando no aplica.2773Cada salida mostrada es el valor que lees desde [`UserMessage.tool_use_result`](#usermessage) para esa herramienta. Los nombres de clave aparecen exactamente como Claude Code los emite. Una clave anotada `| None` con un comentario "presente cuando" u "opcional" se omite cuando no aplica.

2773 2774 

2774<h3 id="agent">2775<h3 id="agent">

2775 Agent2776 Agent


2875 2876 

2876Devuelve el resultado del subagente. La salida se discrimina en el campo `status`: `"completed"` para tareas terminadas, `"async_launched"` para tareas en segundo plano, y `"remote_launched"` para tareas que Claude Code envió a una sesión en la nube, donde `sessionUrl` enlaza a esa sesión y `taskId` la identifica. Si Claude Code [mantuvo el worktree aislado del subagente](/docs/es/worktrees#isolate-subagents-with-worktrees), `worktreePath` en la variante `completed` es donde encontrarlo, y `worktreeBranch` es su rama cuando Claude Code creó el worktree con git.2877Devuelve el resultado del subagente. La salida se discrimina en el campo `status`: `"completed"` para tareas terminadas, `"async_launched"` para tareas en segundo plano, y `"remote_launched"` para tareas que Claude Code envió a una sesión en la nube, donde `sessionUrl` enlaza a esa sesión y `taskId` la identifica. Si Claude Code [mantuvo el worktree aislado del subagente](/docs/es/worktrees#isolate-subagents-with-worktrees), `worktreePath` en la variante `completed` es donde encontrarlo, y `worktreeBranch` es su rama cuando Claude Code creó el worktree con git.

2877 2878 

2878En la variante `completed`, `resolvedModel` nombra el modelo en el que comenzó el subagente, que puede diferir del `model` de entrada solicitado cuando [`availableModels`](/docs/es/model-config#restrict-model-selection) u otra anulación se aplica. Este campo requiere Claude Code v2.1.174 o posterior. En la variante `async_launched`, `resolvedModel` nombra el modelo en uso cuando el agente se movió al segundo plano, por lo que un cambio que ocurrió antes del envío a segundo plano se refleja allí. El campo `modelsUsed` en ambas variantes enumera los modelos utilizados en orden, con repeticiones consecutivas colapsadas; se establece solo cuando el modelo se cambió durante la ejecución. `modelsUsed` y el comportamiento de `resolvedModel` en el momento del envío a segundo plano requieren Claude Code v2.1.212 o posterior.2879En la variante `completed`, `resolvedModel` nombra el modelo en el que comenzó el subagente, que puede diferir del `model` de entrada solicitado cuando [`availableModels`](/docs/es/model-config#restrict-model-selection) u otra sobrescritura se aplica. Este campo requiere Claude Code v2.1.174 o posterior. En la variante `async_launched`, `resolvedModel` nombra el modelo en uso cuando el agente se movió al segundo plano, por lo que un cambio que ocurrió antes del envío a segundo plano se refleja allí. El campo `modelsUsed` en ambas variantes enumera los modelos utilizados en orden, con repeticiones consecutivas colapsadas; se establece solo cuando el modelo se cambió durante la ejecución. `modelsUsed` y el comportamiento de `resolvedModel` en el momento del envío a segundo plano requieren Claude Code v2.1.212 o posterior.

2879 2880 

2880Claude Code completa `usage` y `totalTokens` desde la solicitud final de API del subagente, no desde toda la ejecución. Cuando está presente, `thinking_tokens` bajo `output_tokens_details` en `usage` es el número de tokens de salida de esa solicitud que fueron tokens de pensamiento. La clave `output_tokens_details` requiere Python SDK v0.2.136 o posterior, que incluye Claude Code v2.1.228. La clave `fallback_credit` requiere Python SDK v0.2.162 o posterior, que incluye Claude Code v2.1.285.2881Claude Code completa `usage` y `totalTokens` desde la solicitud final de API del subagente, no desde toda la ejecución. Cuando está presente, `thinking_tokens` bajo `output_tokens_details` en `usage` es el número de tokens de salida de esa solicitud que fueron tokens de pensamiento. La clave `output_tokens_details` requiere Python SDK v0.2.136 o posterior, que incluye Claude Code v2.1.228. La clave `fallback_credit` requiere Python SDK v0.2.162 o posterior, que incluye Claude Code v2.1.285.

2881 2882 


2885 2886 

2886**Nombre de herramienta:** `AskUserQuestion`2887**Nombre de herramienta:** `AskUserQuestion`

2887 2888 

2888Hace preguntas aclaratorias al usuario durante la ejecución. Ver [Manejar aprobaciones e entrada del usuario](/docs/es/agent-sdk/user-input#handle-clarifying-questions) para detalles de uso.2889Hace preguntas aclaratorias al usuario durante la ejecución. Consulta [Manejar aprobaciones y entrada del usuario](/docs/es/agent-sdk/user-input#handle-clarifying-questions) para detalles de uso.

2889 2890 

2890**Entrada:**2891**Entrada:**

2891 2892 


2945 2946 

2946**Nombre de herramienta:** `Bash`2947**Nombre de herramienta:** `Bash`

2947 2948 

2948Para lo que establece el límite de primer plano, ver [Límites de tiempo de espera y salida](/docs/es/tools-reference#timeout-and-output-limits). Para el límite de tiempo en segundo plano, ver [Límite de tiempo para comandos en segundo plano](/docs/es/tools-reference#time-limit-for-background-commands).2949Para lo que establece el límite de primer plano, consulta [Límites de tiempo de espera y salida](/docs/es/tools-reference#timeout-and-output-limits). Para el límite de tiempo en segundo plano, consulta [Límite de tiempo para comandos en segundo plano](/docs/es/tools-reference#time-limit-for-background-commands).

2949 2950 

2950**Entrada:**2951**Entrada:**

2951 2952 


2976 2977 

2977**Nombre de herramienta:** `Monitor`2978**Nombre de herramienta:** `Monitor`

2978 2979 

2979Ejecuta 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`.2980Ejecuta una fuente en segundo plano 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. Proporciona exactamente uno de `command` o `ws`.

2980 2981 

2981Cuando 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](/docs/es/tools-reference#monitor-tool) para comportamiento y disponibilidad de proveedor.2982Cuando Monitor ejecuta un comando, sigue las mismas reglas de permisos que Bash; una vigilancia de WebSocket solicita aprobación por separado. La fuente `ws` requiere Claude Code v2.1.195 o posterior. Consulta la [referencia de la herramienta Monitor](/docs/es/tools-reference#monitor-tool) para comportamiento y disponibilidad de proveedor.

2982 2983 

2983**Entrada:**2984**Entrada:**

2984 2985 


3065}3066}

3066```3067```

3067 3068 

3068La salida toma una de las siguientes formas dependiendo de lo que Claude leyó. Verifique la clave `type` para distinguirlas.3069La salida toma una de las siguientes formas dependiendo de lo que Claude leyó. Verifica la clave `type` para distinguirlas.

3069 3070 

3070**Salida (tipo: `"text"`):**3071**Salida (tipo: `"text"`):**

3071 3072 


3386 3387 

3387 Este conjunto predeterminado se aplica en Claude Code v2.1.268 y posterior, que el TypeScript Agent SDK agrupa desde v0.3.268.3388 Este conjunto predeterminado se aplica en Claude Code v2.1.268 y posterior, que el TypeScript Agent SDK agrupa desde v0.3.268.

3388 3389 

3389 Ver [Disponibilidad de modelos](/docs/es/agent-sdk/todo-tracking#model-availability) para optar por participar.3390 Consulta [Disponibilidad de modelos](/docs/es/agent-sdk/todo-tracking#model-availability) para optar por participar.

3390</Note>3391</Note>

3391 3392 

3392**Entrada:**3393**Entrada:**


3544 TaskOutput3545 TaskOutput

3545</h3>3546</h3>

3546 3547 

3547Eliminado en Claude Code v2.1.277. Anteriormente recuperaba salida de una tarea en ejecución o completada, con `BashOutput` aceptado como alias; Claude lee el archivo de salida de una tarea en segundo plano con `Read` en su lugar.3548Eliminado en Claude Code v2.1.277. Anteriormente recuperaba la salida de una tarea en segundo plano en ejecución o completada, con `BashOutput` aceptado como alias; Claude lee el archivo de salida de una tarea en segundo plano con `Read` en su lugar.

3548 3549 

3549Una entrada `disallowed_tools` o una regla de denegación que aún nombre cualquiera de estos nombres se ignora sin una advertencia.3550Una entrada `disallowed_tools` o una regla de denegación que aún nombre cualquiera de estos nombres se ignora sin una advertencia.

3550 3551 

Details

60 60 

61Para usar salidas estructuradas, defina un [JSON Schema](https://json-schema.org/understanding-json-schema/about) que describa la forma de los datos que desea, luego páselo a `query()` a través de la opción `outputFormat` (TypeScript) u opción `output_format` (Python). Cuando el agente termina, el mensaje de resultado incluye un campo `structured_output` con datos validados que coinciden con su esquema.61Para usar salidas estructuradas, defina un [JSON Schema](https://json-schema.org/understanding-json-schema/about) que describa la forma de los datos que desea, luego páselo a `query()` a través de la opción `outputFormat` (TypeScript) u opción `output_format` (Python). Cuando el agente termina, el mensaje de resultado incluye un campo `structured_output` con datos validados que coinciden con su esquema.

62 62 

63El ejemplo a continuación le pide al agente que investigue Anthropic y devuelva el nombre de la empresa, año de fundación y sede como salida estructurada.63Antes de ejecutar los ejemplos de esta página, instala el Claude Agent SDK siguiendo el [inicio rápido](/docs/es/agent-sdk/quickstart#setup). El ejemplo a continuación le pide al agente que investigue Anthropic y devuelva el nombre de la empresa, el año de fundación y la sede como salida estructurada.

64 64 

65<CodeGroup>65<CodeGroup>

66 ```typescript TypeScript theme={null}66 ```typescript TypeScript theme={null}


390 Manejo de errores390 Manejo de errores

391</h2>391</h2>

392 392 

393La generación de salida estructurada puede fallar cuando el agente no puede producir JSON válido que coincida con su esquema. Esto típicamente sucede cuando el esquema es demasiado complejo para la tarea, la tarea en sí es ambigua, o el agente alcanza su límite de reintentos intentando corregir errores de validación. También puede suceder sin ninguna falla de validación: una [alternativa de modelo](/docs/es/model-config#automatic-model-fallback) puede retraer una salida ya completada a mitad de la transmisión, y si ningún reintento la reemplaza, la ejecución termina con el mismo error. Verifique la lista `errors` en el mensaje de resultado para distinguir las dos causas antes de depurar su esquema.393La generación de salida estructurada puede fallar cuando el agente no puede producir JSON válido que coincida con tu esquema. Esto típicamente sucede cuando el esquema es demasiado complejo para la tarea, la tarea en sí es ambigua, o el agente alcanza su límite de reintentos intentando corregir errores de validación. También puede suceder sin ninguna falla de validación: una [alternativa de modelo](/docs/es/model-config#automatic-model-fallback) puede retraer una salida ya completada a mitad de la transmisión, y si ningún reintento la reemplaza, la ejecución termina con el mismo error. Revisa la lista `errors` en el mensaje de resultado de error para distinguir las dos causas antes de depurar tu esquema.

394 394 

395Cuando ocurre un error, el mensaje de resultado tiene un `subtype` que indica qué salió mal:395Cuando ocurre un error, el mensaje de resultado tiene un `subtype` que indica qué salió mal:

396 396 

Details

181});181});

182 182 

183spare.claimed.catch((error: Error) => {183spare.claimed.catch((error: Error) => {

184 // A menos que el mensaje comience con "option_not_applied", el mensaje no se ejecutó:184 // A menos que el mensaje comience con "option_not_applied", el prompt no se ejecutó:

185 // inicie esta sesión con query() en su lugar185 // inicia esta sesión con query() en su lugar

186 console.error("Claim failed:", error.message);186 console.error("Claim failed:", error.message);

187});187});

188 188 

189for await (const message of claimedQuery) {189try {

190 for await (const message of claimedQuery) {

190 console.log(message);191 console.log(message);

192 }

193} catch (error) {

194 // Tras una reclamación rechazada, la consulta reclamada lanza una excepción una vez que ha emitido el resultado de error

195 console.error(`Session ended with an error: ${error}`);

191}196}

192```197```

193 198 


717| `accountInfo()` | Devuelve la información de la cuenta |722| `accountInfo()` | Devuelve la información de la cuenta |

718| `reconnectMcpServer(serverName)` | Vuelve a conectar un servidor MCP por nombre. Si el nombre también coincide con una entrada de un archivo de configuración como `.mcp.json` o `~/.claude.json`, Claude Code vuelve a conectar el servidor que configuraste mediante [`mcpServers`](#options) o `setMcpServers()`, no la entrada del archivo de configuración. Ese orden de resolución requiere Claude Code v2.1.257 o posterior |723| `reconnectMcpServer(serverName)` | Vuelve a conectar un servidor MCP por nombre. Si el nombre también coincide con una entrada de un archivo de configuración como `.mcp.json` o `~/.claude.json`, Claude Code vuelve a conectar el servidor que configuraste mediante [`mcpServers`](#options) o `setMcpServers()`, no la entrada del archivo de configuración. Ese orden de resolución requiere Claude Code v2.1.257 o posterior |

719| `toggleMcpServer(serverName, enabled)` | Habilita o deshabilita un servidor MCP por nombre, con la misma resolución de nombres que `reconnectMcpServer()`. Deshabilitar un servidor lo desconecta y elimina sus herramientas. Consulta [`toggleMcpServer()`](#togglemcpserver) para ver la versión de Claude Code que esto necesita para cada tipo de servidor |724| `toggleMcpServer(serverName, enabled)` | Habilita o deshabilita un servidor MCP por nombre, con la misma resolución de nombres que `reconnectMcpServer()`. Deshabilitar un servidor lo desconecta y elimina sus herramientas. Consulta [`toggleMcpServer()`](#togglemcpserver) para ver la versión de Claude Code que esto necesita para cada tipo de servidor |

720| `setMcpServers(servers)` | Reemplaza dinámicamente el conjunto de servidores MCP de esta sesión. Se resuelve con un [`McpSetServersResult`](#mcpsetserversresult) que indica qué servidores se agregaron y cuáles se eliminaron, además de los errores |725| `setMcpServers(servers)` | Reemplaza los servidores MCP que gestiona este método: los servidores agregados mediante él y los [servidores SDK en proceso](#createsdkmcpserver). Se resuelve con un [`McpSetServersResult`](#mcpsetserversresult) que indica qué servidores se agregaron y se eliminaron, y cualquier error; esa sección indica qué otros servidores permanecen conectados |

721| `readMcpResource(serverName, uri)` | *Alpha.* Lee un recurso `ui://` de MCP Apps de un servidor MCP conectado para que tu aplicación pueda renderizar el widget de una herramienta. Se resuelve con un [`SDKControlMcpReadResourceResponse`](#sdkcontrolmcpreadresourceresponse). Requiere TypeScript Agent SDK v0.3.280 o posterior |726| `readMcpResource(serverName, uri)` | *Alpha.* Lee un recurso `ui://` de MCP Apps de un servidor MCP conectado para que tu aplicación pueda renderizar el widget de una herramienta. Se resuelve con un [`SDKControlMcpReadResourceResponse`](#sdkcontrolmcpreadresourceresponse). Requiere TypeScript Agent SDK v0.3.280 o posterior |

722| `streamInput(stream)` | Envía en streaming mensajes de entrada a la consulta para conversaciones de varios turnos |727| `streamInput(stream)` | Envía en streaming mensajes de entrada a la consulta para conversaciones de varios turnos |

723| `stopTask(taskId)` | Detiene una tarea en segundo plano en ejecución por su ID |728| `stopTask(taskId)` | Detiene una tarea en segundo plano en ejecución por su ID |


844 849 

845`options.cwd` es obligatorio. Una reclamación también puede establecer `additionalDirectories`, `model`, `permissionMode`, `maxThinkingTokens`, una superposición de configuración de flags en `settings`, `appendSystemPrompt`, `title`, `agents` y tokens por sesión en `env`.850`options.cwd` es obligatorio. Una reclamación también puede establecer `additionalDirectories`, `model`, `permissionMode`, `maxThinkingTokens`, una superposición de configuración de flags en `settings`, `appendSystemPrompt`, `title`, `agents` y tokens por sesión en `env`.

846 851 

847Claude Code puede rechazar una reclamación, por ejemplo para una carpeta que no existe o una cuya configuración de proyecto establece `env`, `agent` o `model`. Cuando `claimed` se rechaza con un mensaje que empieza por `option_not_applied`, la sesión se está ejecutando sin el `model` o el `maxThinkingTokens` que pediste. Después de cualquier otro rechazo, tu prompt no se ha ejecutado, así que inicia la sesión con `query()` en su lugar.852Claude Code puede rechazar una reclamación, por ejemplo, para una carpeta que no existe o una cuya configuración de proyecto establece `env`, `agent` o `model`. Tras un rechazo, un prompt que `claim()` ya envió obtiene un resultado de error cuyo texto empieza por `not_claimed`, y la consulta devuelta lanza entonces una excepción. Envuelve el bucle de la consulta en un bloque try para continuar después de la excepción. Cuando `claimed` se rechaza con un mensaje que empieza por `option_not_applied`, la sesión se ejecuta sin el `model` o el `maxThinkingTokens` que solicitaste. Tras cualquier otro rechazo, tu prompt no se ha ejecutado, así que inicia la sesión con `query()` en su lugar.

848 853 

849<h3 id="sdkcontrolinitializeresponse">854<h3 id="sdkcontrolinitializeresponse">

850 `SDKControlInitializeResponse`855 `SDKControlInitializeResponse`


1337| `mcpServer` | `{ name: string; source: string }` | Para una herramienta `mcp__*`, el servidor MCP que la proporciona y de dónde proviene la definición de ese servidor, con los campos de [`McpServerProvenance`](#mcpserverprovenance). Ausente para otras herramientas. Requiere Agent SDK v0.3.274 o posterior |1342| `mcpServer` | `{ name: string; source: string }` | Para una herramienta `mcp__*`, el servidor MCP que la proporciona y de dónde proviene la definición de ese servidor, con los campos de [`McpServerProvenance`](#mcpserverprovenance). Ausente para otras herramientas. Requiere Agent SDK v0.3.274 o posterior |

1338| `decisionReason` | `string` | Explica por qué se activó esta solicitud de permiso |1343| `decisionReason` | `string` | Explica por qué se activó esta solicitud de permiso |

1339| `defaultToNo` | `boolean` | Cuando es `true`, una sola pulsación accidental no debe aprobar esta solicitud: abre tu solicitud en su opción de rechazo, no preselecciones la aprobación y no ofrezcas ningún atajo de aprobación de una sola tecla. Requiere Agent SDK v0.3.268 o posterior |1344| `defaultToNo` | `boolean` | Cuando es `true`, una sola pulsación accidental no debe aprobar esta solicitud: abre tu solicitud en su opción de rechazo, no preselecciones la aprobación y no ofrezcas ningún atajo de aprobación de una sola tecla. Requiere Agent SDK v0.3.268 o posterior |

1340| `suppressAlwaysAllowRule` | `boolean` | Cuando es `true`, no ofrezcas una opción persistente de permitir siempre para esta solicitud, porque la regla que escribiría concede más que la propia acción de la solicitud. Requiere Agent SDK v0.3.268 o posterior |1345| `suppressAlwaysAllowRule` | `boolean` | Cuando es `true`, no ofrezcas una opción persistente de permitir siempre para esta solicitud. Requiere Agent SDK v0.3.268 o posterior |

1341| `toolUseID` | `string` | Identificador único de esta llamada a herramienta específica dentro del mensaje del asistente |1346| `toolUseID` | `string` | Identificador único de esta llamada a herramienta específica dentro del mensaje del asistente |

1342| `agentID` | `string` | Si se ejecuta dentro de un subagente, el ID del subagente |1347| `agentID` | `string` | Si se ejecuta dentro de un subagente, el ID del subagente |

1343| `requestId` | `string` | El `request_id` del sobre `control_request`. Un `control_response` que tu aplicación envíe fuera del SDK, como un HTTP POST firmado, debe repetir este valor para que el proceso de Claude Code pueda asociar la respuesta con la solicitud |1348| `requestId` | `string` | El `request_id` del sobre `control_request`. Un `control_response` que tu aplicación envíe fuera del SDK, como un HTTP POST firmado, debe repetir este valor para que el proceso de Claude Code pueda asociar la respuesta con la solicitud |


3787};3792};

3788```3793```

3789 3794 

3790Reporta hallazgos de revisión de código como una lista estructurada para que Claude Code pueda renderizarlos en lugar de imprimirlos como texto. `level` es el nivel de esfuerzo en el que se ejecutó la revisión. Los hallazgos se ordenan de más grave a menos grave, con un máximo de 32 por llamada, y el array está vacío cuando ninguno sobrevivió. Requiere Claude Code v2.1.196 o posterior.3795Reporta hallazgos de revisión de código como una lista estructurada para que Claude Code pueda renderizarlos en lugar de imprimirlos como texto. Los hallazgos se ordenan de más grave a menos grave, con un máximo de 32 por llamada, y el array está vacío cuando ninguno sobrevivió. Requiere Claude Code v2.1.196 o posterior.

3796 

3797`level` es opcional y contiene el nivel de esfuerzo que Claude reporta para la revisión. Claude Code no lo compara con el nivel en el que se ejecutó la revisión, por lo que ambos pueden diferir.

3791 3798 

3792Cada hallazgo lleva estos campos:3799Cada hallazgo lleva estos campos:

3793 3800 


4837};4844};

4838```4845```

4839 4846 

4840Devuelve la cantidad de hallazgos informados, el nivel de esfuerzo con el que se ejecutó la revisión y los hallazgos devueltos para el cuerpo del resultado. Requiere Claude Code v2.1.196 o posterior. El campo devuelto `short_summary` requiere Claude Code v2.1.212 o posterior.4847Devuelve la cantidad de hallazgos informados, el valor de `level` que pasó Claude y los hallazgos devueltos para el cuerpo del resultado. Requiere Claude Code v2.1.196 o posterior. El campo devuelto `short_summary` requiere Claude Code v2.1.212 o posterior.

4841 4848 

4842<h3 id="artifact-2">4849<h3 id="artifact-2">

4843 Artifact4850 Artifact


5458 | { type: "disabled" }; // Sin pensamiento extendido5465 | { type: "disabled" }; // Sin pensamiento extendido

5459```5466```

5460 5467 

5461El campo opcional `display` 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 establece `"summarized"` para recibir contenido de pensamiento en bloques `thinking`. Claude Code no envía `display` a Amazon Bedrock ni a Agent Platform de Google Cloud, por lo que en esos proveedores Opus 4.7 y posterior devuelven bloques `thinking` vacíos incluso cuando estableces `display` en `"summarized"`.5468El campo opcional `display` 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 establece `"summarized"` para recibir contenido de pensamiento en bloques `thinking`. Claude Code omite `display` en las solicitudes a algunos proveedores, como Amazon Bedrock y Agent Platform de Google Cloud. En esos proveedores, Opus 4.7 y posterior devuelven bloques `thinking` vacíos incluso cuando estableces `display` en `"summarized"`.

5462 5469 

5463<h3 id="spawnedprocess">5470<h3 id="spawnedprocess">

5464 `SpawnedProcess`5471 `SpawnedProcess`


5529 5536 

5530Cuando llamas a `setMcpServers()`, Claude Code aplica estas reglas:5537Cuando llamas a `setMcpServers()`, Claude Code aplica estas reglas:

5531 5538 

5532* **Servidores que la llamada no nombra**: Claude Code mantiene en ejecución los servidores proporcionados por plugins. Requiere Agent SDK v0.3.210 o posterior.5539* **Servidores que la llamada no nombra**: fuera de una [sesión en la nube](/docs/es/claude-code-on-the-web), Claude Code desconecta los servidores que agregó una llamada anterior a `setMcpServers()` y los servidores SDK en proceso, y los enumera en `removed`. Los demás servidores siguen en ejecución y no se enumeran en `removed`, entre ellos los servidores stdio, HTTP y SSE de la opción [`mcpServers`](#options), los servidores de los archivos de configuración y los servidores proporcionados por plugins.

5533* **Servidores que la llamada nombra**: salvo los servidores integrados que la CLI inició al arrancar, Claude Code reemplaza un servidor en ejecución solo cuando su configuración difiere de la que pasaste.5540* **Servidores que la llamada nombra**: Claude Code reemplaza un servidor stdio, HTTP o SSE que agregó una llamada anterior a `setMcpServers()` solo cuando su configuración difiere de la que pasaste. Un servidor SDK en proceso ya registrado con ese nombre se queda como está, así que para cambiarlo, déjalo fuera de una llamada y agrégalo en la siguiente.

5534* **Servidores integrados que la CLI inició al arrancar**: si la llamada nombra uno, Claude Code descarta esa entrada y la reporta en `errors`.5541* **Servidores integrados que la CLI inició al arrancar**: si la llamada nombra uno, Claude Code descarta esa entrada y la reporta en `errors`.

5535 5542 

5536La promesa se resuelve después de que los servidores stdio, HTTP y SSE recién agregados se conecten o fallen, por lo que las herramientas de los servidores que se conectaron están disponibles en el siguiente turno.5543La promesa se resuelve después de que los servidores stdio, HTTP y SSE recién agregados se conecten o fallen, por lo que las herramientas de los servidores que se conectaron están disponibles en el siguiente turno.

agent-view.md +1 −0

Details

819| `claude rm <id> --discard-unpushed <commit>@<worktree-id>` | Eliminar una sesión cuya eliminación fue rechazada por commits no enviados, descartando el worktree junto con su rama y commits. Pasa el valor exacto que imprimió el rechazo; consulta [Qué elimina la eliminación de una sesión](#what-deleting-a-session-removes). Requiere v2.1.260 o posterior |819| `claude rm <id> --discard-unpushed <commit>@<worktree-id>` | Eliminar una sesión cuya eliminación fue rechazada por commits no enviados, descartando el worktree junto con su rama y commits. Pasa el valor exacto que imprimió el rechazo; consulta [Qué elimina la eliminación de una sesión](#what-deleting-a-session-removes). Requiere v2.1.260 o posterior |

820| `claude rm <id> --force-remove-worktree <worktree-id>` | Eliminar una sesión cuya eliminación fue rechazada porque git o el hook `WorktreeRemove` no pudieron eliminar su worktree, eliminando el directorio worktree de todas formas y dejando su rama en el repositorio. Pasa el valor exacto que imprimió el rechazo; consulta [Qué elimina la eliminación de una sesión](#what-deleting-a-session-removes). Requiere v2.1.268 o posterior |820| `claude rm <id> --force-remove-worktree <worktree-id>` | Eliminar una sesión cuya eliminación fue rechazada porque git o el hook `WorktreeRemove` no pudieron eliminar su worktree, eliminando el directorio worktree de todas formas y dejando su rama en el repositorio. Pasa el valor exacto que imprimió el rechazo; consulta [Qué elimina la eliminación de una sesión](#what-deleting-a-session-removes). Requiere v2.1.268 o posterior |

821| `claude daemon status` | Imprimir el estado del [supervisor](#the-supervisor-process), versión, directorio de socket y número de workers |821| `claude daemon status` | Imprimir el estado del [supervisor](#the-supervisor-process), versión, directorio de socket y número de workers |

822| `claude daemon logs` | Seguir el archivo de log del supervisor, [`~/.claude/daemon.log`](#where-state-is-stored), imprimiendo las líneas nuevas a medida que llegan hasta que presiones `Ctrl+C` |

822| `claude daemon stop --any` | Detener el proceso supervisor y las sesiones en segundo plano que aloja. Pasa `--keep-workers` para dejar las sesiones en segundo plano en ejecución de modo que el siguiente supervisor se reconecte a ellas. El siguiente `claude agents` o `claude --bg` inicia un nuevo supervisor |823| `claude daemon stop --any` | Detener el proceso supervisor y las sesiones en segundo plano que aloja. Pasa `--keep-workers` para dejar las sesiones en segundo plano en ejecución de modo que el siguiente supervisor se reconecte a ellas. El siguiente `claude agents` o `claude --bg` inicia un nuevo supervisor |

823 824 

824`claude attach` y `claude logs` pueden recibir parte del nombre de una sesión en ejecución en lugar del ID, como en `claude logs "auth refactor"`. Pasar un nombre requiere Claude Code v2.1.290 o posterior.825`claude attach` y `claude logs` pueden recibir parte del nombre de una sesión en ejecución en lugar del ID, como en `claude logs "auth refactor"`. Pasar un nombre requiere Claude Code v2.1.290 o posterior.

agents.md +1 −1

Details

20 20 

21Tres herramientas más apoyan este trabajo sin ser una forma de ejecutar agentes en sí mismos:21Tres herramientas más apoyan este trabajo sin ser una forma de ejecutar agentes en sí mismos:

22 22 

23* [Worktrees](/docs/es/worktrees) le dan a cada sesión un checkout de git separado, por lo que las sesiones paralelas nunca editan los mismos archivos. Úselos para sesiones que ejecuta usted mismo. Una sesión que envía desde la vista de agentes [se mueve a su propio worktree antes de editar archivos](/docs/es/agent-view#how-file-edits-are-isolated), y los subagentes que genera pueden obtener uno también.23* [Worktrees](/docs/es/worktrees) le dan a cada sesión un checkout de git separado, por lo que cada sesión paralela edita su propia copia de los archivos. Úsalos para sesiones que ejecutas tú mismo. Una sesión que envías desde la vista de agentes [se mueve a su propio worktree antes de editar archivos](/docs/es/agent-view#how-file-edits-are-isolated), y cada uno de los subagentes que generas también puede obtener uno.

24* [Mensajería entre sesiones](/docs/es/cross-session-messaging) permite que Claude enumere y envíe mensajes a sus otras sesiones de Claude Code en esta máquina, en otra máquina, o [en la nube](/docs/es/claude-code-on-the-web), por lo que las sesiones que ejecuta usted mismo pueden pasar hallazgos y estado entre sí.24* [Mensajería entre sesiones](/docs/es/cross-session-messaging) permite que Claude enumere y envíe mensajes a sus otras sesiones de Claude Code en esta máquina, en otra máquina, o [en la nube](/docs/es/claude-code-on-the-web), por lo que las sesiones que ejecuta usted mismo pueden pasar hallazgos y estado entre sí.

25* [`/batch`](/docs/es/commands) es una [skill](/docs/es/skills) que hace que Claude divida un cambio grande en 5 a 30 subagentes aislados en worktree. Es un uso empaquetado de subagentes y worktrees, no un estilo de coordinación separado.25* [`/batch`](/docs/es/commands) es una [skill](/docs/es/skills) que hace que Claude divida un cambio grande en 5 a 30 subagentes aislados en worktree. Es un uso empaquetado de subagentes y worktrees, no un estilo de coordinación separado.

26 26 

Details

681 681 

682Amazon Bedrock transmite respuestas `InvokeModelWithResponseStream` en un formato de evento binario event-stream con el encabezado `Content-Type: application/vnd.amazon.eventstream`. Una puerta de enlace o proxy entre Claude Code y Amazon Bedrock debe reenviar el cuerpo de la respuesta y sus encabezados, incluido `Content-Type`, tal como los envió Amazon Bedrock.682Amazon Bedrock transmite respuestas `InvokeModelWithResponseStream` en un formato de evento binario event-stream con el encabezado `Content-Type: application/vnd.amazon.eventstream`. Una puerta de enlace o proxy entre Claude Code y Amazon Bedrock debe reenviar el cuerpo de la respuesta y sus encabezados, incluido `Content-Type`, tal como los envió Amazon Bedrock.

683 683 

684Si la puerta de enlace reescribe `Content-Type` a otro valor, Claude Code rechaza la respuesta con un error que comienza con `Bedrock streaming response has content-type`, nombrando el valor que recibió. La reescritura común es `text/event-stream`, de una integración que reemite el stream como eventos enviados por el servidor.684Si el gateway reescribe `Content-Type` a otro valor, Claude Code rechaza la respuesta con un error que comienza con `Bedrock streaming response has content-type`, nombrando el valor que recibió. La reescritura común es `text/event-stream`, de una integración que reemite el stream como eventos enviados por el servidor. Para la variable `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` que nombra el mensaje de error, consulta [Bedrock streaming response has an unexpected content-type](/docs/es/errors#bedrock-streaming-response-has-an-unexpected-content-type).

685 685 

686Si la puerta de enlace elimina o deja en blanco el encabezado en su lugar, Claude Code asume que el cuerpo es el event stream de Amazon Bedrock y lo decodifica, por lo que un cuerpo que la puerta de enlace pasó sin modificar sigue transmitiendo.686Si la puerta de enlace elimina o deja en blanco el encabezado en su lugar, Claude Code asume que el cuerpo es el event stream de Amazon Bedrock y lo decodifica, por lo que un cuerpo que la puerta de enlace pasó sin modificar sigue transmitiendo.

687 687 

Details

12 Inicie sesión en Claude Code12 Inicie sesión en Claude Code

13</h2>13</h2>

14 14 

15Después de [instalar Claude Code](/docs/es/setup#install-claude-code), ejecute `claude` en su terminal. En el primer lanzamiento, Claude Code abre una ventana del navegador para que inicie sesión. Si ha establecido la variable de entorno `ANTHROPIC_API_KEY`, Claude Code omite el símbolo del sistema de inicio de sesión y le pide que apruebe la clave en su lugar.15Después de [instalar Claude Code](/docs/es/setup#install-claude-code), ejecuta `claude` en tu terminal. En el primer lanzamiento, Claude Code abre una ventana del navegador para que inicies sesión. Si estableciste la variable de entorno `ANTHROPIC_API_KEY` y apruebas la clave cuando Claude Code te pregunta si quieres usarla, Claude Code omite el prompt de inicio de sesión.

16 16 

17Si el navegador no se abre automáticamente, presione `c` para copiar la URL de inicio de sesión al portapapeles y luego péguelo en su navegador.17Si el navegador no se abre automáticamente, presione `c` para copiar la URL de inicio de sesión al portapapeles y luego péguelo en su navegador.

18 18 

Details

349}349}

350```350```

351 351 

352Obtenga comentarios de IA sobre sus reglas personalizadas `allow`, `soft_deny` y `hard_deny`:352Obtén comentarios de IA sobre tus entradas personalizadas `allow`, `soft_deny`, `hard_deny` y `environment`:

353 353 

354```bash theme={null}354```bash theme={null}

355claude auto-mode critique355claude auto-mode critique

chrome.md +1 −1

Details

343 343 

344| Error | Causa | Solución |344| Error | Causa | Solución |

345| - | - | - |345| - | - | - |

346| "La extensión del navegador no está conectada" | El host de mensajería nativa no puede alcanzar la extensión, o la lista de permitidos de IP de tu organización rechaza la conexión a `bridge.claudeusercontent.com` | Reinicia Chrome y Claude Code, luego ejecuta `/chrome` para reconectar. Si tu organización usa listas de permitidos de IP y el error persiste, consulta [Listas de permitidos de IP de la organización y salida de proxy](/docs/es/network-config#organization-ip-allowlists-and-proxy-egress) |346| "La extensión del navegador no está conectada" | El host de mensajería nativa no puede alcanzar la extensión, o la lista de permitidos de IP de tu organización rechaza la conexión a `bridge.claudeusercontent.com` | Comprueba que la extensión tenga la sesión iniciada en la misma cuenta de claude.ai que Claude Code, reinicia Chrome y Claude Code, luego ejecuta `/chrome` para reconectar. Si tu organización usa listas de permitidos de IP y el error persiste, consulta [Listas de permitidos de IP de la organización y salida de proxy](/docs/es/network-config#organization-ip-allowlists-and-proxy-egress) |

347| La extensión muestra "No detectada" en `/chrome` | La extensión de Chrome no está instalada o está deshabilitada | Instala o habilita la extensión en `chrome://extensions` |347| La extensión muestra "No detectada" en `/chrome` | La extensión de Chrome no está instalada o está deshabilitada | Instala o habilita la extensión en `chrome://extensions` |

348| "No hay pestaña disponible" | Claude intentó actuar antes de que una pestaña estuviera lista | Pídele a Claude que cree una nueva pestaña e intente de nuevo |348| "No hay pestaña disponible" | Claude intentó actuar antes de que una pestaña estuviera lista | Pídele a Claude que cree una nueva pestaña e intente de nuevo |

349| "El extremo receptor no existe" | El trabajador de servicio de la extensión se quedó inactivo | Ejecuta `/chrome` y selecciona "Reconectar extensión" |349| "El extremo receptor no existe" | El trabajador de servicio de la extensión se quedó inactivo | Ejecuta `/chrome` y selecciona "Reconectar extensión" |

Details

75| - | - |75| - | - |

76| Claude Code v2.1.195 o posterior | El subcomando `claude gateway` y el flujo de inicio de sesión de la puerta de enlace se envían en v2.1.195. Las compilaciones públicas anteriores no los incluyen. Tanto la máquina que ejecuta el servidor de la puerta de enlace como la máquina de cada desarrollador deben estar en v2.1.195 o posterior; ejecute `claude update` para obtener la versión más reciente. El [upstream de Claude Platform en AWS](/docs/es/claude-apps-gateway-config#claude-platform-on-aws) requiere Claude Code v2.1.198 o posterior en el servidor de la puerta de enlace. |76| Claude Code v2.1.195 o posterior | El subcomando `claude gateway` y el flujo de inicio de sesión de la puerta de enlace se envían en v2.1.195. Las compilaciones públicas anteriores no los incluyen. Tanto la máquina que ejecuta el servidor de la puerta de enlace como la máquina de cada desarrollador deben estar en v2.1.195 o posterior; ejecute `claude update` para obtener la versión más reciente. El [upstream de Claude Platform en AWS](/docs/es/claude-apps-gateway-config#claude-platform-on-aws) requiere Claude Code v2.1.198 o posterior en el servidor de la puerta de enlace. |

77| Proveedor de identidad OpenID Connect (OIDC) | Okta, Microsoft Entra ID, Google Workspace, Keycloak, o Dex, o cualquier otro IdP compatible con OIDC como PingFederate. La puerta de enlace ejecuta el descubrimiento OIDC estándar y el flujo de código de autorización en su contra. SAML y LDAP no son compatibles. |77| Proveedor de identidad OpenID Connect (OIDC) | Okta, Microsoft Entra ID, Google Workspace, Keycloak, o Dex, o cualquier otro IdP compatible con OIDC como PingFederate. La puerta de enlace ejecuta el descubrimiento OIDC estándar y el flujo de código de autorización en su contra. SAML y LDAP no son compatibles. |

78| PostgreSQL 14 o posterior | Respalda el flujo de inicio de sesión del dispositivo, donde la devolución de llamada del navegador escribe y la CLI de sondeo lee, además de contadores de límite de velocidad. Cualquier Postgres administrado funciona, incluido el nivel más pequeño. Sin límites de gasto configurados, la puerta de enlace almacena algunos KB de estado de autenticación de corta duración; con [límites de gasto](/docs/es/claude-apps-gateway-spend-limits), también contiene tablas duraderas de gasto, auditoría e identidad que deben respaldarse. Se recomienda TLS a través de `?sslmode=require`. |78| PostgreSQL 11 o posterior | Respalda el flujo de inicio de sesión del dispositivo y los contadores de rate limit. Funciona un servicio de PostgreSQL administrado, incluido el nivel más pequeño; consulta [qué bases de datos son compatibles](/docs/es/claude-apps-gateway-deploy#postgres). Con [límites de gasto](/docs/es/claude-apps-gateway-spend-limits), también contiene tablas duraderas de gasto, auditoría e identidad de las que se debe hacer copia de seguridad. Se recomienda TLS mediante `?sslmode=require`. PostgreSQL 11, 12 y 13 requieren Claude Code v2.1.290 o posterior en el servidor del gateway. El proyecto PostgreSQL ya no mantiene esas versiones, así que usa una más reciente siempre que puedas. |

79| Upstream de modelo | Credenciales de Amazon Bedrock, credenciales de Claude Platform en AWS, credenciales de Google Cloud, un recurso de Microsoft Foundry o una clave de API de Anthropic. Se admiten múltiples upstreams con conmutación por error. |79| Upstream de modelo | Credenciales de Amazon Bedrock, credenciales de Claude Platform en AWS, credenciales de Google Cloud, un recurso de Microsoft Foundry o una clave de API de Anthropic. Se admiten múltiples upstreams con conmutación por error. |

80| HTTPS | La puerta de enlace debe ser accesible a través de `https://` desde portátiles de desarrolladores y desde cualquier navegador utilizado para el inicio de sesión; la puerta de enlace sirve la página de verificación del dispositivo en el mismo oyente. Proporcione un certificado TLS a través de `listen.tls` o ejecute detrás de una entrada que termine TLS, y establezca `listen.public_url` en el origen externo en ambos casos. En `/login`, Claude Code acepta un origen `http://` simple solo cuando el host de la puerta de enlace es loopback: `localhost`, `127.0.0.1` o `::1`. |80| HTTPS | La puerta de enlace debe ser accesible a través de `https://` desde portátiles de desarrolladores y desde cualquier navegador utilizado para el inicio de sesión; la puerta de enlace sirve la página de verificación del dispositivo en el mismo oyente. Proporcione un certificado TLS a través de `listen.tls` o ejecute detrás de una entrada que termine TLS, y establezca `listen.public_url` en el origen externo en ambos casos. En `/login`, Claude Code acepta un origen `http://` simple solo cuando el host de la puerta de enlace es loopback: `localhost`, `127.0.0.1` o `::1`. |

81| Dirección de red privada | En `/login`, Claude Code requiere que el nombre de host o la dirección IP de la puerta de enlace se resuelvan solo a direcciones privadas: RFC 1918, link-local, CGNAT `100.64.0.0/10`, IPv6 ULA `fc00::/7` o loopback. Para una puerta de enlace que aloja, cualquier dirección pública fuera de un bloque que declare se rechaza; consulte el [modelo de amenaza](/docs/es/claude-apps-gateway-deploy#threat-model-summary) en la guía de implementación. Si las máquinas de desarrolladores enrutan HTTPS a través de un proxy corporativo, el inicio de sesión también requiere que el host del proxy se resuelva a direcciones privadas; si no es así, agregue el host de la puerta de enlace a `NO_PROXY` para que la CLI se conecte directamente. Si su red interna está numerada desde espacio IPv4 público que su organización posee, [declare esos bloques](#allow-a-gateway-on-public-address-space-you-own) para que `/login` acepte una puerta de enlace allí. |81| Dirección de red privada | En `/login`, Claude Code requiere que el nombre de host o la dirección IP de la puerta de enlace se resuelvan solo a direcciones privadas: RFC 1918, link-local, CGNAT `100.64.0.0/10`, IPv6 ULA `fc00::/7` o loopback. Para una puerta de enlace que aloja, cualquier dirección pública fuera de un bloque que declare se rechaza; consulte el [modelo de amenaza](/docs/es/claude-apps-gateway-deploy#threat-model-summary) en la guía de implementación. Si las máquinas de desarrolladores enrutan HTTPS a través de un proxy corporativo, el inicio de sesión también requiere que el host del proxy se resuelva a direcciones privadas; si no es así, agregue el host de la puerta de enlace a `NO_PROXY` para que la CLI se conecte directamente. Si su red interna está numerada desde espacio IPv4 público que su organización posee, [declare esos bloques](#allow-a-gateway-on-public-address-space-you-own) para que `/login` acepte una puerta de enlace allí. |


90 Decida primero el nombre de host de la puerta de enlace, porque el URI de redirección debe coincidir con él. Cree una nueva aplicación web OIDC y establezca el URI de redirección en `https://claude-gateway.<su-dominio>/oauth/callback`, donde el host es el mismo valor que establece como [`listen.public_url`](/docs/es/claude-apps-gateway-config#listen) en el paso 3. Anote el `client_id` y `client_secret`. Las instrucciones por IdP están en [Configuración del proveedor de identidad](/docs/es/claude-apps-gateway-deploy#identity-provider-setup).90 Decida primero el nombre de host de la puerta de enlace, porque el URI de redirección debe coincidir con él. Cree una nueva aplicación web OIDC y establezca el URI de redirección en `https://claude-gateway.<su-dominio>/oauth/callback`, donde el host es el mismo valor que establece como [`listen.public_url`](/docs/es/claude-apps-gateway-config#listen) en el paso 3. Anote el `client_id` y `client_secret`. Las instrucciones por IdP están en [Configuración del proveedor de identidad](/docs/es/claude-apps-gateway-deploy#identity-provider-setup).

91 </Step>91 </Step>

92 92 

93 <Step title="Aprovisionar una base de datos PostgreSQL">93 <Step title="Aprovisiona una base de datos PostgreSQL">

94 Cualquier Postgres 14 o posterior funciona, incluido el nivel administrado más pequeño. La puerta de enlace ejecuta sus propias migraciones de esquema al arrancar, por lo que el rol de la base de datos necesita derechos para crear y alterar tablas; consulte [`store`](/docs/es/claude-apps-gateway-config#store).94 Usa PostgreSQL 11 o posterior. El nivel administrado más pequeño es suficiente. El gateway ejecuta sus propias migraciones de esquema al arrancar, por lo que el rol de la base de datos necesita permisos para crear y modificar tablas; consulta [`store`](/docs/es/claude-apps-gateway-config#store).

95 </Step>95 </Step>

96 96 

97 <Step title="Escribir gateway.yaml">97 <Step title="Escribir gateway.yaml">

Details

158El gateway lee la clave y el certificado una sola vez al arrancar, así que un archivo modificado solo surte efecto tras un reinicio. Rota en este orden para que ninguna solicitud de token presente un certificado que el IdP no tenga:158El gateway lee la clave y el certificado una sola vez al arrancar, así que un archivo modificado solo surte efecto tras un reinicio. Rota en este orden para que ninguna solicitud de token presente un certificado que el IdP no tenga:

159 159 

1601. Sube el nuevo certificado al IdP junto al antiguo.1601. Sube el nuevo certificado al IdP junto al antiguo.

1612. Reemplaza los archivos de clave y certificado que carga `gateway.yaml` y luego reinicia el gateway.1612. Reemplaza los archivos de clave y certificado que carga `gateway.yaml` y luego reinicia el gateway. Si ejecutas varias réplicas, un [reinicio progresivo](/docs/es/claude-apps-gateway-deploy#upgrades) funciona, porque el IdP tiene ambos certificados hasta que eliminas el antiguo.

1623. Elimina el certificado antiguo del IdP.1623. Después de que todas las réplicas se hayan reiniciado, elimina el certificado antiguo del IdP.

163 163 

164<h4 id="idp-requests-through-a-forward-proxy">164<h4 id="idp-requests-through-a-forward-proxy">

165 Solicitudes al IdP a través de un proxy de reenvío165 Solicitudes al IdP a través de un proxy de reenvío


227 227 

228| Campo | Requerido | Descripción |228| Campo | Requerido | Descripción |

229| - | - | - |229| - | - | - |

230| `postgres_url` | Sí | URL `postgres://` o `postgresql://`. Requerido: el punto de encuentro de la concesión de dispositivos, donde escribe la devolución de llamada del navegador y lee la CLI que sondea, necesita estado compartido entre réplicas. El gateway ejecuta sus propias migraciones de esquema al arrancar y al actualizarse, por lo que el rol necesita permisos para crear y alterar tablas en el esquema de destino. Consulta [Actualizaciones](/docs/es/claude-apps-gateway-deploy#upgrades) y [Postgres](/docs/es/claude-apps-gateway-deploy#postgres). |230| `postgres_url` | Sí | URL `postgres://` o `postgresql://` con un solo host, no una lista separada por comas. El gateway ejecuta sus propias migraciones de esquema al arrancar y al actualizarse, por lo que el rol necesita permisos para crear y alterar tablas en el esquema de destino. Consulta [Actualizaciones](/docs/es/claude-apps-gateway-deploy#upgrades) y [Postgres](/docs/es/claude-apps-gateway-deploy#postgres). |

231| `username` | No | Sobrescribe el usuario en `postgres_url` |231| `username` | No | Sobrescribe el usuario en `postgres_url` |

232| `password` | No | Credencial de la base de datos. Establécela aquí en lugar de en `postgres_url` para que la credencial quede fuera de la URL. Acepta cualquier carácter y tiene precedencia sobre las credenciales de la URL. |232| `password` | No | Credencial de la base de datos. Establécela aquí en lugar de en `postgres_url` para que la credencial quede fuera de la URL. Acepta cualquier carácter y tiene precedencia sobre las credenciales de la URL. |

233| `max_connections` | No | Tamaño del pool de conexiones de Postgres por réplica. Por defecto `5`, que es conservador y adecuado para bases de datos compartidas. Con los [límites de gasto](#admin) habilitados, la ruta crítica realiza algunas operaciones por solicitud de inferencia, así que auméntalo para una base de datos dedicada bajo carga, y mantén réplicas × este valor por debajo del `max_connections` de la base de datos. |233| `max_connections` | No | Tamaño del pool de conexiones de Postgres por réplica. Por defecto `5`, que es conservador y adecuado para bases de datos compartidas. Con los [límites de gasto](#admin) habilitados, la ruta crítica realiza algunas operaciones por solicitud de inferencia, así que auméntalo para una base de datos dedicada bajo carga, y mantén réplicas × este valor por debajo del `max_connections` de la base de datos. |

Details

249 Postgres249 Postgres

250</h3>250</h3>

251 251 

252El gateway guarda su estado en una base de datos PostgreSQL:

253 

254* **Base de datos**: PostgreSQL propiamente dicho, autoalojado o administrado, en la [versión mínima](/docs/es/claude-apps-gateway#prerequisites) o posterior. No se admiten bases de datos que solo implementan el protocolo de Postgres, como las bases de datos SQL distribuidas.

255* **Dirección**: `store.postgres_url` acepta un solo host. Si la base de datos tiene varios nodos, usa la dirección que está delante de ellos, como el endpoint de tu servicio administrado, un balanceador de carga o una IP virtual. Configura un [período de gracia de disponibilidad](#readiness-grace-period) más largo de lo que tarda una conmutación por error.

256 

252La puerta de enlace contiene cinco tablas de datos más una tabla `_migrations`, todas creadas por sus migraciones de tiempo de arranque:257La puerta de enlace contiene cinco tablas de datos más una tabla `_migrations`, todas creadas por sus migraciones de tiempo de arranque:

253 258 

254| Tabla | Contenidos | Retención |259| Tabla | Contenidos | Retención |


396| CLI `/login`: `Could not resolve the configured HTTP proxy` | El nombre de host en `HTTPS_PROXY` o `HTTP_PROXY` no se resuelve desde la máquina del desarrollador, normalmente porque no está conectada a la red corporativa | Pide al desarrollador que se conecte a tu red o VPN y vuelva a intentarlo, o corrige la URL del proxy |401| CLI `/login`: `Could not resolve the configured HTTP proxy` | El nombre de host en `HTTPS_PROXY` o `HTTP_PROXY` no se resuelve desde la máquina del desarrollador, normalmente porque no está conectada a la red corporativa | Pide al desarrollador que se conecte a tu red o VPN y vuelva a intentarlo, o corrige la URL del proxy |

397| CLI `/login`: `Could not resolve gateway host <host>` | La máquina no puede resolver el nombre DNS interno del gateway, normalmente porque no está en la red corporativa | Pide al desarrollador que se conecte a tu red o VPN y luego reintente `/login` |402| CLI `/login`: `Could not resolve gateway host <host>` | La máquina no puede resolver el nombre DNS interno del gateway, normalmente porque no está en la red corporativa | Pide al desarrollador que se conecte a tu red o VPN y luego reintente `/login` |

398| El arranque sale con un error de validación de configuración que menciona `store.postgres_url` | No hay Postgres configurado; el gateway requiere Postgres | Establece `store.postgres_url`. Para desarrollo local, usa un contenedor desechable: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |403| El arranque sale con un error de validación de configuración que menciona `store.postgres_url` | No hay Postgres configurado; el gateway requiere Postgres | Establece `store.postgres_url`. Para desarrollo local, usa un contenedor desechable: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |

404| El arranque sale con: `store.postgres_url in <path> is not a URL the gateway can read`, o, antes de v2.1.290, un simple `Invalid URL` o `URI error` | No se puede analizar la URL, por ejemplo porque enumera más de un host o su contraseña tiene un `/`, `?`, `#` o `%` sin codificar | Indica [un solo host](#postgres) y mueve la contraseña a [`store.password`](/docs/es/claude-apps-gateway-config#store) |

399| El arranque sale con: `requires the native binary` | Se está ejecutando con Node en lugar del binario nativo | Instala Claude Code con uno de los [métodos de instalación independiente](/docs/es/setup) |405| El arranque sale con: `requires the native binary` | Se está ejecutando con Node en lugar del binario nativo | Instala Claude Code con uno de los [métodos de instalación independiente](/docs/es/setup) |

400| El arranque sale con un error de descubrimiento OIDC después de `config.load` | `oidc.issuer` no es accesible, o la cadena TLS no es de confianza | Verifica que el emisor sea accesible desde el pod y sirva `/.well-known/openid-configuration`. Establece `ca_cert_pem` para una PKI privada. Si el pod llega al IdP solo a través de un proxy de reenvío, establece [`oidc.use_proxy: true`](/docs/es/claude-apps-gateway-config#idp-requests-through-a-forward-proxy); en versiones anteriores a v2.1.227, dale al pod una ruta directa a cada uno de los endpoints del IdP en su lugar. Si el pod tampoco puede resolver el nombre de host del IdP, o el proxy rechaza `CONNECT` a una dirección IP, consulta [Salida solo por proxy](/docs/es/claude-apps-gateway-config#proxy-only-egress), que requiere v2.1.277 o posterior. |406| El arranque sale con un error de descubrimiento OIDC después de `config.load` | `oidc.issuer` no es accesible, o la cadena TLS no es de confianza | Verifica que el emisor sea accesible desde el pod y sirva `/.well-known/openid-configuration`. Establece `ca_cert_pem` para una PKI privada. Si el pod llega al IdP solo a través de un proxy de reenvío, establece [`oidc.use_proxy: true`](/docs/es/claude-apps-gateway-config#idp-requests-through-a-forward-proxy); en versiones anteriores a v2.1.227, dale al pod una ruta directa a cada uno de los endpoints del IdP en su lugar. Si el pod tampoco puede resolver el nombre de host del IdP, o el proxy rechaza `CONNECT` a una dirección IP, consulta [Salida solo por proxy](/docs/es/claude-apps-gateway-config#proxy-only-egress), que requiere v2.1.277 o posterior. |

401| El arranque sale con un error de permisos de Postgres | El rol de la base de datos no tiene derechos DDL sobre su esquema | Otorga al rol `CREATE` sobre el esquema del gateway para que pueda crear y modificar sus tablas al arrancar |407| El arranque sale con un error de permisos de Postgres | El rol de la base de datos no tiene derechos DDL sobre su esquema | Otorga al rol `CREATE` sobre el esquema del gateway para que pueda crear y modificar sus tablas al arrancar |

402| Registro: `could not connect to Postgres at boot, attempt 1 of 3` | La base de datos aún no era accesible cuando se inició el gateway, por ejemplo en una instancia en frío cuya red todavía se está levantando | Si el gateway luego termina de arrancar, no hace falta hacer nada. Cuando la base de datos no es accesible, el gateway intenta la conexión tres veces, con dos segundos de diferencia, antes de salir. Si sale con `could not connect to Postgres`, revisa `store.postgres_url` y la ruta de red hacia la base de datos. Si se agota el tiempo de espera de los intentos en lugar de ser rechazados, aumenta [`store.connect_timeout_seconds`](/docs/es/claude-apps-gateway-config#store) para darle más tiempo a cada uno. |408| Registro: `could not connect to Postgres at boot, attempt 1 of 3` | La base de datos aún no era accesible cuando se inició el gateway, por ejemplo en una instancia en frío cuya red todavía se está levantando | Si el gateway luego termina de arrancar, no hace falta hacer nada. Cuando la base de datos no es accesible, el gateway intenta la conexión tres veces, con dos segundos de diferencia, antes de salir. Si sale con `could not connect to Postgres`, revisa `store.postgres_url`, incluido que indique un solo host, y la ruta de red hacia la base de datos. Si se agota el tiempo de espera de los intentos en lugar de ser rechazados, aumenta [`store.connect_timeout_seconds`](/docs/es/claude-apps-gateway-config#store) para darle más tiempo a cada uno. |

403| `/oauth/callback` muestra "Sign-in could not be completed" | Dominio de correo electrónico rechazado, falló la validación del id\_token, o `email_verified` es explícitamente `false`, que el gateway siempre rechaza sin posibilidad de sobrescribirlo | Revisa `allowed_email_domains` y que el IdP devuelva un claim `email` verificado. Para `email_verified: false`, corrige la verificación del lado del IdP. Si tu IdP emite el correo electrónico con un nombre de claim diferente, establece `oidc.email_claim`. |409| `/oauth/callback` muestra "Sign-in could not be completed" | Dominio de correo electrónico rechazado, falló la validación del id\_token, o `email_verified` es explícitamente `false`, que el gateway siempre rechaza sin posibilidad de sobrescribirlo | Revisa `allowed_email_domains` y que el IdP devuelva un claim `email` verificado. Para `email_verified: false`, corrige la verificación del lado del IdP. Si tu IdP emite el correo electrónico con un nombre de claim diferente, establece `oidc.email_claim`. |

404| Registro: `token exchange failed request_id=<id>: id_token missing email claim` | El IdP no incluye `email` en el id\_token de forma predeterminada. Este rechazo solo se produce cuando `allowed_email_domains` está establecido; sin él, la falta de correo electrónico genera una sesión sin correo electrónico | Configura el IdP para que emita `email` en el id\_token. Okta: agrega `email` a los claims del token de ID de un servidor de autorización personalizado. Entra: agrega `email` como claim opcional en el registro de la aplicación. PingFederate: habilita una OpenID Connect Policy que emita `email`. Si el IdP sirve `email` desde el endpoint de userinfo pero no lo incluye en el id\_token, como el servidor de autorización de organización de Okta, establece `oidc.userinfo_fallback: true`. |410| Registro: `token exchange failed request_id=<id>: id_token missing email claim` | El IdP no incluye `email` en el id\_token de forma predeterminada. Este rechazo solo se produce cuando `allowed_email_domains` está establecido; sin él, la falta de correo electrónico genera una sesión sin correo electrónico | Configura el IdP para que emita `email` en el id\_token. Okta: agrega `email` a los claims del token de ID de un servidor de autorización personalizado. Entra: agrega `email` como claim opcional en el registro de la aplicación. PingFederate: habilita una OpenID Connect Policy que emita `email`. Si el IdP sirve `email` desde el endpoint de userinfo pero no lo incluye en el id\_token, como el servidor de autorización de organización de Okta, establece `oidc.userinfo_fallback: true`. |

405| Registro: `refresh failed request_id=<id>: invalid_token (…) (at userinfo_no_id_token, …)`, y los desarrolladores ven `Cloud gateway session expired` cada `session.ttl_hours` | El IdP aceptó el token de actualización pero no devolvió ningún id\_token con él, así que el gateway solicitó los claims del usuario al endpoint de userinfo del IdP. El IdP rechazó allí el token de acceso actualizado. El gateway responde `temporarily_unavailable`, por lo que Claude Code conserva el token de actualización pero no puede renovar la sesión. Las versiones del gateway anteriores a v2.1.260 registran la misma línea sin el detalle `(at …)`. | Establece [`oidc.scope_on_refresh: true`](/docs/es/claude-apps-gateway-config#oidc), disponible en el gateway v2.1.260 o posterior, para que la solicitud de actualización pida `openid` de nuevo. Algunos IdP, como Okta, devuelven un id\_token en la actualización solo cuando se solicita. En PingFederate, habilita **Return ID Token On Refresh Grant** en **Applications > OAuth > OpenID Connect Policy Management** en su lugar. La clave no cambia el comportamiento de PingFederate. Para otros IdP que sigan omitiéndolo, verifica si el endpoint de userinfo acepta tokens de acceso emitidos por una actualización. Como solución provisional, aumenta [`session.ttl_hours`](/docs/es/claude-apps-gateway-config#session). Consulta [Configuración del proveedor de identidad](#identity-provider-setup) para conocer la contrapartida en cuanto al desaprovisionamiento. |411| Registro: `refresh failed request_id=<id>: invalid_token (…) (at userinfo_no_id_token, …)`, y los desarrolladores ven `Cloud gateway session expired` cada `session.ttl_hours` | El IdP aceptó el token de actualización pero no devolvió ningún id\_token con él, así que el gateway solicitó los claims del usuario al endpoint de userinfo del IdP. El IdP rechazó allí el token de acceso actualizado. El gateway responde `temporarily_unavailable`, por lo que Claude Code conserva el token de actualización pero no puede renovar la sesión. Las versiones del gateway anteriores a v2.1.260 registran la misma línea sin el detalle `(at …)`. | Establece [`oidc.scope_on_refresh: true`](/docs/es/claude-apps-gateway-config#oidc), disponible en el gateway v2.1.260 o posterior, para que la solicitud de actualización pida `openid` de nuevo. Algunos IdP, como Okta, devuelven un id\_token en la actualización solo cuando se solicita. En PingFederate, habilita **Return ID Token On Refresh Grant** en **Applications > OAuth > OpenID Connect Policy Management** en su lugar. La clave no cambia el comportamiento de PingFederate. Para otros IdP que sigan omitiéndolo, verifica si el endpoint de userinfo acepta tokens de acceso emitidos por una actualización. Como solución provisional, aumenta [`session.ttl_hours`](/docs/es/claude-apps-gateway-config#session). Consulta [Configuración del proveedor de identidad](#identity-provider-setup) para conocer la contrapartida en cuanto al desaprovisionamiento. |

Details

168 La pista de EKS reutiliza ambos documentos de política en un rol de IRSA en lugar de los dos roles de ECS; consulte el paso de implementación.168 La pista de EKS reutiliza ambos documentos de política en un rol de IRSA en lugar de los dos roles de ECS; consulte el paso de implementación.

169 </Step>169 </Step>

170 170 

171 <Step title="Aprovisione Amazon RDS para PostgreSQL">171 <Step title="Aprovisiona Amazon RDS para PostgreSQL">

172 La instancia se ejecuta en las subredes privadas sin dirección pública y con cifrado de almacenamiento activado. La versión del motor se fija en Postgres 16, que satisface el piso compatible del gateway de PostgreSQL 14 y garantiza que la familia del grupo de parámetros a continuación coincida con la instancia.172 La instancia ejecuta Postgres 16 en las subredes privadas, sin dirección pública y con el cifrado de almacenamiento activado.

173 173 

174 Primero, cree el grupo de subredes que coloca la base de datos en las subredes privadas, y un grupo de parámetros con `rds.force_ssl=1` para que el servidor rechace las conexiones de texto sin formato. La versión del motor se fija una vez porque la familia del grupo de parámetros debe coincidir con la versión principal del motor que ejecuta la instancia:174 Primero, cree el grupo de subredes que coloca la base de datos en las subredes privadas, y un grupo de parámetros con `rds.force_ssl=1` para que el servidor rechace las conexiones de texto sin formato. La versión del motor se fija una vez porque la familia del grupo de parámetros debe coincidir con la versión principal del motor que ejecuta la instancia:

175 175 

Details

416* **Máquinas virtuales aisladas**: cada sesión se ejecuta en una VM aislada administrada por Anthropic. Las sesiones que su organización enruta a un [entorno autohospedado](/docs/es/self-hosted-environments) se ejecutan en su propia infraestructura en su lugar, donde el aislamiento es responsabilidad de su implementación416* **Máquinas virtuales aisladas**: cada sesión se ejecuta en una VM aislada administrada por Anthropic. Las sesiones que su organización enruta a un [entorno autohospedado](/docs/es/self-hosted-environments) se ejecutan en su propia infraestructura en su lugar, donde el aislamiento es responsabilidad de su implementación

417* <span id="default-allowed-domains" />**Controles de acceso a la red**: en entornos alojados por Anthropic, el acceso a la red se limita de forma predeterminada y puede deshabilitarse. Consulte [Acceso a la red](/docs/es/cloud-environments#network-access) para los niveles de acceso, los [dominios permitidos predeterminados](/docs/es/cloud-environments#default-allowed-domains) y el tráfico que no pasa por la lista de permitidos. En un entorno autohospedado, usted restringe la salida de la sesión en su propio límite de red. Cuando se ejecuta con acceso a la red deshabilitado, Claude Code aún puede comunicarse con la API de Anthropic, lo que puede permitir que los datos salgan de la VM.417* <span id="default-allowed-domains" />**Controles de acceso a la red**: en entornos alojados por Anthropic, el acceso a la red se limita de forma predeterminada y puede deshabilitarse. Consulte [Acceso a la red](/docs/es/cloud-environments#network-access) para los niveles de acceso, los [dominios permitidos predeterminados](/docs/es/cloud-environments#default-allowed-domains) y el tráfico que no pasa por la lista de permitidos. En un entorno autohospedado, usted restringe la salida de la sesión en su propio límite de red. Cuando se ejecuta con acceso a la red deshabilitado, Claude Code aún puede comunicarse con la API de Anthropic, lo que puede permitir que los datos salgan de la VM.

418* **Protección de credenciales**: en entornos alojados por Anthropic, las credenciales de git y las claves de firma permanecen fuera del sandbox, y un proxy se autentica en nombre de la sesión con credenciales de alcance. En un entorno autohospedado, su implementación proporciona credenciales de git; consulte [Configurar git](/docs/es/self-hosted-environments-deploy#configure-git)418* **Protección de credenciales**: en entornos alojados por Anthropic, las credenciales de git y las claves de firma permanecen fuera del sandbox, y un proxy se autentica en nombre de la sesión con credenciales de alcance. En un entorno autohospedado, su implementación proporciona credenciales de git; consulte [Configurar git](/docs/es/self-hosted-environments-deploy#configure-git)

419* **Credenciales de API**: en entornos alojados por Anthropic en planes Pro y Max, las claves que [agrega a un entorno en la nube](/docs/es/cloud-environments#add-api-credentials) permanecen fuera del sandbox de la misma manera, adjuntas a solicitudes coincidentes después de que salen de la sesión. Un entorno autohospedado no tiene credenciales de API, y los planes Team y Enterprise aún no las tienen419* **Secretos de red**: en entornos alojados por Anthropic en planes Pro y Max, las claves que [agregas a un entorno en la nube](/docs/es/cloud-environments#add-api-credentials) permanecen fuera del sandbox de la misma manera, adjuntas a solicitudes coincidentes después de que salen de la sesión. Un entorno autohospedado no tiene secretos de red, y los planes Team y Enterprise aún no los tienen

420* **Análisis seguro**: el código se analiza y modifica dentro del entorno aislado de la sesión antes de crear PRs420* **Análisis seguro**: el código se analiza y modifica dentro del entorno aislado de la sesión antes de crear PRs

421 421 

422<h2 id="troubleshooting">422<h2 id="troubleshooting">


442`claude --cloud` y `claude --teleport` requieren iniciar sesión con una cuenta de claude.ai. Si te autenticas con una clave de API, o tus detalles de cuenta almacenados están obsoletos, verás uno de estos:442`claude --cloud` y `claude --teleport` requieren iniciar sesión con una cuenta de claude.ai. Si te autenticas con una clave de API, o tus detalles de cuenta almacenados están obsoletos, verás uno de estos:

443 443 

444* `Unable to get organization UUID`444* `Unable to get organization UUID`

445* Un mensaje de que la autenticación con clave de API no es suficiente445* ``Cloud sessions need a claude.ai sign-in. Run `claude auth login` (or /login in a local session), then try again.``

446* `Error loading Claude Code sessions` en el selector de sesiones, cuando ejecutas `claude --teleport` sin un ID de sesión446* `Error loading Claude Code sessions` en el selector de sesiones, cuando ejecutas `claude --teleport` sin un ID de sesión

447 447 

448Ejecuta `/login` para iniciar sesión con tu cuenta de claude.ai, luego reintenta el comando. Si el error nombra tu proveedor en su lugar, consulta la [tabla de errores](#errors-when-sending-to-a-cloud-session): las sesiones en la nube no están disponibles a través de proveedores de terceros.448Ejecuta [`claude auth login`](/docs/es/cli-reference#cli-commands) en tu shell para iniciar sesión con tu cuenta de claude.ai, luego reintenta el comando. Dentro de una sesión en ejecución, `/login` hace lo mismo. Si el error nombra tu proveedor en su lugar, consulta la [tabla de errores](#errors-when-sending-to-a-cloud-session): las sesiones en la nube no están disponibles a través de proveedores de terceros.

449 

450De la v2.1.274 a la v2.1.289, el mensaje de inicio de sesión decía `Claude Code cloud sessions require authentication with a Claude.ai account. API key authentication is not sufficient. Please run /login to authenticate, or check your authentication status with /status.`

449 451 

450<h3 id="remote-control-session-expired-or-access-denied">452<h3 id="remote-control-session-expired-or-access-denied">

451 Sesión de Control Remoto expirada o acceso denegado453 Sesión de Control Remoto expirada o acceso denegado

Details

34 oneLiner: 'Project instructions Claude reads every session',34 oneLiner: 'Project instructions Claude reads every session',

35 when: 'Loaded into context at the start of every session',35 when: 'Loaded into context at the start of every session',

36 description: 'Project-specific instructions that shape how Claude works in this repository. Put your conventions, common commands, and architectural context here so Claude operates with the same assumptions your team does.',36 description: 'Project-specific instructions that shape how Claude works in this repository. Put your conventions, common commands, and architectural context here so Claude operates with the same assumptions your team does.',

37 tips: ['Target under 200 lines. Longer files still load in full but may reduce adherence', <>CLAUDE.md loads into every session. If something only matters for specific tasks, move it to a <A href="/docs/en/skills">skill</A> or a path-scoped <A href="/docs/en/memory#organize-rules-with-claude/rules/">rule</A> so it loads only when needed</>, 'List the commands you run most, like build, test, and format, so Claude knows them without you spelling them out each time', <>Run <C>/memory</C> to open and edit CLAUDE.md from within a session</>, <>Also works at <C>.claude/CLAUDE.md</C> if you prefer to keep the project root clean</>, <>If your repo already has an <C>AGENTS.md</C> for other coding agents, Claude Code <A href="/docs/en/memory#agents-md">can read that</A> on its own or alongside CLAUDE.md</>],37 tips: ['Target under 200 lines. Longer files still load in full but may reduce adherence', <>CLAUDE.md loads into every session. If something only matters for specific tasks, move it to a <A href="/docs/en/skills">skill</A> or a path-scoped <A href="/docs/en/memory#organize-rules-with-claude/rules/">rule</A> so it loads only when needed</>, 'List the commands you run most, like build, test, and format, so Claude knows them without you spelling them out each time', <>Run <C>/memory</C> to open and edit CLAUDE.md from within a session</>, <>Also works at <C>.claude/CLAUDE.md</C> if you prefer to keep the project root clean</>, <>If your repo already has an <C>AGENTS.md</C> for other coding agents, Claude Code <A href="/docs/en/memory#agents-md">can read that</A> in place of a <C>CLAUDE.md</C></>],

38 exampleIntro: 'This example is for a TypeScript and React project. It lists the build and test commands, the framework conventions Claude should follow, and project-specific rules like export style and file layout.',38 exampleIntro: 'This example is for a TypeScript and React project. It lists the build and test commands, the framework conventions Claude should follow, and project-specific rules like export style and file layout.',

39 example: `# Project conventions39 example: `# Project conventions

40 40 


164 icon: 'folder',164 icon: 'folder',

165 color: '#9B7BC4',165 color: '#9B7BC4',

166 oneLiner: 'Topic-scoped instructions, optionally gated by file paths',166 oneLiner: 'Topic-scoped instructions, optionally gated by file paths',

167 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,167 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when Claude reads, writes, or edits a matching file</>,

168 description: [<>Project instructions split into topic files that can load conditionally based on file paths. A rule without <C>paths:</C> frontmatter loads at session start like CLAUDE.md; a rule with <C>paths:</C> loads only when Claude reads, writes, or edits a matching file.</>, <>Like CLAUDE.md, rules are guidance Claude reads, not configuration Claude Code enforces. For guaranteed behavior use <A href="/docs/en/hooks">hooks</A> or <A href="/docs/en/permissions">permissions</A>.</>],168 description: [<>Project instructions split into topic files that can load conditionally based on file paths. A rule without <C>paths:</C> frontmatter loads at session start like CLAUDE.md; a rule with <C>paths:</C> loads only when Claude reads, writes, or edits a matching file.</>, <>Like CLAUDE.md, rules are guidance Claude reads, not configuration Claude Code enforces. For guaranteed behavior use <A href="/docs/en/hooks">hooks</A> or <A href="/docs/en/permissions">permissions</A>.</>],

169 tips: [<>Use <C>paths:</C> frontmatter with globs to scope rules to directories or file types</>, <>Subdirectories work: <C>.claude/rules/frontend/react.md</C> is discovered automatically</>, 'When CLAUDE.md approaches 200 lines, start splitting into rules'],169 tips: [<>Use <C>paths:</C> frontmatter with globs to scope rules to directories or file types</>, <>Subdirectories work: <C>.claude/rules/frontend/react.md</C> is discovered automatically</>, 'When CLAUDE.md approaches 200 lines, start splitting into rules'],

170 docsLink: '/en/memory#organize-rules-with-claude/rules/',170 docsLink: '/en/memory#organize-rules-with-claude/rules/',


176 color: '#9B7BC4',176 color: '#9B7BC4',

177 badge: 'committed',177 badge: 'committed',

178 oneLiner: 'Test conventions scoped to test files',178 oneLiner: 'Test conventions scoped to test files',

179 when: <>Loaded when Claude reads a file matching the <C>paths:</C> globs below</>,179 when: <>Loaded when Claude reads, writes, or edits a file matching the <C>paths:</C> globs below</>,

180 description: <>An example rule that only loads when Claude is working on test files. The <C>paths:</C> globs in the frontmatter define which files trigger it; here, anything ending in .test.ts or .test.tsx. For other files, this rule is not loaded into context.</>,180 description: <>An example rule that only loads when Claude is working on test files. The <C>paths:</C> globs in the frontmatter define which files trigger it; here, anything ending in .test.ts or .test.tsx. For other files, this rule is not loaded into context.</>,

181 example: `---181 example: `---

182paths:182paths:


197 color: '#9B7BC4',197 color: '#9B7BC4',

198 badge: 'committed',198 badge: 'committed',

199 oneLiner: 'API conventions scoped to backend code',199 oneLiner: 'API conventions scoped to backend code',

200 when: <>Loaded when Claude reads a file matching the <C>paths:</C> glob below</>,200 when: <>Loaded when Claude reads, writes, or edits a file matching the <C>paths:</C> glob below</>,

201 description: <>A second example showing a rule scoped to backend code. The <C>paths:</C> glob matches files under src/api/, so these conventions load only when Claude is editing API routes.</>,201 description: <>A second example showing a rule scoped to backend code. The <C>paths:</C> glob matches files under src/api/, so these conventions load only when Claude is working on API routes.</>,

202 example: `---202 example: `---

203paths:203paths:

204 - "src/api/**/*.ts"204 - "src/api/**/*.ts"


605 icon: 'folder',605 icon: 'folder',

606 color: '#9B7BC4',606 color: '#9B7BC4',

607 oneLiner: 'User-level rules that apply to every project',607 oneLiner: 'User-level rules that apply to every project',

608 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,608 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when Claude reads, writes, or edits a matching file</>,

609 description: 'Same as project .claude/rules/ but applies everywhere. Use this for conventions you want across all your work, like personal code style or commit message format.',609 description: 'Same as project .claude/rules/ but applies everywhere. Use this for conventions you want across all your work, like personal code style or commit message format.',

610 docsLink: '/en/memory#organize-rules-with-claude/rules/',610 docsLink: '/en/memory#organize-rules-with-claude/rules/',

611 children: []611 children: []


1434 1434 

1435En Windows, `~/.claude` se resuelve a `%USERPROFILE%\.claude`. Si establece [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars), cada ruta `~/.claude` en esta página vive bajo ese directorio en su lugar.1435En Windows, `~/.claude` se resuelve a `%USERPROFILE%\.claude`. Si establece [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars), cada ruta `~/.claude` en esta página vive bajo ese directorio en su lugar.

1436 1436 

1437La mayoría de los usuarios solo editan `CLAUDE.md` y `settings.json`. Si su repositorio ya tiene un `AGENTS.md` para otros agentes de codificación, Claude Code [puede leerlo](/docs/es/memory#agents-md) por su cuenta o junto con `CLAUDE.md`. El resto del directorio es opcional: agregue skills, rules o subagents según sea necesario.1437La mayoría de los usuarios solo editan `CLAUDE.md` y `settings.json`. Si tu repositorio ya tiene un `AGENTS.md` para otros agentes de codificación, Claude Code [puede leerlo](/docs/es/memory#agents-md) en lugar de un `CLAUDE.md`. El resto del directorio es opcional: agrega skills, reglas o subagentes según los necesites.

1438 1438 

1439<h2 id="explore-the-directory">1439<h2 id="explore-the-directory">

1440 Explorar el directorio1440 Explorar el directorio


1454| - | - | - |1454| - | - | - |

1455| `managed-settings.json` | Nivel del sistema, varía según el SO | Configuración impuesta por la empresa que no puede anular, excepto por [excepciones limitadas](/docs/es/settings#security-keys-where-the-stricter-value-applies). Consulte [dónde guardar el archivo](/docs/es/managed-settings#deploy-a-managed-settings-file) y [qué fuente administrada utiliza Claude Code](/docs/es/managed-settings#precedence-within-the-managed-tier). |1455| `managed-settings.json` | Nivel del sistema, varía según el SO | Configuración impuesta por la empresa que no puede anular, excepto por [excepciones limitadas](/docs/es/settings#security-keys-where-the-stricter-value-applies). Consulte [dónde guardar el archivo](/docs/es/managed-settings#deploy-a-managed-settings-file) y [qué fuente administrada utiliza Claude Code](/docs/es/managed-settings#precedence-within-the-managed-tier). |

1456| `CLAUDE.local.md` | Raíz del proyecto | Sus preferencias privadas para este proyecto, cargadas junto con CLAUDE.md. Créelo manualmente y agréguelo a `.gitignore`. |1456| `CLAUDE.local.md` | Raíz del proyecto | Sus preferencias privadas para este proyecto, cargadas junto con CLAUDE.md. Créelo manualmente y agréguelo a `.gitignore`. |

1457| `AGENTS.md` | Raíz del proyecto, `.claude/`, o cualquier directorio | Instrucciones del proyecto que usted escribe para agentes de codificación de IA. Claude Code puede [cargarlo](/docs/es/memory#agents-md) por su cuenta o junto con `CLAUDE.md`. |1457| `AGENTS.md` | Raíz del proyecto, `.claude/`, o cualquier directorio | Instrucciones del proyecto que escribes para agentes de codificación de IA. Claude Code puede [cargarlo](/docs/es/memory#agents-md) en lugar de un `CLAUDE.md`. |

1458| Plugins instalados | `~/.claude/plugins` | Marketplaces clonados, versiones de plugins instalados, el registro de instalación `installed_plugins.json` y datos por plugin, administrados por comandos `claude plugin`. Los plugins [sincronizados desde tu cuenta de claude.ai](/docs/es/plugins/loading#synced-plugins) se descargan en `~/.claude/plugins/synced/`. Para un plugin instalado desde un marketplace con fuente [`command`](/docs/es/plugins/marketplace-reference#command-plugin-source) en modo de enlace, Claude Code almacena enlaces aquí en lugar de una copia, y los archivos del plugin permanecen en el directorio que imprime el comando. Una fuente `command` requiere Claude Code v2.1.229 o posterior. Un plugin listado por ruta relativa en un marketplace que agregaste desde una ruta local también [se carga en su lugar](/docs/es/plugins/loading#find-plugins-on-disk) desde su directorio de origen en lugar de desde una copia en caché. Consulta [almacenamiento en caché de plugins](/docs/es/plugins/loading#find-plugins-on-disk) para saber cómo se limpian las versiones huérfanas. |1458| Plugins instalados | `~/.claude/plugins` | Marketplaces clonados, versiones de plugins instalados, el registro de instalación `installed_plugins.json` y datos por plugin, administrados por comandos `claude plugin`. Los plugins [sincronizados desde tu cuenta de claude.ai](/docs/es/plugins/loading#synced-plugins) se descargan en `~/.claude/plugins/synced/`. Para un plugin instalado desde un marketplace con fuente [`command`](/docs/es/plugins/marketplace-reference#command-plugin-source) en modo de enlace, Claude Code almacena enlaces aquí en lugar de una copia, y los archivos del plugin permanecen en el directorio que imprime el comando. Una fuente `command` requiere Claude Code v2.1.229 o posterior. Un plugin listado por ruta relativa en un marketplace que agregaste desde una ruta local también [se carga en su lugar](/docs/es/plugins/loading#find-plugins-on-disk) desde su directorio de origen en lugar de desde una copia en caché. Consulta [almacenamiento en caché de plugins](/docs/es/plugins/loading#find-plugins-on-disk) para saber cómo se limpian las versiones huérfanas. |

1459 1459 

1460`~/.claude` también contiene datos que Claude Code escribe mientras usted trabaja: transcripciones, historial de indicaciones, instantáneas de archivos, cachés y registros. Consulte [datos de la aplicación](#application-data) a continuación.1460`~/.claude` también contiene datos que Claude Code escribe mientras usted trabaja: transcripciones, historial de indicaciones, instantáneas de archivos, cachés y registros. Consulte [datos de la aplicación](#application-data) a continuación.

Details

60 * Los repositorios y archivos del proyecto, más sus [instrucciones y memoria](#give-a-project-standing-context)60 * Los repositorios y archivos del proyecto, más sus [instrucciones y memoria](#give-a-project-standing-context)

61 * El `CLAUDE.md` y skills en [cada uno de los repositorios del proyecto](#what-threads-pick-up-from-your-repositories), y en un proyecto con un repositorio, las reglas de permisos y hooks de ese repositorio también61 * El `CLAUDE.md` y skills en [cada uno de los repositorios del proyecto](#what-threads-pick-up-from-your-repositories), y en un proyecto con un repositorio, las reglas de permisos y hooks de ese repositorio también

62 * Los [conectores](#get-skills-plugins-connectors-and-tools-into-threads) en tu cuenta de claude.ai62 * Los [conectores](#get-skills-plugins-connectors-and-tools-into-threads) en tu cuenta de claude.ai

63 * Un [entorno en la nube](#choose-an-environment-for-threads) que establece su acceso a la red, variables de entorno, credenciales de API, y herramientas instaladas63 * Un [entorno en la nube](#choose-an-environment-for-threads) que establece su acceso a la red, variables de entorno, secretos de red y herramientas instaladas

64* **El panel Overview**: donde [ves todos los hilos a la vez](#see-what-needs-you-in-overview) y cuáles de ellos te necesitan. Sus otras pestañas son **Library** para los archivos que agregaste y los archivos que produjeron los hilos, **Pull requests** para los que abrieron los hilos, y **Routines** para el trabajo programado en el proyecto.64* **El panel Overview**: donde [ves todos los hilos a la vez](#see-what-needs-you-in-overview) y cuáles de ellos te necesitan. Sus otras pestañas son **Library** para los archivos que agregaste y los archivos que produjeron los hilos, **Pull requests** para los que abrieron los hilos, y **Routines** para el trabajo programado en el proyecto.

65 65 

66Los hilos en la nube no recogen nada de la configuración de Claude Code en tu propia máquina. [Obtener skills, plugins, conectores y herramientas en hilos](#get-skills-plugins-connectors-and-tools-into-threads) cubre cómo darles lo que de otro modo les faltaría.66Los hilos en la nube no recogen nada de la configuración de Claude Code en tu propia máquina. [Obtener skills, plugins, conectores y herramientas en hilos](#get-skills-plugins-connectors-and-tools-into-threads) cubre cómo darles lo que de otro modo les faltaría.


396 Elegir un entorno para los hilos396 Elegir un entorno para los hilos

397</h3>397</h3>

398 398 

399Cada nuevo hilo en la nube comienza en el [entorno en la nube](/docs/es/cloud-environments) del proyecto. El entorno establece a qué dominios pueden acceder los hilos, qué variables de entorno tienen, qué credenciales de API se agregan a sus solicitudes, y qué instala el script de configuración antes de que Claude comience. Los hilos en la nube usan un entorno predeterminado alojado por Anthropic hasta que elige uno en **Configuración del proyecto > Entorno**.399Cada nuevo hilo en la nube comienza en el [entorno en la nube](/docs/es/cloud-environments) del proyecto. El entorno establece a qué dominios pueden acceder los hilos, qué variables de entorno tienen, qué secretos de red se agregan a sus solicitudes y qué instala el script de configuración antes de que Claude comience. Los hilos en la nube usan un entorno predeterminado alojado por Anthropic hasta que eliges uno en **Configuración del proyecto > Entorno**.

400 400 

401Si los hilos en la nube necesitan acceder a una API interna o a un registro de paquetes privado, o necesitan un token que su máquina normalmente contiene, cambie el entorno en lugar del proyecto: vea [Acceso de red](/docs/es/cloud-environments#network-access), [Agregar credenciales de API](/docs/es/cloud-environments#add-api-credentials) y [Scripts de configuración](/docs/es/cloud-environments#setup-scripts).401Si los hilos en la nube necesitan acceder a una API interna o a un registro de paquetes privado, o necesitan un token que tu máquina normalmente tiene, cambia el entorno en lugar del proyecto: consulta [Acceso de red](/docs/es/cloud-environments#network-access), [Agregar secretos de red](/docs/es/cloud-environments#add-api-credentials) y [Scripts de configuración](/docs/es/cloud-environments#setup-scripts).

402 402 

403<h3 id="get-skills-plugins-connectors-and-tools-into-threads">403<h3 id="get-skills-plugins-connectors-and-tools-into-threads">

404 Obtener skills, plugins, conectores y herramientas en los hilos404 Obtener skills, plugins, conectores y herramientas en los hilos


590</h2>590</h2>

591 591 

592* [Usa Claude Code en la nube](/docs/es/claude-code-on-the-web): cómo funcionan las sesiones en la nube detrás de cada hilo, incluidas las opciones de acceso a GitHub y auto-fix en solicitudes de extracción592* [Usa Claude Code en la nube](/docs/es/claude-code-on-the-web): cómo funcionan las sesiones en la nube detrás de cada hilo, incluidas las opciones de acceso a GitHub y auto-fix en solicitudes de extracción

593* [Configura entornos en la nube](/docs/es/cloud-environments): cambia a qué pueden llegar los hilos en la red, dale variables de entorno y credenciales de API, e instala herramientas con un script de configuración593* [Configura entornos en la nube](/docs/es/cloud-environments): cambia a qué pueden llegar los hilos en la nube en la red, dales variables de entorno y secretos de red, e instala herramientas con un script de configuración

594* [Automatiza trabajo con rutinas](/docs/es/routines): horarios, disparadores, y administración para rutinas, incluidas las que Claude crea desde un proyecto594* [Automatiza trabajo con rutinas](/docs/es/routines): horarios, disparadores, y administración para rutinas, incluidas las que Claude crea desde un proyecto

595* [Administra múltiples agentes con vista de agente](/docs/es/agent-view): ejecuta y rastrea varias sesiones en tu propia máquina cuando el trabajo necesita herramientas o servicios que solo tu máquina puede alcanzar595* [Administra múltiples agentes con vista de agente](/docs/es/agent-view): ejecuta y rastrea varias sesiones en tu propia máquina cuando el trabajo necesita herramientas o servicios que solo tu máquina puede alcanzar

596* [Proyectos rediseñados: de carpeta a conversación](https://claude.com/blog/projects-redesigned): el anuncio de lanzamiento, con el pensamiento detrás de hacer que un proyecto sea una conversación con Claude596* [Proyectos rediseñados: de carpeta a conversación](https://claude.com/blog/projects-redesigned): el anuncio de lanzamiento, con el pensamiento detrás de hacer que un proyecto sea una conversación con Claude

Details

31| `claude attach <id\|name>` | Adjuntarse a una [sesión en segundo plano](/docs/es/agent-view#manage-sessions-from-the-shell) en esta terminal. Pasar parte del nombre de una sesión en ejecución en lugar del ID requiere Claude Code v2.1.290 o posterior | `claude attach 7c5dcf5d` |31| `claude attach <id\|name>` | Adjuntarse a una [sesión en segundo plano](/docs/es/agent-view#manage-sessions-from-the-shell) en esta terminal. Pasar parte del nombre de una sesión en ejecución en lugar del ID requiere Claude Code v2.1.290 o posterior | `claude attach 7c5dcf5d` |

32| `claude auto-mode defaults` | Imprimir las reglas integradas del clasificador del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) como JSON. Usa `claude auto-mode config` para ver tu configuración efectiva con los ajustes aplicados. `--label <prefix>` imprime solo las reglas cuya etiqueta comienza con ese prefijo, sin distinguir mayúsculas y minúsculas. Requiere Claude Code v2.1.208 o posterior | `claude auto-mode defaults --label 'Git Destructive'` |32| `claude auto-mode defaults` | Imprimir las reglas integradas del clasificador del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) como JSON. Usa `claude auto-mode config` para ver tu configuración efectiva con los ajustes aplicados. `--label <prefix>` imprime solo las reglas cuya etiqueta comienza con ese prefijo, sin distinguir mayúsculas y minúsculas. Requiere Claude Code v2.1.208 o posterior | `claude auto-mode defaults --label 'Git Destructive'` |

33| `claude auto-mode reset` | Restaurar la configuración predeterminada del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) eliminando la sección `autoMode` de tu archivo de configuración de usuario. Solicita confirmación antes de escribir; pasa `-y`/`--yes` para omitir la solicitud. Las reglas de la [configuración administrada](/docs/es/server-managed-settings) o del flag `--settings` siguen aplicándose. Requiere Claude Code v2.1.212 o posterior. Consulta [Inspeccionar los valores predeterminados y tu configuración efectiva](/docs/es/auto-mode-config#inspect-the-defaults-and-your-effective-config) | `claude auto-mode reset --yes` |33| `claude auto-mode reset` | Restaurar la configuración predeterminada del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) eliminando la sección `autoMode` de tu archivo de configuración de usuario. Solicita confirmación antes de escribir; pasa `-y`/`--yes` para omitir la solicitud. Las reglas de la [configuración administrada](/docs/es/server-managed-settings) o del flag `--settings` siguen aplicándose. Requiere Claude Code v2.1.212 o posterior. Consulta [Inspeccionar los valores predeterminados y tu configuración efectiva](/docs/es/auto-mode-config#inspect-the-defaults-and-your-effective-config) | `claude auto-mode reset --yes` |

34| `claude daemon logs` | Seguir el archivo de registro del [supervisor](/docs/es/agent-view#the-supervisor-process) de sesiones en segundo plano, `~/.claude/daemon.log`, imprimiendo las líneas nuevas a medida que llegan hasta que presiones `Ctrl+C` | `claude daemon logs` |

35| `claude daemon run` | Ejecutar el [supervisor](/docs/es/agent-view#the-supervisor-process) de sesiones en segundo plano en primer plano en esta terminal, imprimiendo su registro | `claude daemon run` |

34| `claude daemon status` | Imprimir el estado del [supervisor](/docs/es/agent-view#the-supervisor-process) de sesiones en segundo plano, su versión, directorio de socket y recuento de trabajadores para diagnósticos. Sale con 1 si el supervisor no se está ejecutando | `claude daemon status` |36| `claude daemon status` | Imprimir el estado del [supervisor](/docs/es/agent-view#the-supervisor-process) de sesiones en segundo plano, su versión, directorio de socket y recuento de trabajadores para diagnósticos. Sale con 1 si el supervisor no se está ejecutando | `claude daemon status` |

35| `claude daemon stop --any` | Detener el [supervisor](/docs/es/agent-view#the-supervisor-process) de sesiones en segundo plano y las sesiones que aloja. Pasa `--keep-workers` para dejar las sesiones en segundo plano en ejecución para que el próximo supervisor se reconecte a ellas. `--any` confirma la detención de un supervisor bajo demanda, que es el predeterminado. Usa esto para recuperarte de un [supervisor que no responde](/docs/es/agent-view#agent-view-says-the-background-service-did-not-respond) | `claude daemon stop --any --keep-workers` |37| `claude daemon stop --any` | Detener el [supervisor](/docs/es/agent-view#the-supervisor-process) de sesiones en segundo plano y las sesiones que aloja. Pasa `--keep-workers` para dejar las sesiones en segundo plano en ejecución para que el próximo supervisor se reconecte a ellas. `--any` confirma la detención de un supervisor bajo demanda, que es el predeterminado. Usa esto para recuperarte de un [supervisor que no responde](/docs/es/agent-view#agent-view-says-the-background-service-did-not-respond) | `claude daemon stop --any --keep-workers` |

36| `claude doctor` | Imprimir diagnósticos de solo lectura de instalación y configuración desde la terminal sin iniciar una sesión, incluida la salud de la instalación, los errores de validación de archivos de configuración y la idoneidad para Remote Control. Para la verificación de configuración dentro de la sesión que también puede aplicar correcciones, ejecuta [`/doctor`](/docs/es/commands#all-commands) | `claude doctor` |38| `claude doctor` | Imprimir diagnósticos de solo lectura de instalación y configuración desde la terminal sin iniciar una sesión, incluida la salud de la instalación, los errores de validación de archivos de configuración y la idoneidad para Remote Control. Para la verificación de configuración dentro de la sesión que también puede aplicar correcciones, ejecuta [`/doctor`](/docs/es/commands#all-commands) | `claude doctor` |

Details

10 Los entornos en la nube se aplican a [sesiones en la nube](/docs/es/claude-code-on-the-web), que están disponibles en planes Pro, Max y Team, y para usuarios de Enterprise con [asientos premium o asientos de Chat + Claude Code](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan).10 Los entornos en la nube se aplican a [sesiones en la nube](/docs/es/claude-code-on-the-web), que están disponibles en planes Pro, Max y Team, y para usuarios de Enterprise con [asientos premium o asientos de Chat + Claude Code](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan).

11</Note>11</Note>

12 12 

13Cada [sesión en la nube](/docs/es/claude-code-on-the-web) se ejecuta en un entorno en la nube. Puede configurar un entorno para permitir o denegar [acceso a la red](#access-levels), [establecer variables de entorno](#set-environment-variables) para la sesión, en planes Pro y Max almacenar [credenciales de API](#add-api-credentials) que las sesiones utilizan sin verlas, y ejecutar un [script de configuración](#setup-scripts) antes de que Claude comience a trabajar.13Cada [sesión en la nube](/docs/es/claude-code-on-the-web) se ejecuta en un entorno en la nube. Puedes configurar un entorno para permitir o denegar [acceso a la red](#access-levels), [establecer variables de entorno](#set-environment-variables) para la sesión, en planes Pro y Max almacenar [secretos de red](#add-api-credentials) que las sesiones utilizan sin verlos, y ejecutar un [script de configuración](#setup-scripts) antes de que Claude comience a trabajar.

14 14 

15Los mismos entornos se aplican dondequiera que inicie una sesión en la nube: la [aplicación de escritorio](/docs/es/desktop), la [aplicación móvil de Claude](/docs/es/mobile), su navegador en [claude.ai/code](https://claude.ai/code), la terminal con [`claude --cloud`](/docs/es/claude-code-on-the-web#from-terminal-to-cloud), [routines](/docs/es/routines) y [Claude Tag](https://claude.com/docs/claude-tag/overview). Cada una de estas superficies también puede enrutar a un [entorno autohospedado](/docs/es/self-hosted-environments). [Disponibilidad y limitaciones](/docs/es/self-hosted-environments#availability-and-limitations) cubre lo que Claude aún no puede usar cuando una sesión de Claude Tag se ejecuta en uno.15Los mismos entornos se aplican dondequiera que inicie una sesión en la nube: la [aplicación de escritorio](/docs/es/desktop), la [aplicación móvil de Claude](/docs/es/mobile), su navegador en [claude.ai/code](https://claude.ai/code), la terminal con [`claude --cloud`](/docs/es/claude-code-on-the-web#from-terminal-to-cloud), [routines](/docs/es/routines) y [Claude Tag](https://claude.com/docs/claude-tag/overview). Cada una de estas superficies también puede enrutar a un [entorno autohospedado](/docs/es/self-hosted-environments). [Disponibilidad y limitaciones](/docs/es/self-hosted-environments#availability-and-limitations) cubre lo que Claude aún no puede usar cuando una sesión de Claude Tag se ejecuta en uno.

16 16 


58 <Step title="Agregar o editar un entorno">58 <Step title="Agregar o editar un entorno">

59 Seleccione **Cloud** para enumerar sus entornos. Luego seleccione **Agregar entorno en la nube**, o pase el ratón sobre un entorno existente y seleccione el icono de configuración que aparece a la derecha.59 Seleccione **Cloud** para enumerar sus entornos. Luego seleccione **Agregar entorno en la nube**, o pase el ratón sobre un entorno existente y seleccione el icono de configuración que aparece a la derecha.

60 60 

61 El diálogo incluye el nombre, nivel de acceso a la red, variables de entorno y script de configuración. Cuando edita un entorno en la nube existente en un plan Pro o Max, el diálogo también incluye [credenciales de API](#add-api-credentials).61 El diálogo incluye el nombre, nivel de acceso a la red, variables de entorno y script de configuración. Cuando editas un entorno en la nube existente en un plan Pro o Max, el diálogo también incluye [secretos de red](#add-api-credentials).

62 62 

63 <Frame>63 <Frame>

64 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-dialog.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=30d4478b31d1f879f7ee287ddab32505" alt="El diálogo Nuevo entorno en la nube. Un campo Nombre con el texto de marcador de posición Default, un selector de Acceso a la red establecido en Trusted con enlaces a la política de red y niveles de acceso, un cuadro Variables de entorno que muestra texto de marcador de posición en formato .env con una nota de que los valores son visibles para cualquiera que use el entorno, un cuadro Script de configuración descrito como un script Bash que se ejecuta cuando comienza una nueva sesión antes de que se lance Claude Code, y botones Cancelar y Crear entorno." width="874" height="1372" data-path="images/cloud-environment-dialog.png" />64 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-dialog.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=30d4478b31d1f879f7ee287ddab32505" alt="El diálogo Nuevo entorno en la nube. Un campo Nombre con el texto de marcador de posición Default, un selector de Acceso a la red establecido en Trusted con enlaces a la política de red y niveles de acceso, un cuadro Variables de entorno que muestra texto de marcador de posición en formato .env con una nota de que los valores son visibles para cualquiera que use el entorno, un cuadro Script de configuración descrito como un script Bash que se ejecuta cuando comienza una nueva sesión antes de que se lance Claude Code, y botones Cancelar y Crear entorno." width="874" height="1372" data-path="images/cloud-environment-dialog.png" />


91 91 

92Una sesión en la nube también establece algunas variables por sí misma cuando inicia. Para [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/es/claude-code-on-the-web#manage-context), el valor que la sesión establece anula uno que agregue aquí, por lo que agregar esa clave aquí no tiene efecto.92Una sesión en la nube también establece algunas variables por sí misma cuando inicia. Para [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/es/claude-code-on-the-web#manage-context), el valor que la sesión establece anula uno que agregue aquí, por lo que agregar esa clave aquí no tiene efecto.

93 93 

94Cualquiera que use el entorno puede leer los valores. En planes Pro y Max, use una [credencial de API](#add-api-credentials) en su lugar para una clave que el proxy del agente pueda adjuntar a una solicitud. Las [solicitudes que nunca obtienen una credencial](#requests-that-never-get-the-credential) se enumeran allí.94Cualquiera que use el entorno puede leer los valores. En planes Pro y Max, usa en su lugar un [secreto de red](#add-api-credentials) para una clave que el proxy del agente pueda adjuntar a una solicitud. Las [solicitudes que nunca obtienen un secreto](#requests-that-never-get-the-credential) se enumeran allí.

95 95 

96<h3 id="add-api-credentials">96<h3 id="add-api-credentials">

97 Agregar credenciales de API97 Agregar secretos de red

98</h3>98</h3>

99 99 

100Una credencial de API es una clave de API o token que almacena en un entorno en la nube para que Claude pueda llamar a esa API desde cualquier sesión en el entorno sin ver la clave. El proxy del agente de Anthropic agrega la clave a las solicitudes de los hosts que enumera, después de que cada solicitud sale de la VM de la sesión. La clave nunca llega a Claude, los comandos que ejecuta, o las variables de entorno de la sesión.100Un secreto de red es una clave de API o token que almacenas en un entorno en la nube para que Claude pueda llamar a esa API desde cualquier sesión en el entorno sin ver la clave. El proxy del agente de Anthropic agrega la clave a las solicitudes de los hosts que enumeras, después de que cada solicitud sale de la VM de la sesión. La clave nunca llega a Claude, a los comandos que ejecuta ni a las variables de entorno de la sesión.

101 101 

102Las credenciales de API están disponibles en planes Pro y Max. No están disponibles en planes Team o Enterprise aún, por lo que la sección **Credenciales de API** no aparece en el diálogo de entorno en esos planes.102Los secretos de red están disponibles en planes Pro y Max. Aún no están disponibles en planes Team o Enterprise, por lo que la sección **Secretos de red** no aparece en el diálogo de entorno en esos planes.

103 103 

104<h4 id="requirements">104<h4 id="requirements">

105 Requisitos105 Requisitos

106</h4>106</h4>

107 107 

108Dos de estos deciden si puede agregar una credencial, y dos deciden si el proxy del agente puede usarla una vez agregada:108Dos de estos deciden si puedes agregar un secreto, y dos deciden si el proxy del agente puede usarlo una vez agregado:

109 109 

110* **Rol**: un rol de administrador de la organización en su organización claude.ai110* **Rol**: un rol de administrador de la organización en su organización claude.ai

111 * En Team y Enterprise, los Propietarios lo tienen y los Administradores no111 * En Team y Enterprise, los Propietarios lo tienen y los Administradores no

112 * En Pro y Max, lo tiene en su propia organización112 * En Pro y Max, lo tiene en su propia organización

113* **Tipo de entorno**: un entorno en la nube alojado por Anthropic que ya existe. Un [entorno autohospedado](/docs/es/self-hosted-environments) no tiene credenciales de API113* **Tipo de entorno**: un entorno en la nube alojado por Anthropic que ya existe. Un [entorno autohospedado](/docs/es/self-hosted-environments) no tiene secretos de red

114* **Accesibilidad de API**: la API acepta conexiones desde internet, porque las solicitudes salen de la red de Anthropic114* **Accesibilidad de API**: la API acepta conexiones desde internet, porque las solicitudes salen de la red de Anthropic

115* **Claves de cifrado**: si su organización utiliza claves de cifrado administradas por el cliente, no puede guardar credenciales115* **Claves de cifrado**: si tu organización utiliza claves de cifrado administradas por el cliente, no puedes guardar secretos de red

116 116 

117<h4 id="add-a-credential">117<h4 id="add-a-credential">

118 Agregar una credencial118 Agregar un secreto

119</h4>119</h4>

120 120 

121Agregas credenciales una a la vez, y no puedes editar una credencial después de agregarla. Para cambiar los hosts o el valor de una credencial, elimínala y agrégala de nuevo.121Agregas secretos uno a la vez, y no puedes editar un secreto después de agregarlo. Para cambiar los hosts o el valor de un secreto, elimínalo y agrégalo de nuevo.

122 122 

123<Steps>123<Steps>

124 <Step title="Abrir las credenciales de API del entorno">124 <Step title="Abrir los secretos de red del entorno">

125 [Abre el entorno para editar](#configure-your-environment) en [claude.ai/code](https://claude.ai/code). En el diálogo **Editar entorno**, busca la sección **Credenciales de API**. Ves las credenciales que ya están en el entorno, cada una con los hosts a los que se aplica.125 [Abre el entorno para editar](#configure-your-environment) en [claude.ai/code](https://claude.ai/code). En el diálogo **Editar entorno**, busca la sección **Secretos de red**. Ves los secretos que ya están en el entorno, cada uno con los hosts a los que se aplica.

126 </Step>126 </Step>

127 127 

128 <Step title="Agregar la credencial">128 <Step title="Agregar el secreto">

129 Selecciona **Agregar credencial** y completa el formulario. Mantén el **Tipo de credencial** predeterminado, **Bearer**, para una clave de API que viaja en un encabezado de solicitud, y completa estos campos:129 Selecciona **Agregar secreto** y completa el formulario. Mantén el **Tipo de credencial** predeterminado, **Bearer**, para una clave de API que viaja en un encabezado de solicitud, y completa estos campos:

130 130 

131 * **Nombre**: una etiqueta para la credencial, como `API de facturación interna`131 * **Nombre**: una etiqueta para el secreto, como `Internal billing API`

132 * **Sitios web permitidos**: los hosts de la API, como `api.example.com`. Un `*.` inicial coincide con cada subdominio132 * **Sitios web permitidos**: los hosts de la API, como `api.example.com`. Un `*.` inicial coincide con cada subdominio

133 * **Encabezados personalizados**: una fila para el encabezado que lleva la clave. La fila comienza con `Authorization` como el **Nombre** del encabezado y `Bearer` como su **Prefijo**; pegue la clave misma como el **Valor**. Para un encabezado como `X-Api-Key` que toma el valor desnudo, cambie el nombre y borre el prefijo133 * **Encabezados personalizados**: una fila para el encabezado que lleva la clave. La fila comienza con `Authorization` como el **Nombre** del encabezado y `Bearer` como su **Prefijo**; pega la clave misma como el **Valor**. Para un encabezado como `X-Api-Key` que toma el valor sin prefijo, cambia el nombre y borra el prefijo

134 134 

135 Para una API que se autentica de otra manera, elija un **Tipo de credencial** diferente. La lista es la misma que [Claude Tag](https://claude.com/docs/claude-tag/overview), la integración de Slack para planes Team y Enterprise, ofrece para [conexiones](https://claude.com/docs/claude-tag/admins/add-connections).135 Para una API que se autentica de otra manera, elige un **Tipo de credencial** diferente. La lista es la misma que [Claude Tag](https://claude.com/docs/claude-tag/overview), la integración de Slack para planes Team y Enterprise, ofrece para [conexiones](https://claude.com/docs/claude-tag/admins/add-connections).

136 </Step>136 </Step>

137 137 

138 <Step title="Guardar la credencial">138 <Step title="Guardar el secreto">

139 Seleccione **Conectar**. La credencial aparece en la lista con sus hosts, guardada sin el botón **Guardar cambios** del diálogo. No puede ver el valor nuevamente después de guardar.139 Selecciona **Conectar**. El secreto aparece en la lista con sus hosts, guardado sin el botón **Guardar cambios** del diálogo. No puedes ver el valor nuevamente después de guardar.

140 </Step>140 </Step>

141</Steps>141</Steps>

142 142 

143Para confirmar que la credencial funciona, inicie una sesión en el entorno y pida a Claude que llame a la API, por ejemplo con `curl`. La API responde como si la clave estuviera en la solicitud, y la clave no aparece en las variables de entorno de la sesión ni en ningún archivo. Si la lista marca una credencial **No enviada** en su lugar, la nota debajo dice por qué y qué hacer. Dos credenciales cuyos hosts se superponen sin coincidir exactamente no obtienen marcador, y el proxy del agente envía solo una de ellas.143Para confirmar que el secreto funciona, inicia una sesión en el entorno y pide a Claude que llame a la API, por ejemplo con `curl`. La API responde como si la clave estuviera en la solicitud, y la clave no aparece en las variables de entorno de la sesión ni en ningún archivo. Si en cambio la lista marca un secreto como **No enviado**, la nota debajo dice por qué y qué hacer. Dos secretos cuyos hosts se superponen sin coincidir exactamente no obtienen marcador, y el proxy del agente envía solo uno de ellos.

144 144 

145<h4 id="which-requests-get-the-credential">145<h4 id="which-requests-get-the-credential">

146 Qué solicitudes obtienen la credencial146 Qué solicitudes obtienen el secreto

147</h4>147</h4>

148 148 

149El proxy del agente adjunta una credencial a una solicitud cuando el host de la solicitud coincide con uno que enumera en esa credencial. Las sesiones pueden alcanzar esos hosts incluso cuando el [nivel de acceso a la red](#access-levels) del entorno no lo permitiría de otra manera, excepto los [hosts que nunca obtienen la credencial](#requests-that-never-get-the-credential). La credencial se aplica en cada sesión que se ejecuta en el entorno, quienquiera que la haya iniciado, hasta que la elimine.149El proxy del agente adjunta un secreto a una solicitud cuando el host de la solicitud coincide con uno que enumeraste en ese secreto. Las sesiones pueden alcanzar esos hosts incluso cuando el [nivel de acceso a la red](#access-levels) del entorno no lo permitiría de otra manera, excepto los [hosts que nunca obtienen el secreto](#requests-that-never-get-the-credential). El secreto se aplica en cada sesión que se ejecuta en el entorno, quienquiera que la haya iniciado, hasta que lo elimines.

150 150 

151<h4 id="requests-that-never-get-the-credential">151<h4 id="requests-that-never-get-the-credential">

152 Solicitudes que nunca obtienen la credencial152 Solicitudes que nunca obtienen el secreto

153</h4>153</h4>

154 154 

155El proxy del agente nunca adjunta una credencial que agregue a estas solicitudes:155El proxy del agente nunca adjunta un secreto que agregues a estas solicitudes:

156 156 

157* **GitHub**: el [proxy de GitHub](#github-proxy) autentica las solicitudes a GitHub en su lugar, por lo que no necesita una credencial de API para él157* **GitHub**: el [proxy de GitHub](#github-proxy) autentica en su lugar las solicitudes a GitHub, por lo que no necesitas un secreto de red para él

158* **La API de Anthropic y registros de paquetes públicos**: `api.anthropic.com`, `registry.npmjs.org`, `jsr.io`, `npm.jsr.io`, `pypi.org`, `files.pythonhosted.org`, `index.crates.io` y `proxy.golang.org`158* **La API de Anthropic y registros de paquetes públicos**: `api.anthropic.com`, `registry.npmjs.org`, `jsr.io`, `npm.jsr.io`, `pypi.org`, `files.pythonhosted.org`, `index.crates.io` y `proxy.golang.org`

159* **Solicitudes de script de configuración**: Claude Code se conecta al proxy del agente cuando se lanza, después de que el [script de configuración](#setup-scripts) ha ejecutado159* **Solicitudes de script de configuración**: Claude Code se conecta al proxy del agente cuando se lanza, después de que el [script de configuración](#setup-scripts) ha ejecutado

160* **Exportación de telemetría de Claude Code**: Claude Code envía su propia [exportación de telemetría](/docs/es/monitoring-usage#telemetry-from-cloud-sessions-and-claude-tag) en lugar de a través de un comando que ejecuta, y esa solicitud no pasa por el proxy del agente160* **Exportación de telemetría de Claude Code**: Claude Code envía su propia [exportación de telemetría](/docs/es/monitoring-usage#telemetry-from-cloud-sessions-and-claude-tag) en lugar de a través de un comando que ejecuta, y esa solicitud no pasa por el proxy del agente


179 179 

180* Las sesiones ya en ejecución en el entorno continúan funcionando.180* Las sesiones ya en ejecución en el entorno continúan funcionando.

181* El entorno desaparece del selector y de `/remote-env`, por lo que no puede elegirlo para nuevas sesiones.181* El entorno desaparece del selector y de `/remote-env`, por lo que no puede elegirlo para nuevas sesiones.

182* Las credenciales de API en el entorno permanecen adjuntas en sus sesiones en ejecución. Elimine las que ya no desee antes de archivar.182* Los secretos de red del entorno permanecen adjuntos en sus sesiones en ejecución. Elimina los que ya no desees antes de archivar.

183* Ninguna sesión nueva puede iniciarse en un entorno archivado, en ninguna superficie. Si el entorno era su [valor predeterminado de CLI](#select-an-environment-from-the-cli) guardado, Claude Code inicia sesiones en la nube de CLI en el entorno alojado por Anthropic cuando su lista tiene uno, y de lo contrario en el primer entorno en su lista que no sea un [entorno puente de Remote Control](#the-default-environment). Cualquier cosa configurada con el entorno explícitamente, como una [routine](/docs/es/routines#environments-and-network-access), no puede iniciar nuevas sesiones en él. Apúntela a otro entorno.183* Ninguna sesión nueva puede iniciarse en un entorno archivado, en ninguna superficie. Si el entorno era su [valor predeterminado de CLI](#select-an-environment-from-the-cli) guardado, Claude Code inicia sesiones en la nube de CLI en el entorno alojado por Anthropic cuando su lista tiene uno, y de lo contrario en el primer entorno en su lista que no sea un [entorno puente de Remote Control](#the-default-environment). Cualquier cosa configurada con el entorno explícitamente, como una [routine](/docs/es/routines#environments-and-network-access), no puede iniciar nuevas sesiones en él. Apúntela a otro entorno.

184 184 

185<h3 id="organization-shared-environments">185<h3 id="organization-shared-environments">


197 197 

198Los Propietarios eligen el [entorno predeterminado](#the-default-environment) de la organización por separado, en [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).198Los Propietarios eligen el [entorno predeterminado](#the-default-environment) de la organización por separado, en [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

199 199 

200Cada sesión de miembro en un entorno compartido lee sus variables, por lo que no incluya secretos en ellas. Las [credenciales de API](#add-api-credentials), que dan a las sesiones una clave que no pueden leer, aún no están disponibles en planes Team o Enterprise.200Las sesiones de cada miembro en un entorno compartido leen sus variables, por lo que no incluyas secretos en ellas. Los [secretos de red](#add-api-credentials), que dan a las sesiones una clave que no pueden leer, aún no están disponibles en planes Team o Enterprise.

201 201 

202<h3 id="set-the-environment-a-claude-tag-channel-uses">202<h3 id="set-the-environment-a-claude-tag-channel-uses">

203 Establecer el entorno que usa un canal de Claude Tag203 Establecer el entorno que usa un canal de Claude Tag


239 239 

240* GitHub, a través de su [proxy separado](#github-proxy)240* GitHub, a través de su [proxy separado](#github-proxy)

241* [Conectores MCP](#network-access) que habilita, cuyo tráfico viaja a través de los servidores de Anthropic241* [Conectores MCP](#network-access) que habilita, cuyo tráfico viaja a través de los servidores de Anthropic

242* Los hosts que enumera en las [credenciales de API](#add-api-credentials) del entorno, excepto los [hosts que nunca reciben la credencial](#requests-that-never-get-the-credential)242* Los hosts que indicaste en los [secretos de red](#add-api-credentials) del entorno, excepto los [hosts que nunca reciben el secreto](#requests-that-never-get-the-credential)

243* La API de Anthropic, para las propias solicitudes de Claude Code, incluso en **None**, como se señala bajo [Seguridad y aislamiento](/docs/es/claude-code-on-the-web#security-and-isolation)243* La API de Anthropic, para las propias solicitudes de Claude Code, incluso en **None**, como se señala bajo [Seguridad y aislamiento](/docs/es/claude-code-on-the-web#security-and-isolation)

244 244 

245<h3 id="allow-specific-domains">245<h3 id="allow-specific-domains">


254registry.example.com254registry.example.com

255```255```

256 256 

257Las sesiones en este entorno ahora pueden alcanzar `api.example.com`, cualquier subdominio de `internal.example.com` y `registry.example.com`, y ningún otro dominio a través de la red de la sesión. El [tráfico de GitHub](#github-proxy), el [tráfico del conector MCP](#network-access) y las solicitudes a los hosts de las [credenciales de API](#add-api-credentials) del entorno, excepto los [hosts que nunca reciben la credencial](#requests-that-never-get-the-credential), no pasan por esta lista permitida. Un `*.` inicial coincide con cada subdominio. Para mantener también los [dominios Trusted](#default-allowed-domains), marque **Also include default list of common package managers**; déjelo sin marcar para permitir solo lo que enumera.257Las sesiones en este entorno ahora pueden alcanzar `api.example.com`, cualquier subdominio de `internal.example.com` y `registry.example.com`, y ningún otro dominio a través de la red de la sesión. El [tráfico de GitHub](#github-proxy), el [tráfico de conectores MCP](#network-access) y las solicitudes a los hosts de los [secretos de red](#add-api-credentials) del entorno, excepto los [hosts que nunca reciben el secreto](#requests-that-never-get-the-credential), no pasan por esta lista de permitidos. Un `*.` inicial coincide con cada subdominio. Para mantener también los [dominios Trusted](#default-allowed-domains), marca **Also include default list of common package managers**; déjalo sin marcar para permitir solo lo que enumeras.

258 258 

259Si su organización utiliza [artefactos](/docs/es/artifacts#availability), no necesita `*.frame.claudeusercontent.com` en la lista para que las sesiones los lean. Cuando la lista deja ese host fuera, Claude Code lee el contenido del artefacto a través de la conexión de la sesión a Anthropic en su lugar. Mantenga el host en una lista permitida en dos situaciones:259Si su organización utiliza [artefactos](/docs/es/artifacts#availability), no necesita `*.frame.claudeusercontent.com` en la lista para que las sesiones los lean. Cuando la lista deja ese host fuera, Claude Code lee el contenido del artefacto a través de la conexión de la sesión a Anthropic en su lugar. Mantenga el host en una lista permitida en dos situaciones:

260 260 


292 Qué está disponible en sesiones en la nube292 Qué está disponible en sesiones en la nube

293</h2>293</h2>

294 294 

295En entornos alojados por Anthropic, cada sesión obtiene una máquina virtual (VM) nueva ejecutando Ubuntu 24.04 en x86\_64, independientemente de su propio sistema operativo y arquitectura de CPU, con su repositorio clonado y cadenas de herramientas comunes preinstaladas. Cuando una dependencia proporciona binarios precompilados, como gemas de Ruby con extensiones nativas o ruedas de Python precompiladas, use su compilación de Linux x86\_64 para coincidir con la VM. Esta sección cubre los valores predeterminados alojados por Anthropic, las herramientas integradas de GitHub, cómo [ejecutar pruebas y servicios](#run-tests-start-services-and-add-packages), los [límites de recursos](#resource-limits) que obtiene cada VM, y los [límites de tiempo](#time-limits) en trabajos de larga duración.295En entornos alojados por Anthropic, cada sesión obtiene una máquina virtual (VM) nueva que ejecuta Ubuntu 24.04 en x86\_64, independientemente de tu propio sistema operativo y arquitectura de CPU, con tu repositorio clonado y cadenas de herramientas comunes preinstaladas. Cuando una dependencia proporciona binarios precompilados, como gemas de Ruby con extensiones nativas o wheels de Python precompilados, usa su compilación de Linux x86\_64 para que coincida con la VM. Esta sección cubre los valores predeterminados alojados por Anthropic, las herramientas integradas de GitHub, cómo [ejecutar pruebas y servicios](#run-tests-start-services-and-add-packages), los [límites de recursos](#resource-limits) que obtiene cada VM y los [límites de tiempo](#time-limits) en trabajos de larga duración.

296 296 

297<Note>297<Note>

298 Las sesiones que su organización enruta a un [entorno autohospedado](/docs/es/self-hosted-environments) se ejecutan en sus propios ejecutores en su lugar, con las herramientas que proporciona su imagen de ejecutor.298 Las sesiones que tu organización enruta a un [entorno autohospedado](/docs/es/self-hosted-environments) se ejecutan en tus propios ejecutores en su lugar, con las herramientas que proporciona tu imagen de ejecutor.

299</Note>299</Note>

300 300 

301<h3 id="what-carries-over-from-your-setup">301<h3 id="what-carries-over-from-your-setup">

302 Qué se transfiere de su configuración302 Qué se transfiere de tu configuración

303</h3>303</h3>

304 304 

305Las sesiones en la nube comienzan desde un clon nuevo de su repositorio. Cualquier cosa que confirme en el repositorio está disponible. Cualquier cosa que haya instalado o configurado solo en su propia máquina no está disponible en la sesión. La política de su organización llega por separado a través de [configuración administrada por servidor](/docs/es/server-managed-settings).305Las sesiones en la nube comienzan desde un clon nuevo de tu repositorio. Todo lo que confirmes en el repositorio está disponible. Todo lo que hayas instalado o configurado solo en tu propia máquina no está disponible en la sesión. La política de tu organización llega por separado a través de la [configuración administrada por servidor](/docs/es/server-managed-settings).

306 306 

307| | Disponible en sesiones en la nube | Por qué |307| | Disponible en sesiones en la nube | Por qué |

308| :- | :- | :- |308| :- | :- | :- |

309| Su `CLAUDE.md` del repositorio | Sí | Parte del clon |309| El `CLAUDE.md` de tu repositorio | Sí | Parte del clon |

310| Sus hooks `.claude/settings.json` del repositorio y reglas de permisos | Sí, en una sesión con un repositorio | Parte del clon. Una sesión con varios repositorios, incluido un hilo de [proyecto](/docs/es/claude-projects#what-threads-pick-up-from-your-repositories), comienza por encima de los clones y no los lee |310| Los hooks y reglas de permisos de `.claude/settings.json` de tu repositorio | Sí, en una sesión con un repositorio | Parte del clon. Una sesión con varios repositorios, incluido un hilo de [proyecto](/docs/es/claude-projects#what-threads-pick-up-from-your-repositories), comienza por encima de los clones y no los lee |

311| Sus servidores MCP `.mcp.json` del repositorio | Sí, en una sesión con un repositorio | Parte del clon, encontrado desde el directorio de trabajo de la sesión |311| Los servidores MCP de `.mcp.json` de tu repositorio | Sí, en una sesión con un repositorio | Parte del clon, encontrado desde el directorio de trabajo de la sesión |

312| Su `.claude/rules/` del repositorio | Sí | Parte del clon |312| El `.claude/rules/` de tu repositorio | Sí | Parte del clon |

313| Su `.claude/skills/`, `.claude/agents/`, `.claude/commands/` del repositorio | Sí | Parte del clon |313| Los `.claude/skills/`, `.claude/agents/`, `.claude/commands/` de tu repositorio | Sí | Parte del clon |

314| Plugins y marketplaces declarados en el `.claude/settings.json` de su repositorio | No | Una sesión en la nube no instala los plugins que un repositorio activa bajo [`enabledPlugins`](/docs/es/settings-reference#enabledplugins), incluidos los de los marketplaces que enumera bajo [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces) |314| Plugins y marketplaces declarados en el `.claude/settings.json` de tu repositorio | No | Una sesión en la nube no instala los plugins que un repositorio activa bajo [`enabledPlugins`](/docs/es/settings-reference#enabledplugins), incluidos los de los marketplaces que enumera bajo [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces) |

315| La [configuración administrada por servidor](/docs/es/server-managed-settings) de su organización | Sí, excepto en sesiones de [Claude Tag](https://claude.com/docs/claude-tag/overview) | Obtenida de los servidores de Anthropic cuando comienza la sesión. Consulte [Cobertura de superficie](/docs/es/model-config#surface-coverage) para ver cómo se aplica `availableModels` en sesiones en la nube. La configuración implementada en su dispositivo a través de MDM o archivos de configuración administrada no se aplica, porque la sesión se ejecuta en una VM administrada por Anthropic; en un [entorno autohospedado](/docs/es/self-hosted-environments), las sesiones también leen el archivo de configuración administrada en la imagen del ejecutor, según [cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) |315| La [configuración administrada por servidor](/docs/es/server-managed-settings) de tu organización | Sí, excepto en sesiones de [Claude Tag](https://claude.com/docs/claude-tag/overview) | Se obtiene de los servidores de Anthropic cuando comienza la sesión. Consulta [Cobertura de superficie](/docs/es/model-config#surface-coverage) para ver cómo se aplica `availableModels` en sesiones en la nube. La configuración implementada en tu dispositivo a través de MDM o archivos de configuración administrada no se aplica, porque la sesión se ejecuta en una VM administrada por Anthropic; en un [entorno autohospedado](/docs/es/self-hosted-environments), las sesiones también leen el archivo de configuración administrada en la imagen del ejecutor, según [cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) |

316| Su `~/.claude/CLAUDE.md` de usuario | No | Vive en su máquina, no en el repositorio |316| Tu `~/.claude/CLAUDE.md` de usuario | No | Vive en tu máquina, no en el repositorio. Consulta [Agregar preferencias personales sin hacer commit en el repositorio](#add-personal-preferences-without-committing-to-the-repo) |

317| Su `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` de usuario | No | Viven en su máquina, no en el repositorio. Confirme los en el directorio `.claude/` del repositorio en su lugar. Las sesiones en la nube cargan automáticamente las skills que habilita en claude.ai |317| Tus `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` de usuario | No | Viven en tu máquina, no en el repositorio. Haz commit de ellos en el directorio `.claude/` del repositorio en su lugar. Las sesiones en la nube cargan automáticamente los skills que habilitas en claude.ai |

318| Plugins habilitados solo en su configuración de usuario | No | El `enabledPlugins` con alcance de usuario vive en `~/.claude/settings.json` en su máquina |318| Plugins habilitados solo en tu configuración de usuario | No | El `enabledPlugins` con alcance de usuario vive en `~/.claude/settings.json` en tu máquina |

319| Servidores MCP que agregó con `claude mcp add` en el alcance local predeterminado o el alcance de usuario | No | Esos escriben en `~/.claude.json` en su máquina, no en el repositorio. Agregue el servidor con `claude mcp add --scope project`, que escribe el [`.mcp.json`](/docs/es/mcp#project-scope) del repositorio, y confirme ese archivo. Una sesión con un repositorio lo carga |319| Servidores MCP que agregaste con `claude mcp add` en el alcance local predeterminado o el alcance de usuario | No | Esos escriben en `~/.claude.json` en tu máquina, no en el repositorio. Agrega el servidor con `claude mcp add --scope project`, que escribe el [`.mcp.json`](/docs/es/mcp#project-scope) del repositorio, y haz commit de ese archivo. Una sesión con un repositorio lo carga |

320| Variables de transporte en el bloque `env` de `.claude/settings.json` de su repositorio, como `NODE_EXTRA_CA_CERTS` y las [variables de certificado de cliente mTLS](/docs/es/network-config#mtls-authentication) | No | El entorno de alojamiento administra la conexión de API de la sesión, por lo que Claude Code ignora estas claves y anota cada clave ignorada en el registro de depuración de la sesión |320| Variables de transporte en el bloque `env` de `.claude/settings.json` de tu repositorio, como `NODE_EXTRA_CA_CERTS` y las [variables de certificado de cliente mTLS](/docs/es/network-config#mtls-authentication) | No | El entorno de alojamiento administra la conexión de API de la sesión, por lo que Claude Code ignora estas claves y anota cada clave ignorada en el registro de depuración de la sesión |

321| Claves de API y tokens para servicios que Claude llama | En planes Pro y Max, como [credenciales de API](#add-api-credentials) | Agrega la clave una vez en el entorno y el proxy del agente la adjunta a las solicitudes de los hosts que enumera. Una clave que el proxy del agente [no puede adjuntar](#requests-that-never-get-the-credential), o cualquier clave en un plan Team o Enterprise, permanece en una variable de entorno |321| Claves de API y tokens para servicios que Claude llama | En planes Pro y Max, como [secretos de red](#add-api-credentials) | Agregas la clave una vez en el entorno y el proxy del agente la adjunta a las solicitudes de los hosts que enumeras. Una clave que el proxy del agente [no puede adjuntar](#requests-that-never-get-the-credential), o cualquier clave en un plan Team o Enterprise, permanece en una variable de entorno |

322| Autenticación interactiva como AWS SSO | No | No compatible. SSO requiere inicio de sesión basado en navegador que no puede ejecutarse en una sesión en la nube |322| Autenticación interactiva como AWS SSO | No | No compatible. SSO requiere un inicio de sesión basado en navegador que no puede ejecutarse en una sesión en la nube |

323 323 

324Para que su propia configuración esté disponible en sesiones en la nube, confirme la en el repositorio.324Para que tu propia configuración esté disponible en sesiones en la nube, haz commit de ella en el repositorio.

325 325 

326Cualquiera que use el entorno puede leer sus variables de entorno y script de configuración. La nota del diálogo bajo **Variables de entorno** lo dice y advierte contra poner secretos allí. En planes Pro y Max, almacene una clave que el proxy del agente pueda adjuntar como una [credencial de API](#add-api-credentials) en su lugar.326Cualquiera que use el entorno puede leer sus variables de entorno y su script de configuración. La nota del diálogo en **Variables de entorno** lo indica y advierte que no pongas secretos allí. En planes Pro y Max, almacena una clave que el proxy del agente pueda adjuntar como un [secreto de red](#add-api-credentials) en su lugar.

327 

328<h4 id="add-personal-preferences-without-committing-to-the-repo">

329 Agregar preferencias personales sin hacer commit en el repositorio

330</h4>

331 

332En un entorno alojado por Anthropic, agrega un [script de configuración](#setup-scripts) que escriba `~/.claude/CLAUDE.md` para las preferencias que prefieras no poner en un repositorio compartido. Claude Code carga ese archivo como [instrucciones de usuario](/docs/es/memory#choose-where-to-put-claude-md-files) en la sesión. Este ejemplo establece una preferencia de mensajes de commit:

333 

334```bash theme={null}

335#!/bin/bash

336mkdir -p ~/.claude

337cat > ~/.claude/CLAUDE.md <<'EOF'

338Use conventional commit messages.

339EOF

340```

341 

342Pon el script en uno de tus propios entornos en lugar de en uno [compartido](#organization-shared-environments).

343 

344Ejecuta `/context` en tu próxima sesión en la nube y confirma que `/root/.claude/CLAUDE.md` aparece en **Memory files**.

327 345 

328<h3 id="installed-tools">346<h3 id="installed-tools">

329 Herramientas instaladas347 Herramientas instaladas


345| **Bases de datos** | PostgreSQL 16, Redis 7.0 |363| **Bases de datos** | PostgreSQL 16, Redis 7.0 |

346| **Utilidades** | git, gh, jq, yq, ripgrep, tmux, vim, nano |364| **Utilidades** | git, gh, jq, yq, ripgrep, tmux, vim, nano |

347 365 

348¹ Bun está instalado pero tiene [problemas de compatibilidad](#install-dependencies-with-a-sessionstart-hook) conocidos con proxy para obtención de paquetes.366¹ Bun está instalado pero tiene [problemas de compatibilidad con el proxy](#install-dependencies-with-a-sessionstart-hook) conocidos para la obtención de paquetes.

349 367 

350Para obtener las versiones de la mayoría de las herramientas en esta tabla, pida a Claude que ejecute `check-tools` en una sesión en la nube. Es un comando de shell instalado en la VM de la sesión, no un comando que escriba con `/`; pide a Claude porque [Claude ejecuta todos los comandos de VM para usted](#run-tests-start-services-and-add-packages). Para una herramienta que no reporta, como Ruby, PHP, bun, PostgreSQL o Redis, pida a Claude que ejecute el comando de versión propia de la herramienta, por ejemplo `psql --version`.368Para obtener las versiones de la mayoría de las herramientas de esta tabla, pide a Claude que ejecute `check-tools` en una sesión en la nube. Es un comando de shell instalado en la VM de la sesión, no un comando que escribas con `/`; se lo pides a Claude porque [Claude ejecuta todos los comandos de la VM por ti](#run-tests-start-services-and-add-packages). Para una herramienta que no reporta, como Ruby, PHP, bun, PostgreSQL o Redis, pide a Claude que ejecute el comando de versión propio de la herramienta, por ejemplo `psql --version`.

351 369 

352Las versiones de Node.js se instalan en `/opt/node20`, `/opt/node21` y `/opt/node22`, con 22 en `PATH` de forma predeterminada. Para trabajar con una versión diferente, pida a Claude que anteponga el directorio `bin` de esa versión, como `/opt/node20/bin`, a `PATH`.370Las versiones de Node.js se instalan en `/opt/node20`, `/opt/node21` y `/opt/node22`, con 22 en `PATH` de forma predeterminada. Para trabajar con una versión diferente, pide a Claude que anteponga el directorio `bin` de esa versión, como `/opt/node20/bin`, a `PATH`.

353 371 

354Las cadenas de herramientas fuera de esta lista, como el SDK de .NET, no están preinstaladas incluso cuando sus registros de paquetes están en la [lista permitida predeterminada](#default-allowed-domains). Instálelas con un [script de configuración](#setup-scripts).372Las cadenas de herramientas fuera de esta lista, como el SDK de .NET, no están preinstaladas incluso cuando sus registros de paquetes están en la [lista de dominios permitidos predeterminada](#default-allowed-domains). Instálalas con un [script de configuración](#setup-scripts).

355 373 

356<h3 id="work-with-github-issues-and-pull-requests">374<h3 id="work-with-github-issues-and-pull-requests">

357 Trabajar con problemas y solicitudes de extracción de GitHub375 Trabajar con issues y pull requests de GitHub

358</h3>376</h3>

359 377 

360Las sesiones en la nube incluyen herramientas integradas de GitHub que permiten a Claude leer problemas, enumerar solicitudes de extracción, obtener diffs y publicar comentarios sin ninguna configuración. Estas herramientas se autentican a través del [proxy de GitHub](#github-proxy) utilizando cualquier método que configuró bajo [Opciones de autenticación de GitHub](/docs/es/claude-code-on-the-web#github-authentication-options), por lo que su token nunca entra en el contenedor.378Las sesiones en la nube incluyen herramientas integradas de GitHub que permiten a Claude leer issues, enumerar pull requests, obtener diffs y publicar comentarios sin ninguna configuración. Estas herramientas se autentican a través del [proxy de GitHub](#github-proxy) utilizando el método que configuraste en [Opciones de autenticación de GitHub](/docs/es/claude-code-on-the-web#github-authentication-options), por lo que tu token nunca entra en el contenedor.

361 379 

362Puede establecer `GH_TOKEN` o `GITHUB_TOKEN` usted mismo en [configuración de entorno](#set-environment-variables), o dejar ambos sin establecer y dejar que el [proxy de GitHub](#github-proxy) se autentique por usted:380Puedes establecer `GH_TOKEN` o `GITHUB_TOKEN` tú mismo en la [configuración del entorno](#set-environment-variables), o dejar ambos sin establecer y dejar que el [proxy de GitHub](#github-proxy) se autentique por ti:

363 381 

364* Si establece un token, pasa al contenedor sin cambios, por lo que sus scripts y el [`gh` CLI](https://cli.github.com) de GitHub lo usan directamente.382* Si estableces un token, pasa al contenedor sin cambios, por lo que tus scripts y la [CLI `gh`](https://cli.github.com) de GitHub lo usan directamente.

365* Si no establece ninguno y el [proxy de GitHub](#github-proxy) está manejando la autenticación para su sesión, ambas variables se leen como la cadena de marcador de posición `proxy-injected` en los comandos que ejecuta Claude, y el proxy sustituye sus credenciales reales en solicitudes salientes de GitHub. `gh` funciona sin un token propio, pero un script que lee `GITHUB_TOKEN` directamente obtiene el marcador de posición, no un token utilizable.383* Si no estableces ninguno y el [proxy de GitHub](#github-proxy) está manejando la autenticación de tu sesión, ambas variables se leen como la cadena de marcador de posición `proxy-injected` en los comandos que ejecuta Claude, y el proxy sustituye tus credenciales reales en las solicitudes salientes a GitHub. `gh` funciona sin un token propio, pero un script que lee `GITHUB_TOKEN` directamente obtiene el marcador de posición, no un token utilizable.

366 384 

367Un token que establece es una variable de entorno ordinaria, por lo que cualquiera que use el entorno puede leerlo; la ruta del proxy mantiene la credencial fuera de la configuración del entorno y la VM de la sesión.385Un token que establezcas es una variable de entorno ordinaria, por lo que cualquiera que use el entorno puede leerlo; la ruta del proxy mantiene la credencial fuera de la configuración del entorno y de la VM de la sesión.

368 386 

369Para verificar qué caso se aplica a su sesión, pida a Claude que ejecute `echo $GH_TOKEN`.387Para verificar qué caso se aplica a tu sesión, pide a Claude que ejecute `echo $GH_TOKEN`.

370 388 

371El [`gh` CLI](https://cli.github.com) de GitHub está preinstalado. Si necesita un comando `gh` que las herramientas integradas no cubran, como `gh release` o `gh workflow run`, pida a Claude que lo ejecute. `gh` lee `GH_TOKEN` automáticamente, por lo que no necesita ejecutar `gh auth login`.389La [CLI `gh`](https://cli.github.com) de GitHub está preinstalada. Si necesitas un comando `gh` que las herramientas integradas no cubran, como `gh release` o `gh workflow run`, pide a Claude que lo ejecute. `gh` lee `GH_TOKEN` automáticamente, por lo que no necesitas ejecutar `gh auth login`.

372 390 

373<h3 id="link-output-back-to-the-session">391<h3 id="link-output-back-to-the-session">

374 Vincular salida de nuevo a la sesión392 Vincular la salida con la sesión

375</h3>393</h3>

376 394 

377Cada sesión en la nube tiene una URL de transcripción en claude.ai, y la sesión puede leer su propio ID desde la variable de entorno `CLAUDE_CODE_REMOTE_SESSION_ID`. Úselo para poner un enlace rastreable en cuerpos de PR, mensajes de confirmación, publicaciones de Slack o informes generados para que un revisor pueda abrir la ejecución que los produjo.395Cada sesión en la nube tiene una URL de transcripción en claude.ai, y la sesión puede leer su propio ID desde la variable de entorno `CLAUDE_CODE_REMOTE_SESSION_ID`. Úsala para poner un enlace rastreable en cuerpos de PR, mensajes de commit, publicaciones de Slack o informes generados para que un revisor pueda abrir la ejecución que los produjo.

378 396 

379Las confirmaciones que Claude crea en una sesión en la nube incluyen un remolque de git `Claude-Session: <url>`, y los cuerpos de PR incluyen la URL de la sesión en su propia línea. Para omitir el remolque y el enlace del cuerpo de PR, establezca [`attribution.sessionUrl`](/docs/es/settings-reference#attribution-sessionurl) en `false`.397Los commits que Claude crea en una sesión en la nube incluyen un trailer de git `Claude-Session: <url>`, y los cuerpos de PR incluyen la URL de la sesión en su propia línea. Para omitir el trailer y el enlace del cuerpo del PR, establece [`attribution.sessionUrl`](/docs/es/settings-reference#attribution-sessionurl) en `false`.

380 398 

381Para incluir el enlace de la sesión en algo que no sea una confirmación o PR, como un mensaje de Slack que Claude publica o un archivo de informe que escribe, pida a Claude que ejecute el siguiente comando y use su salida. El comando convierte el prefijo `cse_` en el valor de la variable de entorno al prefijo `session_` que espera la URL de transcripción:399Para incluir el enlace de la sesión en algo que no sea un commit o un PR, como un mensaje de Slack que Claude publica o un archivo de informe que escribe, pide a Claude que ejecute el siguiente comando y use su salida. El comando convierte el prefijo `cse_` del valor de la variable de entorno al prefijo `session_` que espera la URL de transcripción:

382 400 

383```bash theme={null}401```bash theme={null}

384echo "https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID/#cse_/session_}"402echo "https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID/#cse_/session_}"


388 Ejecutar pruebas, iniciar servicios y agregar paquetes406 Ejecutar pruebas, iniciar servicios y agregar paquetes

389</h3>407</h3>

390 408 

391No obtiene un shell en la VM de la sesión. Claude ejecuta cada comando para usted, por lo que exprese las tareas en esta sección como solicitudes en su indicación.409No obtienes un shell en la VM de la sesión. Claude ejecuta cada comando por ti, así que formula las tareas de esta sección como solicitudes en tu prompt.

392 410 

393<h4 id="run-tests">411<h4 id="run-tests">

394 Ejecutar pruebas412 Ejecutar pruebas

395</h4>413</h4>

396 414 

397Claude ejecuta pruebas como parte del trabajo en una tarea. Solicítelo en su indicación, como "corregir las pruebas fallidas en `tests/`" o "ejecutar pytest después de cada cambio". Los ejecutores de pruebas que vienen con las [cadenas de herramientas preinstaladas](#installed-tools), como pytest y cargo test, funcionan sin configuración adicional. Un ejecutor que su proyecto declara como una dependencia, como jest, se instala con sus dependencias.415Claude ejecuta pruebas como parte del trabajo en una tarea. Pídelo en tu prompt, por ejemplo "corrige las pruebas fallidas en `tests/`" o "ejecuta pytest después de cada cambio". Los ejecutores de pruebas que vienen con las [cadenas de herramientas preinstaladas](#installed-tools), como pytest y cargo test, funcionan sin configuración adicional. Un ejecutor que tu proyecto declara como dependencia, como jest, se instala con tus dependencias.

398 416 

399<h4 id="start-services">417<h4 id="start-services">

400 Iniciar servicios418 Iniciar servicios

401</h4>419</h4>

402 420 

403PostgreSQL y Redis están preinstalados pero no se ejecutan de forma predeterminada. Pida a Claude que inicie el que necesite; los comandos que ejecuta son:421PostgreSQL y Redis están preinstalados pero no se ejecutan de forma predeterminada. Pide a Claude que inicie el que necesites; los comandos que ejecuta son:

404 422 

405```bash theme={null}423```bash theme={null}

406service postgresql start424service postgresql start


410service redis-server start428service redis-server start

411```429```

412 430 

413Docker está disponible para ejecutar servicios en contenedores. Pida a Claude que ejecute `docker compose up` para iniciar los servicios de su proyecto. El acceso a la red para extraer imágenes sigue su [nivel de acceso](#access-levels) del entorno, y los [valores predeterminados Trusted](#default-allowed-domains) incluyen Docker Hub y otros registros comunes.431Docker está disponible para ejecutar servicios en contenedores. Pide a Claude que ejecute `docker compose up` para iniciar los servicios de tu proyecto. El acceso a la red para extraer imágenes sigue el [nivel de acceso](#access-levels) de tu entorno, y los [valores predeterminados Trusted](#default-allowed-domains) incluyen Docker Hub y otros registros comunes.

414 432 

415Si sus imágenes son grandes o lentas de extraer, agregue `docker compose pull` o `docker compose build` a su [script de configuración](#setup-scripts). El [almacenamiento en caché del entorno](#environment-caching) mantiene las imágenes extraídas, por lo que cada sesión nueva las tiene en el disco. El caché almacena solo archivos, no procesos en ejecución, por lo que Claude aún inicia los contenedores cada sesión.433Si tus imágenes son grandes o lentas de extraer, agrega `docker compose pull` o `docker compose build` a tu [script de configuración](#setup-scripts). La [caché del entorno](#environment-caching) conserva las imágenes extraídas, por lo que cada sesión nueva las tiene en el disco. La caché almacena solo archivos, no procesos en ejecución, por lo que Claude aún inicia los contenedores en cada sesión.

416 434 

417<h4 id="add-packages">435<h4 id="add-packages">

418 Agregar paquetes436 Agregar paquetes

419</h4>437</h4>

420 438 

421Para agregar paquetes que no están preinstalados, use un [script de configuración](#setup-scripts). El [almacenamiento en caché del entorno](#environment-caching) mantiene lo que instala el script, por lo que los paquetes que instala allí están disponibles al inicio de cada sesión sin reinstalar cada vez. También puede pedir a Claude que instale paquetes a mitad de sesión, pero esas instalaciones no se transfieren a otras sesiones.439Para agregar paquetes que no están preinstalados, usa un [script de configuración](#setup-scripts). La [caché del entorno](#environment-caching) conserva lo que instala el script, por lo que los paquetes que instales allí están disponibles al inicio de cada sesión sin reinstalarlos cada vez. También puedes pedir a Claude que instale paquetes a mitad de sesión, pero esas instalaciones no se transfieren a otras sesiones.

422 440 

423<h3 id="resource-limits">441<h3 id="resource-limits">

424 Límites de recursos442 Límites de recursos


430* 16 GB de RAM448* 16 GB de RAM

431* 30 GB de disco449* 30 GB de disco

432 450 

433La VM puede detener tareas que necesitan significativamente más memoria, como trabajos de compilación grandes o pruebas que consumen mucha memoria. Para cargas de trabajo más allá de estos límites, use [Remote Control](/docs/es/remote-control) para ejecutar Claude Code en su propio hardware, o ejecute sesiones en la nube en un [entorno autohospedado](/docs/es/self-hosted-environments) en computación que su organización opera.451La VM puede detener tareas que necesitan significativamente más memoria, como trabajos de compilación grandes o pruebas que consumen mucha memoria. Para cargas de trabajo que superen estos límites, usa [Remote Control](/docs/es/remote-control) para ejecutar Claude Code en tu propio hardware, o ejecuta sesiones en la nube en un [entorno autohospedado](/docs/es/self-hosted-environments) en infraestructura de cómputo que opere tu organización.

434 452 

435<h3 id="time-limits">453<h3 id="time-limits">

436 Límites de tiempo454 Límites de tiempo

437</h3>455</h3>

438 456 

439En entornos alojados por Anthropic, estos límites de tiempo se aplican a trabajos de larga duración en una sesión en la nube, como una compilación, una instalación o una ejecución de prueba. Cada entrada enlaza a la sección que define el límite.457En entornos alojados por Anthropic, estos límites de tiempo se aplican a trabajos de larga duración en una sesión en la nube, como una compilación, una instalación o una ejecución de pruebas. Cada entrada enlaza a la sección que define el límite.

440 458 

441* **Comandos que ejecuta Claude**: un entorno en la nube no establece su propio tiempo de espera de comando, por lo que se aplican los valores predeterminados de la herramienta Bash. Claude espera 2 minutos para un comando de primer plano de forma predeterminada y puede solicitar hasta 10 minutos.459* **Comandos que ejecuta Claude**: un entorno en la nube no establece su propio tiempo de espera de comandos, por lo que se aplican los valores predeterminados de la herramienta Bash. Claude espera 2 minutos por un comando en primer plano de forma predeterminada y puede solicitar hasta 10 minutos.

442 460 

443 Cuando un comando alcanza su [tiempo de espera](/docs/es/tools-reference#timeout-and-output-limits), Claude Code [lo mueve al fondo](/docs/es/tools-reference#foreground-commands-that-move-to-the-background) en lugar de detenerlo, a menos que el comando comience con `sleep`. Un comando movido de esta manera puede seguir ejecutándose hasta 30 minutos más antes de que Claude Code lo detenga en su [límite de tiempo de fondo](/docs/es/tools-reference#time-limit-for-background-commands). Establecer `BASH_DEFAULT_TIMEOUT_MS` por encima de `1800000` milisegundos alarga ese límite así como el valor predeterminado de primer plano.461 Cuando un comando alcanza su [tiempo de espera](/docs/es/tools-reference#timeout-and-output-limits), Claude Code [lo mueve a segundo plano](/docs/es/tools-reference#foreground-commands-that-move-to-the-background) en lugar de detenerlo, a menos que el comando comience con `sleep`. Un comando movido de esta manera puede seguir ejecutándose hasta 30 minutos más antes de que Claude Code lo detenga en su [límite de tiempo en segundo plano](/docs/es/tools-reference#time-limit-for-background-commands). Establecer `BASH_DEFAULT_TIMEOUT_MS` por encima de `1800000` milisegundos alarga ese límite, así como el valor predeterminado en primer plano.

444* **Hooks SessionStart**: Claude Code cancela un hook `command` después de 600 segundos a menos que establezca [`timeout`](/docs/es/hooks#common-fields), en segundos, en la entrada del hook. Claude Code no aplica el tiempo de espera en un hook que ejecuta con [`async: true`](/docs/es/hooks#run-hooks-in-the-background).462* **Hooks SessionStart**: Claude Code cancela un hook `command` después de 600 segundos a menos que establezcas [`timeout`](/docs/es/hooks#common-fields), en segundos, en la entrada del hook. Claude Code no aplica el tiempo de espera a un hook que ejecutes con [`async: true`](/docs/es/hooks#run-hooks-in-the-background).

445* **Script de configuración**: un script que tarda más de aproximadamente cinco minutos no se almacena en caché. [Requisitos de script](#script-requirements) cubre cómo mantenerse por debajo de eso.463* **Script de configuración**: un script que tarda más de aproximadamente cinco minutos no se almacena en caché. [Requisitos del script](#script-requirements) explica cómo mantenerte por debajo de ese límite.

446* **Sesiones inactivas**: después de unos minutos sin actividad, la VM de una sesión se pausa con sus archivos guardados, y una VM pausada puede reclamarse más tarde. [Establecer variables de entorno](#set-environment-variables) describe qué recoge una sesión en cada caso, y [Entorno expirado](/docs/es/claude-code-on-the-web#environment-expired) cubre cómo reabrir una sesión cuya VM fue reclamada.464* **Sesiones inactivas**: después de unos minutos sin actividad, la VM de una sesión se pausa con sus archivos guardados, y una VM pausada puede recuperarse más tarde. [Establecer variables de entorno](#set-environment-variables) describe qué recoge una sesión en cada caso, y [Entorno expirado](/docs/es/claude-code-on-the-web#environment-expired) explica cómo reabrir una sesión cuya VM fue recuperada.

447 465 

448Para aumentar los tiempos de espera de comando para las sesiones de un entorno, agregue [`BASH_DEFAULT_TIMEOUT_MS` y `BASH_MAX_TIMEOUT_MS`](/docs/es/env-vars#variables) a sus [variables de entorno](#set-environment-variables). Ambos toman milisegundos. Por ejemplo, `BASH_DEFAULT_TIMEOUT_MS=600000` hace que 10 minutos sea el valor predeterminado.466Para aumentar los tiempos de espera de comandos de las sesiones de un entorno, agrega [`BASH_DEFAULT_TIMEOUT_MS` y `BASH_MAX_TIMEOUT_MS`](/docs/es/env-vars#variables) a sus [variables de entorno](#set-environment-variables). Ambas toman milisegundos. Por ejemplo, `BASH_DEFAULT_TIMEOUT_MS=600000` hace que 10 minutos sea el valor predeterminado.

449 467 

450<h2 id="setup-scripts">468<h2 id="setup-scripts">

451 Scripts de configuración469 Scripts de configuración

Details

1586 1586 

1587La sesión recorre un flujo realista con conteos de tokens representativos:1587La sesión recorre un flujo realista con conteos de tokens representativos:

1588 1588 

1589* **Antes de que escriba algo**: CLAUDE.md, memoria automática, nombres de herramientas MCP y descripciones de skills se cargan en el contexto. [Los archivos AGENTS.md](/docs/es/memory#agents-md) también pueden cargarse, por su cuenta o junto con CLAUDE.md. Su propia configuración puede agregar más aquí, como un [estilo de salida](/docs/es/output-styles) o texto de [`--append-system-prompt`](/docs/es/cli-reference).1589* **Antes de que escribas algo**: CLAUDE.md, memoria automática, nombres de herramientas MCP y descripciones de skills se cargan en el contexto. [Los archivos AGENTS.md](/docs/es/memory#agents-md) pueden cargarse en lugar de CLAUDE.md. Tu propia configuración puede agregar más aquí, como un [estilo de salida](/docs/es/output-styles) o texto de [`--append-system-prompt`](/docs/es/cli-reference).

1590* **Mientras Claude trabaja**: cada lectura de archivo se suma al contexto, [reglas con alcance de ruta](/docs/es/memory#path-specific-rules) se cargan automáticamente junto con archivos coincidentes, y un [hook PostToolUse](/docs/es/hooks-guide) se activa después de cada edición.1590* **Mientras Claude trabaja**: cada lectura de archivo se suma al contexto, [reglas con alcance de ruta](/docs/es/memory#path-specific-rules) se cargan automáticamente junto con archivos coincidentes, y un [hook PostToolUse](/docs/es/hooks-guide) se activa después de cada edición.

1591* **El prompt de seguimiento**: un [subagent](/docs/es/sub-agents) maneja la investigación en su propia ventana de contexto separada, por lo que las lecturas de archivos grandes se mantienen fuera de la suya. Solo el resumen y un pequeño remolque de metadatos regresan.1591* **El prompt de seguimiento**: un [subagent](/docs/es/sub-agents) maneja la investigación en su propia ventana de contexto separada, por lo que las lecturas de archivos grandes se mantienen fuera de la suya. Solo el resumen y un pequeño remolque de metadatos regresan.

1592* **Al final del recorrido**: ejecuta `/compact`, que reemplaza la conversación con un resumen estructurado. La mayoría del contenido de inicio se recarga automáticamente; la tabla a continuación muestra qué sucede con cada mecanismo.1592* **Al final del recorrido**: ejecuta `/compact`, que reemplaza la conversación con un resumen estructurado. La mayoría del contenido de inicio se recarga automáticamente; la tabla a continuación muestra qué sucede con cada mecanismo.

costs.md +1 −1

Details

394* **Use plan mode para tareas complejas**: Presione Shift+Tab para entrar en [plan mode](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) antes de la implementación. Claude explora la base de código y propone un enfoque para su aprobación, previniendo re-trabajo costoso cuando la dirección inicial es incorrecta.394* **Use plan mode para tareas complejas**: Presione Shift+Tab para entrar en [plan mode](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) antes de la implementación. Claude explora la base de código y propone un enfoque para su aprobación, previniendo re-trabajo costoso cuando la dirección inicial es incorrecta.

395* **Corrija el curso temprano**: Si Claude comienza a ir en la dirección equivocada, presione Escape para detener inmediatamente. Use `/rewind` o presione Escape dos veces para restaurar la conversación y el código a un checkpoint anterior.395* **Corrija el curso temprano**: Si Claude comienza a ir en la dirección equivocada, presione Escape para detener inmediatamente. Use `/rewind` o presione Escape dos veces para restaurar la conversación y el código a un checkpoint anterior.

396* **Proporcione objetivos de verificación**: Incluya casos de prueba, pegue capturas de pantalla o defina la salida esperada en su prompt. Cuando Claude puede verificar su propio trabajo, detecta problemas antes de que necesite solicitar correcciones.396* **Proporcione objetivos de verificación**: Incluya casos de prueba, pegue capturas de pantalla o defina la salida esperada en su prompt. Cuando Claude puede verificar su propio trabajo, detecta problemas antes de que necesite solicitar correcciones.

397* **Pruebe incrementalmente**: Escriba un archivo, pruébelo, luego continúe. Esto detecta problemas temprano cuando son baratos de arreglar.397* **Prueba incrementalmente**: Escribe un archivo, pruébalo y luego continúa. Esto detecta problemas temprano.

398 398 

399<h2 id="background-token-usage">399<h2 id="background-token-usage">

400 Uso de tokens en segundo plano400 Uso de tokens en segundo plano

desktop.md +1 −1

Details

1092Para ver qué versión de la aplicación de escritorio está ejecutando:1092Para ver qué versión de la aplicación de escritorio está ejecutando:

1093 1093 

1094* **macOS**: haga clic en **Claude** en la barra de menú, luego **About Claude**1094* **macOS**: haga clic en **Claude** en la barra de menú, luego **About Claude**

1095* **Windows**: haga clic en **Help**, luego **About**1095* **Windows**: haz clic en **Help**, luego en **About Claude**

1096 1096 

1097Haga clic en el número de versión para copiarlo a su portapapeles.1097Haga clic en el número de versión para copiarlo a su portapapeles.

1098 1098 

Details

92* Guardar una captura de pantalla con **Cmd+S** o una grabación de pantalla con **Cmd+R**, usando los botones de captura del panel o los atajos; los archivos se guardan en tu Escritorio92* Guardar una captura de pantalla con **Cmd+S** o una grabación de pantalla con **Cmd+R**, usando los botones de captura del panel o los atajos; los archivos se guardan en tu Escritorio

93* Detener la transmisión de un dispositivo sin apagarlo haciendo clic en **Detach simulator**, que devuelve el panel a su estado **Attach simulator**93* Detener la transmisión de un dispositivo sin apagarlo haciendo clic en **Detach simulator**, que devuelve el panel a su estado **Attach simulator**

94 94 

95Para ajustar el streaming de video desde el simulador, abre el menú **Display** del panel. Reduce la **Frame rate** o **Resolution** si el panel sobrecarga tu Mac. Ambos ajustes cambian cómo el panel muestra el dispositivo, no cómo se ejecuta la aplicación.95Si el panel muestra un menú **Display**, úsalo para ajustar el streaming de video desde el simulador. Reduce la **Frame rate** o **Resolution** si el panel sobrecarga tu Mac. Ambos ajustes cambian cómo el panel muestra el dispositivo, no cómo se ejecuta la aplicación.

96 96 

97Tú y Claude controlan el mismo dispositivo, por lo que tus toques cambian el estado de la aplicación que Claude ve. Para que Claude verifique una pantalla específica, navega a ella tocando, luego pregunta. Mientras Claude controla el dispositivo, el panel muestra una insignia **Claude is using this device** encima de la pantalla; espera a tocar hasta que la insignia desaparezca, para que el resultado refleje la aplicación en lugar de tu entrada.97Tú y Claude controlan el mismo dispositivo, por lo que tus toques cambian el estado de la aplicación que Claude ve. Para que Claude verifique una pantalla específica, navega a ella tocando, luego pregunta. Mientras Claude controla el dispositivo, el panel muestra una insignia **Claude is using this device** encima de la pantalla; espera a tocar hasta que la insignia desaparezca, para que el resultado refleje la aplicación en lugar de tu entrada.

98 98 

env-vars.md +1 −0

Details

354| `CLAUDE_CODE_PERFORCE_MODE` | Establécela en `1` para activar la protección contra escritura compatible con Perforce. Cuando está establecida, Edit, Write y NotebookEdit fallan con una sugerencia de `p4 edit <file>` si el archivo de destino no tiene el bit de escritura del propietario, que Perforce borra en los archivos sincronizados hasta que `p4 edit` los abre. Esto evita que Claude Code omita el seguimiento de cambios de Perforce |354| `CLAUDE_CODE_PERFORCE_MODE` | Establécela en `1` para activar la protección contra escritura compatible con Perforce. Cuando está establecida, Edit, Write y NotebookEdit fallan con una sugerencia de `p4 edit <file>` si el archivo de destino no tiene el bit de escritura del propietario, que Perforce borra en los archivos sincronizados hasta que `p4 edit` los abre. Esto evita que Claude Code omita el seguimiento de cambios de Perforce |

355| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Sobrescribe el directorio raíz de los plugins. A pesar del nombre, establece el directorio principal, no la caché en sí: los marketplaces y la caché de plugins se encuentran en subdirectorios bajo esta ruta. El valor predeterminado es `~/.claude/plugins` |355| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Sobrescribe el directorio raíz de los plugins. A pesar del nombre, establece el directorio principal, no la caché en sí: los marketplaces y la caché de plugins se encuentran en subdirectorios bajo esta ruta. El valor predeterminado es `~/.claude/plugins` |

356| `CLAUDE_CODE_PLUGIN_DIRS` | Directorios de plugins que se cargan para la sesión, cada uno de la misma forma en que lo carga un flag [`--plugin-dir`](/docs/es/plugins/cli-reference#flags-that-load-a-plugin-for-one-session). Separa varias rutas con `:` en Unix o con `;` en Windows. Indica cada ruta como una ruta absoluta o haz que empiece con `~`, porque Claude Code omite las rutas relativas. Requiere Claude Code v2.1.280 o posterior. Consulta [Cargar un plugin para una sesión](/docs/es/plugins/create#load-a-directory-or-archive-for-one-session) |356| `CLAUDE_CODE_PLUGIN_DIRS` | Directorios de plugins que se cargan para la sesión, cada uno de la misma forma en que lo carga un flag [`--plugin-dir`](/docs/es/plugins/cli-reference#flags-that-load-a-plugin-for-one-session). Separa varias rutas con `:` en Unix o con `;` en Windows. Indica cada ruta como una ruta absoluta o haz que empiece con `~`, porque Claude Code omite las rutas relativas. Requiere Claude Code v2.1.280 o posterior. Consulta [Cargar un plugin para una sesión](/docs/es/plugins/create#load-a-directory-or-archive-for-one-session) |

357| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Controla si Claude Code recarga un [mod](/docs/es/plugins/mods/overview) cuando cambian los archivos del mod. La recarga se aplica a un mod que cargas desde un directorio con `--plugin-dir`, y está activada de forma predeterminada en las sesiones interactivas. Establécela en `1` para activarla también en las sesiones no interactivas, o en `0` para desactivarla en todas las sesiones. Requiere Claude Code v2.1.287 o posterior. Consulta [configuración y variables de entorno de los mods](/docs/es/plugins/mods/reference#settings-and-environment-variables) |

357| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Tiempo de espera en milisegundos para clonar o actualizar un marketplace de plugins (predeterminado: 120000). Aumenta este valor para repositorios grandes o conexiones de red lentas. Consulta [Se agotó el tiempo de espera de git clone](/docs/es/plugins/troubleshooting#git-clone-timed-out-after-120s) |358| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Tiempo de espera en milisegundos para clonar o actualizar un marketplace de plugins (predeterminado: 120000). Aumenta este valor para repositorios grandes o conexiones de red lentas. Consulta [Se agotó el tiempo de espera de git clone](/docs/es/plugins/troubleshooting#git-clone-timed-out-after-120s) |

358| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Establécela en `1` para omitir el intento de volver a clonar y seguir usando la copia existente del marketplace cuando una actualización del marketplace no puede acceder al remoto o autenticarse en él. Es útil en entornos sin conexión o aislados (airgapped) donde volver a clonar fallaría de la misma forma. Consulta [Las actualizaciones del marketplace fallan en entornos sin conexión](/docs/es/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |359| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Establécela en `1` para omitir el intento de volver a clonar y seguir usando la copia existente del marketplace cuando una actualización del marketplace no puede acceder al remoto o autenticarse en él. Es útil en entornos sin conexión o aislados (airgapped) donde volver a clonar fallaría de la misma forma. Consulta [Las actualizaciones del marketplace fallan en entornos sin conexión](/docs/es/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |

359| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Establécela en `1` para clonar los orígenes abreviados `owner/repo` de GitHub a través de HTTPS en lugar de SSH. Se aplica a la instalación y actualización de plugins, y a `/plugin marketplace add` y `update`. Es útil en runners de CI, contenedores o cualquier entorno sin una clave SSH configurada para `github.com` |360| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Establécela en `1` para clonar los orígenes abreviados `owner/repo` de GitHub a través de HTTPS en lugar de SSH. Se aplica a la instalación y actualización de plugins, y a `/plugin marketplace add` y `update`. Es útil en runners de CI, contenedores o cualquier entorno sin una clave SSH configurada para `github.com` |

errors.md +3 −4

Details

197| `Cloud sessions cannot be created from a --restricted session` | [Errores de línea de comandos](#cloud-sessions-cannot-be-created-from-a-restricted-session) |197| `Cloud sessions cannot be created from a --restricted session` | [Errores de línea de comandos](#cloud-sessions-cannot-be-created-from-a-restricted-session) |

198| `Cloud sessions are disabled by your organization's policy` | [Errores de línea de comandos](#cloud-sessions-are-disabled-by-your-organizations-policy) |198| `Cloud sessions are disabled by your organization's policy` | [Errores de línea de comandos](#cloud-sessions-are-disabled-by-your-organizations-policy) |

199| `Couldn't verify your organization's policy for cloud sessions` | [Errores de línea de comandos](#cloud-sessions-are-disabled-by-your-organizations-policy) |199| `Couldn't verify your organization's policy for cloud sessions` | [Errores de línea de comandos](#cloud-sessions-are-disabled-by-your-organizations-policy) |

200| `Cloud sessions need a claude.ai sign-in` | [No se puede obtener el UUID de la organización](/docs/es/claude-code-on-the-web#unable-to-get-organization-uuid) |

200| `Error: --json-schema is not a valid JSON Schema` | [Errores de línea de comandos](#the-json-schema-value-is-not-a-valid-json-schema) |201| `Error: --json-schema is not a valid JSON Schema` | [Errores de línea de comandos](#the-json-schema-value-is-not-a-valid-json-schema) |

201| `Error: Invalid --agents configuration:` | [Errores de línea de comandos](#invalid-agents-configuration) |202| `Error: Invalid --agents configuration:` | [Errores de línea de comandos](#invalid-agents-configuration) |

202| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [Errores de línea de comandos](#invalid-agents-configuration) |203| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [Errores de línea de comandos](#invalid-agents-configuration) |


387* Una conexión que Claude Code detecta que se rompió porque tu computadora entró en suspensión a mitad de una solicitud. Claude Code la cuenta como una conexión perdida según las reglas anteriores; una vez que la etiqueta de reintento nombra la razón específica, dice `Connection lost while your computer was asleep`, y si el turno termina después de que Claude ha terminado de pensar pero antes de cualquier texto o llamada a herramienta, el mensaje dice `Your computer went to sleep before a response was produced`.388* Una conexión que Claude Code detecta que se rompió porque tu computadora entró en suspensión a mitad de una solicitud. Claude Code la cuenta como una conexión perdida según las reglas anteriores; una vez que la etiqueta de reintento nombra la razón específica, dice `Connection lost while your computer was asleep`, y si el turno termina después de que Claude ha terminado de pensar pero antes de cualquier texto o llamada a herramienta, el mensaje dice `Your computer went to sleep before a response was produced`.

388* Un stream de respuesta estancado, cuando los encabezados de respuesta han llegado pero ninguna parte de la respuesta de Claude ha llegado, o cuando Claude ha terminado de pensar pero no ha comenzado ningún texto ni llamada a herramienta: Claude Code aborta la conexión estancada y reenvía la solicitud como máximo una vez, fuera del presupuesto de 10 intentos anterior. Si la respuesta se estanca una segunda vez después de que Claude ha terminado de pensar pero antes de cualquier texto o llamada a herramienta, Claude Code termina el turno con `The response stalled before a response was produced`.389* Un stream de respuesta estancado, cuando los encabezados de respuesta han llegado pero ninguna parte de la respuesta de Claude ha llegado, o cuando Claude ha terminado de pensar pero no ha comenzado ningún texto ni llamada a herramienta: Claude Code aborta la conexión estancada y reenvía la solicitud como máximo una vez, fuera del presupuesto de 10 intentos anterior. Si la respuesta se estanca una segunda vez después de que Claude ha terminado de pensar pero antes de cualquier texto o llamada a herramienta, Claude Code termina el turno con `The response stalled before a response was produced`.

389* Una solicitud en streaming a la que la API nunca responde con encabezados de respuesta, en una conexión donde [se aplica el plazo del primer byte](/docs/es/network-config#streaming-idle-watchdogs): Claude Code la aborta al cumplirse el plazo y la reenvía como máximo una vez por solicitud al modelo, dentro del presupuesto de reintentos, y luego termina el turno con [No response from API](#no-response-from-api) si ese intento también queda sin respuesta. En otras conexiones, la solicitud espera hasta `API_TIMEOUT_MS`. Cuando estableces `CLAUDE_CODE_RETRY_WATCHDOG`, el límite de un reintento no se aplica.390* Una solicitud en streaming a la que la API nunca responde con encabezados de respuesta, en una conexión donde [se aplica el plazo del primer byte](/docs/es/network-config#streaming-idle-watchdogs): Claude Code la aborta al cumplirse el plazo y la reenvía como máximo una vez por solicitud al modelo, dentro del presupuesto de reintentos, y luego termina el turno con [No response from API](#no-response-from-api) si ese intento también queda sin respuesta. En otras conexiones, la solicitud espera hasta `API_TIMEOUT_MS`. Cuando estableces `CLAUDE_CODE_RETRY_WATCHDOG`, el límite de un reintento no se aplica.

391* Una respuesta en streaming que el filtro de contenido de salida de la API detiene antes de que Claude haya terminado de pensar o haya comenzado cualquier texto o llamada a herramienta. Claude Code reenvía la solicitud una vez, dentro del presupuesto de reintentos, y muestra [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy) si el filtro también detiene la segunda respuesta.

390* Limitaciones temporales 429, pero no el `429` de límite de gasto de un gateway, que no es una limitación; consulta [Spend limit reached](#spend-limit-reached).392* Limitaciones temporales 429, pero no el `429` de límite de gasto de un gateway, que no es una limitación; consulta [Spend limit reached](#spend-limit-reached).

391 * Cuando has iniciado sesión con una suscripción de claude.ai, esto incluye limitaciones 429 que no llevan los encabezados de cuota de tu plan. Antes de v2.1.199, Claude Code reintentaba esas limitaciones solo para inicios de sesión con clave de API y Enterprise.393 * Cuando has iniciado sesión con una suscripción de claude.ai, esto incluye limitaciones 429 que no llevan los encabezados de cuota de tu plan. Antes de v2.1.199, Claude Code reintentaba esas limitaciones solo para inicios de sesión con clave de API y Enterprise.

392* Una solicitud rechazada porque la entrada más `max_tokens` excede el límite de contexto. Reenviarla sin cambios fallaría de la misma manera, por lo que Claude Code reintenta con un `max_tokens` reducido, y deja de reintentar y compacta en su lugar en dos casos:394* Una solicitud rechazada porque la entrada más `max_tokens` excede el límite de contexto. Reenviarla sin cambios fallaría de la misma manera, por lo que Claude Code reintenta con un `max_tokens` reducido, y deja de reintentar y compacta en su lugar en dos casos:


405* Una [respuesta en streaming de Amazon Bedrock con un content-type inesperado](#bedrock-streaming-response-has-an-unexpected-content-type), porque el gateway o proxy que reescribe la respuesta reescribiría el reintento de la misma manera. Requiere Claude Code v2.1.208 o posterior.407* Una [respuesta en streaming de Amazon Bedrock con un content-type inesperado](#bedrock-streaming-response-has-an-unexpected-content-type), porque el gateway o proxy que reescribe la respuesta reescribiría el reintento de la misma manera. Requiere Claude Code v2.1.208 o posterior.

406* Un reintento sin streaming de una solicitud en streaming fallida que obtiene un estado de éxito pero [ningún mensaje de la API de Claude en el cuerpo](#api-returned-an-empty-or-malformed-response). Claude Code termina el turno con ese error.408* Un reintento sin streaming de una solicitud en streaming fallida que obtiene un estado de éxito pero [ningún mensaje de la API de Claude en el cuerpo](#api-returned-an-empty-or-malformed-response). Claude Code termina el turno con ese error.

407* Una solicitud que la verificación de políticas de tu organización rechazó, que aparece como una línea `API Error:` con el mensaje de denegación. Los administradores de tu organización configuran la verificación con [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks), una función de Claude Enterprise, y el mensaje termina con las instrucciones que configuraron o, de forma predeterminada, te indica que te comuniques con ellos. Claude Code no reenvía la solicitud denegada al mismo modelo ni a un [modelo de respaldo](/docs/es/model-config#fallback-model-chains), porque la denegación se refiere al contenido de la solicitud y no al modelo. Antes de v2.1.239, Claude Code podía reenviar una solicitud denegada, sin streaming o en un modelo de respaldo configurado, antes de mostrarte la denegación.409* Una solicitud que la verificación de políticas de tu organización rechazó, que aparece como una línea `API Error:` con el mensaje de denegación. Los administradores de tu organización configuran la verificación con [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks), una función de Claude Enterprise, y el mensaje termina con las instrucciones que configuraron o, de forma predeterminada, te indica que te comuniques con ellos. Claude Code no reenvía la solicitud denegada al mismo modelo ni a un [modelo de respaldo](/docs/es/model-config#fallback-model-chains), porque la denegación se refiere al contenido de la solicitud y no al modelo. Antes de v2.1.239, Claude Code podía reenviar una solicitud denegada, sin streaming o en un modelo de respaldo configurado, antes de mostrarte la denegación.

408* Una respuesta que el filtro de contenido de salida de la API bloqueó. Claude Code muestra [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy) de inmediato y no reintenta ni reenvía esa solicitud.

409 410 

410<h3 id="what-you-see-while-claude-code-retries-or-waits">411<h3 id="what-you-see-while-claude-code-retries-or-waits">

411 Lo que ves mientras Claude Code reintenta o espera412 Lo que ves mientras Claude Code reintenta o espera


2299 2300 

2300**Qué hacer:**2301**Qué hacer:**

2301 2302 

2302* Cambia el tamaño de la imagen antes de pegarla. La API acepta imágenes de hasta 8000 píxeles en el lado más largo para una sola imagen, o 2000 píxeles cuando hay muchas imágenes en el contexto.2303* Cambia el tamaño de la imagen antes de pegarla. La API acepta imágenes de hasta 8000 píxeles en el lado más largo para una sola imagen, o 3000 píxeles cuando hay más de 20 imágenes en el contexto.

2303* Toma una captura de pantalla más ajustada de la región relevante en lugar de la pantalla completa2304* Toma una captura de pantalla más ajustada de la región relevante en lugar de la pantalla completa

2304 2305 

2305<h3 id="unable-to-resize-image">2306<h3 id="unable-to-resize-image">


2905API Error: Output blocked by content filtering policy2906API Error: Output blocked by content filtering policy

2906```2907```

2907 2908 

2908Claude Code muestra el error en cuanto llega el bloqueo y termina la solicitud ahí. No reintenta la solicitud, no la vuelve a enviar sin streaming ni cambia a un [modelo de respaldo](/docs/es/model-config#fallback-model-chains). Antes de v2.1.285, Claude Code podía volver a enviar y reintentar una solicitud bloqueada, a veces durante minutos, antes de mostrarte el error.

2909 

2910**Qué hacer:**2909**Qué hacer:**

2911 2910 

2912* Reformula tu último mensaje o adopta un enfoque diferente2911* Reformula tu último mensaje o adopta un enfoque diferente

fast-mode.md +1 −1

Details

88 88 

89Los precios del modo rápido son fijos en toda la ventana de contexto de 1M tokens. Para la tarifa estándar de Opus con la que comparar, consulte la [referencia de precios de Claude](https://platform.claude.com/docs/es/about-claude/pricing).89Los precios del modo rápido son fijos en toda la ventana de contexto de 1M tokens. Para la tarifa estándar de Opus con la que comparar, consulte la [referencia de precios de Claude](https://platform.claude.com/docs/es/about-claude/pricing).

90 90 

91La primera vez que habilita el modo rápido en una conversación, paga el precio completo del token de entrada sin caché del modo rápido para todo el contexto de la conversación. Cuanto más profundo esté en una conversación, más cuesta esto, por lo que habilitar el modo rápido desde el inicio es más económico. El costo se aplica una vez por conversación, por lo que desactivar y activar el modo rápido nuevamente más tarde no lo repite. Para el mecanismo, consulte [cómo el modo rápido interactúa con el caché de indicaciones](/docs/es/prompt-caching#turning-on-fast-mode).91La primera vez que habilitas el modo rápido en una conversación, pagas el precio completo del token de entrada sin caché del modo rápido para todo el contexto de la conversación. Cuanto más avanzada esté la conversación, más cuesta esto, por lo que el cargo es menor cuando habilitas el modo rápido desde el inicio. El costo se aplica una vez por conversación, por lo que desactivar y activar el modo rápido nuevamente más tarde no lo repite. Para el mecanismo, consulta [cómo el modo rápido interactúa con la caché de prompts](/docs/es/prompt-caching#turning-on-fast-mode).

92 92 

93<h3 id="see-where-fast-mode-spend-appears">93<h3 id="see-where-fast-mode-spend-appears">

94 Vea dónde aparece el gasto del modo rápido94 Vea dónde aparece el gasto del modo rápido

glossary.md +1 −1

Details

130 130 

131Un archivo markdown de instrucciones persistentes que usted escribe para Claude, cargado al inicio de cada sesión como un mensaje de usuario después del prompt del sistema. Coloque convenciones de proyecto, notas de arquitectura y reglas "siempre haga X" aquí. El CLAUDE.md de raíz de proyecto sobrevive a [compaction](#compaction) y se relee fresco desde el disco después.131Un archivo markdown de instrucciones persistentes que usted escribe para Claude, cargado al inicio de cada sesión como un mensaje de usuario después del prompt del sistema. Coloque convenciones de proyecto, notas de arquitectura y reglas "siempre haga X" aquí. El CLAUDE.md de raíz de proyecto sobrevive a [compaction](#compaction) y se relee fresco desde el disco después.

132 132 

133Puede colocar CLAUDE.md en alcance de proyecto en `./CLAUDE.md` o `./.claude/CLAUDE.md`, en alcance de usuario en `~/.claude/CLAUDE.md`, o como [managed policy](#managed-settings) para su organización. Todos los archivos descubiertos se concatenan en contexto en lugar de anularse entre sí, ordenados de alcance más amplio a más específico. Claude Code también puede cargar archivos [AGENTS.md](#agents-md) de un proyecto, por sí solos o junto con CLAUDE.md.133Puedes colocar CLAUDE.md en alcance de proyecto en `./CLAUDE.md` o `./.claude/CLAUDE.md`, en alcance de usuario en `~/.claude/CLAUDE.md`, o como [directiva administrada](#managed-settings) para tu organización. Todos los archivos descubiertos se concatenan en el contexto en lugar de anularse entre sí, ordenados del alcance más amplio al más específico. Claude Code también puede cargar los archivos [AGENTS.md](#agents-md) de un proyecto en lugar de CLAUDE.md.

134 134 

135Más información: [CLAUDE.md files](/docs/es/memory#claude-md-files)135Más información: [CLAUDE.md files](/docs/es/memory#claude-md-files)

136 136 

Details

210export VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1210export VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1

211```211```

212 212 

213La mayoría de las versiones de modelo tienen una variable `VERTEX_REGION_CLAUDE_*` correspondiente. Consulte la [referencia de variables de entorno](/docs/es/env-vars) para obtener la lista completa. Verifique [Google Cloud's Agent Platform Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) para determinar qué modelos admiten puntos finales globales frente a solo regionales.213La mayoría de las versiones de modelo tienen una variable `VERTEX_REGION_CLAUDE_*` correspondiente. Consulta la [referencia de variables de entorno](/docs/es/env-vars#variables) para obtener la lista completa. Revisa [Google Cloud's Agent Platform Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) para determinar qué modelos admiten endpoints globales frente a solo regionales.

214 214 

215Si un valor de región no tiene forma de nombre de región o ubicación, Claude Code lo trata como no establecido. Por ejemplo, Claude Code trata un valor que contiene una barra diagonal, punto o espacio como no establecido. Claude Code retrocede a una fuente diferente para cada variable:215Si un valor de región no tiene forma de nombre de región o ubicación, Claude Code lo trata como no establecido. Por ejemplo, Claude Code trata un valor que contiene una barra diagonal, punto o espacio como no establecido. Claude Code retrocede a una fuente diferente para cada variable:

216 216 


364 364 

365* Confirme que el modelo está habilitado en [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)365* Confirme que el modelo está habilitado en [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)

366* Verifique que el modelo esté disponible en la ubicación que especificó. Algunos modelos se ofrecen solo en ubicaciones `global` o multirregión como `eu` y `us`, no en regiones específicas366* Verifique que el modelo esté disponible en la ubicación que especificó. Algunos modelos se ofrecen solo en ubicaciones `global` o multirregión como `eu` y `us`, no en regiones específicas

367* Si utiliza `CLOUD_ML_REGION=global`, verifique que sus modelos admitan puntos finales globales en [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) en "Características compatibles". Para modelos que no admiten puntos finales globales, ya sea:367* Si utilizas `CLOUD_ML_REGION=global`, verifica que tus modelos admitan endpoints globales en [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) en "Supported features". Para modelos que no admiten endpoints globales, puedes:

368 * Especifique un modelo compatible a través de `ANTHROPIC_MODEL` o `ANTHROPIC_DEFAULT_HAIKU_MODEL`, o368 * Especificar un modelo compatible a través de `ANTHROPIC_MODEL` o `ANTHROPIC_DEFAULT_HAIKU_MODEL`, o

369 * Establezca una región o ubicación multirregión usando variables de entorno `VERTEX_REGION_<MODEL_NAME>`369 * Establecer una región o ubicación multirregión usando la variable `VERTEX_REGION_CLAUDE_*` del modelo, que aparece en la [referencia de variables de entorno](/docs/es/env-vars#variables)

370 370 

371Si encuentra errores 429:371Si encuentra errores 429:

372 372 

hooks.md +4 −5

Details

63| `DirectoryAdded` | Cuando se agrega un directorio de trabajo a mitad de sesión a través de `/add-dir` o la solicitud de control `register_repo_root` del SDK |63| `DirectoryAdded` | Cuando se agrega un directorio de trabajo a mitad de sesión a través de `/add-dir` o la solicitud de control `register_repo_root` del SDK |

64| `FileChanged` | Cuando un archivo observado cambia en el disco. El campo `matcher` especifica qué nombres de archivo observar |64| `FileChanged` | Cuando un archivo observado cambia en el disco. El campo `matcher` especifica qué nombres de archivo observar |

65| `WorktreeCreate` | Cuando se está creando un worktree a través de `--worktree`, `isolation: "worktree"`, o para una sesión en segundo plano. Reemplaza el comportamiento predeterminado de git |65| `WorktreeCreate` | Cuando se está creando un worktree a través de `--worktree`, `isolation: "worktree"`, o para una sesión en segundo plano. Reemplaza el comportamiento predeterminado de git |

66| `WorktreeRemove` | Cuando se está eliminando un worktree al salir de la sesión, cuando un subagente finaliza, o cuando elimina una sesión en segundo plano |66| `WorktreeRemove` | Cuando se está eliminando un worktree que creó un hook `WorktreeCreate` |

67| `PreCompact` | Antes de la compactación de contexto |67| `PreCompact` | Antes de la compactación de contexto |

68| `PostCompact` | Después de que se completa la compactación de contexto |68| `PostCompact` | Después de que se completa la compactación de contexto |

69| `PreModelSwitch` | Antes de que Claude Code aplique un cambio de modelo que usted o un cliente solicitó. Puede bloquear el cambio |69| `PreModelSwitch` | Antes de que Claude Code aplique un cambio de modelo que usted o un cliente solicitó. Puede bloquear el cambio |


3274 WorktreeRemove3274 WorktreeRemove

3275</h3>3275</h3>

3276 3276 

3277Se ejecuta cuando se está eliminando un worktree. Es la contraparte de limpieza de [WorktreeCreate](#worktreecreate). El evento se dispara cuando:3277Se ejecuta cuando Claude Code limpia un worktree que creó tu hook [`WorktreeCreate`](#worktreecreate). El evento se activa cuando:

3278 3278 

3279* sales de una sesión `--worktree` y eliges eliminarlo3279* Sales de una sesión `--worktree` y eliges eliminar el worktree

3280* un subagente con `isolation: "worktree"` termina3280* Eliminas una [sesión en segundo plano](/docs/es/agent-view#what-deleting-a-session-removes) que se ejecuta en el worktree

3281* eliminas una [sesión en segundo plano](/docs/es/agent-view#what-deleting-a-session-removes) cuyo worktree creó el hook

3282 3281 

3283Para los worktrees basados en git, Claude Code se encarga de la limpieza automáticamente con `git worktree remove`. Si configuraste un hook WorktreeCreate, combínalo con un hook WorktreeRemove para controlar la limpieza de los worktrees que crea:3282Para los worktrees basados en git, Claude Code se encarga de la limpieza automáticamente con `git worktree remove`. Si configuraste un hook WorktreeCreate, combínalo con un hook WorktreeRemove para controlar la limpieza de los worktrees que crea:

3284 3283 

hooks-guide.md +1 −1

Details

526| `DirectoryAdded` | Cuando se agrega un directorio de trabajo a mitad de sesión a través de `/add-dir` o la solicitud de control `register_repo_root` del SDK |526| `DirectoryAdded` | Cuando se agrega un directorio de trabajo a mitad de sesión a través de `/add-dir` o la solicitud de control `register_repo_root` del SDK |

527| `FileChanged` | Cuando un archivo observado cambia en el disco. El campo `matcher` especifica qué nombres de archivo observar |527| `FileChanged` | Cuando un archivo observado cambia en el disco. El campo `matcher` especifica qué nombres de archivo observar |

528| `WorktreeCreate` | Cuando se está creando un worktree a través de `--worktree`, `isolation: "worktree"`, o para una sesión en segundo plano. Reemplaza el comportamiento predeterminado de git |528| `WorktreeCreate` | Cuando se está creando un worktree a través de `--worktree`, `isolation: "worktree"`, o para una sesión en segundo plano. Reemplaza el comportamiento predeterminado de git |

529| `WorktreeRemove` | Cuando se está eliminando un worktree al salir de la sesión, cuando un subagente finaliza, o cuando elimina una sesión en segundo plano |529| `WorktreeRemove` | Cuando se está eliminando un worktree que creó un hook `WorktreeCreate` |

530| `PreCompact` | Antes de la compactación de contexto |530| `PreCompact` | Antes de la compactación de contexto |

531| `PostCompact` | Después de que se completa la compactación de contexto |531| `PostCompact` | Después de que se completa la compactación de contexto |

532| `PreModelSwitch` | Antes de que Claude Code aplique un cambio de modelo que usted o un cliente solicitó. Puede bloquear el cambio |532| `PreModelSwitch` | Antes de que Claude Code aplique un cambio de modelo que usted o un cliente solicitó. Puede bloquear el cambio |

Details

76* **Su proyecto.** Archivos en su directorio y subdirectorios, más archivos en otros lugares con su permiso.76* **Su proyecto.** Archivos en su directorio y subdirectorios, más archivos en otros lugares con su permiso.

77* **Su terminal.** Cualquier comando que pueda ejecutar: herramientas de compilación, git, gestores de paquetes, utilidades del sistema, scripts. Si puede hacerlo desde la línea de comandos, Claude también puede.77* **Su terminal.** Cualquier comando que pueda ejecutar: herramientas de compilación, git, gestores de paquetes, utilidades del sistema, scripts. Si puede hacerlo desde la línea de comandos, Claude también puede.

78* **Su estado de git.** Rama actual, cambios sin confirmar e historial de confirmaciones recientes.78* **Su estado de git.** Rama actual, cambios sin confirmar e historial de confirmaciones recientes.

79* **Su [CLAUDE.md](/docs/es/memory).** Un archivo markdown donde almacena instrucciones específicas del proyecto, convenciones y contexto que Claude debe conocer en cada sesión. Si su repositorio tiene un AGENTS.md para otros agentes de codificación, Claude [puede leerlo](/docs/es/memory#agents-md) por su cuenta o junto con CLAUDE.md.79* **Tu [CLAUDE.md](/docs/es/memory).** Un archivo markdown donde almacenas instrucciones específicas del proyecto, convenciones y contexto que Claude debe conocer en cada sesión. Si tu repositorio tiene un AGENTS.md para otros agentes de codificación, Claude [puede leerlo](/docs/es/memory#agents-md) en lugar de un CLAUDE.md.

80* **[Auto memory](/docs/es/memory#auto-memory).** Aprendizajes que Claude guarda automáticamente mientras trabaja, como sus preferencias. Las primeras 200 líneas o 25KB de MEMORY.md, lo que sea menor, se cargan al inicio de cada sesión.80* **[Auto memory](/docs/es/memory#auto-memory).** Aprendizajes que Claude guarda automáticamente mientras trabaja, como sus preferencias. Las primeras 200 líneas o 25KB de MEMORY.md, lo que sea menor, se cargan al inicio de cada sesión.

81* **Extensiones que configure.** [Servidores MCP](/docs/es/mcp) para servicios externos, [skills](/docs/es/skills) para flujos de trabajo, [subagentes](/docs/es/sub-agents) para trabajo delegado y [Claude en Chrome](/docs/es/chrome) para interacción del navegador.81* **Extensiones que configure.** [Servidores MCP](/docs/es/mcp) para servicios externos, [skills](/docs/es/skills) para flujos de trabajo, [subagentes](/docs/es/sub-agents) para trabajo delegado y [Claude en Chrome](/docs/es/chrome) para interacción del navegador.

82 82 

keybindings.md +3 −2

Details

299| :- | :- | :- |299| :- | :- | :- |

300| `footer:next` | Right | Siguiente elemento de pie de página |300| `footer:next` | Right | Siguiente elemento de pie de página |

301| `footer:previous` | Left | Elemento de pie de página anterior |301| `footer:previous` | Left | Elemento de pie de página anterior |

302| `footer:up` | Up | Navegar hacia arriba en el pie de página (deselecciona en la parte superior) |302| `footer:up` | Up, Ctrl+P | Navegar hacia arriba en el pie de página (deselecciona en la parte superior) |

303| `footer:down` | Down | Navegar hacia abajo en el pie de página |303| `footer:down` | Down, Ctrl+N | Navegar hacia abajo en el pie de página |

304| `footer:openSelected` | Enter | Abrir elemento de pie de página seleccionado |304| `footer:openSelected` | Enter | Abrir elemento de pie de página seleccionado |

305| `footer:clearSelection` | Escape | Borrar selección de pie de página |305| `footer:clearSelection` | Escape | Borrar selección de pie de página |

306| `footer:close` | x | Detener el [agente](/docs/es/sub-agents#observe-and-steer-running-forks) o [flujo de trabajo](/docs/es/workflows#manage-runs) seleccionado, o descartar su fila si ya no se está ejecutando |

306| `footer:dismiss` | (sin asignar) | Vincular una tecla a esta acción no tiene efecto, y un `keybindings.json` que la nombra sigue siendo válido. Antes de v2.1.281, Backspace y Delete estaban vinculados a ella y descartaban el enlace de artefacto seleccionado del pie de página. |307| `footer:dismiss` | (sin asignar) | Vincular una tecla a esta acción no tiene efecto, y un `keybindings.json` que la nombra sigue siendo válido. Antes de v2.1.281, Backspace y Delete estaban vinculados a ella y descartaban el enlace de artefacto seleccionado del pie de página. |

307 308 

308Mientras se selecciona un elemento de pie de página, como una fila en el panel de agente debajo de la indicación, `Enter` lo abre incluso cuando reasigna `Enter` en el contexto `Chat` a `chat:queueSubmit` o `chat:newline`.309Mientras se selecciona un elemento de pie de página, como una fila en el panel de agente debajo de la indicación, `Enter` lo abre incluso cuando reasigna `Enter` en el contexto `Chat` a `chat:queueSubmit` o `chat:newline`.

Details

216* **Distribuida por un administrador**: si su organización ha [implementado la configuración](/docs/es/llm-gateway-rollout#distribute-through-managed-settings), la aplicación de escritorio se enruta a través de la puerta de enlace sin configuración de su parte216* **Distribuida por un administrador**: si su organización ha [implementado la configuración](/docs/es/llm-gateway-rollout#distribute-through-managed-settings), la aplicación de escritorio se enruta a través de la puerta de enlace sin configuración de su parte

217* **Configurada localmente**: para dispositivos sin una configuración distribuida por administrador, abra Help → Troubleshooting → Enable Developer Mode, que reinicia la aplicación con un menú Developer. Luego abra Developer → Configure Third-Party Inference e ingrese su URL base de puerta de enlace. Una configuración distribuida por administrador tiene prioridad y hace que este formulario sea de solo lectura217* **Configurada localmente**: para dispositivos sin una configuración distribuida por administrador, abra Help → Troubleshooting → Enable Developer Mode, que reinicia la aplicación con un menú Developer. Luego abra Developer → Configure Third-Party Inference e ingrese su URL base de puerta de enlace. Una configuración distribuida por administrador tiene prioridad y hace que este formulario sea de solo lectura

218 218 

219Con la configuración de puerta de enlace activa, la aplicación de escritorio ejecuta sesiones solo en su máquina local: el selector de entorno no ofrece sesiones SSH ni entornos en la nube alojados por Anthropic, y [Remote Control](/docs/es/remote-control) no está disponible. Para usar Claude Code en un host remoto a través de la puerta de enlace, ejecute la CLI en ese host con [`ANTHROPIC_BASE_URL` y la credencial de puerta de enlace](#set-the-base-url-and-credential) establecidas allí.219Con la configuración del gateway activa, el selector de entorno no ofrece entornos en la nube alojados por Anthropic, y [Remote Control](/docs/es/remote-control) no está disponible.

220 

221Las sesiones SSH están en beta con una configuración de gateway y requieren Claude Desktop v1.40609.0 o posterior. Antes de conectarte, revisa la lista de permitidos y la dirección del gateway:

222 

223* **Hosts permitidos**: las sesiones SSH están desactivadas de forma predeterminada. Para activarlas, tú o tu administrador deben incluir los hosts permitidos en la clave [`sshHostAllowlist`](https://claude.com/docs/third-party/claude-desktop/configuration#sshhostallowlist) de la configuración de inferencia de terceros

224* **Dirección del gateway**: la máquina remota se conecta directamente al gateway, por lo que un gateway en `localhost` en tu computadora no funciona para sesiones SSH

225 

226Consulta [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions). También puedes ejecutar la CLI en el host remoto con [`ANTHROPIC_BASE_URL` y la credencial del gateway](#set-the-base-url-and-credential) establecidas allí.

220 227 

221Si la aplicación de escritorio muestra `Gateway was unreachable`, la aplicación no pudo alcanzar la URL base configurada al iniciar; compruebe la URL y la ruta de red con la [prueba de curl anterior](#verify-the-connection).228Si la aplicación de escritorio muestra `Gateway was unreachable`, la aplicación no pudo alcanzar la URL base configurada al iniciar; compruebe la URL y la ruta de red con la [prueba de curl anterior](#verify-the-connection).

222 229 

managed-mcp.md +17 −5

Details

347 Cómo coinciden las entradas `serverUrl`347 Cómo coinciden las entradas `serverUrl`

348</h4>348</h4>

349 349 

350Las URL admiten comodines `*` en cualquier lugar del patrón, incluido el esquema. La coincidencia del nombre de host no distingue entre mayúsculas y minúsculas e ignora un punto FQDN final, por lo que `https://Mcp.Example.com/*` coincide con `https://mcp.example.com/api`. Las rutas siguen distinguiendo entre mayúsculas y minúsculas.350Las URL admiten comodines `*`, incluido `*` como esquema completo. La coincidencia del nombre de host no distingue entre mayúsculas y minúsculas e ignora un punto FQDN final, por lo que `https://Mcp.Example.com/*` coincide con `https://mcp.example.com/api`. Las rutas siguen distinguiendo entre mayúsculas y minúsculas. Si no indicas un puerto, la forma en que escribes el nombre de host decide si el patrón coincide solo con el puerto predeterminado del esquema o con todos los puertos:

351 

352* **Nombre de host escrito completo**: solo el puerto predeterminado, 443 para `https` y 80 para `http`

353* **Nombre de host con un `*`**: todos los puertos

351 354 

352La tabla muestra lo que permiten los patrones comunes:355La tabla muestra lo que permiten los patrones comunes:

353 356 

354| Patrón | Permite |357| Patrón | Permite |

355| :- | :- |358| :- | :- |

356| `https://mcp.example.com/*` | Todas las rutas en un dominio específico |359| `https://mcp.example.com/*` | Todas las rutas en un dominio específico, solo en el puerto 443 |

357| `https://mcp.example.com` | También todas las rutas en ese dominio. Un patrón sin ruta coincide con cualquier ruta |360| `https://mcp.example.com` | También todas las rutas en ese dominio, solo en el puerto 443. Un patrón sin ruta coincide con cualquier ruta |

358| `https://*.example.com/*` | Cualquier subdominio de `example.com` |361| `https://mcp.example.com:8443/*` | Todas las rutas en ese dominio, solo en el puerto 8443 |

362| `https://mcp.example.com:*/*` | Todas las rutas en ese dominio, en cualquier puerto, incluido el 443 |

363| `https://*.example.com/*` | Cualquier subdominio de `example.com`, en cualquier puerto |

359| `http://localhost:*/*` | Cualquier puerto en localhost |364| `http://localhost:*/*` | Cualquier puerto en localhost |

360| `*://mcp.example.com/*` | Cualquier esquema a un dominio específico |365| `*://mcp.example.com/*` | Cualquier esquema a un dominio específico, cada esquema solo en su puerto predeterminado |

366 

367Las entradas de `deniedMcpServers` coinciden con los puertos de la misma manera, así que elige una entrada para `staging.example.com` según los puertos y esquemas que necesites bloquear:

368 

369* `https://staging.example.com/*`: bloquea los servidores `https` en ese host solo en el puerto 443, por lo que no bloquea un servidor en `https://staging.example.com:8443/api`

370* `https://staging.example.com:*/*`: bloquea los servidores `https` en ese host en todos los puertos

371* `*://staging.example.com:*/*`: bloquea ese host con cualquier esquema y en cualquier puerto

361 372 

362<h4 id="how-policy-entries-expand">373<h4 id="how-policy-entries-expand">

363 Variables de entorno en las entradas `serverCommand` y `serverUrl`374 Variables de entorno en las entradas `serverCommand` y `serverUrl`


529 | :- | :- |540 | :- | :- |

530 | Servidor HTTP en `https://mcp.example.com/api` | Permitido: coincide con patrón de URL de lista de permitidos, sin coincidencia de lista de bloqueados |541 | Servidor HTTP en `https://mcp.example.com/api` | Permitido: coincide con patrón de URL de lista de permitidos, sin coincidencia de lista de bloqueados |

531 | Servidor HTTP en `https://staging.example.com/api` | Bloqueado: coincide con ambos, pero la lista de bloqueados tiene prioridad |542 | Servidor HTTP en `https://staging.example.com/api` | Bloqueado: coincide con ambos, pero la lista de bloqueados tiene prioridad |

543 | Servidor HTTP en `https://staging.example.com:8443/api` | Permitido: coincide con patrón de URL de la lista de permitidos, [sin coincidencia en la lista de denegados en este puerto](#how-serverurl-entries-match) |

532 | Servidor HTTP en `https://other.com/mcp` | Bloqueado: no coincide con la lista de permitidos |544 | Servidor HTTP en `https://other.com/mcp` | Bloqueado: no coincide con la lista de permitidos |

533</Accordion>545</Accordion>

534 546 

memory.md +9 −9

Details

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.3> Use this file to discover all available pages before exploring further.

4 4 

5# Cómo Claude recuerda su proyecto5# Cómo Claude recuerda tu proyecto

6 6 

7> Proporcione a Claude instrucciones persistentes con archivos CLAUDE.md o AGENTS.md, y permita que Claude acumule aprendizajes automáticamente con auto memory.7> Dale a Claude instrucciones persistentes con archivos CLAUDE.md o AGENTS.md, y deja que Claude acumule aprendizajes automáticamente con la memoria automática.

8 8 

9Cada sesión de Claude Code comienza con una ventana de contexto nueva. Dos mecanismos llevan el conocimiento entre sesiones:9Cada sesión de Claude Code comienza con una ventana de contexto nueva. Dos mecanismos transmiten conocimiento entre sesiones:

10 10 

11* **Archivos CLAUDE.md**: instrucciones que usted escribe para dar a Claude contexto persistente. Claude también puede leer archivos [`AGENTS.md`](#agents-md) de un repositorio, por sí solos o junto con CLAUDE.md11* **Archivos CLAUDE.md**: instrucciones que escribes para darle a Claude contexto persistente. Claude también puede leer los [archivos `AGENTS.md`](#agents-md) de un repositorio en lugar de CLAUDE.md

12* **Auto memory**: notas que Claude escribe por sí mismo basadas en sus correcciones y preferencias12* **Memoria automática**: notas que Claude escribe por sí mismo basándose en tus correcciones y preferencias

13 13 

14Esta página cubre cómo:14Esta página explica cómo:

15 15 

16* [Escribir y organizar archivos CLAUDE.md](#claude-md-files)16* [Escribir y organizar archivos CLAUDE.md](#claude-md-files)

17* [Usar un AGENTS.md existente](#agents-md) como sus instrucciones de proyecto, por sí solo o junto con CLAUDE.md17* [Usar un AGENTS.md existente](#agents-md) como las instrucciones de tu proyecto

18* [Limitar reglas a tipos de archivo específicos](#organize-rules-with-claude/rules/) con `.claude/rules/`18* [Limitar reglas a tipos de archivo específicos](#organize-rules-with-claude/rules/) con `.claude/rules/`

19* [Configurar auto memory](#auto-memory) para que Claude tome notas automáticamente19* [Configurar la memoria automática](#auto-memory) para que Claude tome notas automáticamente

20* [Solucionar problemas](#troubleshoot-memory-issues) cuando las instrucciones no se siguen20* [Solucionar problemas](#troubleshoot-memory-issues) cuando no se siguen las instrucciones

21 21 

22<h2 id="claude-md-vs-auto-memory">22<h2 id="claude-md-vs-auto-memory">

23 CLAUDE.md vs auto memory23 CLAUDE.md vs auto memory

Details

551* **Configuración administrada por el servidor**: agréguelas al bloque `env` de la [configuración administrada por el servidor](/docs/es/server-managed-settings) de su organización. Claude Code obtiene esa configuración al iniciarse dondequiera que [se aplique la configuración administrada por el servidor](/docs/es/model-config#surface-coverage), lo que incluye las máquinas de sus usuarios y las sesiones en la nube que no sean sesiones del canal Claude Tag. Las sesiones de Claude Tag no reciben su configuración administrada por el servidor, por lo que esta ruta no las configura.551* **Configuración administrada por el servidor**: agréguelas al bloque `env` de la [configuración administrada por el servidor](/docs/es/server-managed-settings) de su organización. Claude Code obtiene esa configuración al iniciarse dondequiera que [se aplique la configuración administrada por el servidor](/docs/es/model-config#surface-coverage), lo que incluye las máquinas de sus usuarios y las sesiones en la nube que no sean sesiones del canal Claude Tag. Las sesiones de Claude Tag no reciben su configuración administrada por el servidor, por lo que esta ruta no las configura.

552* **Las variables del entorno**: agréguelas a las [variables de entorno](/docs/es/cloud-environments#set-environment-variables) de un entorno en la nube para configurar solo las sesiones que se ejecutan en ese entorno. Esta es la ruta que llega a las sesiones de Claude Tag.552* **Las variables del entorno**: agréguelas a las [variables de entorno](/docs/es/cloud-environments#set-environment-variables) de un entorno en la nube para configurar solo las sesiones que se ejecutan en ese entorno. Esta es la ruta que llega a las sesiones de Claude Tag.

553 553 

554Cualquiera que use un entorno puede leer sus variables, así que no coloque una credencial allí, como un token de recopilador en `OTEL_EXPORTER_OTLP_HEADERS`. Una [credencial de API](/docs/es/cloud-environments#add-api-credentials) en el entorno tampoco ayuda, porque la exportación de telemetría propia de Claude Code es una de las [solicitudes que nunca obtienen la credencial](/docs/es/cloud-environments#requests-that-never-get-the-credential). Si su recopilador requiere una credencial, configure toda la exportación a través de la configuración administrada por el servidor en su lugar, porque cuando establece una credencial allí, [Claude Code elimina las variables de punto final establecidas fuera de la configuración administrada](#how-managed-settings-lock-the-otlp-destination).554Cualquiera que use un entorno puede leer sus variables, así que no coloques una credencial allí, como un token de recopilador en `OTEL_EXPORTER_OTLP_HEADERS`. Un [secreto de red](/docs/es/cloud-environments#add-api-credentials) en el entorno tampoco ayuda, porque la exportación de telemetría propia de Claude Code es una de las [solicitudes que nunca obtienen el secreto](/docs/es/cloud-environments#requests-that-never-get-the-credential). Si tu recopilador requiere una credencial, configura toda la exportación a través de la configuración administrada por el servidor en su lugar, porque cuando estableces una credencial allí, [Claude Code elimina las variables de endpoint establecidas fuera de la configuración administrada](#how-managed-settings-lock-the-otlp-destination).

555 555 

556Tenga en cuenta estas restricciones cuando configure la telemetría para sesiones en la nube:556Tenga en cuenta estas restricciones cuando configure la telemetría para sesiones en la nube:

557 557 

overview.md +7 −5

Details

28 curl -fsSL https://claude.ai/install.sh | bash28 curl -fsSL https://claude.ai/install.sh | bash

29 ```29 ```

30 30 

31 En Windows, tu prompt muestra `PS C:\` cuando estás en PowerShell y `C:\` sin el `PS` cuando estás en CMD.

32 

31 **Windows PowerShell:**33 **Windows PowerShell:**

32 34 

33 ```powershell theme={null}35 ```powershell theme={null}


42 44 

43 Cuando el instalador termine, abra una nueva ventana de terminal y ejecute `claude --version`. Una instalación que funciona correctamente imprime un número de versión. Si su shell dice que `claude` no se encuentra o no se reconoce, el directorio de instalación aún no está en su PATH: consulte [Corrija su PATH](/docs/es/troubleshoot-install#command-not-found-claude-after-installation).45 Cuando el instalador termine, abra una nueva ventana de terminal y ejecute `claude --version`. Una instalación que funciona correctamente imprime un número de versión. Si su shell dice que `claude` no se encuentra o no se reconoce, el directorio de instalación aún no está en su PATH: consulte [Corrija su PATH](/docs/es/troubleshoot-install#command-not-found-claude-after-installation).

44 46 

45 Si ve `The token '&&' is not a valid statement separator`, está en PowerShell, no en CMD. Si ve `'irm' is not recognized as an internal or external command`, está en CMD, no en PowerShell. Su símbolo del sistema muestra `PS C:\` cuando está en PowerShell y `C:\` sin el `PS` cuando está en CMD.47 Si ves `The token '&&' is not a valid statement separator`, estás en PowerShell, no en CMD. Si ves `'irm' is not recognized as an internal or external command`, estás en CMD, no en PowerShell.

46 48 

47 Si el comando de instalación falla con `syntax error near unexpected token '<'`, un `403`, u otro error de curl, consulte [Solucionar problemas de instalación](/docs/es/troubleshoot-install#find-your-error) para hacer coincidir el error con una solución y para conocer métodos de instalación alternativos.49 Si el comando de instalación falla con `syntax error near unexpected token '<'`, un `403` o cualquier otro error, consulta [Solucionar problemas de instalación](/docs/es/troubleshoot-install#find-your-error) para hacer coincidir el error con una solución y para conocer métodos de instalación alternativos.

48 50 

49 Se recomienda [Git for Windows](https://git-scm.com/downloads/win) en Windows nativo para que Claude Code pueda utilizar la herramienta Bash. Si Git for Windows no está instalado, Claude Code utiliza PowerShell como herramienta de shell en su lugar. Las configuraciones de WSL no necesitan Git for Windows.51 Se recomienda [Git for Windows](https://git-scm.com/downloads/win) en Windows nativo para que Claude Code pueda utilizar la herramienta Bash. Si Git for Windows no está instalado, Claude Code utiliza PowerShell como herramienta de shell en su lugar. Las configuraciones de WSL no necesitan Git for Windows.

50 52 


85 claude87 claude

86 ```88 ```

87 89 

88 Se te pedirá que inicies sesión en el primer uso. Si has establecido la variable de entorno `ANTHROPIC_API_KEY`, Claude Code omite la solicitud de inicio de sesión y te pide que apruebes la clave en su lugar. ¡Eso es todo! [Continúa con la Guía de inicio rápido →](/docs/es/quickstart)90 Claude Code te pide que inicies sesión en el primer uso. Si estableciste la variable de entorno `ANTHROPIC_API_KEY` y apruebas la clave cuando Claude Code te pregunta si quieres usarla, Claude Code omite la solicitud de inicio de sesión. [Continúa con la Guía de inicio rápido →](/docs/es/quickstart)

89 91 

90 <Tip>92 <Tip>

91 Consulta [configuración avanzada](/docs/es/setup) para opciones de instalación, actualizaciones manuales o instrucciones de desinstalación. Visita [solución de problemas de instalación](/docs/es/troubleshoot-install) si encuentras problemas.93 Consulta [configuración avanzada](/docs/es/setup) para opciones de instalación, actualizaciones manuales o instrucciones de desinstalación. Visita [solución de problemas de instalación](/docs/es/troubleshoot-install) si encuentras problemas.


167 </Accordion>169 </Accordion>

168 170 

169 <Accordion title="Conecta tus herramientas con MCP" icon="plug">171 <Accordion title="Conecta tus herramientas con MCP" icon="plug">

170 El [Protocolo de Contexto de Modelo (MCP)](/docs/es/mcp) es un estándar abierto para conectar herramientas de IA a fuentes de datos externas. Con MCP, Claude Code puede leer tus documentos de diseño en Google Drive, actualizar tickets en Jira, extraer datos de Slack o usar tu propia herramienta personalizada. El [inicio rápido de MCP](/docs/es/mcp-quickstart) conecta tu primer servidor de extremo a extremo.172 El [Model Context Protocol (MCP)](/docs/es/mcp) es un estándar abierto para conectar herramientas de IA a fuentes de datos externas. Con MCP, Claude Code puede leer tus documentos de diseño en Google Drive, actualizar tickets en Jira, extraer datos de Slack o usar tu propia herramienta personalizada. El [inicio rápido de MCP](/docs/es/mcp-quickstart) conecta tu primer servidor de extremo a extremo.

171 </Accordion>173 </Accordion>

172 174 

173 <Accordion title="Personaliza con instrucciones, skills y hooks" icon="sliders">175 <Accordion title="Personaliza con instrucciones, skills y hooks" icon="sliders">

174 [`CLAUDE.md`](/docs/es/memory) es un archivo markdown que añades a la raíz de tu proyecto que Claude Code lee al inicio de cada sesión. Úsalo para establecer estándares de codificación, decisiones de arquitectura, librerías preferidas y listas de verificación de revisión. Si tu repositorio ya tiene un `AGENTS.md` para otros agentes de codificación, Claude Code [puede leerlo](/docs/es/memory#agents-md) por su cuenta o junto con `CLAUDE.md`. Claude también construye [memoria automática](/docs/es/memory#auto-memory) mientras trabaja, guardando aprendizajes en sesiones sin que escribas nada.176 [`CLAUDE.md`](/docs/es/memory) es un archivo markdown que añades a la raíz de tu proyecto que Claude Code lee al inicio de cada sesión. Úsalo para establecer estándares de codificación, decisiones de arquitectura, librerías preferidas y listas de verificación de revisión. Si tu repositorio ya tiene un `AGENTS.md` para otros agentes de codificación, Claude Code [puede leerlo](/docs/es/memory#agents-md) en lugar de un `CLAUDE.md`. Claude también crea [memoria automática](/docs/es/memory#auto-memory) mientras trabaja, guardando aprendizajes en sesiones sin que escribas nada.

175 177 

176 Crea [skills](/docs/es/skills) para empaquetar flujos de trabajo repetibles que tu equipo pueda compartir, como `/review-pr` o `/deploy-staging`.178 Crea [skills](/docs/es/skills) para empaquetar flujos de trabajo repetibles que tu equipo pueda compartir, como `/review-pr` o `/deploy-staging`.

177 179 

plugin-evals.md +20 −18

Details

62Los dos conjuntos de ejecuciones se llaman el brazo con y el brazo sin; [Comparar con una línea base sin plugin](#compare-against-a-no-plugin-baseline) cubre qué casos ejecutan solo el brazo con y cómo se califican los calificadores en ambos brazos.62Los dos conjuntos de ejecuciones se llaman el brazo con y el brazo sin; [Comparar con una línea base sin plugin](#compare-against-a-no-plugin-baseline) cubre qué casos ejecutan solo el brazo con y cómo se califican los calificadores en ambos brazos.

63 63 

64<h2 id="create-your-first-eval-suite">64<h2 id="create-your-first-eval-suite">

65 Cree su primer conjunto de eval65 Crea tu primer conjunto de eval

66</h2>66</h2>

67 67 

68Este tutorial escribe un caso para su propio plugin, lo ejecuta, y lee el resultado. Antes de comenzar, asegúrese de tener:68Este tutorial escribe un caso para tu propio plugin, lo ejecuta y lee el resultado. Antes de comenzar, asegúrate de tener:

69 69 

70* Claude Code v2.1.269 o posterior y los otros [requisitos](#requirements)70* Claude Code v2.1.269 o posterior y los otros [requisitos](#requirements)

71* Una terminal abierta en el directorio raíz de su plugin, el que contiene `plugin.json` o `.claude-plugin/plugin.json`71* Una terminal abierta en el directorio raíz de tu plugin, el que contiene `plugin.json` o `.claude-plugin/plugin.json`

72* Un skill en el plugin que desea probar, y una solicitud que un usuario escribiría que debería activarlo72* Un skill en el plugin que quieras probar, y una solicitud que un usuario escribiría que debería activarlo

73 73 

74<Steps>74<Steps>

75 <Step title="Crear los casos">75 <Step title="Crear los casos">

76 Desde la raíz del plugin, ejecute:76 Desde la raíz del plugin, ejecuta:

77 77 

78 ```bash theme={null}78 ```bash theme={null}

79 claude plugin eval init79 claude plugin eval init

80 ```80 ```

81 81 

82 Si Claude Code aún no confía en este directorio, primero pregunta `Trust this plugin directory?`; responda `y`.82 Si Claude Code aún no confía en este directorio, primero pregunta `Trust this plugin directory?`; responde `y`.

83 83 

84 Luego se abre una sesión interactiva de Claude Code. Claude lee su plugin y le pregunta qué se vería bien, propone prompts que deberían y no deberían activar el plugin, diseña calificadores para cada uno, los prueba una vez para verificar que se comportan, y escribe un directorio de caso por prompt bajo `evals/`, cada uno nombrado según su prompt. Cuando Claude le dice que el conjunto está listo, salga de esa sesión con `/exit` o Ctrl+D para volver a su shell.84 Luego se abre una sesión interactiva de Claude Code. Claude lee tu plugin y te pregunta cómo se ve un buen resultado, propone prompts que deberían y no deberían activar el plugin, diseña calificadores para cada uno, los ejecuta una vez como prueba para verificar que se comportan bien, y escribe un directorio de caso por prompt bajo `evals/`, cada uno nombrado según su prompt.

85 85 

86 Si ya tiene una sesión de Claude Code abierta en la raíz del plugin, puede pedirle a Claude que ejecute `claude plugin eval init`. Claude ejecuta el comando y luego le hace las mismas preguntas en esa conversación.86 Cuando Claude te diga que el conjunto está listo, sal de esa sesión con `/exit` o Ctrl+D para volver a tu shell.

87 87 

88 Si prefiere escribir un caso usted mismo para ver exactamente qué contienen los archivos, siga [Escribir un caso a mano](#write-a-case-manually) y vuelva aquí para ejecutarlo.88 Si ya tienes una sesión de Claude Code abierta en la raíz del plugin, puedes pedirle a Claude en esa sesión que ejecute `claude plugin eval init`. Claude ejecuta el comando y luego te hace las mismas preguntas en esa conversación.

89 

90 Si prefieres escribir un caso tú mismo para ver exactamente qué contienen los archivos, sigue [Escribir un caso a mano](#write-a-case-manually) y vuelve aquí para ejecutarlo.

89 </Step>91 </Step>

90 92 

91 <Step title="Ejecutar el conjunto">93 <Step title="Ejecutar el conjunto">

92 De vuelta en su shell en la raíz del plugin, ejecute cada caso bajo `evals/`:94 De vuelta en tu shell en la raíz del plugin, ejecuta cada caso bajo `evals/`:

93 95 

94 ```bash theme={null}96 ```bash theme={null}

95 claude plugin eval .97 claude plugin eval .

96 ```98 ```

97 99 

98 Ya confió en este directorio durante el paso 1, así que la ejecución comienza inmediatamente. Si escribió el caso a mano en su lugar, la ejecución primero pregunta `Trust this plugin directory? [y/N]`; responda `y`. [Lo que una ejecución puede acceder](#security) explica a qué está accediendo.100 Ya confiaste en este directorio durante el paso 1, así que la ejecución comienza inmediatamente. Si en su lugar escribiste el caso a mano, la ejecución primero pregunta `Trust this plugin directory? [y/N]`; responde `y`. [A qué puede acceder una ejecución](#security) explica lo que estás aceptando.

99 101 

100 Cada caso se ejecuta tres veces con su plugin y tres veces sin él, así que un caso es seis ejecuciones. Una línea de progreso se imprime cuando cada ejecución termina, con la puntuación de esa ejecución y el veredicto de cada calificador.102 Cada caso se ejecuta tres veces con tu plugin y tres veces sin él, así que un caso son seis ejecuciones. Se imprime una línea de progreso cuando termina cada ejecución, con la puntuación de esa ejecución y el veredicto de cada calificador.

101 </Step>103 </Step>

102 104 

103 <Step title="Leer el resumen">105 <Step title="Leer el resumen">

104 Cuando el conjunto termina ve una tabla de resumen, seguida de dónde fue el informe:106 Cuando el conjunto termina ves una tabla de resumen, seguida de dónde quedó el informe:

105 107 

106 ```text theme={null}108 ```text theme={null}

107 CASE WITH W/OUT Δ RUNS COST NOTES109 CASE WITH W/OUT Δ RUNS COST NOTES


112 Published: https://claude.ai/... · keep local next time with --no-publish114 Published: https://claude.ai/... · keep local next time with --no-publish

113 ```115 ```

114 116 

115 `WITH` es la puntuación del caso con su plugin cargado, `W/OUT` es la puntuación sin él, y un `Δ` positivo significa que el plugin aumentó la puntuación. `COST` es una estimación de precio de lista de las llamadas de modelo, y `NOTES` muestra la explicación del calificador que falla con mayor peso, o el error de la ejecución, del brazo con.117 `WITH` es la puntuación del caso con tu plugin cargado, `W/OUT` es la puntuación sin él, y un `Δ` positivo significa que el plugin aumentó la puntuación. `COST` es una estimación a precio de lista de las llamadas al modelo, y `NOTES` muestra la explicación del calificador fallido de mayor peso, o el error de la ejecución, del brazo con el plugin.

116 </Step>118 </Step>

117 119 

118 <Step title="Abrir el informe e iterar">120 <Step title="Abrir el informe e iterar">

119 Abra la URL `Published:`, o la ruta `Report:` cuando no aparezca una línea `Published:`, para ver el veredicto de cada calificador y la explicación para cada ejecución, y para calificadores `llm` los votos del juez y el fragmento que juzgó. La línea `Published:` aparece solo cuando su cuenta puede [publicar informes](#html-report).121 Abre la URL `Published:`, o la ruta `Report:` cuando no aparezca una línea `Published:`, para ver el veredicto y la explicación de cada calificador en cada ejecución, y para los calificadores `llm` los votos del juez y el fragmento que juzgó. La línea `Published:` aparece solo cuando tu cuenta puede [publicar informes](#html-report).

120 122 

121 El hallazgo más común al principio es un `Δ` cerca de cero con el calificador `tool_used: Skill` del caso fallando, lo que significa que Claude no está eligiendo su skill en fraseología natural. Ajuste la [`description`](/docs/es/skills#frontmatter-reference) del skill, ejecute `claude plugin eval .` nuevamente, y compare.123 El hallazgo más común al principio es un `Δ` cercano a cero con el calificador `tool_used: Skill` del caso fallando, lo que significa que Claude no está eligiendo tu skill con una redacción natural. Ajusta la [`description`](/docs/es/skills#frontmatter-reference) del skill, ejecuta `claude plugin eval .` nuevamente y compara.

122 124 

123 Para iterar en un caso de manera económica, ejecute un solo brazo una vez. Una sola ejecución es ruidosa, así que confirme cualquier cambio en las tres ejecuciones predeterminadas antes de confiar en él. Con un brazo la tabla muestra columnas `SCORE` y `PASS%` en lugar de `WITH`, `W/OUT`, y `Δ`:125 Para iterar en un caso con menos ejecuciones, ejecuta un solo brazo una vez. Una sola ejecución es ruidosa, así que confirma cualquier cambio con las tres ejecuciones predeterminadas antes de confiar en él. Con un brazo, la tabla muestra las columnas `SCORE` y `PASS%` en lugar de `WITH`, `W/OUT` y `Δ`:

124 126 

125 ```bash theme={null}127 ```bash theme={null}

126 claude plugin eval . --case <case-name> --runs 1 --ablation none128 claude plugin eval . --case <case-name> --runs 1 --ablation none

127 ```129 ```

128 130 

129 Reemplace `<case-name>` con uno de los nombres de directorio bajo `evals/`.131 Reemplaza `<case-name>` con uno de los nombres de directorio bajo `evals/`.

130 </Step>132 </Step>

131</Steps>133</Steps>

132 134 

Details

733You are a security reviewer. Read the changed files and report injection, authentication, and secrets-handling risks.733You are a security reviewer. Read the changed files and report injection, authentication, and secrets-handling risks.

734```734```

735 735 

736Este agente se llama `my-plugin:security-reviewer`, y el usuario puede [invocarlo explícitamente](/docs/es/sub-agents#invoke-subagents-explicitly) con `@agent-my-plugin:security-reviewer`. La forma del nombre es `<plugin>:<name>`, donde `<name>` viene del frontmatter, o del nombre del archivo cuando no hay ninguno.736Este agente se llama `my-plugin:security-reviewer`, y el usuario puede [invocarlo explícitamente](/docs/es/sub-agents#invoke-subagents-explicitly) con `@agent-my-plugin:security-reviewer`. La forma del nombre es `<plugin>:<name>`, donde `<name>` viene del campo `name` del frontmatter, o del nombre del archivo cuando falta ese campo.

737 737 

738La clave de manifiesto `agents` reemplaza el escaneo de `agents/`.738La clave de manifiesto `agents` reemplaza el escaneo de `agents/`.

739 739 

Details

428 428 

429| Elemento | Qué dibuja | Dónde |429| Elemento | Qué dibuja | Dónde |

430| :- | :- | :- |430| :- | :- | :- |

431| `Box` | Un contenedor flex. Acepta props de diseño como `flexDirection`, `columnGap`, `padding`, `borderStyle` y `width`. | En todas partes |431| `Box` | Un contenedor flex. Acepta props de diseño como `flexDirection`, `columnGap`, `padding`, [`borderStyle`](/docs/es/plugins/mods/reference#box-border-styles) y `width`. | En todas partes |

432| `Text` | Texto con estilo. Acepta `color`, `bold`, `dimColor`, `italic` y `wrap`. Un `color` es una clave del tema o un color como `'red'`. Un `wrap` es `'wrap'`, `'truncate'`, `'truncate-start'`, `'truncate-middle'` o `'truncate-end'`. | En todas partes |432| `Text` | Texto con estilo. Acepta `color`, `bold`, `dimColor`, `italic` y `wrap`. Un `color` es una clave del tema o un color como `'red'`. Un `wrap` es `'wrap'`, `'truncate'`, `'truncate-start'`, `'truncate-middle'` o `'truncate-end'`. | En todas partes |

433| `Button` | Un control que llama a `onPress` | En todas partes |433| `Button` | Un control que llama a `onPress` | En todas partes |

434| `Link`, `Code`, `Markdown` | Un enlace con `href` y una `label` opcional, un bloque de código y texto con el mismo formato que las respuestas de Claude. `Markdown` recibe su contenido en una prop `text`, no en `children`, y necesita una `key` cuando pasas `onLinkPress`. | En todas partes |434| `Link`, `Code`, `Markdown` | Un enlace con `href` y una `label` opcional, un bloque de código y texto con el mismo formato que las respuestas de Claude. `Markdown` recibe su contenido en una prop `text`, no en `children`, y necesita una `key` cuando pasas `onLinkPress`. | En todas partes |


563Muchos paneles son un campo de texto con una lista debajo. El ejemplo de esta sección es un panel de notas: escribes una nota y pulsas Enter para añadirla, y cada nota tiene un botón `x` que la elimina. Con dos notas añadidas, la terminal dibuja el panel así:563Muchos paneles son un campo de texto con una lista debajo. El ejemplo de esta sección es un panel de notas: escribes una nota y pulsas Enter para añadirla, y cada nota tiene un botón `x` que la elimina. Con dos notas añadidas, la terminal dibuja el panel así:

564 564 

565```text theme={null}565```text theme={null}

566╭──────────────────────────────────────────────────────────╮566╭────────────────────────────────────────────────────────✕─╮

567│ Note: Type a note and press Enter ⏎ add ✕ │567│ Note: Type a note and press Enter ⏎ add │

568│ x buy milk │568│ x buy milk │

569│ x call bob │569│ x call bob │

570╰──────────────────────────────────────────────────────────╯570╰──────────────────────────────────────────────────────────╯

571```571```

572 572 

573La `✕` del borde superior es la marca propia de Claude Code para cerrar el panel.

574 

573El ejemplo usa estas técnicas:575El ejemplo usa estas técnicas:

574 576 

575* **Recibir texto escrito**: un `Input` llama a `onSubmit(value)` con el texto del campo cuando el usuario pulsa Enter, y a `onInput(value)` en cada cambio577* **Recibir texto escrito**: un `Input` llama a `onSubmit(value)` con el texto del campo cuando el usuario pulsa Enter, y a `onInput(value)` en cada cambio

Details

242Para ajustar un árbol a su punto de renderizado, lee estas props en el hook:242Para ajustar un árbol a su punto de renderizado, lee estas props en el hook:

243 243 

244* **Ancho de un `Pane` o de la banda**: dibuja según `e.props.bodyColumns`244* **Ancho de un `Pane` o de la banda**: dibuja según `e.props.bodyColumns`

245* **Altura de un `Pane` junto a la transcripción**: cuando `e.props.placement` es `'dock'`, `e.props.scroll.bodyRows` es el número de filas que tiene el panel245* **Altura de un `Pane` junto a la transcripción**: cuando `e.props.placement` es `'dock'`, `e.props.scroll.bodyRows` es el número de filas que tiene el panel para tu árbol

246* **Altura de un `Pane` encima del prompt**: cuando `e.props.placement` es `'inline'`, el panel crece con tu árbol hasta un límite, y `bodyRows` es ese límite. El [campo `rows` de `$.ui.open`](/docs/es/plugins/mods/interface#open-a-pane-at-the-right-time) solicita un límite distinto.246* **Altura de un `Pane` encima del prompt**: cuando `e.props.placement` es `'inline'`, el panel crece con tu árbol hasta un límite, y `bodyRows` es ese límite. El [campo `rows` de `$.ui.open`](/docs/es/plugins/mods/interface#open-a-pane-at-the-right-time) solicita un límite distinto.

247 247 

248Un árbol más alto que el panel se desplaza como un todo.248Un árbol más alto que el panel se desplaza como un todo.


255 255 

256| Elemento | Props principales | Terminal | Escritorio |256| Elemento | Props principales | Terminal | Escritorio |

257| :- | :- | :-: | :-: |257| :- | :- | :-: | :-: |

258| [`Box`](/docs/es/plugins/mods/interface#build-a-tree-from-elements) | `key`, diseño flex, `gap`, `padding`, `margin`, `width`, `height`, `borderStyle`, `backgroundColor`, `position`, `hover` | ✓ | ✓ |258| [`Box`](/docs/es/plugins/mods/interface#build-a-tree-from-elements) | `key`, diseño flex, `gap`, `padding`, `margin`, `width`, `height`, [`borderStyle`](#box-border-styles), `backgroundColor`, `position`, `hover` | ✓ | ✓ |

259| [`Text`](/docs/es/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, `bold`, `italic`, `underline`, `dimColor`, `inverse`, `wrap` | ✓ | ✓ |259| [`Text`](/docs/es/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, `bold`, `italic`, `underline`, `dimColor`, `inverse`, `wrap` | ✓ | ✓ |

260| [`Button`](/docs/es/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action` | ✓ | ✓ |260| [`Button`](/docs/es/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action` | ✓ | ✓ |

261| `Link` | `href`, `label` | ✓ | ✓ |261| `Link` | `href`, `label` | ✓ | ✓ |


270 270 

271Más reglas de `Button`: `action` nombra una de las propias [acciones de atajos de teclado](/docs/es/keybindings) de Claude Code, y el atajo del usuario para ella presiona el botón cuando ese atajo es un acorde o una tecla con modificador. Un `hotkey` de dígito en un botón de la banda también se activa cuando el usuario escribe solo ese dígito en un prompt vacío y hace una pausa. Cuando dos botones de un mismo dibujo nombran el mismo `hotkey`, el último se queda con él. `autoFocus` solo acepta `true` en cualquier control, así que omite la prop para dejarla desactivada.271Más reglas de `Button`: `action` nombra una de las propias [acciones de atajos de teclado](/docs/es/keybindings) de Claude Code, y el atajo del usuario para ella presiona el botón cuando ese atajo es un acorde o una tecla con modificador. Un `hotkey` de dígito en un botón de la banda también se activa cuando el usuario escribe solo ese dígito en un prompt vacío y hace una pausa. Cuando dos botones de un mismo dibujo nombran el mismo `hotkey`, el último se queda con él. `autoFocus` solo acepta `true` en cualquier control, así que omite la prop para dejarla desactivada.

272 272 

273<h3 id="box-border-styles">

274 Estilos de borde de `Box`

275</h3>

276 

277Para dibujar un borde alrededor de un `Box`, establece su `borderStyle` en uno de estos nombres, como en `borderStyle: 'round'`. Cada fila indica lo que dibuja la terminal para ese nombre y muestra el borde superior.

278 

279| `borderStyle` | Lo que dibuja la terminal | Borde superior |

280| :- | :- | :- |

281| `'single'` | Líneas finas con esquinas cuadradas | `┌──┐` |

282| `'double'` | Líneas dobles | `╔══╗` |

283| `'round'` | Líneas finas con esquinas redondeadas | `╭──╮` |

284| `'bold'` | Líneas gruesas | `┏━━┓` |

285| `'singleDouble'` | Líneas finas arriba y abajo, líneas dobles en los lados | `╓──╖` |

286| `'doubleSingle'` | Líneas dobles arriba y abajo, líneas finas en los lados | `╒══╕` |

287| `'classic'` | Los caracteres ASCII `+`, `-` y `\|` | `+--+` |

288| `'arrow'` | Flechas que apuntan hacia el interior del `Box` | `↘↓↓↙` |

289| `'dashed'` | Líneas discontinuas con esquinas en blanco | `╌╌` |

290| `'quote'` | Una barra, `▎`, a lo largo del lado izquierdo y celdas en blanco en los otros tres lados | En blanco |

291 

292Un `Box` cuyo `borderStyle` nombra cualquier otra cosa, como `'rounded'`, se dibuja sin borde.

293 

273<h2 id="limits">294<h2 id="limits">

274 Límites295 Límites

275</h2>296</h2>

Details

15<Note>15<Note>

16 Estos casos se tratan en otras páginas:16 Estos casos se tratan en otras páginas:

17 17 

18 * **Por qué los alcances, la caché y la precedencia se comportan de la manera que lo hacen**: lea [Plugin loading reference](/docs/es/plugins/loading)18 * **Por qué los alcances, la caché y la precedencia se comportan de la manera en que lo hacen**: lee la [referencia de carga de plugins](/docs/es/plugins/loading)

19 * **Buscar un indicador, campo o comando**: use la [plugin commands reference](/docs/es/plugins/cli-reference), la [manifest reference](/docs/es/plugins/manifest-reference), o la [marketplace reference](/docs/es/plugins/marketplace-reference)19 * **Buscar un flag, campo o comando**: usa la [referencia de comandos de plugins](/docs/es/plugins/cli-reference), la [referencia del manifiesto](/docs/es/plugins/manifest-reference) o la [referencia de marketplaces](/docs/es/plugins/marketplace-reference)

20 * **Un mensaje `hooks module not loaded` o `hooks module did not load`**: el plugin es un [mod](/docs/es/plugins/mods/overview), así que lee [El mod no se carga](/docs/es/plugins/mods/troubleshoot#the-mod-doesn’t-load)

20</Note>21</Note>

21 22 

22Busque el mensaje exacto que vio. Cada mensaje se enumera bajo la etapa que lo produce, que no siempre es el comando que ejecutó. Por ejemplo, una instalación puede fallar porque falta un mercado, por lo que ese mensaje está bajo [Add a marketplace](#add-a-marketplace).23Busque el mensaje exacto que vio. Cada mensaje se enumera bajo la etapa que lo produce, que no siempre es el comando que ejecutó. Por ejemplo, una instalación puede fallar porque falta un mercado, por lo que ese mensaje está bajo [Add a marketplace](#add-a-marketplace).

Details

310 310 

311En un plan Pro o Max, cuando reanuda una sesión grande después de un descanso prolongado, Claude Code [ofrece reanudar desde un resumen](/docs/es/sessions#resume-from-a-summary) para que las solicitudes posteriores no lleven el historial completo.311En un plan Pro o Max, cuando reanuda una sesión grande después de un descanso prolongado, Claude Code [ofrece reanudar desde un resumen](/docs/es/sessions#resume-from-a-summary) para que las solicitudes posteriores no lleven el historial completo.

312 312 

313El tiempo de vida (TTL) controla cuánto tiempo la brecha el caché sobrevive. La API ofrece dos: un TTL de cinco minutos, y un [TTL de una hora](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#1-hour-cache-duration) que mantiene el caché activo a través de descansos más largos pero [factura escrituras de caché a una tasa más alta](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing). El TTL más largo ayuda cuando deja una sesión inactiva y vuelve a ella, porque omite el reprocesamiento que cuesta un prefijo expirado. Cuesta más en ráfagas cortas de trabajo que nunca se quedan inactivas más de cinco minutos, donde se aplica la tasa de escritura más alta y la duración de caché más larga no se utiliza.313El tiempo de vida (TTL) controla cuánto tiempo de pausa sobrevive la caché. La API ofrece dos: un TTL de cinco minutos y un [TTL de una hora](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#1-hour-cache-duration) que mantiene la caché activa durante descansos más largos, pero [cobra una tarifa más alta por las escrituras en caché](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing). El TTL más largo ayuda cuando dejas una sesión inactiva y vuelves a ella, porque te ahorras el reprocesamiento que cuesta un prefijo expirado. Cuesta más en ráfagas cortas de trabajo que nunca permanecen inactivas más de cinco minutos, donde se aplica la tarifa de escritura más alta y la mayor duración de la caché no se aprovecha.

314 314 

315<h3 id="which-ttl-each-request-gets">315<h3 id="which-ttl-each-request-gets">

316 Qué TTL obtiene cada solicitud316 Qué TTL obtiene cada solicitud


328| Conversación principal | Una hora | Cinco minutos |328| Conversación principal | Una hora | Cinco minutos |

329| Todo lo demás | Cinco minutos, excepto las solicitudes de ayuda controladas por el servidor, que obtienen una hora | Cinco minutos |329| Todo lo demás | Cinco minutos, excepto las solicitudes de ayuda controladas por el servidor, que obtienen una hora | Cinco minutos |

330 330 

331Una vez que supera el límite de uso de su plan y Claude Code utiliza [créditos de uso](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans), se le factura por ese uso, por lo que Claude Code reduce la conversación principal al TTL de cinco minutos más económico. Para mantener el TTL de una hora allí, [elija el TTL usted mismo](#choose-the-ttl-yourself).331Una vez que superas el límite de uso de tu plan y Claude Code recurre a [créditos de uso](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans), se te factura por ese uso, por lo que Claude Code reduce la conversación principal al TTL de cinco minutos, que cobra una tarifa más baja por las escrituras en caché. Para mantener allí el TTL de una hora, [elige el TTL tú mismo](#choose-the-ttl-yourself).

332 332 

333<h3 id="choose-the-ttl-yourself">333<h3 id="choose-the-ttl-yourself">

334 Elija el TTL usted mismo334 Elija el TTL usted mismo

Details

1342 },1342 },

1343 "review-your-changes-before": {1343 "review-your-changes-before": {

1344 title: "Revisar tus cambios antes de hacer commit",1344 title: "Revisar tus cambios antes de hacer commit",

1345 teaches: "Detecta problemas mientras todavía son baratos de corregir. Claude lee los archivos modificados completos, no solo las líneas del diff, así encuentra problemas que una autorrevisión rápida pasa por alto.",1345 teaches: "Detecta problemas mientras todavía requieren menos trabajo para corregirse. Claude lee los archivos modificados completos, no solo las líneas del diff, así encuentra problemas que una autorrevisión rápida pasa por alto.",

1346 next: "Ejecuta `/code-review` para hacer la misma verificación con un solo comando",1346 next: "Ejecuta `/code-review` para hacer la misma verificación con un solo comando",

1347 prompt: "revisa mis cambios sin commit y señala cualquier cosa que parezca riesgosa antes de hacer commit"1347 prompt: "revisa mis cambios sin commit y señala cualquier cosa que parezca riesgosa antes de hacer commit"

1348 },1348 },

quickstart.md +81 −115

Details

4 4 

5# Inicio rápido5# Inicio rápido

6 6 

7> ¡Bienvenido a Claude Code!7> Instala Claude Code en tu terminal, inicia sesión y usa la CLI para explorar tu base de código y hacer tu primer cambio de código.

8 8 

9Esta guía de inicio rápido le permitirá usar asistencia de codificación impulsada por IA en pocos minutos. Al final, comprenderá cómo usar Claude Code para tareas comunes de desarrollo.9Esta guía de inicio rápido cubre Claude Code en tu terminal: cómo instalar la CLI, iniciar sesión desde tu primera sesión y usarlo para tareas comunes de desarrollo en tu propio proyecto.

10 10 

11<h2 id="before-you-begin">11<h2 id="before-you-begin">

12 Antes de comenzar12 Antes de comenzar

13</h2>13</h2>

14 14 

15Asegúrese de tener:15Asegúrate de tener:

16 16 

17* Una terminal o símbolo del sistema abiertos17* Una terminal o prompt de comandos abiertos

18 * Si nunca ha usado la terminal antes, consulte la [guía de terminal](/docs/es/terminal-guide)

19* Un proyecto de código con el que trabajar18* Un proyecto de código con el que trabajar

20* Una [suscripción a Claude](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_prereq) (Pro, Max, Team o Enterprise), una cuenta de [Claude Console](https://platform.claude.com/), o acceso a través de un [proveedor de nube compatible](/docs/es/third-party-integrations)19* Una [suscripción a Claude](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_prereq) (Pro, Max, Team o Enterprise), una cuenta de [Claude Console](https://platform.claude.com/), o acceso a través de un [proveedor de nube compatible](/docs/es/third-party-integrations)

21 20 

22<Note>21<Note>

23 Esta guía cubre la CLI de terminal. Claude Code también está disponible en la [web](https://claude.ai/code), como una [aplicación de escritorio](/docs/es/desktop), en [VS Code](/docs/es/vs-code) e [IDEs de JetBrains](/docs/es/jetbrains), en [Slack](/docs/es/slack), y en CI/CD con [GitHub Actions](/docs/es/github-actions) y [GitLab](/docs/es/gitlab-ci-cd). Consulte [todas las interfaces](/docs/es/overview#use-claude-code-everywhere).22 Estos casos se tratan en otras páginas:

23 

24 * **Nunca has usado una terminal**: comienza con la [guía de terminal](/docs/es/terminal-guide)

25 * **Quieres usar Claude Code en otro lugar que no sea la terminal**: Claude Code también está disponible en la [web](https://claude.ai/code), como una [aplicación de escritorio](/docs/es/desktop), en [VS Code](/docs/es/vs-code) e [IDEs de JetBrains](/docs/es/jetbrains), en [Slack](/docs/es/slack), y en CI/CD con [GitHub Actions](/docs/es/github-actions) y [GitLab](/docs/es/gitlab-ci-cd). Consulta [todas las interfaces](/docs/es/overview#use-claude-code-everywhere).

24</Note>26</Note>

25 27 

26<h2 id="step-1-install-claude-code">28<h2 id="step-1-install-claude-code">


33 <Tab title="Instalación nativa (recomendado)">35 <Tab title="Instalación nativa (recomendado)">

34 **macOS, Linux, WSL:**36 **macOS, Linux, WSL:**

35 37 

36 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}38 ```bash theme={null}

37 curl -fsSL https://claude.ai/install.sh | bash39 curl -fsSL https://claude.ai/install.sh | bash

38 ```40 ```

39 41 

42 En Windows, tu prompt muestra `PS C:\` cuando estás en PowerShell y `C:\` sin el `PS` cuando estás en CMD.

43 

40 **Windows PowerShell:**44 **Windows PowerShell:**

41 45 

42 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}46 ```powershell theme={null}

43 irm https://claude.ai/install.ps1 | iex47 irm https://claude.ai/install.ps1 | iex

44 ```48 ```

45 49 

46 **Windows CMD:**50 **Windows CMD:**

47 51 

48 ```batch theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}52 ```batch theme={null}

49 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd53 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

50 ```54 ```

51 55 

52 Cuando el instalador termine, abra una nueva ventana de terminal y ejecute `claude --version`. Una instalación que funciona correctamente imprime un número de versión. Si su shell dice que `claude` no se encuentra o no se reconoce, el directorio de instalación aún no está en su PATH: consulte [Corrija su PATH](/docs/es/troubleshoot-install#command-not-found-claude-after-installation).56 Cuando el instalador termine, abra una nueva ventana de terminal y ejecute `claude --version`. Una instalación que funciona correctamente imprime un número de versión. Si su shell dice que `claude` no se encuentra o no se reconoce, el directorio de instalación aún no está en su PATH: consulte [Corrija su PATH](/docs/es/troubleshoot-install#command-not-found-claude-after-installation).

53 57 

54 Si ve `The token '&&' is not a valid statement separator`, está en PowerShell, no en CMD. Si ve `'irm' is not recognized as an internal or external command`, está en CMD, no en PowerShell. Su símbolo del sistema muestra `PS C:\` cuando está en PowerShell y `C:\` sin el `PS` cuando está en CMD.58 Si ves `The token '&&' is not a valid statement separator`, estás en PowerShell, no en CMD. Si ves `'irm' is not recognized as an internal or external command`, estás en CMD, no en PowerShell.

55 59 

56 Si el comando de instalación falla con `syntax error near unexpected token '<'`, un `403`, u otro error de curl, consulte [Solucionar problemas de instalación](/docs/es/troubleshoot-install#find-your-error) para hacer coincidir el error con una solución y para conocer métodos de instalación alternativos.60 Si el comando de instalación falla con `syntax error near unexpected token '<'`, un `403` o cualquier otro error, consulta [Solucionar problemas de instalación](/docs/es/troubleshoot-install#find-your-error) para hacer coincidir el error con una solución y para conocer métodos de instalación alternativos.

57 61 

58 Se recomienda [Git for Windows](https://git-scm.com/downloads/win) en Windows nativo para que Claude Code pueda utilizar la herramienta Bash. Si Git for Windows no está instalado, Claude Code utiliza PowerShell como herramienta de shell en su lugar. Las configuraciones de WSL no necesitan Git for Windows.62 Se recomienda [Git for Windows](https://git-scm.com/downloads/win) en Windows nativo para que Claude Code pueda utilizar la herramienta Bash. Si Git for Windows no está instalado, Claude Code utiliza PowerShell como herramienta de shell en su lugar. Las configuraciones de WSL no necesitan Git for Windows.

59 63 


63 </Tab>67 </Tab>

64 68 

65 <Tab title="Homebrew">69 <Tab title="Homebrew">

66 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}70 ```bash theme={null}

67 brew install --cask claude-code71 brew install --cask claude-code

68 ```72 ```

69 73 


75 </Tab>79 </Tab>

76 80 

77 <Tab title="WinGet">81 <Tab title="WinGet">

78 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}82 ```powershell theme={null}

79 winget install Anthropic.ClaudeCode83 winget install Anthropic.ClaudeCode

80 ```84 ```

81 85 


95 99 

96El comando imprime un número de versión seguido de `(Claude Code)`.100El comando imprime un número de versión seguido de `(Claude Code)`.

97 101 

98<h2 id="step-2-log-in-to-your-account">102<h2 id="step-2-start-your-first-session">

99 Paso 2: Inicie sesión en su cuenta103 Paso 2: Inicia tu primera sesión

100</h2>104</h2>

101 105 

102Claude Code requiere una cuenta para usarse. Inicie una sesión interactiva con el comando `claude` y se le pedirá que inicie sesión en el primer uso:106Abre tu terminal en cualquier directorio de proyecto e inicia Claude Code:

103 107 

104```bash theme={null}108```bash theme={null}

109cd /path/to/your/project

105claude110claude

106```111```

107 112 

108Para cuentas de suscripción de Claude o Console, siga las indicaciones para completar la autenticación en su navegador. Si ha establecido la variable de entorno `ANTHROPIC_API_KEY`, Claude Code omite la solicitud de inicio de sesión y le pide que apruebe la clave en su lugar. Para cambiar de cuenta más tarde o volver a autenticarse, escriba `/login` dentro de la sesión en ejecución:113Reemplaza `/path/to/your/project` con la ruta al proyecto en el que quieres trabajar.

109 114 

110```text wrap theme={null}115Claude Code te pide iniciar sesión la primera vez que lo usas. Para suscripciones de Claude o cuentas de Console, sigue las instrucciones para completar la autenticación en tu navegador. Si configuraste la variable de entorno `ANTHROPIC_API_KEY` y apruebas la clave cuando Claude Code te pregunta si quieres usarla, Claude Code omite la solicitud de inicio de sesión.

111/login

112```

113 116 

114Puede iniciar sesión usando cualquiera de estos tipos de cuenta:117Puedes iniciar sesión con cualquiera de estos tipos de cuenta:

115 118 

116* [Claude Pro, Max, Team o Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_login) (recomendado)119* [Claude Pro, Max, Team o Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_login) (recomendado)

117* [Claude Console](https://platform.claude.com/) (acceso a API con créditos prepagados). En el primer inicio de sesión, se crea automáticamente un espacio de trabajo "Claude Code" en la Console para el seguimiento centralizado de costos.120* [Claude Console](https://platform.claude.com/) (acceso a la API con créditos prepagados). En el primer inicio de sesión, se crea automáticamente un espacio de trabajo "Claude Code" en Console para el seguimiento centralizado de costos.

118* [Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry](/docs/es/third-party-integrations) (proveedores de nube empresariales)121* [Amazon Bedrock, Agent Platform de Google Cloud o Microsoft Foundry](/docs/es/third-party-integrations) (proveedores de nube empresariales)

119* Una puerta de enlace [Claude apps gateway](/docs/es/claude-apps-gateway) autohospedada, si su organización ejecuta una: su administrador preconfiguración la URL de la puerta de enlace, y `/login` abre directamente en la pantalla **Cloud gateway** para que inicie sesión con SSO corporativo122* Un [gateway de aplicaciones de Claude](/docs/es/claude-apps-gateway) autoalojado, si tu organización ejecuta uno: tu administrador preconfigura la URL del gateway, y `/login` se abre directamente en la pantalla **Cloud gateway** para que inicies sesión con el SSO corporativo

120 

121Una vez que haya iniciado sesión, sus credenciales se almacenan y no necesitará iniciar sesión nuevamente. Obtenga más información en [Gestión de credenciales](/docs/es/authentication#credential-management).

122 

123<h2 id="step-3-start-your-first-session">

124 Paso 3: Inicie su primera sesión

125</h2>

126 

127Abra su terminal en cualquier directorio de proyecto e inicie Claude Code:

128 

129```bash theme={null}

130cd /path/to/your/project

131claude

132```

133 123 

134Reemplace `/path/to/your/project` con la ruta del proyecto en el que desea trabajar.124Una vez que inicies sesión, tus credenciales se almacenan y no necesitarás volver a iniciar sesión. Obtén más información en [Gestión de credenciales](/docs/es/authentication#credential-management).

135 125 

136Verá la pantalla de Claude Code con la versión, el modelo actual y el directorio de trabajo mostrados arriba. Escriba `/help` para ver los comandos disponibles o `/resume` para continuar una conversación anterior.126El prompt de Claude Code aparece con la versión, el modelo actual y el directorio de trabajo mostrados encima. Escribe `/help` para ver los comandos disponibles o `/resume` para continuar una conversación anterior. Para cambiar de cuenta más adelante o volver a autenticarte, escribe `/login` dentro de la sesión en ejecución.

137 127 

138<h2 id="step-4-ask-your-first-question">128<h2 id="step-3-ask-your-first-question">

139 Paso 4: Haga su primera pregunta129 Paso 3: Haz tu primera pregunta

140</h2>130</h2>

141 131 

142Comienza por entender tu base de código. Prueba uno de estos comandos:132Prueba uno de estos comandos:

143 133 

144```text wrap theme={null}134```text wrap theme={null}

145¿qué hace este proyecto?135what does this project do?

146```136```

147 137 

148Claude analizará sus archivos y proporcionará un resumen. También puede hacer preguntas más específicas:138Claude analizará tus archivos y te dará un resumen. También puedes hacer preguntas más específicas:

149 139 

150```text wrap theme={null}140```text wrap theme={null}

151¿qué tecnologías usa este proyecto?141what technologies does this project use?

152```142```

153 143 

154```text wrap theme={null}144```text wrap theme={null}

155¿dónde está el punto de entrada principal?145where is the main entry point?

156```146```

157 147 

158```text wrap theme={null}148```text wrap theme={null}

159explique la estructura de carpetas149explain the folder structure

160```150```

161 151 

162También puede preguntarle a Claude sobre sus propias capacidades:152También puedes preguntarle a Claude sobre sus propias capacidades:

163 153 

164```text wrap theme={null}154```text wrap theme={null}

165¿qué puede hacer Claude Code?155what can Claude Code do?

166```156```

167 157 

168```text wrap theme={null}158```text wrap theme={null}

169¿cómo creo skills personalizados en Claude Code?159how do I create custom skills in Claude Code?

170```160```

171 161 

172```text wrap theme={null}162```text wrap theme={null}

173¿puede Claude Code trabajar con Docker?163can Claude Code work with Docker?

174```164```

175 165 

176<Note>166<Note>

177 Claude Code lee los archivos de su proyecto según sea necesario. No tiene que agregar contexto manualmente.167 Claude Code lee los archivos de tu proyecto según sea necesario. No tienes que agregar contexto manualmente.

178</Note>168</Note>

179 169 

180<h2 id="step-5-make-your-first-code-change">170<h2 id="step-4-make-your-first-code-change">

181 Paso 5: Realice su primer cambio de código171 Paso 4: Haz tu primer cambio de código

182</h2>172</h2>

183 173 

184Ahora haz que Claude Code escriba código real. Prueba una tarea simple:174Prueba una tarea pequeña:

185 175 

186```text wrap theme={null}176```text wrap theme={null}

187agrega una función hello world al archivo principal177add a hello world function to the main file

188```178```

189 179 

190Claude Code encuentra el archivo apropiado y le muestra el cambio. Si pregunta antes de realizar el cambio, seleccione **Sí** para aprobar.180Claude Code encuentra el archivo adecuado y te muestra el cambio. Si te pregunta antes de hacer el cambio, selecciona **Yes** para aprobarlo.

191 181 

192Con Claude Code v2.1.283 o posterior, el modo auto es el [modo de permiso de inicio integrado](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) para sesiones de terminal interactivas: un clasificador revisa las acciones en lugar de usted, y Claude edita la mayoría de los archivos y ejecuta la mayoría de los comandos sin preguntar. En versiones anteriores, el modo auto es el modo de permiso de inicio integrado solo en planes Pro, Max y Team. Para la sesión que inicia justo después de instalar, consulte [Primera sesión después de una instalación o actualización](/docs/es/env-vars#first-session-after-an-install-or-upgrade).182El [modo de permisos](/docs/es/permission-modes) de la sesión define qué acciones puede realizar Claude sin preguntarte primero. Presiona `Shift+Tab` en cualquier momento para cambiar el modo de permisos de la sesión en la que te encuentras.

193 

194<Note>

195 Su configuración u organización puede establecer un modo de permiso de inicio diferente. [Qué modo de permiso inicia una sesión](/docs/es/permission-modes#which-mode-a-session-starts-in) enumera lo que hace. Presione `Shift+Tab` en cualquier momento para cambiar el modo de permiso de la sesión en la que se encuentra.

196</Note>

197 183 

198<h2 id="step-6-use-git-with-claude-code">184<h2 id="step-5-use-git-with-claude-code">

199 Paso 6: Use Git con Claude Code185 Paso 5: Usa Git con Claude Code

200</h2>186</h2>

201 187 

202Claude Code hace que las operaciones de Git sean conversacionales:188Claude Code convierte las operaciones de Git en una conversación:

203 189 

204```text wrap theme={null}190```text wrap theme={null}

205¿qué archivos he cambiado?191what files have I changed?

206```192```

207 193 

208```text wrap theme={null}194```text wrap theme={null}

209confirma mis cambios con un mensaje descriptivo195commit my changes with a descriptive message

210```196```

211 197 

212También puede solicitar operaciones de Git más complejas:198También puedes pedir operaciones de Git más complejas:

213 199 

214```text wrap theme={null}200```text wrap theme={null}

215crea una nueva rama llamada feature/quickstart201create a new branch called feature/quickstart

216```202```

217 203 

218```text wrap theme={null}204```text wrap theme={null}

219muéstrame los últimos 5 commits205show me the last 5 commits

220```206```

221 207 

222```text wrap theme={null}208```text wrap theme={null}

223ayúdame a resolver conflictos de fusión209help me resolve merge conflicts

224```210```

225 211 

226<h2 id="step-7-fix-a-bug-or-add-a-feature">212<h2 id="step-6-fix-a-bug-or-add-a-feature">

227 Paso 7: Corrija un error o agregue una función213 Paso 6: Corrige un error o agrega una función

228</h2>214</h2>

229 215 

230Claude es competente en depuración e implementación de funciones.216Describe lo que quieres en lenguaje natural:

231 

232Describa lo que desea en lenguaje natural:

233 217 

234```text wrap theme={null}218```text wrap theme={null}

235agrega validación de entrada al formulario de registro de usuarios219add input validation to the user registration form

236```220```

237 221 

238O corrija problemas existentes:222O corrige problemas existentes:

239 223 

240```text wrap theme={null}224```text wrap theme={null}

241hay un error donde los usuarios pueden enviar formularios vacíos - corrígelo225there's a bug where users can submit empty forms - fix it

242```226```

243 227 

244Claude Code hará lo siguiente:228<h2 id="step-7-test-out-other-common-workflows">

245 229 Paso 7: Prueba otros flujos de trabajo comunes

246* Localizará el código relevante

247* Comprenderá el contexto

248* Implementará una solución

249* Ejecutará pruebas si están disponibles

250 

251<h2 id="step-8-test-out-other-common-workflows">

252 Paso 8: Pruebe otros flujos de trabajo comunes

253</h2>230</h2>

254 231 

255Hay varias formas de trabajar con Claude:232Hay varias formas de trabajar con Claude:


257**Refactorizar código**234**Refactorizar código**

258 235 

259```text wrap theme={null}236```text wrap theme={null}

260refactoriza el módulo de autenticación para usar async/await en lugar de callbacks237refactor the authentication module to use async/await instead of callbacks

261```238```

262 239 

263**Escribir pruebas**240**Escribir pruebas**

264 241 

265```text wrap theme={null}242```text wrap theme={null}

266escribe pruebas unitarias para las funciones de calculadora243write unit tests for the calculator functions

267```244```

268 245 

269**Actualizar documentación**246**Actualizar la documentación**

270 247 

271```text wrap theme={null}248```text wrap theme={null}

272actualiza el README con instrucciones de instalación249update the README with installation instructions

273```250```

274 251 

275**Revisión de código**252**Revisión de código**

276 253 

277```text wrap theme={null}254```text wrap theme={null}

278revisa mis cambios y sugiere mejoras255review my changes and suggest improvements

279```256```

280 257 

281<Tip>258<Tip>

282 Hable con Claude como lo haría con un colega útil. Describa lo que desea lograr y le ayudará a llegar allí.259 Habla con Claude como lo harías con un colega servicial. Describe lo que quieres lograr y te ayudará a conseguirlo.

283</Tip>260</Tip>

284 261 

285<h2 id="essential-commands">262<h2 id="essential-commands">


355 ¿Qué sigue?332 ¿Qué sigue?

356</h2>333</h2>

357 334 

358Ahora que ha aprendido lo básico, explore funciones más avanzadas:335Ahora que aprendiste lo básico, explora funciones más avanzadas:

359 

360<CardGroup cols={2}>

361 <Card title="Cómo funciona Claude Code" icon="microchip" href="/docs/es/how-claude-code-works">

362 Comprenda el bucle de agente, las herramientas integradas y cómo Claude Code interactúa con su proyecto

363 </Card>

364 

365 <Card title="Mejores prácticas" icon="star" href="/docs/es/best-practices">

366 Obtenga mejores resultados con indicaciones efectivas y configuración de proyecto

367 </Card>

368 336 

369 <Card title="Flujos de trabajo comunes" icon="graduation-cap" href="/docs/es/common-workflows">337* [Cómo funciona Claude Code](/docs/es/how-claude-code-works): comprende el bucle agéntico, las herramientas integradas y cómo Claude Code interactúa con tu proyecto

370 Guías paso a paso para tareas comunes338* [Buenas prácticas](/docs/es/best-practices): obtén mejores resultados con indicaciones efectivas y una buena configuración del proyecto

371 </Card>339* [Flujos de trabajo comunes](/docs/es/common-workflows): guías paso a paso para tareas comunes

340* [Extiende Claude Code](/docs/es/features-overview): personaliza con CLAUDE.md, skills, hooks, MCP y más

372 341 

373 <Card title="Extiende Claude Code" icon="puzzle-piece" href="/docs/es/features-overview">342Consulta la [configuración avanzada](/docs/es/setup) para ver opciones de instalación, actualizaciones manuales o instrucciones de desinstalación.

374 Personalice con CLAUDE.md, skills, hooks, MCP y más

375 </Card>

376</CardGroup>

377 343 

378<h2 id="getting-help">344<h2 id="getting-help">

379 Obtener ayuda345 Obtener ayuda

380</h2>346</h2>

381 347 

382* **En Claude Code**: Escriba `/help` o pregunte "¿cómo..."348* **En Claude Code**: escribe `/help` o haz una pregunta del tipo "¿cómo hago...?"

383* **Documentación**: ¡Está aquí! Explore otras guías349* **Documentación**: explora las otras guías de este sitio

384* **Cursos**: Tome [Claude Code 101](https://academy.claude.com/courses/claude-code-101) y otros cursos gratuitos a su propio ritmo en [Claude Academy](https://academy.claude.com/)350* **Cursos**: toma [Claude Code 101](https://academy.claude.com/courses/claude-code-101) y otros cursos gratuitos a tu propio ritmo en [Claude Academy](https://academy.claude.com/)

385* **Comunidad**: Únete al [servidor de Discord](https://www.anthropic.com/discord) para obtener consejos y soporte351* **Comunidad**: únete al [servidor de Discord](https://www.anthropic.com/discord) para obtener consejos y soporte

Details

365</h2>365</h2>

366 366 

367* **Una sesión remota por proceso interactivo**: fuera del modo servidor, cada instancia de Claude Code admite una sesión remota a la vez. Usa el [modo servidor](#start-a-remote-control-session) para ejecutar múltiples sesiones concurrentes desde un único proceso.367* **Una sesión remota por proceso interactivo**: fuera del modo servidor, cada instancia de Claude Code admite una sesión remota a la vez. Usa el [modo servidor](#start-a-remote-control-session) para ejecutar múltiples sesiones concurrentes desde un único proceso.

368* **El proceso local debe seguir ejecutándose**: Remote Control se ejecuta como un proceso local. Si cierras la terminal, sales de la aplicación de escritorio o VS Code, o detienes de otra manera el proceso `claude`, la sesión se desconecta hasta que [la vuelvas a conectar](#resume-sessions-after-stopping-the-server). Para mantener una sesión ejecutándose en una máquina remota después de desconectarte de SSH, inicia la sesión dentro de `tmux` o `screen`.368* **El proceso local debe seguir ejecutándose**: Remote Control se ejecuta como un proceso local. Si cierras la terminal, sales de la aplicación de escritorio o VS Code, o detienes de otra manera el proceso `claude`, la sesión se desconecta hasta que [la vuelvas a conectar](#resume-sessions-after-stopping-the-server). Si ejecutas `claude` desde una terminal en una máquina remota, inícialo dentro de `tmux` o `screen` para mantener la sesión ejecutándose después de desconectarte de SSH.

369* **Sesiones que se cuelgan en modo servidor**: si una sesión servida por `claude remote-control` se cuelga, envíale un mensaje desde un dispositivo conectado. Claude Code la sirve de nuevo. No tienes que reiniciar el servidor. Requiere Claude Code v2.1.238 o posterior.369* **Sesiones que se cuelgan en modo servidor**: si una sesión servida por `claude remote-control` se cuelga, envíale un mensaje desde un dispositivo conectado. Claude Code la sirve de nuevo. No tienes que reiniciar el servidor. Requiere Claude Code v2.1.238 o posterior.

370* **Rechazos HTTP 403 en una sesión conectada**: una vez que una sesión interactiva está conectada, Claude Code sigue reintentando durante hasta tres minutos cuando algo entre tu máquina y los servidores de Anthropic responde con HTTP 403, lo que puede ocurrir después de un cambio de VPN o red. Si los rechazos duran más tiempo, Claude Code se desconecta, y el motivo indica qué rechazó: un borde de red, o un proxy, VPN o firewall en tu propia red.370* **Rechazos HTTP 403 en una sesión conectada**: una vez que una sesión interactiva está conectada, Claude Code sigue reintentando durante hasta tres minutos cuando algo entre tu máquina y los servidores de Anthropic responde con HTTP 403, lo que puede ocurrir después de un cambio de VPN o red. Si los rechazos duran más tiempo, Claude Code se desconecta, y el motivo indica qué rechazó: un borde de red, o un proxy, VPN o firewall en tu propia red.

371* **Interrupción de red extendida**: si tu máquina está encendida pero no puede alcanzar la red, lo que hagas a continuación depende del modo:371* **Interrupción de red extendida**: si tu máquina está encendida pero no puede alcanzar la red, lo que hagas a continuación depende del modo:

routines.md +1 −1

Details

93 Elija un [entorno en la nube](/docs/es/cloud-environments) para la rutina. Los entornos controlan a qué tiene acceso la sesión en la nube:93 Elija un [entorno en la nube](/docs/es/cloud-environments) para la rutina. Los entornos controlan a qué tiene acceso la sesión en la nube:

94 94 

95 * **Network access**: establezca el nivel de acceso a Internet disponible durante cada ejecución95 * **Network access**: establezca el nivel de acceso a Internet disponible durante cada ejecución

96 * **Environment variables**: proporcione valores que Claude pueda usar durante cada ejecución. Son [visibles para cualquiera que use el entorno](/docs/es/cloud-environments#what-carries-over-from-your-setup), por lo que en planes Pro y Max, almacene claves para las API que Claude llama durante una ejecución como [credenciales de API](/docs/es/cloud-environments#add-api-credentials) en su lugar. Esa sección también enumera las solicitudes que nunca obtienen una credencial96 * **Environment variables**: proporciona valores que Claude pueda usar durante cada ejecución. Son [visibles para cualquiera que use el entorno](/docs/es/cloud-environments#what-carries-over-from-your-setup), por lo que en los planes Pro y Max, almacena las claves de las API que Claude llama durante una ejecución como [secretos de red](/docs/es/cloud-environments#add-api-credentials) en su lugar. Esa sección también enumera las solicitudes que nunca reciben un secreto

97 * **Setup script**: instale dependencias y herramientas que la rutina necesita. El resultado se [almacena en caché](/docs/es/cloud-environments#environment-caching), por lo que el script no se vuelve a ejecutar en cada sesión97 * **Setup script**: instale dependencias y herramientas que la rutina necesita. El resultado se [almacena en caché](/docs/es/cloud-environments#environment-caching), por lo que el script no se vuelve a ejecutar en cada sesión

98 98 

99 Se proporciona un entorno **Default** con acceso a la red **Trusted**, que permite solo el [conjunto predeterminado](/docs/es/cloud-environments#default-allowed-domains) de registros de paquetes, API de proveedores de nube, registros de contenedores y dominios de desarrollo comunes a través de la red de la sesión. Los conectores que agregue a la rutina alcanzan sus servicios a través de los servidores de Anthropic, por lo que no necesitan cambios en la lista de permitidos. Si su rutina necesita alcanzar sus propios servicios directamente o un dominio fuera de esa lista, edite el [acceso a la red](/docs/es/cloud-environments#network-access) del entorno antes de ejecutar. Para usar un entorno separado, [cree uno](/docs/es/cloud-environments#configure-your-environment) primero.99 Se proporciona un entorno **Default** con acceso a la red **Trusted**, que permite solo el [conjunto predeterminado](/docs/es/cloud-environments#default-allowed-domains) de registros de paquetes, API de proveedores de nube, registros de contenedores y dominios de desarrollo comunes a través de la red de la sesión. Los conectores que agregue a la rutina alcanzan sus servicios a través de los servidores de Anthropic, por lo que no necesitan cambios en la lista de permitidos. Si su rutina necesita alcanzar sus propios servicios directamente o un dominio fuera de esa lista, edite el [acceso a la red](/docs/es/cloud-environments#network-access) del entorno antes de ejecutar. Para usar un entorno separado, [cree uno](/docs/es/cloud-environments#configure-your-environment) primero.

Details

104 Script de ejemplo104 Script de ejemplo

105</h2>105</h2>

106 106 

107El script a continuación ejecuta el bucle completo contra `$CLAUDE_TEST_ENVIRONMENT_ID`, el ID `ccpool_...` de su entorno de prueba, que se muestra en el diálogo de detalles del entorno en la página de administración o se devuelve por la [llamada create-environment](#create-a-dedicated-test-environment), y afirma una frase centinela en cada respuesta. Ejecute desde un checkout de git del repositorio en el que desea que la sesión funcione, después de iniciar un ejecutor en este host con el hook de captura instalado y `E2E_REPLY_DIR` exportado.107El script a continuación ejecuta el bucle completo contra `$CLAUDE_TEST_ENVIRONMENT_ID`, el ID `ccpool_...` de tu entorno de prueba, que se muestra en el diálogo de detalles del entorno en la página de administración o se devuelve por la [llamada create-environment](#create-a-dedicated-test-environment), y afirma una frase centinela en cada respuesta. Ejecútalo desde un checkout de git del repositorio en el que quieres que trabaje la sesión, después de iniciar un ejecutor en este host con el hook de captura instalado y `E2E_REPLY_DIR` exportado. Primero inicia sesión con una cuenta de claude.ai en la máquina que ejecuta el script, como se describe en [Autenticarse desde CI](#authenticate-from-ci). Sin ese inicio de sesión, el primer envío falla con un error como `Unable to get organization UUID for cloud session creation`.

108 108 

109```bash theme={null}109```bash theme={null}

110#!/usr/bin/env bash110#!/usr/bin/env bash

Details

43 <Step title="Abrir la consola de administración">43 <Step title="Abrir la consola de administración">

44 En la consola de claude.ai, ve a [**Organization settings > Claude Code > Managed settings**](https://claude.ai/admin-settings/claude-code).44 En la consola de claude.ai, ve a [**Organization settings > Claude Code > Managed settings**](https://claude.ai/admin-settings/claude-code).

45 45 

46 Si el enlace te redirige a una página de Organization settings diferente en lugar de la página de Claude Code, tu cuenta no tiene el rol requerido. Los roles de Admin y otros roles que no sean Owner no pueden ver ni editar la configuración administrada, así que pide a un Owner o Primary Owner de tu organización que realice el cambio. Consulta [Control de acceso](#access-control).46 En una organización Team o Enterprise, si la página indica que no tienes acceso, pide a un [Owner o Primary Owner](#access-control) que realice el cambio.

47 </Step>47 </Step>

48 48 

49 <Step title="Definir tu configuración">49 <Step title="Definir tu configuración">

sessions.md +3 −3

Details

83* Terminal: `claude --continue`, `claude --resume <session-id>` o `claude --resume <name>` cuando el nombre coincide con una sesión, sin `-p`. Claude Code restaura el modo de permisos en el que estaba la sesión, excepto en los casos de la tabla. Pase `--permission-mode` o `--dangerously-skip-permissions` para anular el modo restaurado.83* Terminal: `claude --continue`, `claude --resume <session-id>` o `claude --resume <name>` cuando el nombre coincide con una sesión, sin `-p`. Claude Code restaura el modo de permisos en el que estaba la sesión, excepto en los casos de la tabla. Pase `--permission-mode` o `--dangerously-skip-permissions` para anular el modo restaurado.

84* No interactivo: `claude -p --resume` o `claude -p --continue`. Claude Code inicia la ejecución en el modo de permisos en el que se iniciaría una nueva ejecución de `claude -p`, excepto que una sesión que terminó en modo de plan se reanuda en modo de plan bajo las [condiciones a continuación](#resume-in-plan-mode-with-p).84* No interactivo: `claude -p --resume` o `claude -p --continue`. Claude Code inicia la ejecución en el modo de permisos en el que se iniciaría una nueva ejecución de `claude -p`, excepto que una sesión que terminó en modo de plan se reanuda en modo de plan bajo las [condiciones a continuación](#resume-in-plan-mode-with-p).

85* VS Code: el panel de conversación de la extensión. La tabla cubre solo una conversación que terminó en modo de plan; para el resto, consulte [reanudar conversaciones pasadas](/docs/es/vs-code#resume-past-conversations).85* VS Code: el panel de conversación de la extensión. La tabla cubre solo una conversación que terminó en modo de plan; para el resto, consulte [reanudar conversaciones pasadas](/docs/es/vs-code#resume-past-conversations).

86* Selector de sesiones en el lanzamiento: una sesión que selecciona del [selector de sesiones](#use-the-session-picker), ya sea que lo haya abierto con `claude --resume` solo, `claude --from-pr` o un nombre que coincida con más de una sesión. Claude Code no restaura el modo de permisos almacenado. Inicia la sesión en el modo de permisos en el que iniciaría una nueva sesión desde la misma línea de comandos.86* Selector de sesiones en el lanzamiento: una sesión que seleccionas del [selector de sesiones](#use-the-session-picker), ya sea que lo hayas abierto con `claude --resume` solo, `claude --from-pr` o un nombre que coincida con más de una sesión. Claude Code inicia la sesión en el modo de permisos en el que iniciaría una nueva sesión desde la misma línea de comandos, excepto que una sesión que terminó en modo plan se reanuda en modo plan a menos que pases `--permission-mode`, `--dangerously-skip-permissions` o `--fork-session`. No se restaura ningún otro modo de permisos almacenado.

87* `/resume` dentro de una sesión, con o sin argumento: Claude Code no restaura el modo de permisos almacenado. La conversación a la que cambia continúa en el modo de permisos en el que está su sesión actual.87* `/resume` dentro de una sesión, con o sin argumento: la conversación a la que cambias continúa en el modo de permisos en el que está tu sesión actual, excepto que una conversación que terminó en modo plan se reanuda en modo plan, incluso si iniciaste Claude Code con `--permission-mode` o `--dangerously-skip-permissions`. Si esa conversación ya estaba abierta antes en esta ejecución de Claude Code, como la conversación con la que empezaste o una que dejaste con `/clear` o `/resume`, continúa en cambio en tu modo de permisos actual.

88 88 

89Restaurar el modo de plan en las rutas no interactivas y VS Code requiere Claude Code v2.1.246 o posterior. Cada fila nombra el modo de permisos en el que terminó la sesión, cuál de las rutas de terminal, no interactiva y VS Code la reanuda, y el modo de permisos en el que Claude Code inicia la sesión reanudada.89Restaurar el modo de plan en las rutas no interactivas y VS Code requiere Claude Code v2.1.246 o posterior. Cada fila nombra el modo de permisos en el que terminó la sesión, cuál de las rutas de terminal, no interactiva y VS Code la reanuda, y el modo de permisos en el que Claude Code inicia la sesión reanudada.

90 90 

91| Sesión terminada en | Cómo reanuda | Modo de permisos después de reanudar |91| Sesión terminada en | Cómo reanuda | Modo de permisos después de reanudar |

92| :- | :- | :- |92| :- | :- | :- |

93| `bypassPermissions` | Terminal | El modo de permisos en el que se iniciaría una nueva sesión. Para [omitir permisos](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode) de nuevo, habilítelo en el lanzamiento con una de sus banderas de lanzamiento o `permissions.defaultMode: "bypassPermissions"` en [configuración de usuario, `--settings` o configuración administrada](/docs/es/settings-reference#permissions-defaultmode) |93| `bypassPermissions` | Terminal | El modo de permisos en el que se iniciaría una nueva sesión. Para [omitir permisos](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode) de nuevo, habilítelo en el lanzamiento con una de sus banderas de lanzamiento o `permissions.defaultMode: "bypassPermissions"` en [configuración de usuario, `--settings` o configuración administrada](/docs/es/settings-reference#permissions-defaultmode) |

94| `plan` | Terminal | El modo de permisos en el que se iniciaría una nueva sesión |94| `plan` | Terminal | Modo plan. Con `--fork-session`, el modo de permisos en el que se iniciaría una nueva sesión |

95| `auto` | Terminal | `auto`, solo cuando su cuenta aún cumple con los [requisitos del modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) |95| `auto` | Terminal | `auto`, solo cuando su cuenta aún cumple con los [requisitos del modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) |

96| Manual | Terminal | Manual cuando una nueva sesión se iniciaría en modo automático desde el [valor predeterminado integrado](/docs/es/permission-modes#which-mode-a-session-starts-in). Cuando un `defaultMode` de un archivo de configuración [entra en vigor](/docs/es/permission-modes#which-mode-a-session-starts-in), Claude Code inicia la sesión reanudada en ese modo en su lugar |96| Manual | Terminal | Manual cuando una nueva sesión se iniciaría en modo automático desde el [valor predeterminado integrado](/docs/es/permission-modes#which-mode-a-session-starts-in). Cuando un `defaultMode` de un archivo de configuración [entra en vigor](/docs/es/permission-modes#which-mode-a-session-starts-in), Claude Code inicia la sesión reanudada en ese modo en su lugar |

97| `plan` | No interactivo, bajo las [condiciones a continuación](#resume-in-plan-mode-with-p) | Modo de plan |97| `plan` | No interactivo, bajo las [condiciones a continuación](#resume-in-plan-mode-with-p) | Modo de plan |

setup.md +5 −3

Details

49 curl -fsSL https://claude.ai/install.sh | bash49 curl -fsSL https://claude.ai/install.sh | bash

50 ```50 ```

51 51 

52 En Windows, tu prompt muestra `PS C:\` cuando estás en PowerShell y `C:\` sin el `PS` cuando estás en CMD.

53 

52 **Windows PowerShell:**54 **Windows PowerShell:**

53 55 

54 ```powershell theme={null}56 ```powershell theme={null}


63 65 

64 Cuando el instalador termine, abra una nueva ventana de terminal y ejecute `claude --version`. Una instalación que funciona correctamente imprime un número de versión. Si su shell dice que `claude` no se encuentra o no se reconoce, el directorio de instalación aún no está en su PATH: consulte [Corrija su PATH](/docs/es/troubleshoot-install#command-not-found-claude-after-installation).66 Cuando el instalador termine, abra una nueva ventana de terminal y ejecute `claude --version`. Una instalación que funciona correctamente imprime un número de versión. Si su shell dice que `claude` no se encuentra o no se reconoce, el directorio de instalación aún no está en su PATH: consulte [Corrija su PATH](/docs/es/troubleshoot-install#command-not-found-claude-after-installation).

65 67 

66 Si ve `The token '&&' is not a valid statement separator`, está en PowerShell, no en CMD. Si ve `'irm' is not recognized as an internal or external command`, está en CMD, no en PowerShell. Su símbolo del sistema muestra `PS C:\` cuando está en PowerShell y `C:\` sin el `PS` cuando está en CMD.68 Si ves `The token '&&' is not a valid statement separator`, estás en PowerShell, no en CMD. Si ves `'irm' is not recognized as an internal or external command`, estás en CMD, no en PowerShell.

67 69 

68 Si el comando de instalación falla con `syntax error near unexpected token '<'`, un `403`, u otro error de curl, consulte [Solucionar problemas de instalación](/docs/es/troubleshoot-install#find-your-error) para hacer coincidir el error con una solución y para conocer métodos de instalación alternativos.70 Si el comando de instalación falla con `syntax error near unexpected token '<'`, un `403` o cualquier otro error, consulta [Solucionar problemas de instalación](/docs/es/troubleshoot-install#find-your-error) para hacer coincidir el error con una solución y para conocer métodos de instalación alternativos.

69 71 

70 Se recomienda [Git for Windows](https://git-scm.com/downloads/win) en Windows nativo para que Claude Code pueda utilizar la herramienta Bash. Si Git for Windows no está instalado, Claude Code utiliza PowerShell como herramienta de shell en su lugar. Las configuraciones de WSL no necesitan Git for Windows.72 Se recomienda [Git for Windows](https://git-scm.com/downloads/win) en Windows nativo para que Claude Code pueda utilizar la herramienta Bash. Si Git for Windows no está instalado, Claude Code utiliza PowerShell como herramienta de shell en su lugar. Las configuraciones de WSL no necesitan Git for Windows.

71 73 


204 206 

205Claude Code requiere una cuenta Pro, Max, Team, Enterprise o Console. El plan gratuito de Claude.ai no incluye acceso a Claude Code. También puede usar Claude Code con un proveedor de API de terceros como [Amazon Bedrock](/docs/es/amazon-bedrock), [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) o [Microsoft Foundry](/docs/es/microsoft-foundry).207Claude Code requiere una cuenta Pro, Max, Team, Enterprise o Console. El plan gratuito de Claude.ai no incluye acceso a Claude Code. También puede usar Claude Code con un proveedor de API de terceros como [Amazon Bedrock](/docs/es/amazon-bedrock), [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) o [Microsoft Foundry](/docs/es/microsoft-foundry).

206 208 

207Después de instalar, inicie sesión ejecutando `claude` y siguiendo las indicaciones del navegador. Si la variable de entorno `ANTHROPIC_API_KEY` está configurada, Claude Code le solicita una vez que apruebe la clave en lugar de abrir un navegador. Consulte [Autenticación](/docs/es/authentication) para todos los tipos de cuenta y opciones de configuración de equipo.209Después de instalar, inicia sesión ejecutando `claude` y siguiendo las instrucciones del navegador. Si configuraste la variable de entorno `ANTHROPIC_API_KEY` y apruebas la clave cuando Claude Code te pregunta si quieres usarla, Claude Code omite la solicitud de inicio de sesión. Consulta [Autenticación](/docs/es/authentication) para ver todos los tipos de cuenta y las opciones de configuración de equipo.

208 210 

209<h2 id="update-claude-code">211<h2 id="update-claude-code">

210 Actualizar Claude Code212 Actualizar Claude Code

sub-agents.md +3 −3

Details

310 310 

311| Campo | Requerido | Descripción |311| Campo | Requerido | Descripción |

312| :- | :- | :- |312| :- | :- | :- |

313| `name` | Sí | Identificador único, como `code-reviewer` o `reviewer-v2`. [Hooks](/docs/es/hooks#subagentstart) reciben este valor como `agent_type`. El nombre del archivo no tiene que coincidir. Los nombres no pueden contener `:`, que está reservado para [identificadores con alcance de plugin](/docs/es/plugins/overview) como `my-plugin:reviewer`. Claude Code no carga un archivo cuyo nombre contiene uno y registra un error en el registro de depuración. Antes de v2.1.218, tales nombres fueron aceptados |313| `name` | Sí | Identificador único de 256 caracteres como máximo, como `code-reviewer` o `reviewer-v2`. Los [hooks](/docs/es/hooks#subagentstart) reciben este valor como `agent_type`. El nombre del archivo no tiene que coincidir. Los nombres no pueden contener `:`, que está reservado para [identificadores con alcance de plugin](/docs/es/plugins/overview) como `my-plugin:reviewer` |

314| `description` | Sí | Cuándo Claude debe delegar en este subagente |314| `description` | Sí | Cuándo Claude debe delegar en este subagente |

315| `tools` | No | [Herramientas](#available-tools) que el subagente puede usar, como una cadena separada por comas como `Read, Grep, Bash` o una lista YAML. Hereda todas las herramientas disponibles para subagentes si se omite. Si ninguna entrada en la lista se resuelve a una herramienta, el subagente generalmente [falla al lanzarse](/docs/es/errors#agent-would-be-spawned-with-zero-tools) con un error nombrando las entradas. Para precargar Skills en el contexto, use el campo `skills` en lugar de listar `Skill` aquí |315| `tools` | No | [Herramientas](#available-tools) que el subagente puede usar, como una cadena separada por comas como `Read, Grep, Bash` o una lista YAML. Hereda todas las herramientas disponibles para subagentes si se omite. Si ninguna entrada en la lista se resuelve a una herramienta, el subagente generalmente [falla al lanzarse](/docs/es/errors#agent-would-be-spawned-with-zero-tools) con un error nombrando las entradas. Para precargar Skills en el contexto, use el campo `skills` en lugar de listar `Skill` aquí |

316| `disallowedTools` | No | Herramientas a denegar, eliminadas de la lista heredada o especificada. Mismo formato que `tools`. Una entrada con un especificador, como `Bash(git push *)`, aún [elimina la herramienta completa](#available-tools) |316| `disallowedTools` | No | Herramientas a denegar, eliminadas de la lista heredada o especificada. Mismo formato que `tools`. Una entrada con un especificador, como `Bash(git push *)`, aún [elimina la herramienta completa](#available-tools) |


348 348 

349* **Sin `name`**: Claude Code trata el archivo como documentación guardada junto a sus agentes.349* **Sin `name`**: Claude Code trata el archivo como documentación guardada junto a sus agentes.

350* **Un `---` de apertura que no es la primera línea del archivo**: Claude Code lee el archivo como si no tuviera frontmatter y lo trata como documentación.350* **Un `---` de apertura que no es la primera línea del archivo**: Claude Code lee el archivo como si no tuviera frontmatter y lo trata como documentación.

351* **Un `name` que comienza con `-` o contiene `:`**: Claude Code omite el archivo y escribe un error en el registro de depuración. Consulte la fila `name` en la tabla anterior.351* **Un `name` que comienza con `-`, contiene `:` o tiene más de 256 caracteres**: Claude Code omite el archivo y escribe un error en el registro de depuración.

352* **Un `name` pero sin `description`**: Claude Code omite el archivo y escribe la razón en el registro de depuración.352* **Un `name` pero sin `description`**: Claude Code omite el archivo y escribe la razón en el registro de depuración.

353* **YAML que no se analiza**: Claude Code no lee campos del archivo, lo omite y escribe el error de análisis en el registro de depuración.353* **YAML que no se analiza**: Claude Code no lee campos del archivo, lo omite y escribe el error de análisis en el registro de depuración.

354 354 


1279| Permisos | Las solicitudes aparecen en su terminal | [Las solicitudes aparecen en su sesión principal](#run-subagents-in-foreground-or-background) cuando se ejecutan en el fondo |1279| Permisos | Las solicitudes aparecen en su terminal | [Las solicitudes aparecen en su sesión principal](#run-subagents-in-foreground-or-background) cuando se ejecutan en el fondo |

1280| Caché de solicitud | Compartido con la sesión principal | Caché separado |1280| Caché de solicitud | Compartido con la sesión principal | Caché separado |

1281 1281 

1282Porque el mensaje del sistema del fork y las definiciones de herramientas son idénticas al principal, su primera solicitud reutiliza la [caché de solicitud](/docs/es/prompt-caching#subagents-and-the-cache) del principal. Esto hace que bifurcar sea más económico que generar un subagente fresco para tareas que necesitan el mismo contexto.1282Como el prompt del sistema y las definiciones de herramientas del fork son idénticos a los del principal, su primera solicitud reutiliza la [caché de prompts](/docs/es/prompt-caching#subagents-and-the-cache) del principal. Gracias a esa reutilización, un fork cuesta menos que un subagente nuevo para tareas que necesitan el mismo contexto.

1283 1283 

1284Cuando Claude genera un fork a través de la herramienta Agent, puede pasar `isolation: "worktree"` para que las ediciones de archivo del fork se escriban en un git worktree separado en lugar de su checkout. Un fork no puede generar más forks.1284Cuando Claude genera un fork a través de la herramienta Agent, puede pasar `isolation: "worktree"` para que las ediciones de archivo del fork se escriban en un git worktree separado en lugar de su checkout. Un fork no puede generar más forks.

1285 1285 

vs-code.md +1 −1

Details

606| `environmentVariables` | `[]` | Establecer variables de entorno para el proceso de Claude. Para una configuración compartida, usa en su lugar la configuración de Claude Code. Una entrada [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars) solo se aplica cuando su valor es una ruta absoluta; la extensión no expande `~` e ignora un valor relativo. |606| `environmentVariables` | `[]` | Establecer variables de entorno para el proceso de Claude. Para una configuración compartida, usa en su lugar la configuración de Claude Code. Una entrada [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars) solo se aplica cuando su valor es una ruta absoluta; la extensión no expande `~` e ignora un valor relativo. |

607| `disableLoginPrompt` | `false` | Omitir mensajes de autenticación (para configuraciones de proveedores de terceros) |607| `disableLoginPrompt` | `false` | Omitir mensajes de autenticación (para configuraciones de proveedores de terceros) |

608| `allowDangerouslySkipPermissions` | `false` | Agrega Bypass permissions al selector de modo. Úselo solo en espacios aislados sin acceso a Internet. |608| `allowDangerouslySkipPermissions` | `false` | Agrega Bypass permissions al selector de modo. Úselo solo en espacios aislados sin acceso a Internet. |

609| `claudeProcessWrapper` | - | Ejecutable utilizado para iniciar el proceso de Claude. La ruta del binario incluido se pasa como argumento cuando está presente. Establezca esto en un binario `claude` instalado por separado si la compilación de la extensión no incluye uno para su plataforma. En una configuración envuelta, las conversaciones comienzan en modo Manual a menos que establezca `initialPermissionMode` o haya seleccionado Manual, Editar automáticamente o Auto en una conversación anterior, porque la extensión omite los ajustes y los pasos predeterminados integrados allí; consulte [Switch permission modes](/docs/es/permission-modes#switch-permission-modes). Un error "Unsupported platform" en la activación significa que no hay binario incluido para su plataforma; consulte [which platforms have prebuilt binaries](/docs/es/troubleshoot-install#native-binary-not-found-after-npm-install). |609| `claudeProcessWrapper` | - | Ejecutable utilizado para iniciar el proceso de Claude. La ruta del binario incluido se pasa como argumento cuando está presente. Establece esto en un binario `claude` instalado por separado si la compilación de la extensión no incluye uno para tu plataforma. |

610 610 

611<h2 id="use-a-screen-reader">611<h2 id="use-a-screen-reader">

612 Usar un lector de pantalla612 Usar un lector de pantalla

worktrees.md +3 −1

Details

6 6 

7> Aisle sesiones paralelas de Claude Code en worktrees de git separados para que los cambios no colisionen. Cubre la bandera `--worktree`, aislamiento de subagentes, `.worktreeinclude`, limpieza y hooks de VCS no-git.7> Aisle sesiones paralelas de Claude Code en worktrees de git separados para que los cambios no colisionen. Cubre la bandera `--worktree`, aislamiento de subagentes, `.worktreeinclude`, limpieza y hooks de VCS no-git.

8 8 

9Un [git worktree](https://git-scm.com/docs/git-worktree) es un directorio de trabajo separado con sus propios archivos y rama, compartiendo el mismo historial de repositorio y remoto que su checkout principal. Ejecutar cada sesión de Claude Code en su propio worktree significa que las ediciones en una sesión nunca tocan archivos en otra, por lo que una sesión puede construir una característica mientras una segunda corrige un error.9Un [git worktree](https://git-scm.com/docs/git-worktree) es un directorio de trabajo separado con sus propios archivos y rama, que comparte el mismo historial de repositorio y remoto que tu checkout principal. Ejecutar cada sesión de Claude Code en su propio worktree le da una copia separada de los archivos para editar, por lo que una sesión puede crear una funcionalidad mientras una segunda corrige un error.

10 10 

11<Note>11<Note>

12 Los worktrees requieren un repositorio de git; para otros sistemas de control de versiones, [configure hooks para reemplazar la lógica de git](#non-git-version-control). En la [aplicación de escritorio](/docs/es/desktop#work-in-parallel-with-sessions), seleccione la opción **worktree** cuando inicie una sesión para darle su propio worktree.12 Los worktrees requieren un repositorio de git; para otros sistemas de control de versiones, [configure hooks para reemplazar la lógica de git](#non-git-version-control). En la [aplicación de escritorio](/docs/es/desktop#work-in-parallel-with-sessions), seleccione la opción **worktree** cuando inicie una sesión para darle su propio worktree.


104* **Redirecciones de git**: Claude Code bloquea un comando Bash o Monitor que redirige git al checkout principal. La redirección puede venir a través de `git -C`, `--git-dir`, una variable `GIT_DIR` o `GIT_WORK_TREE`, o un `cd` al checkout principal antes de ejecutar git.104* **Redirecciones de git**: Claude Code bloquea un comando Bash o Monitor que redirige git al checkout principal. La redirección puede venir a través de `git -C`, `--git-dir`, una variable `GIT_DIR` o `GIT_WORK_TREE`, o un `cd` al checkout principal antes de ejecutar git.

105* **Forma del comando**: Claude Code bloquea un comando Bash o Monitor cuando no puede verificar desde el texto del comando que cualquier git que ejecute el comando permanece dentro del worktree. Eso sucede, por ejemplo, cuando el nombre del comando se calcula en tiempo de ejecución, cuando la sintaxis no se puede analizar, o cuando una expansión como `${!name}` o `${ command; }` podría ejecutar un comando que el texto no especifica. Claude Code le dice a Claude cómo reescribir el comando rechazado, como dividirlo en comandos simples y separados. No puede desactivar esta verificación.105* **Forma del comando**: Claude Code bloquea un comando Bash o Monitor cuando no puede verificar desde el texto del comando que cualquier git que ejecute el comando permanece dentro del worktree. Eso sucede, por ejemplo, cuando el nombre del comando se calcula en tiempo de ejecución, cuando la sintaxis no se puede analizar, o cuando una expansión como `${!name}` o `${ command; }` podría ejecutar un comando que el texto no especifica. Claude Code le dice a Claude cómo reescribir el comando rechazado, como dividirlo en comandos simples y separados. No puede desactivar esta verificación.

106 106 

107Estas verificaciones leen la ruta a la que apunta una edición, el directorio en el que se ejecuta un comando y el texto del comando. Ninguna de ellas rastrea qué archivos escribe un comando de shell, por lo que un comando que escribe en el checkout principal sin ejecutar git allí, como `cp` o una redirección del shell, no es rechazado por ellas. Claude Code trata ese comando como cualquier otro comando de shell, así que si se ejecuta o te solicita permiso depende de tu [modo de permisos](/docs/es/permission-modes) y de tus reglas.

108 

107Las verificaciones se aplican al repositorio desde el que lanzó Claude Code. También cubren el checkout principal desde el que está vinculado un worktree vinculado. Para comandos PowerShell, Claude Code aplica solo la verificación del directorio de trabajo.109Las verificaciones se aplican al repositorio desde el que lanzó Claude Code. También cubren el checkout principal desde el que está vinculado un worktree vinculado. Para comandos PowerShell, Claude Code aplica solo la verificación del directorio de trabajo.

108 110 

109Claude ve cada rechazo como un error de herramienta que nombra el worktree y dice cómo proceder. Para un comando rechazado, consulte [qué significa el mensaje de rechazo y cómo borrarlo](/docs/es/errors#command-blocked-by-the-worktree-isolation-checks).111Claude ve cada rechazo como un error de herramienta que nombra el worktree y dice cómo proceder. Para un comando rechazado, consulte [qué significa el mensaje de rechazo y cómo borrarlo](/docs/es/errors#command-blocked-by-the-worktree-isolation-checks).