SpyBara
Go Premium

Documentation 2026-10-26 22:57 UTC to 2026-10-27 22:59 UTC

69 files changed +1,317 −983. View all changes and history on the product overview
2026
Fri 30 23:01 Thu 29 23:57 Wed 28 23:57 Tue 27 22:59 Mon 26 22:57 Sun 25 23:58 Sat 24 22:59 Fri 23 22:59 Thu 22 22:58 Wed 21 23:02 Tue 20 23:00 Mon 19 23:58 Sat 17 23:57 Fri 16 22:59 Thu 15 23:58 Wed 14 22:58 Tue 13 23:57 Sun 11 23:57 Sat 10 23:01 Fri 9 23:02 Thu 8 22:58 Wed 7 23:59 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59
Details

79| `Permission Required:` | Una solicitud de permiso esperando tu respuesta |79| `Permission Required:` | Una solicitud de permiso esperando tu respuesta |

80| `Cost:` | El resumen de costo de la sesión cuando Claude Code sale, si tu cuenta [muestra costos](https://code.claude.com/docs/es/costs.md) |80| `Cost:` | El resumen de costo de la sesión cuando Claude Code sale, si tu cuenta [muestra costos](https://code.claude.com/docs/es/costs.md) |

81 81 

82Claude Code mantiene el cursor de la terminal en el símbolo de intercalación de entrada, para que el comando de lectura de línea actual de tu lector de pantalla lea el prompt que estás editando.82Claude Code mantiene el cursor de la terminal en el símbolo de intercalación de entrada, para que el comando de lectura de línea actual de tu lector de pantalla lea el prompt que estás editando. Mientras escribes al final de la línea de entrada, o presionas `Backspace` allí, Claude Code escribe solo los caracteres que cambian. Tu lector de pantalla repite solo esos caracteres.

83 

84Mientras escribes al final de la línea de entrada, o presionas `Backspace` allí, Claude Code escribe solo los caracteres que cambian. Tu lector de pantalla repite solo esos caracteres.

85 83 

86Cuando eliminas una palabra o una línea con uno de los [atajos de edición de texto](https://code.claude.com/docs/es/interactive-mode.md#text-editing), Claude Code anuncia el texto eliminado:84Cuando eliminas una palabra o una línea con uno de los [atajos de edición de texto](https://code.claude.com/docs/es/interactive-mode.md#text-editing), Claude Code anuncia el texto eliminado:

87 85 

admin-setup.md +1 −0

Details

191* [Server-managed settings](https://code.claude.com/docs/es/server-managed-settings.md): entregar política administrada desde la consola de administración de Claude191* [Server-managed settings](https://code.claude.com/docs/es/server-managed-settings.md): entregar política administrada desde la consola de administración de Claude

192* [All settings](https://code.claude.com/docs/es/settings-reference.md): cada clave de configuración, con dónde va y un ejemplo192* [All settings](https://code.claude.com/docs/es/settings-reference.md): cada clave de configuración, con dónde va y un ejemplo

193* [Which value Claude Code uses](https://code.claude.com/docs/es/settings.md#which-value-claude-code-uses): las reglas de precedencia entre configuración administrada, de proyecto, local y de usuario193* [Which value Claude Code uses](https://code.claude.com/docs/es/settings.md#which-value-claude-code-uses): las reglas de precedencia entre configuración administrada, de proyecto, local y de usuario

194* [Manage plugins for your organization](https://code.claude.com/docs/es/plugins/org.md): instalar plugins compartidos en cada máquina mediante la configuración administrada

194* [Monorepos and large repos](https://code.claude.com/docs/es/large-codebases.md): patrones de configuración por directorio para organizaciones que implementan en un monorepo195* [Monorepos and large repos](https://code.claude.com/docs/es/large-codebases.md): patrones de configuración por directorio para organizaciones que implementan en un monorepo

195* [Amazon Bedrock](https://code.claude.com/docs/es/amazon-bedrock.md), [Google Cloud's Agent Platform](https://code.claude.com/docs/es/google-vertex-ai.md), [Microsoft Foundry](https://code.claude.com/docs/es/microsoft-foundry.md): implementación específica del proveedor196* [Amazon Bedrock](https://code.claude.com/docs/es/amazon-bedrock.md), [Google Cloud's Agent Platform](https://code.claude.com/docs/es/google-vertex-ai.md), [Microsoft Foundry](https://code.claude.com/docs/es/microsoft-foundry.md): implementación específica del proveedor

196* [Claude Enterprise Administrator Guide](https://claude.com/resources/tutorials/claude-enterprise-administrator-guide): SSO, SCIM, gestión de asientos y guía de implementación197* [Claude Enterprise Administrator Guide](https://claude.com/resources/tutorials/claude-enterprise-administrator-guide): SSO, SCIM, gestión de asientos y guía de implementación

Details

41 41 

42Eso fueron cuatro turnos: tres con llamadas de herramientas, uno con respuesta final solo de texto.42Eso fueron cuatro turnos: tres con llamadas de herramientas, uno con respuesta final solo de texto.

43 43 

44Puede limitar el bucle con `max_turns` / `maxTurns`, que cuenta solo los turnos de uso de herramientas. Por ejemplo, `max_turns=2` en el bucle anterior se habría detenido antes del paso de edición. También puede usar `max_budget_usd` / `maxBudgetUsd` para limitar los turnos basándose en un umbral de gasto.44Puedes limitar el bucle con `max_turns` / `maxTurns`. Cuenta cada turno con llamadas a herramientas, más uno para la respuesta final solo de texto. Sin ese turno adicional, la ejecución termina con un `ResultMessage` de subtipo `error_max_turns` y sin respuesta final. Por ejemplo, `max_turns=2` en el bucle anterior se habría detenido antes del paso de edición. También puedes usar `max_budget_usd` / `maxBudgetUsd` para limitar los turnos basándote en un umbral de gasto.

45 45 

46Sin límites, el bucle se ejecuta hasta que Claude termine por su cuenta, lo cual está bien para tareas bien delimitadas pero puede ejecutarse durante mucho tiempo en prompts abiertos ("mejora esta base de código"). Establecer un presupuesto es un buen valor predeterminado para agentes de producción. Vea [Turnos y presupuesto](#turns-and-budget) a continuación para la referencia de opciones.46Sin límites, el bucle se ejecuta hasta que Claude termine por su cuenta, lo cual está bien para tareas bien delimitadas pero puede ejecutarse durante mucho tiempo en prompts abiertos ("mejora esta base de código"). Establecer un presupuesto es un buen valor predeterminado para agentes de producción. Vea [Turnos y presupuesto](#turns-and-budget) a continuación para la referencia de opciones.

47 47 


191 191 

192| Opción | Qué controla | Predeterminado |192| Opción | Qué controla | Predeterminado |

193| :- | :- | :- |193| :- | :- | :- |

194| Máximo de turnos (`max_turns` / `maxTurns`) | Máximo de viajes de ida y vuelta de uso de herramientas | Sin límite |194| Máximo de turnos (`max_turns` / `maxTurns`) | Número máximo de [turnos](#turns-and-messages) | Sin límite |

195| Presupuesto máximo (`max_budget_usd` / `maxBudgetUsd`) | Gasto estimado en el que se detiene el bucle | Sin límite |195| Presupuesto máximo (`max_budget_usd` / `maxBudgetUsd`) | Gasto estimado en el que se detiene el bucle | Sin límite |

196 196 

197Cuando se alcanza cualquiera de los límites, el SDK devuelve un `ResultMessage` con un subtipo de error correspondiente (`error_max_turns` o `error_max_budget_usd`). Vea [Manejar el resultado](#handle-the-result) para cómo verificar estos subtipos y [`ClaudeAgentOptions`](https://code.claude.com/docs/es/agent-sdk/python#claudeagentoptions) / [`Options`](https://code.claude.com/docs/es/agent-sdk/typescript#options) para la sintaxis.197Cuando se alcanza cualquiera de los límites, el SDK devuelve un `ResultMessage` con un subtipo de error correspondiente (`error_max_turns` o `error_max_budget_usd`). Vea [Manejar el resultado](#handle-the-result) para cómo verificar estos subtipos y [`ClaudeAgentOptions`](https://code.claude.com/docs/es/agent-sdk/python#claudeagentoptions) / [`Options`](https://code.claude.com/docs/es/agent-sdk/typescript#options) para la sintaxis.

Details

161 161 

162Ambos idiomas tienen los mismos setters:162Ambos idiomas tienen los mismos setters:

163 163 

164* **`setModel()` / `set_model()`**: cambia el modelo. Llámalo sin modelo para cambiar al [modelo predeterminado de Claude Code](https://code.claude.com/docs/es/model-config.md#default-model-setting) en lugar del `model` que pasaste en opciones.164* **`setModel()` / `set_model()`**: cambia el modelo. Llámalo sin modelo para cambiar al [modelo predeterminado de Claude Code](https://code.claude.com/docs/es/model-config.md#default-model-setting) en lugar del `model` que pasaste en opciones. Si la sesión está en modo automático y cambias a un modelo que el modo automático no admite, la sesión cambia al modo `default`. Para volver al modo automático, consulta [Modo automático (`auto`)](https://code.claude.com/docs/es/agent-sdk/permissions#auto-mode-auto).

165* **`setPermissionMode()` / `set_permission_mode()`**: cambia el modo de permisos165* **`setPermissionMode()` / `set_permission_mode()`**: cambia el modo de permisos

166 166 

167TypeScript también tiene `applyFlagSettings()` y `updateSettings()`:167TypeScript también tiene `applyFlagSettings()` y `updateSettings()`:

Details

192 192 

193El contenedor necesita el tiempo de ejecución del lenguaje de su SDK:193El contenedor necesita el tiempo de ejecución del lenguaje de su SDK:

194 194 

195* Python 3.10+ para el SDK de Python, o Node.js 18+ para el SDK de TypeScript195* Python 3.10+ para el SDK de Python, o Node.js 18.14+ para el SDK de TypeScript

196* Tanto los SDK de TypeScript como de Python incluyen un binario nativo de Claude Code para la mayoría de las instalaciones, y la CLI generada no necesita una instalación separada de Node.js. Consulte la [nota de instalación del quickstart](https://code.claude.com/docs/es/agent-sdk/quickstart.md) para las instalaciones que necesitan una instalación separada de Claude Code nativo.196* Tanto los SDK de TypeScript como de Python incluyen un binario nativo de Claude Code para la mayoría de las instalaciones, y la CLI generada no necesita una instalación separada de Node.js. Consulte la [nota de instalación del quickstart](https://code.claude.com/docs/es/agent-sdk/quickstart.md) para las instalaciones que necesitan una instalación separada de Claude Code nativo.

197 197 

198El binario incluido está fijado a la versión del paquete SDK, por lo que actualizar el SDK es cómo actualiza la CLI. El SDK sigue semver: tome versiones de parche continuamente y revise el changelog de [TypeScript](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/CHANGELOG.md) o [Python](https://github.com/anthropics/claude-agent-sdk-python/blob/main/CHANGELOG.md) antes de tomar una versión menor.198El binario incluido está fijado a la versión del paquete SDK, por lo que actualizar el SDK es cómo actualiza la CLI. El SDK sigue semver: tome versiones de parche continuamente y revise el changelog de [TypeScript](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/CHANGELOG.md) o [Python](https://github.com/anthropics/claude-agent-sdk-python/blob/main/CHANGELOG.md) antes de tomar una versión menor.


335 335 

336| Limitación | Qué hacer |336| Limitación | Qué hacer |

337| - | - |337| - | - |

338| Sin tiempo de espera de sesión de nivel superior | Una sesión no agota el tiempo de espera por sí sola. Establezca `maxTurns` en TypeScript o `max_turns` en Python para limitar cuántos viajes de ronda de uso de herramientas realiza el agente antes de detenerse. |338| Sin tiempo de espera de sesión de nivel superior | Una sesión no agota el tiempo de espera por sí sola. Establece `maxTurns` en TypeScript o `max_turns` en Python para limitar cuántos [turnos](https://code.claude.com/docs/es/agent-sdk/agent-loop.md#turns-and-messages) realiza el agente antes de detenerse. |

339| Crecimiento de memoria en sesiones largas | Limite la duración de la sesión o recicle subprocesos periódicamente. Consulte [Escalado y concurrencia](#scaling-and-concurrency). |339| Crecimiento de memoria en sesiones largas | Limite la duración de la sesión o recicle subprocesos periódicamente. Consulte [Escalado y concurrencia](#scaling-and-concurrency). |

340| Los fanouts de subagentes paralelos grandes pueden alcanzar límites de velocidad | Divida el trabajo en lotes más pequeños en lugar de emitir un envío amplio. |340| Los fanouts de subagentes paralelos grandes pueden alcanzar límites de velocidad | Divida el trabajo en lotes más pequeños en lugar de emitir un envío amplio. |

341| Sin plazo de reloj de pared por subagente | Limite cada [subagente](https://code.claude.com/docs/es/agent-sdk/subagents.md) con `maxTurns` en su `AgentDefinition`. `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` establece un perro guardián de estancamiento que se activa cuando un subagente deja de producir salida; no es un plazo de tiempo de ejecución total. |341| Sin plazo de reloj de pared por subagente | Limite cada [subagente](https://code.claude.com/docs/es/agent-sdk/subagents.md) con `maxTurns` en su `AgentDefinition`. `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` establece un perro guardián de estancamiento que se activa cuando un subagente deja de producir salida; no es un plazo de tiempo de ejecución total. |

Details

425 425 

426Establece `includeGitInstructions` en `false` para excluir las instrucciones integradas de commit y pull request, que forman parte de la descripción de la herramienta Bash y llegan a Claude incluso con un `systemPrompt` personalizado. Sin embargo, con el valor predeterminado mínimo, un `systemPrompt` personalizado o un agente personalizado del hilo principal que tenga su propio prompt, la sesión comienza sin la instantánea del estado de git.426Establece `includeGitInstructions` en `false` para excluir las instrucciones integradas de commit y pull request, que forman parte de la descripción de la herramienta Bash y llegan a Claude incluso con un `systemPrompt` personalizado. Sin embargo, con el valor predeterminado mínimo, un `systemPrompt` personalizado o un agente personalizado del hilo principal que tenga su propio prompt, la sesión comienza sin la instantánea del estado de git.

427 427 

428Si estableces `CLAUDE_CODE_DISABLE_ATTACHMENTS`, Claude Code también envía las menciones de archivo `@` como texto sin formato en lugar de expandirlas en contenido de archivo. La lista de subagentes disponibles y las notificaciones de tareas en segundo plano siguen llegando. Para evitar solo que se expandan las menciones de archivo `@`, establece en su lugar [`CLAUDE_CODE_DISABLE_FILE_MENTIONS=1`](https://code.claude.com/docs/es/env-vars#variables), en Claude Code v2.1.299 o posterior. Claude recibe entonces las rutas mencionadas junto con una nota para leerlas con sus herramientas de archivos.428* Si estableces `CLAUDE_CODE_DISABLE_ATTACHMENTS`, Claude Code también envía las menciones de archivo `@` como texto sin formato en lugar de expandirlas en contenido de archivo. La lista de subagentes disponibles y las notificaciones de tareas en segundo plano siguen llegando.

429* Para evitar solo que se expandan las menciones de archivo `@`, establece en su lugar [`CLAUDE_CODE_DISABLE_FILE_MENTIONS=1`](https://code.claude.com/docs/es/env-vars#variables), en Claude Code v2.1.299 o posterior. Claude recibe entonces las rutas mencionadas junto con una nota para leerlas con sus herramientas de archivos, y tus hooks `PreToolUse` ven cada lectura de archivo como una llamada a herramienta.

429 430 

430El siguiente ejemplo es para un agente que lleva sus propias reglas de commit en `append`. Establece ambas claves de `attribution` en cadenas vacías para eliminar el trailer y el pie de página, y desactiva `includeGitInstructions` para que las instrucciones de flujo de trabajo de commit propias de Claude Code no compitan con las suyas:431El siguiente ejemplo es para un agente que lleva sus propias reglas de commit en `append`. Establece ambas claves de `attribution` en cadenas vacías para eliminar el trailer y el pie de página, y desactiva `includeGitInstructions` para que las instrucciones de flujo de trabajo de commit propias de Claude Code no compitan con las suyas:

431 432 

Details

43Aplicar el [modo de permisos](#permission-modes) activo:43Aplicar el [modo de permisos](#permission-modes) activo:

44 44 

45* En modo `bypassPermissions`, Claude Code aprueba todo lo que llega a este paso excepto las [eliminaciones de rutas críticas](https://code.claude.com/docs/es/permission-modes.md#critical-paths) reconocidas y los comandos Bash marcados con [`Dangerous rm operation not ruled out`](https://code.claude.com/docs/es/permission-modes#dangerous-rm-operation-not-ruled-out), que se pasan en su lugar.45* En modo `bypassPermissions`, Claude Code aprueba todo lo que llega a este paso excepto las [eliminaciones de rutas críticas](https://code.claude.com/docs/es/permission-modes.md#critical-paths) reconocidas y los comandos Bash marcados con [`Dangerous rm operation not ruled out`](https://code.claude.com/docs/es/permission-modes#dangerous-rm-operation-not-ruled-out), que se pasan en su lugar.

46 * Para ejecutar esas eliminaciones sin solicitud de permiso, consulta [Desactivar la solicitud de eliminación de rutas críticas](https://code.claude.com/docs/es/permission-modes.md#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode).

46* En modo `acceptEdits`, Claude Code aprueba las operaciones de archivo enumeradas en [Modo de aceptación de ediciones](#accept-edits-mode-acceptedits).47* En modo `acceptEdits`, Claude Code aprueba las operaciones de archivo enumeradas en [Modo de aceptación de ediciones](#accept-edits-mode-acceptedits).

47* En modo `plan`, Claude Code envía las herramientas de edición de archivos a tu devolución de llamada `canUseTool` independientemente de las reglas de permiso.48* En modo `plan`, Claude Code envía las herramientas de edición de archivos a tu devolución de llamada `canUseTool` independientemente de las reglas de permiso.

48* En otros modos, la solicitud se pasa.49* En otros modos, la solicitud se pasa.


305> `allowed_tools` no restringe este modo. Cada herramienta se aprueba, no solo las que enumeró. Estos controles aún se aplican:306> `allowed_tools` no restringe este modo. Cada herramienta se aprueba, no solo las que enumeró. Estos controles aún se aplican:

306>307>

307> * Las reglas de denegación, las reglas explícitas de `ask` y los hooks se evalúan antes de la verificación del modo y aún pueden bloquear una herramienta.308> * Las reglas de denegación, las reglas explícitas de `ask` y los hooks se evalúan antes de la verificación del modo y aún pueden bloquear una herramienta.

308> * Las herramientas de conector [que tu organización configuró como `ask`](https://code.claude.com/docs/es/mcp#organization-controls-on-connector-tools), las herramientas que requieren interacción del usuario y las [eliminaciones de rutas críticas](https://code.claude.com/docs/es/permission-modes.md#critical-paths) reconocidas aún se transfieren a tu devolución de llamada `canUseTool`. La verificación que reconoce estas eliminaciones [puede pasar por alto algunos comandos](https://code.claude.com/docs/es/permission-modes.md#critical-paths). Fuera de una [sesión en la nube](https://code.claude.com/docs/es/claude-code-on-the-web.md), las llamadas a herramientas personalizadas que tu aplicación [marca como `always_ask`](https://code.claude.com/docs/es/agent-sdk/custom-tools#require-approval-for-specific-tools) también se transfieren a la devolución de llamada.309> * Las herramientas de conector [que tu organización configuró como `ask`](https://code.claude.com/docs/es/mcp#organization-controls-on-connector-tools), las herramientas que requieren interacción del usuario y las [eliminaciones de rutas críticas](https://code.claude.com/docs/es/permission-modes.md#critical-paths) reconocidas aún se transfieren a tu devolución de llamada `canUseTool`. La verificación que reconoce estas eliminaciones [puede pasar por alto algunos comandos](https://code.claude.com/docs/es/permission-modes.md#critical-paths), y puedes [desactivar la solicitud de eliminación de rutas críticas](https://code.claude.com/docs/es/permission-modes.md#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode). Fuera de una [sesión en la nube](https://code.claude.com/docs/es/claude-code-on-the-web.md), las llamadas a herramientas personalizadas que tu aplicación [marca como `always_ask`](https://code.claude.com/docs/es/agent-sdk/custom-tools#require-approval-for-specific-tools) también se transfieren a la devolución de llamada.

309> * Las [medidas de seguridad de mensajería entre sesiones](https://code.claude.com/docs/es/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) aún se aplican.310> * Las [medidas de seguridad de mensajería entre sesiones](https://code.claude.com/docs/es/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) aún se aplican.

310 311 

311#### Modo de planificación (`plan`)312#### Modo de planificación (`plan`)

Details

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

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

882| `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 |882| `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 |

883| `max_turns` | `int \| None` | `None` | Máximo de turnos agénticos (ciclos de ida y vuelta de uso de herramientas) |883| `max_turns` | `int \| None` | `None` | Máximo de [turnos](https://code.claude.com/docs/es/agent-sdk/agent-loop.md#turns-and-messages) agénticos |

884| `max_budget_usd` | `float \| None` | `None` | Detener la consulta cuando la estimación de costo del lado del cliente alcance este valor en USD. La estimación puede superar este valor, así que [deja margen](https://code.claude.com/docs/es/agent-sdk/agent-loop.md#budget-headroom). 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](https://code.claude.com/docs/es/agent-sdk/cost-tracking.md) |884| `max_budget_usd` | `float \| None` | `None` | Detener la consulta cuando la estimación de costo del lado del cliente alcance este valor en USD. La estimación puede superar este valor, así que [deja margen](https://code.claude.com/docs/es/agent-sdk/agent-loop.md#budget-headroom). 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](https://code.claude.com/docs/es/agent-sdk/cost-tracking.md) |

885| `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](https://code.claude.com/docs/es/permissions.md#bash-rule-limits). Consulta [Permisos](https://code.claude.com/docs/es/agent-sdk/permissions.md#allow-and-deny-rules) |885| `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](https://code.claude.com/docs/es/permissions.md#bash-rule-limits). Consulta [Permisos](https://code.claude.com/docs/es/agent-sdk/permissions.md#allow-and-deny-rules) |

886| `enable_file_checkpointing` | `bool` | `False` | Habilitar el seguimiento de cambios de archivos para rebobinar. Consulta [Checkpointing de archivos](https://code.claude.com/docs/es/agent-sdk/file-checkpointing.md) |886| `enable_file_checkpointing` | `bool` | `False` | Habilitar el seguimiento de cambios de archivos para rebobinar. Consulta [Checkpointing de archivos](https://code.claude.com/docs/es/agent-sdk/file-checkpointing.md) |


2568 2568 

2569### Agent2569### Agent

2570 2570 

2571**Nombre de herramienta:** `Agent`. El nombre anterior `Task` aún se acepta como alias, y la lista `tools` en el [`SystemMessage`](#systemmessage) de inicialización reporta esta herramienta como `Task` para compatibilidad hacia atrás.2571**Nombre de herramienta:** `Agent`. El nombre anterior `Task` aún se acepta como alias cuando esta herramienta está disponible para la sesión.

2572 

2573La lista `tools` en el [`SystemMessage`](#systemmessage) de inicialización reporta esta herramienta como `Task` para compatibilidad hacia atrás.

2572 2574 

2573**Entrada:**2575**Entrada:**

2574 2576 


3642| `deniedDomains` | `list[str]` | `[]` | Nombres de dominio que los procesos en sandbox no pueden acceder. Tiene precedencia sobre `allowedDomains` |3644| `deniedDomains` | `list[str]` | `[]` | Nombres de dominio que los procesos en sandbox no pueden acceder. Tiene precedencia sobre `allowedDomains` |

3643| `allowManagedDomainsOnly` | `bool` | `False` | Solo configuración administrada: cuando se establece en configuración administrada, ignorar `allowedDomains` y reglas de permitidos de `WebFetch(domain:...)` de fuentes de configuración no administradas. No tiene efecto cuando se establece a través de opciones de SDK |3645| `allowManagedDomainsOnly` | `bool` | `False` | Solo configuración administrada: cuando se establece en configuración administrada, ignorar `allowedDomains` y reglas de permitidos de `WebFetch(domain:...)` de fuentes de configuración no administradas. No tiene efecto cuando se establece a través de opciones de SDK |

3644| `allowUnixSockets` | `list[str]` | `[]` | Solo macOS: rutas de socket Unix que los procesos pueden acceder, como el socket de Docker. Se ignora en Linux |3646| `allowUnixSockets` | `list[str]` | `[]` | Solo macOS: rutas de socket Unix que los procesos pueden acceder, como el socket de Docker. Se ignora en Linux |

3645| `allowAllUnixSockets` | `bool` | `False` | Permitir acceso a todos los sockets Unix |3647| `allowAllUnixSockets` | `bool` | `False` | Permitir acceso a todos los sockets Unix y, en Linux, a los sockets de VM (`AF_VSOCK`) |

3646| `allowLocalBinding` | `bool` | `False` | Permitir que los procesos se vinculen a puertos locales (por ejemplo, para servidores de desarrollo) |3648| `allowLocalBinding` | `bool` | `False` | Permitir que los procesos se vinculen a puertos locales (por ejemplo, para servidores de desarrollo) |

3647| `allowMachLookup` | `list[str]` | `[]` | Solo macOS: nombres de servicios XPC/Mach para permitir. Admite un comodín al final |3649| `allowMachLookup` | `list[str]` | `[]` | Solo macOS: nombres de servicios XPC/Mach para permitir. Admite un comodín al final |

3648| `httpProxyPort` | `int` | `None` | Puerto proxy HTTP para solicitudes de red |3650| `httpProxyPort` | `int` | `None` | Puerto proxy HTTP para solicitudes de red |

Details

16 16 

17## Requisitos previos17## Requisitos previos

18 18 

19* **Node.js 18+** o **Python 3.10+**19* **Node.js 18.14+** o **Python 3.10+**

20* Una **cuenta de Anthropic**. Si no tiene una, [regístrese aquí](https://platform.claude.com/).20* Una **cuenta de Anthropic**. Si no tiene una, [regístrese aquí](https://platform.claude.com/).

21 21 

22## Configuración22## Configuración

Details

118 118 

119### Manejar un stream que se corta119### Manejar un stream que se corta

120 120 

121Si un stream se corta a mitad de un mensaje, por ejemplo cuando interrumpes el turno o se cae la conexión, igualmente recibes el `message_stop` de ese mensaje antes de que termine el turno. Un bloque de texto o de pensamiento cortado también recibe su `content_block_stop`. Una llamada a herramienta cortada no lo recibe, así que si `message_stop` llega mientras el bloque de una llamada a herramienta sigue abierto, trata la entrada de esa llamada como incompleta.121Si un stream se corta a mitad de un mensaje, igualmente recibes el `message_stop` de ese mensaje antes de que termine el turno. Entre las causas de un stream cortado están un turno interrumpido, una conexión caída y que se recurra a una solicitud sin streaming. Es posible que `content_block_stop` y `message_delta` falten antes de ese `message_stop`:

122 

123* **`content_block_stop`**: llega para el bloque que estaba abierto, a menos que ese bloque sea una llamada a herramienta. Si `message_stop` llega mientras el bloque de una llamada a herramienta sigue abierto, trata la entrada de esa llamada como incompleta.

124* **`message_delta`**: llega cuando interrumpes el turno, y puede faltar después de que se caiga la conexión o se recurra a una solicitud sin streaming, así que no lo esperes en un mensaje cortado.

122 125 

123Antes de Claude Code v2.1.290, un stream cortado podía terminar el turno sin `message_stop`, por lo que una respuesta que renderizas a partir de eventos de stream podía seguir mostrándose como en curso. El Agent SDK de TypeScript incluye Claude Code v2.1.290 o posterior a partir de v0.3.290, y el Agent SDK de Python a partir de v0.2.164. Si una respuesta sigue mostrándose como en curso después de que termina el turno, actualiza el SDK.126Antes de Claude Code v2.1.290, un stream cortado podía terminar el turno sin `message_stop`, por lo que una respuesta que renderizas a partir de eventos de stream podía seguir mostrándose como en curso. El Agent SDK de TypeScript incluye Claude Code v2.1.290 o posterior a partir de v0.3.290, y el Agent SDK de Python a partir de v0.2.164. Si una respuesta sigue mostrándose como en curso después de que termina el turno, actualiza el SDK.

124 127 

Details

105 105 

106Devuelve una `Promise<`[`WarmQuery`](#warmquery)`>` que se resuelve una vez que el subproceso se ha generado y ha completado su protocolo de inicialización.106Devuelve una `Promise<`[`WarmQuery`](#warmquery)`>` que se resuelve una vez que el subproceso se ha generado y ha completado su protocolo de inicialización.

107 107 

108De los mensajes [`hook_progress`](#sdkhookprogressmessage) que un hook `SessionStart` o `Setup` emite antes de que se complete el protocolo de inicialización, solo recibes el más reciente, que contiene toda la salida del hook hasta ese momento. `startup()` retiene ese mensaje, el mensaje [`hook_started`](#sdkhookstartedmessage) del hook y cualquier otra cosa que el subproceso emita antes de que se complete el protocolo de inicialización. Los mensajes retenidos te llegan una vez que llamas a `.query()` en el `WarmQuery` e iteras el resultado.

109 

108#### Ejemplo110#### Ejemplo

109 111 

110Llama a `startup()` temprano, por ejemplo al inicio de la aplicación, y luego llama a `.query()` en el identificador devuelto una vez que un prompt esté listo. Esto saca la generación e inicialización del subproceso de la ruta crítica.112Llama a `startup()` temprano, por ejemplo al inicio de la aplicación, y luego llama a `.query()` en el identificador devuelto una vez que un prompt esté listo. Esto saca la generación e inicialización del subproceso de la ruta crítica.


524| `managedSettings` | `Settings` | `undefined` | Configuración de nivel de política que tu proceso host proporciona a la sesión generada. En máquinas con configuración administrada implementada por un administrador, Claude Code la ignora a menos que la fuente administrada de mayor prioridad del administrador establezca `parentSettingsBehavior: 'merge'`, y nunca la combina mientras un [`policyHelper`](https://code.claude.com/docs/es/settings-reference#policyhelper) proporcione configuración administrada. Los valores combinados pasan por un filtro solo restrictivo; [Restringir la configuración principal](https://code.claude.com/docs/es/claude-apps-gateway#restrict-parent-settings) explica lo que admite el filtro y los bloqueos `allowManaged*Only`. Un host que establece [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/es/env-vars) hace que, en cambio, se lean tres claves directamente de este payload: su [configuración de modelos](https://code.claude.com/docs/es/model-config.md#restrict-model-selection) en Claude Code v2.1.222 o posterior, [`modelPricing`](https://code.claude.com/docs/es/settings-reference#modelpricing) cuando ninguna fuente administrada lo establece en v2.1.246 o posterior, y su entrada env `ENABLE_TOOL_SEARCH` en v2.1.247 o posterior |526| `managedSettings` | `Settings` | `undefined` | Configuración de nivel de política que tu proceso host proporciona a la sesión generada. En máquinas con configuración administrada implementada por un administrador, Claude Code la ignora a menos que la fuente administrada de mayor prioridad del administrador establezca `parentSettingsBehavior: 'merge'`, y nunca la combina mientras un [`policyHelper`](https://code.claude.com/docs/es/settings-reference#policyhelper) proporcione configuración administrada. Los valores combinados pasan por un filtro solo restrictivo; [Restringir la configuración principal](https://code.claude.com/docs/es/claude-apps-gateway#restrict-parent-settings) explica lo que admite el filtro y los bloqueos `allowManaged*Only`. Un host que establece [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/es/env-vars) hace que, en cambio, se lean tres claves directamente de este payload: su [configuración de modelos](https://code.claude.com/docs/es/model-config.md#restrict-model-selection) en Claude Code v2.1.222 o posterior, [`modelPricing`](https://code.claude.com/docs/es/settings-reference#modelpricing) cuando ninguna fuente administrada lo establece en v2.1.246 o posterior, y su entrada env `ENABLE_TOOL_SEARCH` en v2.1.247 o posterior |

525| `maxBudgetUsd` | `number` | `undefined` | Detiene la consulta cuando la estimación de costo del lado del cliente alcanza este valor en USD. La estimación puede superar este valor, así que [deja margen](https://code.claude.com/docs/es/agent-sdk/agent-loop.md#budget-headroom). Solo cuenta el gasto propio de la llamada; los totales restaurados de una sesión reanudada no cuentan. Para advertencias sobre la precisión y el comportamiento de restablecimiento, consulta [Seguimiento de costos y uso](https://code.claude.com/docs/es/agent-sdk/cost-tracking.md) |527| `maxBudgetUsd` | `number` | `undefined` | Detiene la consulta cuando la estimación de costo del lado del cliente alcanza este valor en USD. La estimación puede superar este valor, así que [deja margen](https://code.claude.com/docs/es/agent-sdk/agent-loop.md#budget-headroom). Solo cuenta el gasto propio de la llamada; los totales restaurados de una sesión reanudada no cuentan. Para advertencias sobre la precisión y el comportamiento de restablecimiento, consulta [Seguimiento de costos y uso](https://code.claude.com/docs/es/agent-sdk/cost-tracking.md) |

526| `maxThinkingTokens` | `number` | `undefined` | *Obsoleto:* usa `thinking` en su lugar. Máximo de tokens para el proceso de pensamiento |528| `maxThinkingTokens` | `number` | `undefined` | *Obsoleto:* usa `thinking` en su lugar. Máximo de tokens para el proceso de pensamiento |

527| `maxTurns` | `number` | `undefined` | Máximo de turnos agénticos (ciclos de ida y vuelta de uso de herramientas) |529| `maxTurns` | `number` | `undefined` | Máximo de [turnos](https://code.claude.com/docs/es/agent-sdk/agent-loop.md#turns-and-messages) agénticos |

528| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | Configuraciones de servidores MCP |530| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | Configuraciones de servidores MCP |

529| `model` | `string` | Predeterminado de la CLI | Alias del modelo de Claude o nombre completo del modelo. Consulta [valores aceptados e IDs específicos de cada proveedor](https://code.claude.com/docs/es/model-config.md#available-models) |531| `model` | `string` | Predeterminado de la CLI | Alias del modelo de Claude o nombre completo del modelo. Consulta [valores aceptados e IDs específicos de cada proveedor](https://code.claude.com/docs/es/model-config.md#available-models) |

530| `onElicitation` | `(request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult>` | `undefined` | Callback para manejar solicitudes de elicitación de MCP. Se llama cuando un servidor MCP solicita entrada del usuario y ningún hook la maneja primero. Cuando no se proporciona, las solicitudes de elicitación no manejadas se rechazan automáticamente |532| `onElicitation` | `(request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult>` | `undefined` | Callback para manejar solicitudes de elicitación de MCP. Se llama cuando un servidor MCP solicita entrada del usuario y ningún hook la maneja primero. Cuando no se proporciona, las solicitudes de elicitación no manejadas se rechazan automáticamente |


1403 };1405 };

1404```1406```

1405 1407 

1408Si devuelves `allow` con más de 4096 elementos en `updatedPermissions`, Claude Code trata el resultado como no válido y deniega la llamada a herramienta. Cada actualización cuenta como un elemento, y también cada entrada de su lista `rules` o `directories`. El mensaje de denegación termina con `updatedPermissions may hold at most 4096 updates, rules and directories in all`. Para que la llamada se permita, devuelve 4096 elementos o menos.

1409 

1406### `ToolConfig`1410### `ToolConfig`

1407 1411 

1408Configuración del comportamiento de las herramientas integradas.1412Configuración del comportamiento de las herramientas integradas.


1464 1468 

1465#### `McpSdkServerConfigWithInstance`1469#### `McpSdkServerConfigWithInstance`

1466 1470 

1467La configuración de un servidor MCP en proceso, uno que crea [`createSdkMcpServer()`](#createsdkmcpserver) y que se ejecuta dentro del proceso de tu aplicación. Es el objeto que devuelve `createSdkMcpServer()`, más una lista opcional `tools` de entradas [`McpServerToolPolicy`](#mcpservertoolpolicy) que añades tú mismo. Para exigir aprobación para las llamadas a una de las herramientas del servidor, o para denegarlas, añade una entrada que nombre la herramienta.1471Configuración de un servidor MCP en proceso. Es lo que devuelve [`createSdkMcpServer()`](#createsdkmcpserver), más una lista opcional `tools` de entradas [`McpServerToolPolicy`](#mcpservertoolpolicy) que tú agregas.

1468 1472 

1469```typescript theme={null}1473```typescript theme={null}

1470type McpSdkServerConfigWithInstance = {1474type McpSdkServerConfigWithInstance = {


1476};1480};

1477```1481```

1478 1482 

1479Para establecer una política, propaga el objeto que devuelve `createSdkMcpServer()` en un objeto nuevo dentro de `mcpServers` y añade la lista `tools` a ese objeto nuevo. La opción `tools` del propio `createSdkMcpServer()` es una lista distinta, que contiene las definiciones de herramientas y no acepta entradas de política. La lista de políticas requiere Agent SDK v0.3.301 o posterior, y [`McpServerToolPolicy`](#mcpservertoolpolicy) describe qué hace cada valor de `permission_policy`.1483Para exigir aprobación para las llamadas a una de las herramientas del servidor, o denegarlas, agrega una entrada de política que nombre la herramienta. Expande lo que devuelve `createSdkMcpServer()` en un objeto bajo `mcpServers` y coloca la entrada en una lista `tools` de ese objeto, porque la opción `tools` de la función acepta definiciones de herramientas y no entradas de política. La lista de políticas requiere Agent SDK v0.3.301 o posterior, y [`McpServerToolPolicy`](#mcpservertoolpolicy) describe qué hace cada valor de `permission_policy`.

1480 1484 

1481Este ejemplo aprueba de antemano todas las herramientas del servidor `records` con un comodín en `allowedTools`, y luego marca `delete_record` como `always_ask` para que las llamadas a ella vayan a `canUseTool` de todos modos. Con la anotación `destructiveHint: true`, la llamada sigue llegando al callback si la sesión se ejecuta en modo `auto`, donde de lo contrario el [clasificador](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) del modo automático podría aprobarla.1485En este script, un comodín de `allowedTools` aprueba de antemano todas las herramientas del servidor `records`, pero `delete_record` está marcada como `always_ask`, así que las llamadas a ella van a `canUseTool` de todos modos. Con la anotación `destructiveHint: true`, la llamada sigue llegando al callback si la sesión se ejecuta en modo `auto`, donde de otro modo el [clasificador](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) del modo automático podría aprobarla.

1482 1486 

1483```typescript theme={null}1487```typescript theme={null}

1484import { query, tool, createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";1488import { query, tool, createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";


1517}1521}

1518```1522```

1519 1523 

1520Cuando Claude llama a la herramienta, el script imprime `Approval requested for mcp__records__delete_record` antes de que se ejecute la herramienta `delete_record`, aunque la entrada de `allowedTools` habría aprobado la llamada en otro caso.1524Cuando Claude llama a `delete_record`, el script imprime `Approval requested for mcp__records__delete_record`.

1521 1525 

1522Para cambiar o levantar la política de una herramienta mientras la sesión se ejecuta, pasa la configuración del servidor con un nuevo valor de `tools` a [`setMcpServers()`](#mcpsetserversresult). El valor de `tools` que pases surte efecto a partir de la siguiente llamada de Claude a las herramientas de ese servidor:1526Para cambiar o levantar la política de una herramienta mientras la sesión se ejecuta, pasa la configuración del servidor con un nuevo valor de `tools` a [`setMcpServers()`](#mcpsetserversresult). El valor de `tools` que pases surte efecto a partir de la siguiente llamada de Claude a las herramientas de ese servidor:

1523 1527 


1556 1560 

1557##### Modos de permisos que pueden aprobar una llamada `always_ask`1561##### Modos de permisos que pueden aprobar una llamada `always_ask`

1558 1562 

1559En los modos `auto`, `plan` y `bypassPermissions`, una llamada a una herramienta marcada como [`always_ask`](#permission-policy-values) puede aprobarse antes de llegar a tu callback `canUseTool`. Busca el modo de tu sesión en esta lista para ver cuándo ocurre esa aprobación y qué establecer para que la llamada llegue a tu callback de todos modos:1563En los modos `auto`, `plan` y `bypassPermissions`, una llamada a una herramienta marcada como [`always_ask`](#permission-policy-values) puede aprobarse antes de llegar a tu callback `canUseTool`.

1560 1564 

1561* **`auto`**: el [clasificador](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) del modo automático revisa la llamada y puede permitirla. Para que todas las llamadas lleguen a tu callback en modo `auto`, establece `destructiveHint: true` en las [anotaciones](#toolannotations) de la herramienta1565* **`auto`**: el [clasificador](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) del modo automático revisa la llamada y puede permitirla. Para que todas las llamadas lleguen a tu callback en modo `auto`, establece `destructiveHint: true` en las [anotaciones](#toolannotations) de la herramienta

1562* **`plan`**: mientras el [modo automático esté disponible](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) para la sesión, las llamadas a una herramienta `always_ask` anotada con `readOnlyHint: true` van al clasificador del modo automático, que puede permitirlas. Las llamadas a otras herramientas `always_ask` llegan a tu callback. Para que las llamadas de una herramienta de solo lectura también lleguen a tu callback, añade `destructiveHint: true` a las anotaciones de esa herramienta junto con `readOnlyHint: true`. Como alternativa, establece [`useAutoModeDuringPlan`](https://code.claude.com/docs/es/settings-reference#useautomodeduringplan) en `false`, lo que desactiva el clasificador durante la planificación1566* **`plan`**: mientras el [modo automático esté disponible](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) para la sesión, las llamadas a una herramienta `always_ask` anotada con `readOnlyHint: true` van al clasificador del modo automático, que puede permitirlas. Las llamadas a otras herramientas `always_ask` llegan a tu callback. Para que las llamadas de una herramienta de solo lectura también lleguen a tu callback, añade `destructiveHint: true` a las anotaciones de esa herramienta junto con `readOnlyHint: true`. Como alternativa, establece [`useAutoModeDuringPlan`](https://code.claude.com/docs/es/settings-reference#useautomodeduringplan) en `false`, lo que desactiva el clasificador durante la planificación


1692 1696 

1693`aborted` es `true` cuando una interrupción o cancelación truncó el mensaje del asistente antes de que el stream se completara: el mensaje no tiene `stop_reason` y el contenido puede terminar a mitad de una palabra. El campo está ausente en los mensajes que se completaron normalmente. Requiere Agent SDK v0.3.214 o posterior.1697`aborted` es `true` cuando una interrupción o cancelación truncó el mensaje del asistente antes de que el stream se completara: el mensaje no tiene `stop_reason` y el contenido puede terminar a mitad de una palabra. El campo está ausente en los mensajes que se completaron normalmente. Requiere Agent SDK v0.3.214 o posterior.

1694 1698 

1695`agent_id` identifica el subagente que produjo el mensaje y está ausente en los mensajes del hilo principal. El valor es igual al `task_id` del evento [`task_started`](#sdktaskstartedmessage) de ese subagente y de sus demás eventos de tarea, y no cambia cuando el subagente se [reanuda](https://code.claude.com/docs/es/agent-sdk/subagents.md#resume-subagents). El campo requiere Agent SDK v0.3.292 o posterior.1699`agent_id` identifica al subagente que produjo el mensaje y está ausente en los mensajes del hilo principal. El valor es igual al `task_id` de [`task_started`](#sdktaskstartedmessage) y de los demás eventos de tarea de ese subagente, y no cambia cuando el subagente se [reanuda](https://code.claude.com/docs/es/agent-sdk/subagents.md#resume-subagents). En los mensajes de un [subagente anidado](https://code.claude.com/docs/es/sub-agents.md#let-subagents-spawn-their-own-subagents), nombra al subagente anidado, no al subagente que lo generó. El campo requiere Agent SDK v0.3.292 o posterior.

1696 1700 

1697Asocia los mensajes de un subagente con sus eventos de tarea mediante `agent_id`, en lugar de emparejar el `parent_tool_use_id` de un mensaje con el `tool_use_id` de un evento de tarea. Cuando una llamada a herramienta reanuda el subagente, los eventos de tarea llevan el `tool_use_id` de esa llamada, mientras que los mensajes conservan el `parent_tool_use_id` de la llamada a herramienta que inició el subagente por primera vez, así que ambos ya no coinciden.1701Asocia los mensajes de un subagente con sus eventos de tarea mediante `agent_id`, en lugar de emparejar el `parent_tool_use_id` de un mensaje con el `tool_use_id` de un evento de tarea. Cuando una llamada a herramienta reanuda el subagente, los eventos de tarea llevan el `tool_use_id` de esa llamada, mientras que los mensajes conservan el `parent_tool_use_id` de la llamada a herramienta que inició el subagente por primera vez, así que ambos ya no coinciden.

1698 1702 


3270 3274 

3271### Agent3275### Agent

3272 3276 

3273**Nombre de herramienta:** `Agent`. El nombre anterior `Task` aún se acepta como alias, y el array `tools` en el mensaje de inicialización [`SDKSystemMessage`](#sdksystemmessage) actualmente enumera esta herramienta como `Task` para compatibilidad hacia atrás.3277**Nombre de herramienta:** `Agent`. El nombre anterior `Task` aún se acepta como alias cuando esta herramienta está disponible para la sesión.

3278 

3279El array `tools` en el mensaje de inicialización [`SDKSystemMessage`](#sdksystemmessage) enumera esta herramienta como `Task` para compatibilidad hacia atrás.

3274 3280 

3275> [!NOTE]3281> [!NOTE]

3276>3282>


4007 4013 

4008### Agent4014### Agent

4009 4015 

4010**Nombre de la herramienta:** `Agent`. El nombre anterior `Task` todavía se acepta como alias, y el array `tools` del mensaje de inicialización [`SDKSystemMessage`](#sdksystemmessage) actualmente lista esta herramienta como `Task` por compatibilidad con versiones anteriores.4016**Nombre de la herramienta:** `Agent`. El nombre anterior `Task` todavía se acepta como alias cuando esta herramienta está disponible para la sesión.

4011 4017 

4012```typescript theme={null}4018```typescript theme={null}

4013type AgentOutput =4019type AgentOutput =


5207 5213 

5208#### Cuando el `_meta.ui` de una herramienta contiene solo `visibility`5214#### Cuando el `_meta.ui` de una herramienta contiene solo `visibility`

5209 5215 

5210Si tu servidor declara `ui.resourceUri` para una herramienta pero el `_meta.ui` que recibe tu aplicación contiene solo `visibility`, el objeto `ui` que envió el servidor no superó una de las comprobaciones de Claude Code. Claude Code comprueba `ui` y `ui/resourceUri` por separado, así que una clave puede llegar a tu aplicación cuando la otra falla. Compara el `_meta` de la respuesta `tools/list` de tu servidor con las comprobaciones de cada clave:5216Si tu servidor declara `ui.resourceUri` para una herramienta pero el `_meta.ui` que recibe tu aplicación contiene solo `visibility`, el objeto `ui` que envió el servidor no superó una de las comprobaciones de Claude Code. Compara el `_meta` de la respuesta `tools/list` de tu servidor con las comprobaciones de cada clave:

5211 5217 

5212* **`ui`**: llega a tu aplicación sin cambios, incluidos los miembros distintos de `resourceUri` y `visibility`, si se superan las tres comprobaciones:5218* **`ui`**: llega a tu aplicación sin cambios, incluidos los miembros distintos de `resourceUri` y `visibility`, si se superan las tres comprobaciones:

5213 5219 


5550 5556 

5551Claude Code entrega este mensaje, [`SDKHookProgressMessage`](#sdkhookprogressmessage) y [`SDKHookResponseMessage`](#sdkhookresponsemessage) al flujo de mensajes de inmediato, incluso mientras un hook `SessionStart` o `Setup` todavía se está ejecutando durante el inicio de la sesión. Claude Code v2.1.169 a v2.1.203 entregaba estos mensajes en un solo lote después de que un hook `SessionStart` o `Setup` se completaba; v2.1.204 restauró la entrega en vivo.5557Claude Code entrega este mensaje, [`SDKHookProgressMessage`](#sdkhookprogressmessage) y [`SDKHookResponseMessage`](#sdkhookresponsemessage) al flujo de mensajes de inmediato, incluso mientras un hook `SessionStart` o `Setup` todavía se está ejecutando durante el inicio de la sesión. Claude Code v2.1.169 a v2.1.203 entregaba estos mensajes en un solo lote después de que un hook `SessionStart` o `Setup` se completaba; v2.1.204 restauró la entrega en vivo.

5552 5558 

5559Si inicias la sesión con [`startup()`](#startup), estos mensajes te llegan una vez que llamas a `.query()` e iteras el resultado.

5560 

5553```typescript theme={null}5561```typescript theme={null}

5554type SDKHookStartedMessage = {5562type SDKHookStartedMessage = {

5555 type: "system";5563 type: "system";


6069| `allowManagedDomainsOnly` | `boolean` | `false` | Solo configuración administrada. Cuando se establece en [configuración administrada](https://code.claude.com/docs/es/managed-settings.md), solo se respetan las entradas `allowedDomains` y las reglas de permitir `WebFetch(domain:...)` de la configuración administrada, y se ignoran las entradas de permitir de la configuración de usuario, proyecto o local. Desde el SDK, páselo a través de la opción [`managedSettings`](#options) |6077| `allowManagedDomainsOnly` | `boolean` | `false` | Solo configuración administrada. Cuando se establece en [configuración administrada](https://code.claude.com/docs/es/managed-settings.md), solo se respetan las entradas `allowedDomains` y las reglas de permitir `WebFetch(domain:...)` de la configuración administrada, y se ignoran las entradas de permitir de la configuración de usuario, proyecto o local. Desde el SDK, páselo a través de la opción [`managedSettings`](#options) |

6070| `allowLocalBinding` | `boolean` | `false` | Permita que los procesos se vinculen a puertos locales (por ejemplo, para servidores de desarrollo) |6078| `allowLocalBinding` | `boolean` | `false` | Permita que los procesos se vinculen a puertos locales (por ejemplo, para servidores de desarrollo) |

6071| `allowUnixSockets` | `string[]` | `[]` | Rutas de socket Unix a las que los procesos pueden acceder (por ejemplo, socket de Docker) |6079| `allowUnixSockets` | `string[]` | `[]` | Rutas de socket Unix a las que los procesos pueden acceder (por ejemplo, socket de Docker) |

6072| `allowAllUnixSockets` | `boolean` | `false` | Permita el acceso a todos los sockets Unix |6080| `allowAllUnixSockets` | `boolean` | `false` | Permite el acceso a todos los sockets Unix y, en Linux, a los sockets de VM (`AF_VSOCK`) |

6073| `httpProxyPort` | `number` | `undefined` | Puerto proxy HTTP para solicitudes de red |6081| `httpProxyPort` | `number` | `undefined` | Puerto proxy HTTP para solicitudes de red |

6074| `socksProxyPort` | `number` | `undefined` | Puerto proxy SOCKS para solicitudes de red |6082| `socksProxyPort` | `number` | `undefined` | Puerto proxy SOCKS para solicitudes de red |

6075 6083 

agent-view.md +8 −2

Details

320 320 

321#### Recuperar una sesión anterior321#### Recuperar una sesión anterior

322 322 

323Para recuperar una sesión en Claude Code v2.1.212 o posterior, escribe `/resume` en la [entrada de despacho](#dispatch-an-agent-from-agent-view). Se abre un selector con las sesiones anteriores del repositorio desde el que abriste la vista de agentes, de la más reciente a la más antigua, incluidas las sesiones que eliminaste de la lista. Las sesiones que ya tienen una fila no se enumeran. Presiona `Enter` para reanudar la sesión seleccionada como sesión en segundo plano, para que vuelva a la lista como una fila.323Para recuperar una sesión, escribe `/resume` en la [entrada de despacho](#dispatch-an-agent-from-agent-view). Se abre un selector con las sesiones anteriores del repositorio desde el que abriste la vista de agentes, de la más reciente a la más antigua, incluidas las sesiones que eliminaste de la lista. Las sesiones que ya tienen una fila no se enumeran. Presiona `Enter` para reanudar la sesión seleccionada como sesión en segundo plano, para que vuelva a la lista como una fila.

324 324 

325`/resume` falla con `isn't available in agent view` cuando:325`/resume` falla con `isn't available in agent view` cuando:

326 326 


410* `/logout` cierra tu sesión410* `/logout` cierra tu sesión

411* `/model`, `/effort` y `/fast` establecen [con qué comienzan las sesiones que envíes a continuación](#set-the-model-effort-and-fast-mode). `/effort` y `/fast` requieren Claude Code v2.1.299 o posterior.411* `/model`, `/effort` y `/fast` establecen [con qué comienzan las sesiones que envíes a continuación](#set-the-model-effort-and-fast-mode). `/effort` y `/fast` requieren Claude Code v2.1.299 o posterior.

412* `/login` abre el diálogo de inicio de sesión para que puedas iniciar sesión de nuevo sin adjuntarte a una sesión412* `/login` abre el diálogo de inicio de sesión para que puedas iniciar sesión de nuevo sin adjuntarte a una sesión

413* Un `/resume` sin argumentos, o su alias `/continue`, abre un selector de sesiones anteriores del repositorio para [recuperar una](#bring-back-a-past-session) como sesión en segundo plano. Requiere Claude Code v2.1.212 o posterior413* Un `/resume` sin argumentos, o su alias `/continue`, abre un selector de sesiones anteriores del repositorio para [recuperar una](#bring-back-a-past-session) como sesión en segundo plano

414 414 

415Los skills, tus propios comandos y los comandos integrados que expanden prompts, como `/init`, se envían a una nueva sesión en segundo plano como su primer prompt. La sugerencia `isn't available in agent view` significa que el comando integrado que ingresaste no se ejecutó. Para ejecutarlo, [adjúntate a una sesión](#attach-to-a-session) e ingrésalo allí. Todo lo que escribiste permanece en la entrada junto a la sugerencia para que puedas editarlo.415Los skills, tus propios comandos y los comandos integrados que expanden prompts, como `/init`, se envían a una nueva sesión en segundo plano como su primer prompt. La sugerencia `isn't available in agent view` significa que el comando integrado que ingresaste no se ejecutó. Para ejecutarlo, [adjúntate a una sesión](#attach-to-a-session) e ingrésalo allí. Todo lo que escribiste permanece en la entrada junto a la sugerencia para que puedas editarlo.

416 416 


454 454 

455Cuando [la vista de agentes está desactivada](#turn-off-agent-view), `/fork` inicia un [subagente bifurcado](https://code.claude.com/docs/es/sub-agents.md#fork-the-current-conversation) en lugar de copiar la sesión.455Cuando [la vista de agentes está desactivada](#turn-off-agent-view), `/fork` inicia un [subagente bifurcado](https://code.claude.com/docs/es/sub-agents.md#fork-the-current-conversation) en lugar de copiar la sesión.

456 456 

457##### Dar un prompt a la copia y abrir su sesión

458 

457Pasa un prompt como `/fork open a draft pull request with the work so far` y la copia comienza a trabajar en él de inmediato. Sin un prompt, la copia espera su primera instrucción: selecciona su fila en `claude agents` y presiona `Space` para enviarle una, o ejecuta `claude attach <id>`. La fila seleccionada muestra `space to send it a prompt` mientras espera.459Pasa un prompt como `/fork open a draft pull request with the work so far` y la copia comienza a trabajar en él de inmediato. Sin un prompt, la copia espera su primera instrucción: selecciona su fila en `claude agents` y presiona `Space` para enviarle una, o ejecuta `claude attach <id>`. La fila seleccionada muestra `space to send it a prompt` mientras espera.

458 460 

459La confirmación de `/fork` es una línea que muestra el estado de la copia, como `session running`, el nombre de su fila en la vista de agentes y su ID de sesión para `claude attach`. Haz clic en el nombre para cambiar a la copia: esta sesión pasa al segundo plano, igual que al presionar `←`, y la vista de agentes abre la sesión de la copia.461La confirmación de `/fork` es una línea que muestra el estado de la copia, como `session running`, el nombre de su fila en la vista de agentes y su ID de sesión para `claude attach`. Haz clic en el nombre para cambiar a la copia: esta sesión pasa al segundo plano, igual que al presionar `←`, y la vista de agentes abre la sesión de la copia.

460 462 

463##### Dónde se ejecuta la copia

464 

461Excepto cuando la copia [edita en el mismo lugar](#how-file-edits-are-isolated), Claude Code le indica que cree un worktree propio antes de hacer cambios en el código. Fuera de un repositorio git, solo una copia que sale de un worktree creado por un hook recibe la instrucción; sin un [hook `WorktreeCreate`](https://code.claude.com/docs/es/hooks#worktreecreate), la copia edita en el mismo lugar. A una copia que sale de tu worktree también se le indica que nunca edite, ejecute comandos ni entre en ese worktree, sea cual sea el ajuste de aislamiento.465Excepto cuando la copia [edita en el mismo lugar](#how-file-edits-are-isolated), Claude Code le indica que cree un worktree propio antes de hacer cambios en el código. Fuera de un repositorio git, solo una copia que sale de un worktree creado por un hook recibe la instrucción; sin un [hook `WorktreeCreate`](https://code.claude.com/docs/es/hooks#worktreecreate), la copia edita en el mismo lugar. A una copia que sale de tu worktree también se le indica que nunca edite, ejecute comandos ni entre en ese worktree, sea cual sea el ajuste de aislamiento.

462 466 

463Dónde comienza la copia depende de dónde se esté ejecutando la sesión actual:467Dónde comienza la copia depende de dónde se esté ejecutando la sesión actual:


467* Cuando iniciaste la sesión dentro de un worktree vinculado de un repositorio que tiene un árbol de trabajo principal, la copia comienza en ese árbol de trabajo principal, con la misma regla de worktree propio pero sin instrucción sobre la rama. Aquí la confirmación también termina con `runs in the origin tree`.471* Cuando iniciaste la sesión dentro de un worktree vinculado de un repositorio que tiene un árbol de trabajo principal, la copia comienza en ese árbol de trabajo principal, con la misma regla de worktree propio pero sin instrucción sobre la rama. Aquí la confirmación también termina con `runs in the origin tree`.

468* Una sesión iniciada dentro de un worktree de una estructura de repositorio bare no tiene un árbol de trabajo principal al que volver, por lo que la copia permanece donde está y la confirmación termina con `edits this checkout`. La misma nota aparece cuando el aislamiento con worktrees está [desactivado](#how-file-edits-are-isolated) en una sesión que no está dentro de un worktree vinculado, porque entonces la copia edita los archivos que tienes abiertos.472* Una sesión iniciada dentro de un worktree de una estructura de repositorio bare no tiene un árbol de trabajo principal al que volver, por lo que la copia permanece donde está y la confirmación termina con `edits this checkout`. La misma nota aparece cuando el aislamiento con worktrees está [desactivado](#how-file-edits-are-isolated) en una sesión que no está dentro de un worktree vinculado, porque entonces la copia edita los archivos que tienes abiertos.

469 473 

474##### Sesiones que no se pueden bifurcar

475 

470Las sesiones iniciadas con flags de inicio que la copia no heredaría, como un prompt del sistema reemplazado o una lista de permitidos `--tools`, no se pueden bifurcar; Claude Code lo indica en lugar de hacer una copia parcial. Una sesión enviada desde la vista de agentes se bifurca normalmente: la copia se inicia con la misma [definición de agente](https://code.claude.com/docs/es/sub-agents.md) e instrucciones añadidas que la sesión de la que proviene.476Las sesiones iniciadas con flags de inicio que la copia no heredaría, como un prompt del sistema reemplazado o una lista de permitidos `--tools`, no se pueden bifurcar; Claude Code lo indica en lugar de hacer una copia parcial. Una sesión enviada desde la vista de agentes se bifurca normalmente: la copia se inicia con la misma [definición de agente](https://code.claude.com/docs/es/sub-agents.md) e instrucciones añadidas que la sesión de la que proviene.

471 477 

472#### Qué se conserva al enviar al segundo plano478#### Qué se conserva al enviar al segundo plano

agents.md +1 −1

Details

32 32 

33> [!NOTE]33> [!NOTE]

34>34>

35> Ejecutar varias sesiones o subagentes a la vez multiplica el uso de tokens. Consulte [Costos](https://code.claude.com/docs/es/costs.md) para obtener detalles de uso y límites de velocidad.35> Ejecutar varias sesiones o subagentes a la vez multiplica el uso de tokens. Consulta [Costos](https://code.claude.com/docs/es/costs.md) para obtener detalles de uso y rate limits.

36 36 

37## Elija un enfoque37## Elija un enfoque

38 38 

Details

251| Modelo principal | Opus 5.5, por ejemplo `us.anthropic.claude-opus-5-5` en una región `us-*` |251| Modelo principal | Opus 5.5, por ejemplo `us.anthropic.claude-opus-5-5` en una región `us-*` |

252| Modelo pequeño/rápido | Sonnet 4.5, por ejemplo `us.anthropic.claude-sonnet-4-5-20250929-v1:0` en una región `us-*` |252| Modelo pequeño/rápido | Sonnet 4.5, por ejemplo `us.anthropic.claude-sonnet-4-5-20250929-v1:0` en una región `us-*` |

253 253 

254Antes de v2.1.280, el modelo principal en Amazon Bedrock era Opus 5 de forma predeterminada y el alias `opus` se resolvía a Opus 5 desde v2.1.219.

255 

254Las tareas en segundo plano como la generación de títulos de sesión utilizan el modelo pequeño/rápido, normalmente un modelo de clase Haiku. En Amazon Bedrock, Claude Code utiliza el modelo Sonnet predeterminado para tareas en segundo plano porque Haiku puede no estar habilitado en todas las cuentas o regiones. Dos selecciones cambian qué modelo las lleva:256Las tareas en segundo plano como la generación de títulos de sesión utilizan el modelo pequeño/rápido, normalmente un modelo de clase Haiku. En Amazon Bedrock, Claude Code utiliza el modelo Sonnet predeterminado para tareas en segundo plano porque Haiku puede no estar habilitado en todas las cuentas o regiones. Dos selecciones cambian qué modelo las lleva:

255 257 

256* Cuando selecciona un modelo principal con `--model`, `ANTHROPIC_MODEL`, o la configuración `model`, las tareas en segundo plano utilizan ese modelo. Cuando Claude Code inicia la sesión en el modelo que establece con [`ANTHROPIC_DEFAULT_MODEL`](https://code.claude.com/docs/es/model-config#set-a-default-model-for-new-sessions), las tareas en segundo plano también utilizan ese modelo. Establecer `ANTHROPIC_DEFAULT_OPUS_MODEL` sin `ANTHROPIC_DEFAULT_SONNET_MODEL` también cuenta como una selección, porque el modelo Sonnet integrado puede no estar habilitado en una cuenta que dirige su propio Opus.258* Cuando selecciona un modelo principal con `--model`, `ANTHROPIC_MODEL`, o la configuración `model`, las tareas en segundo plano utilizan ese modelo. Cuando Claude Code inicia la sesión en el modelo que establece con [`ANTHROPIC_DEFAULT_MODEL`](https://code.claude.com/docs/es/model-config#set-a-default-model-for-new-sessions), las tareas en segundo plano también utilizan ese modelo. Establecer `ANTHROPIC_DEFAULT_OPUS_MODEL` sin `ANTHROPIC_DEFAULT_SONNET_MODEL` también cuenta como una selección, porque el modelo Sonnet integrado puede no estar habilitado en una cuenta que dirige su propio Opus.


260>262>

261> Los modelos Opus tienen un precio por token más alto que los modelos Sonnet, así que si no fijas un modelo principal, se te factura a la tarifa de Opus. Para usar Sonnet 4.5 como el modelo principal, establece `ANTHROPIC_MODEL` en su ID de modelo completo. Un despliegue que dirige el predeterminado con `ANTHROPIC_DEFAULT_SONNET_MODEL` y no establece `ANTHROPIC_DEFAULT_OPUS_MODEL` mantiene su modelo Sonnet dirigido como el predeterminado.263> Los modelos Opus tienen un precio por token más alto que los modelos Sonnet, así que si no fijas un modelo principal, se te factura a la tarifa de Opus. Para usar Sonnet 4.5 como el modelo principal, establece `ANTHROPIC_MODEL` en su ID de modelo completo. Un despliegue que dirige el predeterminado con `ANTHROPIC_DEFAULT_SONNET_MODEL` y no establece `ANTHROPIC_DEFAULT_OPUS_MODEL` mantiene su modelo Sonnet dirigido como el predeterminado.

262 264 

263Antes de v2.1.280, el modelo principal en Amazon Bedrock era Opus 5 de forma predeterminada y el alias `opus` se resolvía a Opus 5 desde v2.1.219. De v2.1.207 a v2.1.218, el modelo principal en Amazon Bedrock era Opus 4.8 de forma predeterminada y el alias `opus` se resolvía a Opus 4.8.

264 

265Para personalizar modelos aún más, utilice uno de estos métodos:265Para personalizar modelos aún más, utilice uno de estos métodos:

266 266 

267```bash theme={null}267```bash theme={null}

artifacts.md +2 −2

Details

95 95 

96Selecciona un artefacto y luego presiona una de estas teclas:96Selecciona un artefacto y luego presiona una de estas teclas:

97 97 

98* **`Enter`**: lo abre en tu navegador cuando ya está adjunto a la sesión actual, y lo adjunta cuando no lo está. Antes de v2.1.216, `Enter` lo abría en tu navegador98* **`Enter`**: lo abre en tu navegador cuando ya está adjunto a la sesión actual, y lo adjunta cuando no lo está

99* **`o`**: lo abre en tu navegador99* **`o`**: lo abre en tu navegador

100* **`c`**: copia su enlace100* **`c`**: copia su enlace

101* **`d`**: fuera de una [sesión en la nube](https://code.claude.com/docs/es/claude-code-on-the-web.md), elimina permanentemente un artefacto que posees después de que confirmes. Su enlace deja de funcionar para todos, incluido tú101* **`d`**: fuera de una [sesión en la nube](https://code.claude.com/docs/es/claude-code-on-the-web.md), elimina permanentemente un artefacto que posees después de que confirmes. Su enlace deja de funcionar para todos, incluido tú


225 225 

226Cuando una página respaldada por un conector se representa pero sus secciones en vivo permanecen vacías para un visualizador en su organización, trabaje a través de estas causas:226Cuando una página respaldada por un conector se representa pero sus secciones en vivo permanecen vacías para un visualizador en su organización, trabaje a través de estas causas:

227 227 

228* **El visualizador no ha conectado el conector**: los conectores son por cuenta, de modo que cada visualizador necesita su propia conexión a cada conector que la página llama. Pueden agregar uno en **Configuración > Conectores** en claude.ai, luego recargar la página.228* **El visualizador no ha conectado el conector**: los conectores son por cuenta, de modo que cada visualizador necesita su propia conexión a cada conector que la página llama. Pueden agregar uno en [**Personalizar > Conectores**](https://claude.ai/customize/connectors) en claude.ai, luego recargar la página.

229* **El visualizador rechazó la solicitud de permiso**: un rechazo dura el resto de esa carga de página. Recargar la página trae la solicitud de permiso de vuelta.229* **El visualizador rechazó la solicitud de permiso**: un rechazo dura el resto de esa carga de página. Recargar la página trae la solicitud de permiso de vuelta.

230* **Las llamadas de conectores están desactivadas para la organización**: un Propietario controla el [conmutador **Habilitar conectores de artefactos**](#control-connector-calls-from-artifacts) en la configuración de administración.230* **Las llamadas de conectores están desactivadas para la organización**: un Propietario controla el [conmutador **Habilitar conectores de artefactos**](#control-connector-calls-from-artifacts) en la configuración de administración.

231* **La página llama a nombres de herramientas que el conector no expone**: las secciones afectadas permanecen vacías para todos, incluyéndolo a usted. Esto puede suceder cuando una página nombra las herramientas individuales detrás de un conector de estilo puerta de enlace que expone solo algunas de sus propias herramientas. Pida a Claude que corrija los nombres de herramientas que la página llama y publíquela de nuevo.231* **La página llama a nombres de herramientas que el conector no expone**: las secciones afectadas permanecen vacías para todos, incluyéndolo a usted. Esto puede suceder cuando una página nombra las herramientas individuales detrás de un conector de estilo puerta de enlace que expone solo algunas de sus propias herramientas. Pida a Claude que corrija los nombres de herramientas que la página llama y publíquela de nuevo.

best-practices.md +416 −354

Details

4 4 

5# Mejores prácticas para Claude Code5# Mejores prácticas para Claude Code

6 6 

7> Consejos y patrones para aprovechar al máximo Claude Code, desde configurar su entorno hasta escalar entre sesiones paralelas.7> Aprovecha más Claude Code: dile a Claude lo que no puede ver, dale una verificación que ejecutar y aplica las reglas que no pueden tener excepciones.

8 8 

9Claude Code es un entorno de codificación agencial. A diferencia de un chatbot que responde preguntas y espera, Claude Code puede leer sus archivos, ejecutar comandos, hacer cambios y trabajar autónomamente a través de problemas mientras usted observa, redirige o se aleja completamente.9Claude Code está diseñado de forma que, en la mayoría de los casos, tu primer prompt sencillo en una sesión nueva ya hace lo correcto, sin ninguna configuración de tu parte.

10 10 

11Esto cambia cómo trabaja. En lugar de escribir código usted mismo y pedirle a Claude que lo revise, describe lo que desea y Claude descubre cómo construirlo. Claude explora, planifica e implementa.11Por ejemplo:

12 12 

13Pero esta autonomía aún viene con una curva de aprendizaje. Claude trabaja dentro de ciertas restricciones que necesita entender.13* Para que los comandos se ejecuten de forma segura sin que tengas que aprobar cada uno, las nuevas sesiones de terminal y VS Code comienzan en [modo automático](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode), donde un clasificador revisa cualquier cosa arriesgada antes de que se ejecute.

14* Para mantener tu conversación principal enfocada mientras el trabajo independiente ocurre en paralelo, Claude delega en subagentes y solo te consulta cuando es necesario.

15* Para que una sesión larga siga adelante sin que tengas que gestionarla, tu conversación se compacta automáticamente antes de que se llene la ventana de contexto.

14 16 

15Esta guía cubre patrones que han demostrado ser efectivos en los equipos internos de Anthropic y para ingenieros que usan Claude Code en varios códigos base, lenguajes y entornos. Para saber cómo funciona el bucle agencial, consulte [Cómo funciona Claude Code](https://code.claude.com/docs/es/how-claude-code-works.md).17Esta página explica qué hacer cuando los valores predeterminados no son suficientes. Eso suele ocurrir cuando tu proyecto tiene conocimientos, reglas o restricciones que Claude no puede ver solo a partir del código:

16 18 

17***19* Un proceso de despliegue que vive en la cabeza de alguien

20* Un archivo que nunca debe leerse

21* Una verificación que tiene que pasar antes de que algo se considere terminado

22* Un presupuesto que no debes superar

18 23 

19La mayoría de las mejores prácticas se basan en una restricción: la ventana de contexto de Claude se llena rápidamente y el rendimiento se degrada a medida que se llena.24Ningún valor predeterminado puede saber esas cosas sobre tu proyecto, así que aquí es donde una pequeña configuración de tu parte vale la pena.

20 25 

21La ventana de contexto de Claude contiene toda su conversación, incluido cada mensaje, cada archivo que Claude lee y cada salida de comando. Sin embargo, esto puede llenarse rápidamente. Una única sesión de depuración o exploración de código base podría generar y consumir decenas de miles de tokens.26Cuando una sesión no sale como esperabas, casi siempre es por una de estas razones:

22 27 

23Esto importa porque el rendimiento del LLM se degrada a medida que se llena el contexto. Cuando la ventana de contexto se está llenando, Claude puede comenzar a "olvidar" instrucciones anteriores o cometer más errores. La ventana de contexto es el recurso más importante a gestionar. Para ver cómo se llena una sesión en la práctica, [vea un recorrido interactivo](https://code.claude.com/docs/es/context-window.md) de lo que se carga al inicio y cuánto cuesta cada lectura de archivo. Rastree el uso de contexto continuamente con una [línea de estado personalizada](https://code.claude.com/docs/es/statusline.md), y consulte [Reducir el uso de tokens](https://code.claude.com/docs/es/costs.md#reduce-token-usage) para estrategias sobre cómo reducir el uso de tokens.28* Claude construyó algo diferente de lo que tenías en mente, o tiene que redescubrir el mismo dato al inicio de cada sesión. Le falta información que no puede obtener leyendo el repositorio. Consulta [Dile a Claude lo que no puede ver](#tell-claude-what-it-cant-see).

29* Claude dijo que había terminado y no era del todo así, normalmente porque no tenía forma de verificar su propio trabajo. Consulta [Dale a Claude una verificación que ejecutar](#give-claude-a-check-to-run).

30* Claude hizo algo que nunca debe ocurrir en este repositorio, u omitió un paso que siempre debe ocurrir. Un prompt por sí solo no puede garantizar ninguna de las dos cosas. Consulta [Aplica las reglas que no pueden tener excepciones](#enforce-the-rules-that-cant-have-exceptions).

31* Claude lo hizo bien, pero le llevó más tiempo, tokens o solicitudes de permiso de lo que valía la tarea. Consulta [Cambia un valor predeterminado](#change-a-default).

24 32 

25***33[Deja que Claude trabaje sin ti](#let-claude-run-without-you) aplica estos mismos cuatro puntos a las ejecuciones desatendidas, y [Lo que puedes dejar de hacer](#what-you-can-stop-doing) enumera los consejos que los modelos actuales han vuelto innecesarios.

26 34 

27## Dé a Claude una forma de verificar su trabajo35> [!NOTE]

28 

29> [!TIP]

30>36>

31> Dé a Claude una verificación que pueda ejecutar: pruebas, una compilación, una captura de pantalla para comparar. Es la diferencia entre una sesión que observa y una de la que se aleja.37> La configuración para todo un equipo está en una página aparte: [Configura Claude Code para tu organización](https://code.claude.com/docs/es/admin-setup.md).

32 38 

33Claude se detiene cuando el trabajo parece estar hecho. Sin una verificación que pueda ejecutar, "parece estar hecho" es la única señal disponible, y usted se convierte en el bucle de verificación: cada error espera a que lo note. Dé a Claude algo que produzca un resultado de aprobado o reprobado, y el bucle se cierra por sí solo. Claude realiza el trabajo, ejecuta la verificación, lee el resultado e itera hasta que la verificación pase.39## Instrucciones deterministas y no deterministas

34 40 

35La verificación es cualquier cosa que devuelva una señal que Claude pueda leer en la conversación: un conjunto de pruebas, un código de salida de compilación, un linter, un script que compara la salida con una fixture, o una [captura de pantalla del navegador](https://code.claude.com/docs/es/chrome.md) comparada con un diseño. Ejecute [`/verify`](https://code.claude.com/docs/es/skills#run-and-verify-your-app) usted mismo después de que la verificación de Claude pase para confirmar el cambio contra la aplicación en ejecución.41Cada instrucción que le das a Claude Code es de uno de estos tipos:

36 42 

37| Estrategia | Antes | Después |431. No determinista: tú escribes la instrucción y Claude (el modelo) la lee. Puede ser tu prompt, `CLAUDE.md` o un skill. Luego el modelo decide qué hacer con esa información. Normalmente sigue tus indicaciones, y los modelos actuales son buenos entendiendo tu intención sin mucho contexto, pero no hay *garantía* de que siga tus instrucciones. Aún puede decidir no hacer cosas, o hacer otras.

38| - | - | - |442. Determinista: tú configuras la instrucción y Claude Code (el harness) *tiene* que ejecutarla. Puede ser un hook, una regla de denegación o una configuración administrada. Claude Code la aplica siempre, sin importar lo que haya decidido el modelo.

39| **Proporcionar criterios de verificación** | *"implementar una función que valide direcciones de correo electrónico"* | *"escribir una función validateEmail. casos de prueba de ejemplo: [user@example.com](mailto:user@example.com) es verdadero, inválido es falso, [user@.com](mailto:user@.com) es falso. ejecutar las pruebas después de implementar"* |

40| **Verificar cambios de UI visualmente** | *"hacer que el panel de control se vea mejor"* | *"\[pegar captura de pantalla] implementar este diseño. tomar una captura de pantalla del resultado y compararla con la original. listar diferencias y corregirlas"* |

41| **Abordar causas raíz, no síntomas** | *"la compilación está fallando"* | *"la compilación falla con este error: \[pegar error]. corregirlo y verificar que la compilación tenga éxito. abordar la causa raíz, no suprimir el error"* |

42 45 

43Una vez que la verificación existe, decida qué tan estrictamente detiene el trabajo:46La mayoría de las cosas en Claude Code existen en ambas formas:

44 47 

45* **En un solo mensaje**: pida a Claude que ejecute la verificación e itere en el mismo mensaje, como en la tabla anterior.48| | No determinista (Claude decide) | Determinista (Claude Code lo aplica) |

46* **En toda una sesión**: establezca la verificación como una [condición `/goal`](https://code.claude.com/docs/es/goal). Un evaluador separado la vuelve a verificar después de cada turno y Claude continúa trabajando hasta que se cumpla el objetivo. Si Claude se estanca, Claude Code eventualmente detiene la ejecución con el objetivo aún establecido — vea [cómo funciona la evaluación de /goal](https://code.claude.com/docs/es/goal.md#how-evaluation-works).49| :- | :- | :- |

47* **Como una puerta determinista**: un [hook Stop](https://code.claude.com/docs/es/hooks.md#stop) ejecuta su verificación como un script y bloquea el final del turno hasta que pase. [Stop input](https://code.claude.com/docs/es/hooks.md#stop-input) cubre el límite en bloqueos consecutivos.50| Qué hacer | Tu prompt, `CLAUDE.md`, los skills que Claude elige por sí mismo | Hooks, y los skills que solo tú puedes iniciar |

48* **Por una segunda opinión**: un [subagente de verificación](https://code.claude.com/docs/es/sub-agents.md) o un [flujo de trabajo dinámico](https://code.claude.com/docs/es/workflows.md) que verifica sus propios hallazgos tiene un modelo fresco que intenta refutar el resultado, por lo que el agente que realiza el trabajo no es el que lo califica.51| Qué puede tocar | El clasificador del modo automático | Reglas de denegación, el sandbox en [modo estricto](https://code.claude.com/docs/es/sandboxing.md#turn-off-the-retry-with-strict-sandbox-mode), configuración administrada |

52| Cuándo está terminado | Una petición de evidencia, `/goal`, `/code-review` | Pruebas, verificación de tipos, un hook `Stop`, CI |

53| Cuánto gasta | Nivel de esfuerzo, el propio ritmo de Claude | `--max-turns` o [`--max-budget-usd`](https://code.claude.com/docs/es/cli-reference) con `-p`, un [límite de gasto](https://code.claude.com/docs/es/costs.md) que hayas establecido |

54| Quién tiene la última palabra | El resumen de Claude de lo que hizo | Protección de ramas, una persona que aprueba la fusión |

49 55 

50Cada paso intercambia configuración por atención. La versión de mensaje funciona en cualquier tarea hoy. Las versiones `/goal` y Stop hook son las que permiten que una ejecución desatendida se complete correctamente sin usted.56La mayor parte del tiempo, quieres que Claude decida. Casi todas las pautas tienen excepciones, y los modelos actuales son buenos leyendo el código que tienen delante y juzgando si una pauta encaja con la situación. Con el código real delante, Claude suele estar mejor posicionado para tomar esa decisión que una regla que escribiste de antemano.

51 57 

52Haga que Claude muestre evidencia en lugar de afirmar el éxito: la salida de la prueba, el comando que ejecutó y lo que devolvió, o una captura de pantalla del resultado. Revisar evidencia es más rápido que volver a ejecutar la verificación usted mismo, y funciona para sesiones que no estaba observando.58El tipo determinista es para cuando quieres asegurarte de que ciertas cosas *siempre* ocurran (o nunca ocurran), sin importar lo que decida el modelo. No tiene que ser nada dramático. El modo automático ya [bloquea las cosas dramáticas](https://code.claude.com/docs/es/permission-modes.md#what-the-classifier-blocks-by-default), como un despliegue a producción o un force push sobre el trabajo de otra persona. Normalmente es algo específico de *tu* proyecto, y puede ser tan particular como quieras:

53 59 

54***60* Nunca editar el cliente generado en `src/gen/`

61* Siempre ejecutar el script de encabezado de licencia después de crear un archivo

55 62 

56## Explore primero, luego planifique, luego codifique63Podrías haber escrito cualquiera de estas como una línea en `CLAUDE.md` o en tu prompt, y Claude la seguiría casi siempre. Pero no importa con cuánta fuerza lo redactes: que Claude siga esa línea en un turno dado sigue siendo decisión de Claude.

57 64 

58> [!TIP]65> [!TIP]

59>66>

60> Separe la investigación y la planificación de la implementación para evitar resolver el problema incorrecto.67> Si sigues agregando énfasis a una línea de `CLAUDE.md` y Claude aún la pasa por alto, es señal de que esa línea debería ser un hook. Lo contrario también se cumple: si tienes hooks para cosas que solo son preferencias, elimínalos y deja que Claude decida.

61 68 

62Dejar que Claude salte directamente a la codificación puede producir código que resuelve el problema incorrecto. Use [plan mode](https://code.claude.com/docs/es/permission-modes.md#analyze-before-you-edit-with-plan-mode) para separar la exploración de la ejecución.69## Dile a Claude lo que no puede ver

63 70 

64El flujo de trabajo recomendado tiene cuatro fases:71> [!TIP]

72>

73> Escribe solo lo que Claude no puede encontrar leyendo el repositorio, o lo que de otro modo pasaría tiempo redescubriendo en cada sesión.

65 74 

66**1. Explorar**75Claude comienza cada tarea leyendo tu código, y los modelos actuales son *muy* buenos en esto. Encontrarán la estructura de tus archivos, tus convenciones, tu framework de pruebas y cómo están construidos los componentes existentes, normalmente más rápido de lo que podrías explicarlos. Eso significa que Claude ya sabe la mayor parte de lo que podrías sentir la tentación de escribirle.

67 76 

68Ingrese plan mode presionando `Shift+Tab` hasta que la barra de estado muestre `⏸ plan mode on`, o inicie la sesión con `claude --permission-mode plan`. Claude lee archivos y responde preguntas sin hacer cambios.77Lo que no puede encontrar es la información que nunca estuvo en el repositorio:

69 78 

70```txt title="claude (plan mode)" wrap theme={null}79* Una decisión que tu equipo tomó en una reunión

71read /src/auth and understand how we handle sessions and login.80* Un proceso de despliegue que vive en la cabeza de una persona

72also look at how we manage environment variables for secrets.81* La variable de entorno que necesitan tus pruebas de integración

73```

74 82 

75**2. Planificar**83También hay información que *sí* está en el repositorio pero que requiere unos minutos de búsqueda para encontrarla, y Claude tiene que repetir esa búsqueda al inicio de cada sesión.

76 84 

77Pida a Claude que cree un plan de implementación detallado.85Una buena prueba antes de escribir cualquier cosa para Claude:

78 86 

79```txt title="claude (plan mode)" wrap theme={null}871. ¿Podría encontrarlo leyendo el código?

80I want to add Google OAuth. What files need to change?882. ¿Realmente iría a buscarlo?

81What's the session flow? Create a plan.

82```

83 89 

84Presione `Ctrl+G` para abrir el plan en su editor de texto para edición directa antes de que Claude continúe.90Si ambas respuestas son sí, déjalo fuera.

85 91 

86**3. Implementar**92### Escribe un prompt específico

87 93 

88Salga de plan mode aprobando el plan o presionando `Shift+Tab`, luego deje que Claude codifique, verificando contra su plan.94Un prompt específico ayuda por la misma razón, porque le da a Claude información que todavía no tiene. Si nombras el archivo, describes el síntoma y dices desde el principio cómo se ve "corregido", normalmente te ahorras una ronda de correcciones más adelante.

89 95 

90```txt title="claude" wrap theme={null}96Lo mismo aplica a una preferencia entre dos enfoques razonables: Claude no puede leerla en el código, así que si te importa cuál elige, dilo desde el principio.

91implement the OAuth flow from your plan. write tests for the

92callback handler, run the test suite and fix any failures.

93```

94 97 

95**4. Confirmar**98| En lugar de | Prueba |

99| :- | :- |

100| *"corrige el error de inicio de sesión"* | *"los usuarios informan que el inicio de sesión falla después de que la sesión expira. revisa la actualización de tokens en src/auth/, escribe una prueba fallida que lo reproduzca y luego corrígelo"* |

101| *"agrega un widget de calendario"* | *"sigue el patrón de HotDogWidget.php y crea un widget de calendario que permita elegir un mes y pasar entre años. sin bibliotecas nuevas"* |

96 102 

97Pida a Claude que confirme con un mensaje descriptivo y cree un PR.103Si ya tienes lo que Claude necesita, entrégaselo en lugar de describirlo:

98 104 

99```txt title="claude" wrap theme={null}105* Un archivo: escribe `@` y la ruta para [incluir el contenido del archivo](https://code.claude.com/docs/es/common-workflows.md#reference-files-and-directories) en tu mensaje.

100commit with a descriptive message and open a PR106* Una imagen: pega en el prompt la captura de pantalla del diseño o del error.

101```107* Salida de un comando: canalízala desde tu shell con `cat error.log | claude -p "what's going on here"`.

102 108 

103Plan mode es útil, pero también agrega sobrecarga.109Frases como `think step by step` o `be thorough` son texto de prompt normal, no palabras clave. El control principal de cuánto piensa Claude es el [nivel de esfuerzo](https://code.claude.com/docs/es/model-config.md#adjust-effort-level), que se trata en [Cambia el modelo y el esfuerzo](#change-the-model-and-effort). Ese tipo de redacción aún puede empujar a Claude dentro de su ajuste de esfuerzo, pero no lo elevará por encima de él.

104 110 

105Para tareas donde el alcance es claro y la corrección es pequeña (como corregir un error tipográfico, agregar una línea de registro o renombrar una variable) pida a Claude que lo haga directamente.111Una frase que sí sigue ayudando es `be ambitious`. Claude tiende a leer una petición de forma conservadora y a construir lo mínimo que la satisface, ya que no puede ver cuánto esperabas. Cuando quieras la versión más completa, con los casos extremos resueltos y la continuación natural incluida, dilo:

106 112 

107La planificación es más útil cuando no está seguro del enfoque, cuando el cambio modifica múltiples archivos o cuando no está familiarizado con el código que se está modificando. Si pudiera describir el diff en una oración, omita el plan.113```text theme={null}

114build the settings page from the mockup. be ambitious: empty and error states, the save flow wired up, keyboard navigation, not just the layout

115```

108 116 

109***117Eso le dice a Claude el alcance, que solo tú conoces, en lugar de cuánto pensar.

110 118 

111## Proporcione contexto específico en sus indicaciones119Y cuando estás explorando en lugar de corregir algo específico, un prompt vago como `what would you improve in this file?` está completamente bien. Corregirás un poco más sobre la marcha, y esa es la contrapartida.

112 120 

113> [!TIP]121### Haz una lluvia de ideas con Claude primero

114>

115> Cuanto más precisas sean sus instrucciones, menos correcciones necesitará.

116 122 

117Claude puede inferir intención, pero no puede leer su mente. Haga referencia a archivos específicos, mencione restricciones y señale patrones de ejemplo.123Cuando todavía no sabes exactamente lo que quieres, no tienes que resolverlo todo antes de escribir el prompt. En su lugar, pídele a Claude que te entreviste:

118 124 

119| Estrategia | Antes | Después |125```text theme={null}

120| - | - | - |126I want to add rate limiting to the public API but haven't thought it through yet. Interview me until you could write the spec, then write it to SPEC.md.

121| **Delimitar la tarea.** Especifique qué archivo, qué escenario y preferencias de prueba. | *"agregar pruebas para foo.py"* | *"escribir una prueba para foo.py cubriendo el caso extremo donde el usuario ha cerrado sesión. evitar mocks."* |127```

122| **Señalar fuentes.** Dirija a Claude a la fuente que puede responder una pregunta. | *"¿por qué ExecutionFactory tiene una API tan extraña?"* | *"revisar el historial de git de ExecutionFactory y resumir cómo su API llegó a ser así"* |

123| **Hacer referencia a patrones existentes.** Señale a Claude los patrones en su código base. | *"agregar un widget de calendario"* | *"ver cómo se implementan los widgets existentes en la página de inicio para entender los patrones. HotDogWidget.php es un buen ejemplo. seguir el patrón para implementar un nuevo widget de calendario que permita al usuario seleccionar un mes y paginar hacia adelante/atrás para elegir un año. construir desde cero sin bibliotecas que no sean las ya utilizadas en el código base."* |

124| **Describir el síntoma.** Proporcione el síntoma, la ubicación probable y qué significa "corregido". | *"corregir el error de inicio de sesión"* | *"los usuarios informan que el inicio de sesión falla después del agotamiento de la sesión. verificar el flujo de autenticación en src/auth/, especialmente la actualización de tokens. escribir una prueba fallida que reproduzca el problema, luego corregirlo"* |

125 128 

126Las indicaciones vagas pueden ser útiles cuando está explorando y puede permitirse corregir el curso. Una indicación como `"¿qué mejoraría en este archivo?"` puede revelar cosas en las que no habría pensado en preguntar.129Claude vuelve con preguntas de opción múltiple sobre las partes que no has definido: límites por usuario o por clave, qué ocurre con las solicitudes que superan el límite, qué queda fuera del alcance. Sigue preguntando hasta que las respuestas formen una especificación.

127 130 

128### Proporcionar contenido enriquecido131Una vez que `SPEC.md` exista, inicia una sesión nueva para construir a partir de ella, de modo que la construcción empiece con un contexto limpio y una definición escrita de terminado. También es el archivo al que dirigirás al revisor más adelante, en [Dale a Claude una verificación que ejecutar](#give-claude-a-check-to-run).

129 132 

130> [!TIP]133### Mantén CLAUDE.md corto

131>

132> Use `@` para hacer referencia a archivos, pegue capturas de pantalla/imágenes o canalice datos directamente.

133 134 

134Puede proporcionar datos enriquecidos a Claude de varias maneras:135Claude Code carga [`CLAUDE.md`](https://code.claude.com/docs/es/memory) en cada sesión, lo que significa que cada línea ocupa un poco de la atención de Claude en *cada* tarea, sea relevante o no. Por eso el archivo funciona mejor cuando solo contiene lo que Claude no podría deducir del propio código:

135 136 

136* **Haga referencia a archivos con `@`** en lugar de describir dónde vive el código. Claude lee el archivo antes de responder.137* Cómo confirmar el trabajo en este repositorio: los comandos exactos de pruebas, verificación de tipos y lint, y cómo ejecutar un único archivo de pruebas

137* **Pegue imágenes directamente**. Copie/pegue o arrastre y suelte imágenes en la indicación.138* Lugares donde el código es engañoso: un patrón antiguo que está en todas partes pero que el código nuevo no debe copiar, o un directorio que parece sin uso pero no lo está

138* **Proporciona URLs** para documentación y referencias de API. Usa `/permissions` para agregar a la lista de permitidos los dominios de uso frecuente.139* Decisiones que no están en el repositorio: qué helper de errores eligió el equipo, cómo funcionan los despliegues, qué necesita una revisión de migración

139* **Canaliza datos** ejecutando `cat error.log | claude -p "explain this error"` para enviar el contenido de archivos directamente.140* Cualquier cosa que ya hayas tenido que corregir dos veces

140* **Deje que Claude obtenga lo que necesita**. Diga a Claude que extraiga contexto por sí mismo usando comandos Bash, herramientas MCP o leyendo archivos.

141 141 

142***142Un `CLAUDE.md` que pasa esa prueba se mantiene corto:

143 143 

144## Configura tu entorno144```markdown CLAUDE.md theme={null}

145# Commands

146- Install: pnpm install

147- Run one test file: pnpm vitest run path/to/file.test.ts

148- Typecheck: pnpm tsc --noEmit

145 149 

146Algunos pasos de configuración hacen que Claude Code sea significativamente más efectivo en todas tus sesiones. Para una descripción completa de las características de la extensión y cuándo usar cada una, consulta [Extend Claude Code](https://code.claude.com/docs/es/features-overview.md).150# Conventions

151- Use the error helpers in src/lib/errors.ts, never throw raw strings

152- src/legacy/ is still live but don't copy its patterns into new code

147 153 

148### Escribe un CLAUDE.md efectivo154# Gotchas

155- Integration tests need DATABASE_URL set, see .env.example

156```

149 157 

150> [!TIP]158En una sesión, ejecuta `/context` para confirmar que Claude cargó el archivo.

151>

152> Ejecuta `/init` para generar un archivo CLAUDE.md inicial basado en la estructura actual de tu proyecto, luego refina con el tiempo.

153 159 

154CLAUDE.md es un archivo especial que Claude lee al inicio de cada conversación. Incluye comandos Bash, estilo de código y reglas de flujo de trabajo. Esto le da a Claude un contexto persistente que no puede inferir solo del código.160Observa que la línea de verificación de tipos es solo el comando. Claude necesita conocer el comando para poder verificar su propio trabajo sobre la marcha. Si además quieres que Claude Code *exija* que la verificación de tipos pase antes de que Claude termine, eso es tarea de un [hook `Stop`](#enforce-the-check-with-a-stop-hook). Una línea como `Always typecheck before you finish` en este archivo funciona la mayoría de las veces, no siempre.

155 161 

156No hay un formato requerido para los archivos CLAUDE.md, pero mantenlos cortos y legibles para humanos. Por ejemplo:162No tienes que escribir el archivo desde cero:

157 163 

158```markdown CLAUDE.md theme={null}164* `/init` genera una versión inicial a partir de tu base de código. A partir de ahí, el trabajo consiste sobre todo en eliminar líneas. La [guía de memoria](https://code.claude.com/docs/es/memory.md#write-effective-instructions) recomienda mantenerse por debajo de 200.

159# Code style165* `/doctor` sugiere recortes para todo lo que Claude ya puede [deducir del código](https://code.claude.com/docs/es/memory.md#my-claude-md-is-too-large).

160- Use ES modules (import/export) syntax, not CommonJS (require)166* `/doctor prompt-audit` marca las instrucciones que se escribieron para modelos anteriores, que apuntan a archivos que ya no existen o que [se contradicen entre sí](https://code.claude.com/docs/es/memory.md#audit-your-instruction-files).

161- Destructure imports when possible (eg. import { foo } from 'bar')

162 167 

163# Workflow168Tus preferencias personales van en `CLAUDE.local.md` en lugar de `CLAUDE.md`, y agregas ese archivo a `.gitignore` para que quede fuera del repositorio.

164- Be sure to typecheck when you're done making a series of code changes

165- Prefer running single tests, and not the whole test suite, for performance

166```

167 169 

168Ejecuta `/context` para confirmar que Claude cargó el archivo. CLAUDE.md se carga en cada sesión, así que solo incluye cosas que se apliquen ampliamente. Para conocimiento de dominio o flujos de trabajo que solo son relevantes a veces, usa [skills](https://code.claude.com/docs/es/skills.md) en su lugar. Claude los carga bajo demanda sin saturar cada conversación.170> [!NOTE]

171>

172> Si Claude sigue ignorando una línea que *sí* está en `CLAUDE.md`, agregar IMPORTANT probablemente no lo arreglará. O bien el archivo ha crecido tanto que la línea se pierde, o bien la línea es una regla que no puede tener excepciones, en cuyo caso debería ser un [hook](#enforce-the-rules-that-cant-have-exceptions).

169 173 

170Mantenlo conciso. Para cada línea, pregúntate: *"¿Causaría que Claude cometa errores si elimino esto?"* Si no, elimínalo. Los archivos CLAUDE.md inflados hacen que Claude ignore tus instrucciones reales.174### Limita las reglas a una parte de la base de código

171 175 

172| ✅ Incluir | ❌ Excluir |176Si una regla solo importa en una parte de la base de código, ponla en [`.claude/rules/`](https://code.claude.com/docs/es/memory#path-specific-rules) con un filtro `paths:` para que solo se cargue cuando Claude realmente esté trabajando allí. Por ejemplo, este `.claude/rules/api.md` se carga para los archivos TypeScript bajo `src/api/`:

173| - | - |

174| Comandos Bash que Claude no puede adivinar | Cualquier cosa que Claude pueda descubrir leyendo código |

175| Reglas de estilo de código que difieren de los valores predeterminados | Convenciones de lenguaje estándar que Claude ya conoce |

176| Instrucciones de prueba y ejecutores de prueba preferidos | Documentación detallada de API (enlaza a documentos en su lugar) |

177| Etiqueta del repositorio (nomenclatura de ramas, convenciones de PR) | Información que cambia frecuentemente |

178| Decisiones arquitectónicas específicas de tu proyecto | Explicaciones largas o tutoriales |

179| Peculiaridades del entorno de desarrollo (variables de entorno requeridas) | Descripciones archivo por archivo de la base de código |

180| Errores comunes o comportamientos no obvios | Prácticas evidentes como "escribir código limpio" |

181 177 

182Si Claude sigue haciendo algo que no quieres a pesar de tener una regla en contra, el archivo probablemente es demasiado largo y la regla se está perdiendo. Si Claude te hace preguntas que están respondidas en CLAUDE.md, la redacción podría ser ambigua. Trata CLAUDE.md como código: revísalo cuando las cosas salgan mal, pódalo regularmente y prueba cambios observando si el comportamiento de Claude realmente cambia. Para un CLAUDE.md registrado, ejecuta [`/doctor`](https://code.claude.com/docs/es/commands#all-commands) y Claude propone cortes para contenido que puede derivar de la base de código.178```markdown .claude/rules/api.md theme={null}

179---

180paths:

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

182---

183- Validate request bodies with the zod schemas in src/api/schemas/, don't hand-roll checks

184- Every new endpoint needs an entry in openapi.yaml, CI fails without it

185```

183 186 

184Si Claude sigue omitiendo una instrucción, añade énfasis como "IMPORTANTE" solo a esa línea. Si enfatizas muchas líneas, ninguna destaca. Registra CLAUDE.md en git para que tu equipo pueda contribuir. El archivo aumenta en valor con el tiempo.187### Pon los procedimientos del equipo en skills

185 188 

186Los archivos CLAUDE.md pueden importar archivos adicionales usando la sintaxis `@path/to/import`. Para reglas de importación y dónde pueden vivir los archivos CLAUDE.md, consulta [CLAUDE.md files](https://code.claude.com/docs/es/memory.md#claude-md-files).189Un modelo más capaz sabe más sobre ingeniería, pero no cómo hace *tu* equipo un lanzamiento, qué dice tu runbook de incidentes o cómo quieres que se escriba la documentación de la API. Ese tipo de conocimiento va en un [skill](https://code.claude.com/docs/es/skills.md): un procedimiento o un conocimiento del equipo guardado en `.claude/skills/<name>/SKILL.md`.

187 190 

188### Configura permisos191Los skills también consumen menos contexto que `CLAUDE.md` para este tipo de cosas. Para un skill que Claude puede iniciar por sí mismo, ve el nombre y la descripción en cada sesión, pero solo [lee el archivo completo](https://code.claude.com/docs/es/skills.md#skill-content-lifecycle) cuando la tarea lo requiere. Un procedimiento de lanzamiento largo dentro de un skill no pesa sobre tu corrección de un error no relacionado como lo haría en `CLAUDE.md`.

189 192 

190> [!TIP]193> [!NOTE]

191>194>

192> Para obtener menos solicitudes sin renunciar al control, pre-aprueba las herramientas en las que confías con `/permissions` y deja que los comandos en sandbox se ejecuten sin preguntar con `/sandbox`. Cambia a modo Manual cuando quieras aprobar ediciones y comandos tú mismo.195> La regla de `CLAUDE.md` también se aplica a los skills: escribe solo lo que Claude no puede encontrar por sí mismo.

193 196 

194Con Claude Code v2.1.283 o posterior, el modo automático es el [modo de permiso inicial integrado](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) para sesiones interactivas de terminal y VS Code: un modelo clasificador separado revisa la mayoría de acciones en lugar de ti y bloquea solo lo que parece arriesgado, como escalada de alcance, infraestructura desconocida o acciones impulsadas por contenido hostil. En versiones anteriores, el modo automático es el modo de permiso inicial integrado solo en planes Pro, Max y Team.197Para un flujo de trabajo con efectos secundarios, como hacer realmente ese lanzamiento, agrega `disable-model-invocation: true`. Así Claude [no puede iniciar el skill por sí mismo](https://code.claude.com/docs/es/skills.md#control-who-invokes-a-skill), y solo se ejecuta cuando tú escribes `/release`. Guardado como `.claude/skills/release/SKILL.md`, podría verse así:

195 198 

196En modo Manual, Claude Code pregunta antes de acciones que podrían modificar tu sistema: escrituras de archivos, comandos Bash, herramientas MCP. Eso es seguro pero tedioso. Después de la décima aprobación estás haciendo clic sin revisar realmente. Dos herramientas reducen esas interrupciones en modo Manual y se aplican también en modo automático:199```markdown .claude/skills/release/SKILL.md theme={null}

200---

201name: release

202description: Cut a new release. Bumps the version, writes the changelog entry, tags it and pushes the tag so CI can publish.

203disable-model-invocation: true

204---

2051. Make sure you're on main with a clean tree. If not, stop and ask.

2062. Run `pnpm changeset version` and commit the result.

2073. Summarize the PRs merged since the last tag into CHANGELOG.md, one line each, user-facing changes only.

2084. Tag `v<new version>` and push the tag. CI publishes from there, never publish from your machine.

209```

197 210 

198* **Listas de permisos**: permiten herramientas específicas que sabes que son seguras, como `npm run lint` o `git commit`211### Conecta las herramientas que Claude necesita

199* **Sandboxing**: habilita aislamiento a nivel del SO que restringe el acceso al sistema de archivos y red, permitiendo que Claude trabaje más libremente dentro de límites definidos

200 212 

201Lee más sobre [permission modes](https://code.claude.com/docs/es/permission-modes.md), [permission rules](https://code.claude.com/docs/es/permissions.md) y [sandboxing](https://code.claude.com/docs/es/sandboxing.md).213Parte de lo que Claude no puede ver vive en otro sistema por completo, como tu gestor de incidencias o tu panel de errores. Si ese sistema tiene un CLI, normalmente es la forma más fácil de acceder. Con `gh` instalado y con la sesión iniciada, por ejemplo, Claude abrirá pull requests y leerá comentarios de revisión sin ninguna explicación de tu parte. Para un CLI que no ha visto antes, basta con indicarle `--help`.

202 214 

203### Usa herramientas CLI215Para los sistemas sin CLI, existe [MCP](https://code.claude.com/docs/es/mcp.md). Agregas un servidor desde tu shell:

204 216 

205> [!TIP]217```bash theme={null}

206>218claude mcp add --transport http notion https://mcp.notion.com/mcp

207> Dile a Claude Code que use herramientas CLI como `gh`, `aws`, `gcloud` y `sentry-cli` cuando interactúe con servicios externos.219```

220 

221Luego el servidor aparece en `/mcp` dentro de una sesión. Los servidores conectados agregan sus nombres de herramientas e instrucciones al contexto incluso cuando no los estás usando, así que vale la pena [desactivar allí los que no necesitas](https://code.claude.com/docs/es/mcp.md#disable-a-server-without-removing-it).

222 

223Y si trabajas en un lenguaje tipado, un [plugin de inteligencia de código](https://code.claude.com/docs/es/plugins/code-intelligence.md) permite que Claude salte directamente a una definición en lugar de leer muchos archivos para encontrarla.

208 224 

209Las herramientas CLI son la forma más eficiente en contexto de interactuar con servicios externos. Si usas GitHub, instala el CLI `gh`. Claude sabe cómo usarlo para crear problemas, abrir solicitudes de extracción y leer comentarios. Sin `gh`, Claude aún puede usar la API de GitHub, pero las solicitudes no autenticadas a menudo alcanzan límites de velocidad.225## Dale a Claude una verificación que ejecutar

210 226 

211Claude también es efectivo aprendiendo herramientas CLI que no conoce. Intenta solicitudes como `Use 'foo-cli-tool --help' to learn about foo tool, then use it to solve A, B, C.`227Claude se detiene cuando el trabajo parece terminado. Si no tiene nada que ejecutar que le diga si el trabajo realmente *está* terminado, "parece terminado" es lo único en lo que puede basarse. En la práctica, eso te convierte a ti en el conjunto de pruebas, y cada error se queda ahí hasta que lo notes por casualidad.

212 228 

213### Conecta servidores MCP229Si le das algo que devuelva aprobado o fallido, Claude puede cerrar ese ciclo por sí mismo. Hace el cambio, ejecuta la verificación y, si algo se rompió, lee la salida y lo corrige antes de volver a ejecutar la verificación.

214 230 

215> [!TIP]231> [!TIP]

216>232>

217> Ejecuta `claude mcp add` con un nombre de servidor y URL o comando para conectar herramientas externas como Notion, Figma o tu base de datos. Por ejemplo: `claude mcp add --transport http notion https://mcp.notion.com/mcp`.233> Dale a Claude algo que pueda ejecutar y que devuelva aprobado o fallido. Una vez que lo tenga, puede seguir trabajando por su cuenta y no tienes que estar observando.

218 234 

219Con [MCP servers](https://code.claude.com/docs/es/mcp.md), puedes pedirle a Claude que implemente características de rastreadores de problemas, consulte bases de datos, analice datos de monitoreo, integre diseños de Figma y automatice flujos de trabajo.235La verificación puede ser casi cualquier cosa, siempre que Claude pueda leer el resultado:

220 236 

221### Configura hooks237* Un archivo de pruebas

238* El código de salida de una compilación

239* Un linter

240* Un script que compara la salida con una fixture

241* Una [captura de pantalla del navegador](https://code.claude.com/docs/es/chrome.md) junto al diseño

222 242 

223> [!TIP]243Si tu repositorio ya tiene alguna de estas, la línea más útil de tu `CLAUDE.md` es el comando que la ejecuta.

224>

225> Usa hooks para acciones que deben ocurrir cada vez sin excepciones.

226 244 

227[Hooks](https://code.claude.com/docs/es/hooks-guide.md) ejecutan scripts automáticamente en puntos específicos del flujo de trabajo de Claude. A diferencia de las instrucciones CLAUDE.md que son consultivas, los hooks son deterministas y garantizan que la acción ocurra.245Qué tan estricta hagas la verificación depende de ti. Las opciones van desde que Claude decida por sí mismo hasta que Claude Code la exija:

228 246 

229Claude puede escribir hooks para ti. Intenta solicitudes como *"Write a hook that runs eslint after every file edit"* o *"Write a hook that blocks writes to the migrations folder."* Edita `.claude/settings.json` directamente para configurar hooks manualmente, y ejecuta `/hooks` para explorar lo que está configurado.247* En el prompt: `run the auth tests after, and keep going until they pass`. Claude decide por sí mismo cuándo está satisfecho. Esto funciona para cualquier tarea, hoy mismo, sin configuración.

248* Como objetivo: [`/goal all tests in tests/auth pass and lint is clean`](https://code.claude.com/docs/es/goal) establece una condición que un modelo separado verifica contra la conversación después de cada turno, y Claude sigue trabajando hasta que se cumple. Rara vez lo necesitas tú mismo en la sesión. Importa en ejecuciones largas en segundo plano, donde Claude a veces termina un turno con un resumen del progreso mientras aún quedan elementos pendientes, y el objetivo lo hace volver al trabajo.

249* Como hook Stop: un [hook `Stop`](https://code.claude.com/docs/es/hooks#stop) ejecuta tu script cada vez que Claude intenta terminar su turno, y devuelve a Claude al trabajo si el script sale con el código 2. Este lo aplica Claude Code (el harness), así que el turno no termina hasta que pase la verificación de tipos o se alcance el [límite de bloqueos](https://code.claude.com/docs/es/hooks.md#stop-input). Hay un [ejemplo más abajo](#enforce-the-check-with-a-stop-hook).

250* Por alguien que no escribió el código: en la terminal, [`/code-review`](https://code.claude.com/docs/es/code-review-local) revisa el diff en un subagente nuevo que nunca vio tu conversación. No se deja influir por el razonamiento que produjo el código.

230 251 

231### Crea skills252Sea cual sea la opción que uses, pídele a Claude *evidencia*: el comando que ejecutó y su salida, o la captura de pantalla. "Todas las pruebas pasan" por sí solo te dice muy poco, y leer la salida es más rápido que volver a ejecutar la verificación tú mismo. Para una sesión que no estabas observando, también es la única evidencia que tienes.

232 253 

233> [!TIP]254> [!TIP]

234>255>

235> Crea archivos `SKILL.md` en `.claude/skills/` para darle a Claude conocimiento de dominio y flujos de trabajo reutilizables.256> Una vez que Claude diga que terminó, también puedes ejecutar [`/verify`](https://code.claude.com/docs/es/skills#run-and-verify-your-app) en la sesión, lo que hace que Claude compile y ejecute la aplicación y revise el resultado. Eso detecta el tipo de problema que las pruebas y la verificación de tipos pasan por alto.

236 257 

237[Skills](https://code.claude.com/docs/es/skills.md) extienden el conocimiento de Claude con información específica de tu proyecto, equipo o dominio. Claude los aplica automáticamente cuando son relevantes, o puedes invocarlos directamente con `/skill-name`.258### Revisa contra tu especificación

238 259 

239Crea una skill añadiendo un directorio con un `SKILL.md` a `.claude/skills/`:260Si prefieres que la revisión compare el trabajo con tu plan en lugar de buscar errores en general, escribe tú mismo el prompt de revisión:

240 261 

241```markdown .claude/skills/api-conventions/SKILL.md theme={null}262```text theme={null}

242name: api-conventions263use a subagent to review the rate limiter diff against SPEC.md, check every requirement is implemented and the listed edge cases have tests, report gaps that affect correctness and skip style

243description: REST API design conventions for our services

244# API Conventions

245- Use kebab-case for URL paths

246- Use camelCase for JSON properties

247- Always include pagination for list endpoints

248- Version APIs in the URL path (/v1/, /v2/)

249```264```

250 265 

251Las skills también pueden definir flujos de trabajo repetibles que invocas directamente:266> [!NOTE]

252 267>

253```markdown .claude/skills/fix-issue/SKILL.md theme={null}268> No quites la parte `skip style` de ese prompt. Un revisor al que se le pide encontrar problemas siempre encontrará *algo*. Si corriges cada hallazgo, terminas con capas de abstracción adicionales y pruebas para casos que no pueden ocurrir.

254name: fix-issue269 

255description: Fix a GitHub issue270### Exige la verificación con un hook Stop

256disable-model-invocation: true271 

257Analyze and fix the GitHub issue: $ARGUMENTS.272La versión con hook `Stop` de la regla de verificación de tipos son unas pocas líneas en `.claude/settings.json`. El código de salida 2 es lo que bloquea la detención. Lo que el comando imprima en stderr vuelve a Claude como la razón por la que aún no puede terminar, por eso la salida del compilador se redirige allí:

258 273 

2591. Use `gh issue view` to get the issue details274```json .claude/settings.json theme={null}

2602. Understand the problem described in the issue275{

2613. Search the codebase for relevant files276 "hooks": {

2624. Implement the necessary changes to fix the issue277 "Stop": [

2635. Write and run tests to verify the fix278 {

2646. Ensure code passes linting and type checking279 "hooks": [

2657. Create a descriptive commit message280 { "type": "command", "command": "pnpm tsc --noEmit 1>&2 || exit 2" }

2668. Push and create a PR281 ]

282 }

283 ]

284 }

285}

267```286```

268 287 

269Ejecuta `/fix-issue 1234` para invocarlo. Usa `disable-model-invocation: true` para flujos de trabajo con efectos secundarios que quieres activar manualmente.288Para verlo funcionar, pídele a Claude un cambio que rompa un tipo: en lugar de terminar, recibe los errores del compilador y sigue trabajando hasta que `tsc` pase. Si el hook bloquea [ocho detenciones seguidas](https://code.claude.com/docs/es/hooks.md#stop-input) sin ninguna llamada a herramienta entre ellas, Claude Code sobrescribe el siguiente bloqueo y termina el turno. Para aumentar el límite, establece [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](https://code.claude.com/docs/es/env-vars).

270 289 

271### Crea subagentes personalizados290## Aplica las reglas que no pueden tener excepciones

272 291 

273> [!TIP]292> [!TIP]

274>293>

275> Define asistentes especializados en `.claude/agents/` que Claude pueda delegar para tareas aisladas.294> Si algo tiene que ocurrir siempre, conviértelo en un hook, una regla de denegación o una configuración administrada. `CLAUDE.md` es para pautas, y Claude puede decidir que una pauta no aplica.

276 295 

277[Subagents](https://code.claude.com/docs/es/sub-agents.md) se ejecutan en su propio contexto con su propio conjunto de herramientas permitidas. Son útiles para tareas que leen muchos archivos o necesitan enfoque especializado sin saturar tu conversación principal.296Toma tres reglas que podrías tener hoy en `CLAUDE.md`: `Never read .env`, `Always run the formatter after editing`, `Don't touch the migrations folder`. Claude las seguirá casi siempre. Para las pocas en las que "casi" no es suficiente, sácalas de `CLAUDE.md` y pásalas a una configuración que Claude Code (el harness) aplica por sí mismo. A partir de entonces, el resultado no depende de lo que el modelo recuerde o decida.

278 297 

279```markdown .claude/agents/security-reviewer.md theme={null}298### Exige pasos con hooks

280name: security-reviewer299 

281description: Reviews code for security vulnerabilities300Los [hooks](https://code.claude.com/docs/es/hooks-guide.md) ejecutan algo tuyo en puntos fijos del ciclo de Claude: antes o después de una llamada a herramienta, cuando Claude intenta detenerse, cuando comienza una sesión, etc. Ese algo puede ser:

282tools: Read, Grep, Glob, Bash301 

283model: opus302* Un comando de shell (el caso habitual)

284You are a senior security engineer. Review code for:303* Un POST a un endpoint HTTP

285- Injection vulnerabilities (SQL, XSS, command injection)304* Una llamada a herramienta en uno de tus servidores MCP

286- Authentication and authorization flaws305* Un [hook `prompt` o `agent`](https://code.claude.com/docs/es/hooks#hook-handler-fields), que deja que un modelo decida

287- Secrets or credentials in code306 

288- Insecure data handling307Un hook `prompt` o `agent` le pide a *otro modelo* que decida, así que tampoco es determinista. Para una aplicación real, usa un hook `command` o `http`, y agrega [`onFailure: "block"`](https://code.claude.com/docs/es/hooks#block-the-action-when-a-hook-fails) si la acción también debe detenerse cuando el propio hook falla o agota el tiempo de espera. Para un hook que analiza commits en busca de secretos, por ejemplo, preferirías bloquear el commit antes que dejarlo pasar sin analizar mientras el escáner está caído.

308 

309Aquí está la regla del formateador como un hook `PostToolUse`. Se ejecuta después de cada `Edit` o `Write`, y ya no importa si Claude recuerda la regla, porque no es Claude quien la ejecuta:

289 310 

290Provide specific line references and suggested fixes.311```json .claude/settings.json theme={null}

312{

313 "hooks": {

314 "PostToolUse": [

315 {

316 "matcher": "Edit|Write",

317 "hooks": [

318 { "type": "command", "command": "npx prettier --write --ignore-unknown \"$(jq -r '.tool_input.file_path')\"" }

319 ]

320 }

321 ]

322 }

323}

291```324```

292 325 

293Dile a Claude que use subagentes explícitamente: *"Use a subagent to review this code for security issues."*326Para comprobar el hook, pídele a Claude que agregue una línea mal indentada a un archivo que Prettier formatea. El archivo guardado vuelve con la indentación corregida.

294 327 

295### Instala plugins328La regla de migraciones se convierte en un [hook `PreToolUse`](https://code.claude.com/docs/es/hooks-guide#block-edits-to-protected-files) que sale con el código 2 para cualquier ruta bajo `migrations/`. No tienes que escribirlo tú mismo: `write a hook that blocks edits to the migrations folder` funciona como prompt, y `/hooks` muestra el resultado. Pero no te excedas: un hook es para una regla con *cero* excepciones, y `Prefer named exports` tiene muchas, así que esa se queda en `CLAUDE.md`.

296 329 

297> [!TIP]330### Limita el acceso con reglas de permisos y el sandbox

298>

299> Ejecuta `/plugin` para explorar el marketplace. Los plugins añaden skills, herramientas e integraciones sin configuración.

300 331 

301[Plugins](https://code.claude.com/docs/es/plugins/overview.md) agrupan skills, hooks, subagentes y servidores MCP en una única unidad instalable de la comunidad y Anthropic. Si trabajas con un lenguaje tipado, instala un [code intelligence plugin](https://code.claude.com/docs/es/plugins/code-intelligence.md) para darle a Claude navegación de símbolos precisa y detección automática de errores después de ediciones.332Las [reglas de permisos](https://code.claude.com/docs/es/permissions.md) deciden qué puede ejecutar, leer y obtener Claude. Las reglas `deny` se mantienen en todos los modos de permisos, incluidos el automático y `bypassPermissions`, y precisamente por eso la regla de `.env` va ahí:

302 333 

303Para orientación sobre cómo elegir entre skills, subagentes, hooks y MCP, consulta [Extend Claude Code](https://code.claude.com/docs/es/features-overview.md#match-features-to-your-goal).334```json .claude/settings.json theme={null}

335{

336 "permissions": {

337 "allow": ["Bash(pnpm tsc --noEmit)"],

338 "ask": ["Bash(git push *)"],

339 "deny": ["Read(./.env)", "Read(./.env.local)", "Read(./secrets/**)"]

340 }

341}

342```

304 343 

305***344Con esto guardado, preguntarle a Claude qué hay en `.env` falla, tanto con la herramienta `Read` como con `cat .env`.

306 345 

307## Comuníquese efectivamente346Las reglas coinciden con llamadas a herramientas, no con intenciones, así que conviene saber dónde están los límites:

308 347 

309Haga a Claude las preguntas que haría a otro ingeniero, y para características más grandes, deje que Claude lo entreviste y escriba una especificación antes de que comience a implementar.348* La regla `Read` *sí* detecta `cat .env`, porque Claude Code reconoce los [comandos comunes de lectura de archivos](https://code.claude.com/docs/es/permissions.md#read-and-edit).

349* No detectará un script que abra el archivo.

350* Una regla de denegación de `WebFetch` para un dominio no hace nada contra `curl` a ese mismo dominio, a menos que el sandbox esté activado.

310 351 

311### Haga preguntas sobre el código base352Para un límite a nivel del sistema operativo sobre el acceso al sistema de archivos o a la red, activa el [sandbox](https://code.claude.com/docs/es/sandboxing.md) con `/sandbox` en una sesión. Confina los comandos de shell de Claude en macOS, Linux y WSL2 y también [incorpora tus reglas de denegación de `Read` y tus reglas `WebFetch(domain:...)`](https://code.claude.com/docs/es/sandboxing#permission-rules), así que para cualquier cosa relacionada con la seguridad quieres ambos.

312 353 

313> [!TIP]354De forma predeterminada, Claude aún puede pedir reintentar un comando bloqueado fuera del sandbox, y esa petición pasa por el flujo normal de permisos. El [modo estricto del sandbox](https://code.claude.com/docs/es/sandboxing.md#turn-off-the-retry-with-strict-sandbox-mode), en la pestaña **Overrides** de `/sandbox`, desactiva ese reintento.

355 

356> [!WARNING]

314>357>

315> Haga a Claude preguntas que haría a un ingeniero senior.358> El modo automático es un modelo clasificador que juzga cada acción, no una regla rígida. Lo hace bien, pero como cualquier juicio, puede equivocarse. Además, puedes ajustar lo que considera arriesgado, y tu organización puede desactivarlo por completo, así que tus reglas de "nunca" deben estar en reglas de denegación o en hooks.

359 

360### Elige a quién se aplica una regla

316 361 

317Al incorporarse a un nuevo código base, use Claude Code para aprender y explorar. Puede hacer a Claude el mismo tipo de preguntas que haría a otro ingeniero:362Dónde vive una regla decide a quién se aplica:

318 363 

319* ¿Cómo funciona el registro?364* `.claude/settings.local.json` y `~/.claude/settings.json` son solo tuyos. Cuando seleccionas **Yes, and don't ask again** para un comando, Claude Code guarda esa regla en el archivo local.

320* ¿Cómo hago un nuevo punto final de API?365* `.claude/settings.json` y los hooks que contiene pertenecen al repositorio. Una vez que haces commit de ellos, se aplican a todos los que trabajan en el repositorio. Sus reglas de denegación se aplican de inmediato. Sus reglas `allow` esperan hasta que cada persona acepta el [diálogo de confianza](https://code.claude.com/docs/es/permissions.md#what-runs-before-you-trust-a-folder) para esa carpeta, y la [confianza del espacio de trabajo](https://code.claude.com/docs/es/hooks.md#workspace-trust) también decide cuándo empiezan a ejecutarse sus hooks en su máquina.

321* ¿Qué hace `async move { ... }` en la línea 134 de `foo.rs`?366* La [configuración administrada](https://code.claude.com/docs/es/managed-settings.md) pertenece a la organización. Proviene de la consola de administración, de MDM o de un archivo `managed-settings.json`, y ningún archivo de configuración personal puede sobrescribirla, lo que la convierte en el único lugar para la política de un equipo de seguridad. Si eres la persona que la establece, consulta [Configura Claude Code para tu organización](https://code.claude.com/docs/es/admin-setup.md).

322* ¿Qué casos extremos maneja `CustomerOnboardingFlowImpl`?

323* ¿Por qué este código llama a `foo()` en lugar de `bar()` en la línea 333?

324 367 

325Usar Claude Code de esta manera es un flujo de trabajo de incorporación efectivo, mejorando el tiempo de rampa y reduciendo la carga en otros ingenieros. No se requiere indicación especial: haga preguntas directamente.368Sea cual sea el alcance, mantén pequeño el conjunto de reglas aplicadas. Cada hook y regla de denegación se activará ocasionalmente cuando no debería, y alguien tiene que mantener cada uno. Si alguna vez te encuentras con cuarenta, la mayoría probablemente son preferencias que Claude podría haber sopesado por sí mismo.

326 369 

327### Deje que Claude lo entreviste370## Cambia un valor predeterminado

328 371 

329> [!TIP]372> [!TIP]

330>373>

331> Para características más grandes, deje que Claude lo entreviste primero. Comience con una indicación mínima y pida a Claude que lo entreviste usando la herramienta `AskUserQuestion`.374> Los valores predeterminados son lo bastante buenos como para dejarlos como están hasta que una tarea cueste más tiempo, tokens o interrupciones de lo que debería. Cuando eso ocurra, ejecuta `/usage` en la sesión para ver en qué se fue.

332 375 

333Claude hace preguntas sobre cosas que podría no haber considerado, incluyendo implementación técnica, UI/UX, casos extremos y compensaciones. Reemplace `[brief description]` con su característica antes de enviar la indicación.376Una sesión nueva ya toma varias decisiones por ti:

334 377 

335```text wrap theme={null}378* Las sesiones interactivas de terminal y VS Code comienzan en modo automático.

336I want to build [brief description]. Interview me in detail using the AskUserQuestion tool.379* Ejecuta [Claude Opus 5.5 con esfuerzo medio](https://code.claude.com/docs/es/model-config.md#default-model-setting) en la mayoría de los planes y proveedores.

380* Delega trabajo en subagentes cuando ve una razón para hacerlo.

381* Compacta la conversación a medida que crece.

337 382 

338Ask about technical implementation, UI/UX, edge cases, concerns, and tradeoffs. Don't ask obvious questions, dig into the hard parts I might not have considered.383La mayor parte del tiempo nunca piensas en estas cosas. Cuando una tarea sí cuesta más de lo que debería, normalmente la causa es una de estas cuatro.

339 384 

340Keep interviewing until we've covered everything, then write a complete spec to SPEC.md.385### Cambia el modo de permisos

341```

342 386 

343Una vez que la especificación esté completa, inicie una sesión nueva para ejecutarla. La nueva sesión tiene contexto limpio enfocado completamente en la implementación, y tiene una especificación escrita para hacer referencia.387Ambos extremos del rango de permisos tienen un costo:

344 388 

345Las especificaciones más útiles son autónomas: nombran los archivos e interfaces involucrados, establecen qué está fuera del alcance, y terminan con un paso de verificación de extremo a extremo que demuestra que la característica funciona. El tiempo dedicado a hacer la especificación precisa se compensa más que el tiempo dedicado a observar la implementación.389* **Modo Manual**: apruebas tú mismo cada edición y cada comando que no sea de solo lectura. Es seguro, pero después de la décima solicitud empiezas a aprobar sin leer, y nada avanza mientras estás lejos del teclado.

390* **`bypassPermissions`**: aprueba todo lo que tus reglas deny y ask no cubren, lo cual solo tiene sentido en un contenedor desechable.

346 391 

347***392El [modo automático](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) se sitúa entre ambos, y es el modo en el que [comienzan](https://code.claude.com/docs/es/permission-modes.md#which-mode-a-session-starts-in) las sesiones interactivas de terminal y VS Code. Claude trabaja sin detenerse para aprobaciones rutinarias, y un modelo clasificador separado revisa las acciones en [un orden fijo](https://code.claude.com/docs/es/permission-modes.md#how-the-classifier-evaluates-actions) antes de que se ejecuten. Se concentra en [las cosas que querrías que una persona detuviera](https://code.claude.com/docs/es/permission-modes.md#what-the-classifier-blocks-by-default):

348 393 

349## Gestione su sesión394* `curl | bash`

395* Despliegues y migraciones a producción

396* Force pushes sobre el trabajo de otras personas

397* Datos sensibles enviados a endpoints externos

398* Acciones que parecen impulsadas por contenido que Claude leyó y no por ti

350 399 

351Las conversaciones son persistentes y reversibles. ¡Úselo a su favor!400Cuando sí bloquea algo, recibes una notificación y la acción aparece en **Recently denied** en `/permissions`, donde puedes reintentarla con una aprobación manual. Después de [tres bloqueos seguidos](https://code.claude.com/docs/es/permission-modes.md#when-auto-mode-falls-back) (o veinte en total), el modo automático se pausa y vuelve a preguntarte.

352 401 

353### Corrija el curso temprano y a menudo402Nada de esto reemplaza tus controles deterministas, porque se ejecuta *después* de ellos. Las reglas deny y ask y los hooks `PreToolUse` se aplican antes de que el clasificador vea nada, así que una regla de denegación bloquea en modo automático exactamente igual que en cualquier otro lugar. El sandbox sigue confinando los [comandos de shell que envuelve](https://code.claude.com/docs/es/sandboxing.md#what-runs-outside-the-sandbox).

354 403 

355> [!TIP]404> [!NOTE]

356>405>

357> Corrija a Claude tan pronto como note que se desvía del camino.406> También puedes decir `don't push until I've reviewed` en la conversación, y el clasificador [lo trata como una señal de bloqueo](https://code.claude.com/docs/es/permission-modes.md#boundaries-you-state-in-conversation). Sigue siendo un modelo leyendo la transcripción, y la frase puede perderse cuando la conversación se compacta, así que cualquier cosa que importe debe estar en una regla de denegación.

407 

408El problema opuesto es que el clasificador detenga repetidamente algo que es rutinario en tu entorno. En lugar de aprobarlo manualmente cada vez, agrégalo a `autoMode.allow` o describe tu infraestructura de confianza en la [configuración del modo automático](https://code.claude.com/docs/es/auto-mode-config.md). Está en inglés sencillo y no en patrones, y [`/auto-mode-setup`](https://code.claude.com/docs/es/auto-mode-config#generate-environment-entries) puede redactar la parte `environment` por ti a partir de tu proyecto y tus sesiones recientes:

409 

410```json ~/.claude/settings.json theme={null}

411{

412 "autoMode": {

413 "environment": [

414 "$defaults",

415 "Source control: github.com/example-org and every repo under it",

416 "Trusted internal domains: *.internal.example.com"

417 ],

418 "allow": [

419 "$defaults",

420 "Deploying to the staging namespace is fine, it's isolated from production and resets nightly"

421 ]

422 }

423}

424```

358 425 

359Los mejores resultados provienen de bucles de retroalimentación ajustados. Aunque Claude ocasionalmente resuelve problemas perfectamente en el primer intento, corregirlo rápidamente generalmente produce mejores soluciones más rápido.426> [!WARNING]

427>

428> Mantén `"$defaults"` en cada lista que establezcas, porque sin él tus entradas *reemplazan* las reglas integradas de esa lista en lugar de sumarse a ellas. Para `environment` y `allow` perderías el contexto y las excepciones integrados, y una lista `soft_deny` sin él elimina los bloqueos integrados sobre force pushes y despliegues a producción.

429>

430> El bloque `autoMode` también tiene que estar en `~/.claude/settings.json` y no en el proyecto, porque el clasificador ignora `autoMode` en la configuración del proyecto.

360 431 

361* **`Esc`**: detener a Claude a mitad de acción con la tecla `Esc`. El contexto se preserva, para que pueda redirigir.432Si prefieres ver cada edición y comando antes de que ocurran, `Shift+Tab` en la sesión recorre los modos de permisos, incluido Manual, o empieza con `claude --permission-mode manual` desde tu shell. Y si Manual luego pregunta demasiado, `/fewer-permission-prompts` analiza tus transcripciones recientes en busca de llamadas comunes de solo lectura de Bash y MCP y las agrega a una lista de permitidos en `.claude/settings.json`.

362* **`Esc + Esc` o `/rewind`**: presione `Esc` dos veces o ejecute `/rewind` para abrir el menú de rebobinado y restaurar la conversación anterior y el estado del código, o resumir desde un mensaje seleccionado.

363* **`"Undo that"`**: haga que Claude revierta sus cambios.

364* **`/clear`**: restablecer contexto entre tareas no relacionadas. Las sesiones largas con contexto irrelevante pueden reducir el rendimiento.

365 433 

366Si ha corregido a Claude más de dos veces en el mismo problema en una sesión, el contexto está saturado de enfoques fallidos. Ejecute `/clear` e inicie de nuevo con una indicación más específica que incorpore lo que aprendió. Una sesión limpia con una indicación mejor casi siempre supera una sesión larga con correcciones acumuladas.434### Cambia el modelo y el esfuerzo

367 435 

368### Gestione el contexto agresivamente436El [esfuerzo](https://code.claude.com/docs/es/model-config.md#adjust-effort-level) es el control principal de cuánto tiempo piensa Claude, y reemplaza la mayor parte de lo que la gente solía hacer con la redacción del prompt. Claude Opus 5.5, Sonnet 5.5 y Haiku 5.5 usan `medium` de forma predeterminada, lo cual es suficiente para el trabajo cotidiano en funcionalidades con un alcance claro. Los momentos en que lo cambiarías, con `/effort` en la sesión:

369 437 

370> [!TIP]438* Súbelo con `/effort high` o `/effort xhigh` cuando hacerlo bien dependa de casos fáciles de pasar por alto. Piensa en un error en código que no escribiste, una prueba inestable o un cambio de esquema en el que Claude tiene que encontrar cada lector de la forma antigua. Claude entonces revisa más casos extremos y verifica más de su trabajo antes de responder, y ahí es donde se van el tiempo y los tokens adicionales.

371>439* Bájalo con `/effort low` cuando estás yendo y viniendo rápidamente y revisando cada resultado de todos modos: lluvia de ideas, un primer boceto, un cambio de nombre en unos pocos archivos. Claude te da un punto de partida antes, y como estás dirigiendo cada paso, la deliberación adicional no habría cambiado mucho aparte de la espera.

372> Ejecute `/clear` entre tareas no relacionadas para restablecer el contexto.440* Reserva `max` para un problema difícil que quieres que Claude resuelva sin ti, como buscar una vulnerabilidad de seguridad. En tareas ordinarias tiende a pensar de más, así que pagas más por una respuesta que puede no ser mejor que la que te habría dado `high`.

441* Cuando solo el siguiente mensaje lo necesita, como una pregunta complicada en medio de un trabajo por lo demás rutinario, pon [`ultrathink`](https://code.claude.com/docs/es/model-config#use-ultrathink-for-one-off-deep-reasoning) en ese prompt en lugar de cambiar el ajuste.

373 442 

374Claude Code compacta automáticamente el historial de conversación cuando se acerca a los límites de contexto, lo que preserva código importante y decisiones mientras libera espacio.443En cuanto al modelo en sí, Opus 5.5, el predeterminado, maneja bien la mayor parte de la programación, y Sonnet cuesta menos en el trabajo rutinario. [Claude Fable 5.1](https://code.claude.com/docs/es/model-config.md#work-with-fable) está disponible cuando lo seleccionas explícitamente con `/model fable`, y Haiku encaja bien para subagentes que hacen trabajos sencillos. [Configuración del modelo](https://code.claude.com/docs/es/model-config.md) tiene la lista completa por plan y proveedor.

375 444 

376Durante sesiones largas, la ventana de contexto de Claude puede llenarse con conversación irrelevante, contenidos de archivo y comandos. Esto puede reducir el rendimiento y a veces distraer a Claude.445### Conoce lo que cuestan los subagentes

377 446 

378* Use `/clear` frecuentemente entre tareas para restablecer completamente la ventana de contexto447Claude delega en [subagentes](https://code.claude.com/docs/es/sub-agents.md) por su cuenta:

379* Cuando se activa la compactación automática, Claude resume lo que más importa, incluyendo patrones de código, estados de archivo y decisiones clave

380* Para más control, ejecute `/compact <instructions>`, como `/compact Focus on the API changes`

381* Para compactar solo parte de la conversación, use `Esc + Esc` o `/rewind`, seleccione un punto de control de mensaje y elija **Summarize from here** o **Summarize up to here**. El primero condensa mensajes desde ese punto hacia adelante mientras mantiene el contexto anterior intacto; el segundo condensa mensajes anteriores mientras mantiene los recientes en su totalidad. Consulte [las opciones de resumición del menú de rebobinado](https://code.claude.com/docs/es/checkpointing.md#rewind-and-summarize).

382* Personalice el comportamiento de compactación en CLAUDE.md con instrucciones como `"When compacting, always preserve the full list of modified files and any test commands"` para asegurar que el contexto crítico sobreviva a la resumición

383* Para preguntas que no necesitan permanecer en contexto, use [`/btw`](https://code.claude.com/docs/es/interactive-mode#side-questions-with-%2Fbtw). La respuesta nunca entra en el historial de conversación, para que pueda verificar un detalle sin aumentar el contexto.

384 448 

385### Use subagents para investigación449* Las búsquedas amplias en la base de código van al agente Explore integrado.

450* Las tareas secundarias se [bifurcan](https://code.claude.com/docs/es/sub-agents.md#fork-the-current-conversation) mientras el modo de bifurcación está activado (el valor predeterminado).

451* Los subagentes que inicia se ejecutan en segundo plano de forma predeterminada, así que tu conversación principal sigue avanzando.

386 452 

387> [!TIP]453Rara vez necesitas pedir nada de esto, pero ayuda saber qué obtienes y cuánto cuesta.

388>

389> Delegue investigación con `"use subagents to investigate X"`. Exploran en un contexto separado, manteniendo su conversación principal limpia para la implementación.

390 454 

391Dado que el contexto es su restricción fundamental, use subagents para mantener la investigación fuera de él. Cuando Claude investiga un código base, lee muchos archivos, todos los cuales consumen su contexto. Los subagents se ejecutan en ventanas de contexto separadas e informan resúmenes:455Los subagentes valen la pena en estas situaciones:

392 456 

393```text wrap theme={null}457* Ejecutar trabajos independientes al mismo tiempo, para que toda la tarea termine antes

394Use subagents to investigate how our authentication system handles token458* Mantener la salida larga, como una ejecución completa de pruebas o una búsqueda amplia, fuera de tu conversación principal, donde de lo contrario viajaría contigo el resto de la sesión

395refresh, and whether we have any existing OAuth utilities I should reuse.459* Obtener un revisor que no ha visto cómo se escribió el código

396```460* Darle a una tarea menos herramientas de las que tiene la sesión principal, como un revisor que puede leer pero no editar

397 461 

398También puede usar subagents para verificación después de que Claude implemente algo. Consulte [Agregue un paso de revisión adversarial](#add-an-adversarial-review-step).462Lo que te cuestan es sobre todo tokens, ya que cada subagente envía sus propias solicitudes y estas cuentan contra el mismo uso que tu conversación principal. A veces también cuestan tiempo: un subagente nuevo primero tiene que reunir el contexto que tu conversación ya tenía, así que puede terminar siendo *más lento* que hacer la tarea donde estás.

399 463 

400### Rebobine con puntos de control464Y de forma predeterminada es el mismo modelo (o uno más pequeño) en la misma tarea. Obtienes paralelismo o una mirada nueva, pero no una respuesta más inteligente.

401 465 

402> [!TIP]466Para gastar menos en ellos:

403>

404> Cada indicación que envía que inicia un turno crea un punto de control. Puede restaurar conversación, código o ambos a cualquier punto de control anterior.

405 467 

406Claude automáticamente crea instantáneas de archivos antes de cada cambio para que un punto de control pueda restaurarlos. Presione Escape dos veces o ejecute `/rewind` para abrir el menú de rebobinado. Puede restaurar solo conversación, restaurar solo código, restaurar ambos o resumir desde un mensaje seleccionado. Consulte [Checkpointing](https://code.claude.com/docs/es/checkpointing.md) para detalles.468* Establece [`model: haiku`](https://code.claude.com/docs/es/sub-agents#choose-a-model) en la definición de un subagente si su trabajo es sencillo, como recopilar los archivos que importan un módulo o verificar los enlaces de la documentación. Ese tipo de trabajo no necesita el modelo más grande, y Haiku cuesta mucho menos por solicitud.

469* Pide resúmenes cortos de vuelta, para que veinte resultados no llenen tu contexto de todos modos.

470* Revisa `/usage` para ver qué proporción de tu uso consume cada tipo de subagente, y así saber cuáles justifican su costo.

471* Dale a un subagente personalizado en `.claude/agents/` solo `tools: Read, Grep, Glob`. Ahora es un revisor que no puede editar nada, y ese límite lo aplica Claude Code en lugar de solicitarse en un prompt.

407 472 

408En lugar de planificar cuidadosamente cada movimiento, puede decirle a Claude que intente algo arriesgado. Si no funciona, rebobine e intente un enfoque diferente. Los puntos de control se guardan con la conversación, para que pueda cerrar su terminal, reanudar la sesión más tarde y aún rebobinar.473Ese revisor es un archivo corto, `.claude/agents/reviewer.md`:

409 474 

410> [!WARNING]475```markdown .claude/agents/reviewer.md theme={null}

411>476---

412> Los puntos de control solo rastrean cambios realizados a través de las herramientas de edición de archivos de Claude. Los cambios realizados a través de comandos Bash o procesos externos no se capturan. Esto no es un reemplazo para git.477name: reviewer

478description: Reviews changed files against the spec they were built from. Use after implementing a feature, before opening the PR.

479tools: Read, Grep, Glob

480---

481You're reviewing code you didn't write. Compare the changed files against the spec you're given,

482check that every requirement is implemented and the listed edge cases have tests,

483and report only the gaps that affect correctness. Skip style.

484```

413 485 

414### Reanudar conversaciones486Pídele a Claude `have the reviewer compare the rate limiter against SPEC.md` y las brechas vuelven a tu sesión, donde Claude puede corregirlas.

415 487 

416> [!TIP]488### Reduce el costo y el contexto

417>

418> Nombre sesiones con `/rename` y trate las como ramas: cada flujo de trabajo obtiene su propio contexto persistente.

419 489 

420Claude Code guarda conversaciones localmente, por lo que cuando una tarea abarca múltiples sesiones no tiene que re-explicar el contexto. Ejecute [`claude --continue`](https://code.claude.com/docs/es/sessions#resume-a-session) para continuar donde lo dejó, o `claude --resume` para elegir de una lista. Dé a las sesiones nombres descriptivos como `oauth-migration` para que pueda encontrarlas más tarde. Consulte [Gestione sesiones](https://code.claude.com/docs/es/sessions.md) para el conjunto completo de controles de reanudación, ramificación y denominación.490Con una ventana de 1M de tokens en la mayoría de los modelos actuales y la compactación cerca del tope, rara vez te quedarás sin contexto. Aun así, puedes *pagar* por contexto que no necesitas. Cada solicitud envía la conversación completa, así que una sesión que ha acumulado tres tareas no relacionadas vuelve a leer las tres en cada turno de la cuarta. Eso tiene [descuento mientras la caché está activa](https://code.claude.com/docs/es/costs.md#why-usage-climbs-in-a-long-session) y precio completo una vez que expira.

421 491 

422***492[`/usage`](https://code.claude.com/docs/es/costs) es el primer lugar donde mirar. En Pro, Max, Team y Enterprise desglosa tu uso por skill, subagente, plugin y servidor MCP. También señala patrones como un contexto largo o fallos frecuentes de caché una vez que alguno supera el 10% de tu uso. A partir de ahí, las soluciones habituales:

423 493 

424## Automatizar y escalar494* `/clear` entre tareas no relacionadas. No cuesta nada, y significa que la siguiente tarea no sigue pagando por el historial de la anterior. `/clear oauth-migration` le pone nombre a la sesión que dejas, para que puedas volver a ella más tarde.

495* `/compact` con un enfoque, como `/compact keep the API changes and the test commands`. En una sesión larga, `/compact` es en sí mismo una solicitud grande, ya que lee toda la conversación para resumirla, y más aún una vez que la caché ha expirado.

496* Vigila el trabajo en segundo plano: un `/loop`, la verificación de un objetivo después de cada turno y los propios subagentes de Claude siguen enviando solicitudes mientras no estás escribiendo.

425 497 

426Una vez que seas efectivo con un Claude, multiplica tu salida con sesiones paralelas, modo no interactivo y patrones de distribución.498> [!NOTE]

499>

500> La [caché de prompts](https://code.claude.com/docs/es/prompt-caching.md) dura aproximadamente una hora con una suscripción y cinco minutos con una clave de API, un proveedor de nube o créditos de uso. Los subagentes obtienen cinco minutos a menos que lo cambies.

501>

502> Con la caché de una hora, una sesión de más de unos 200K tokens que queda inactiva se compacta poco antes de que la caché expire, así que después del almuerzo continúas desde un resumen. Si no necesitas el historial en absoluto, una sesión nueva sigue costando menos.

427 503 

428### Ejecutar modo no interactivo504## Dirige la sesión

429 505 

430> [!TIP]506> [!TIP]

431>507>

432> Usa `claude -p "prompt"` en CI, hooks de pre-commit o scripts. Agrega `--output-format stream-json --verbose` para salida JSON en streaming.508> Observa el primer minuto, presiona `Esc` en cuanto Claude se desvíe y, después de dos correcciones fallidas, ejecuta `/clear` y escribe un prompt mejor en lugar de una tercera.

433 509 

434Con `claude -p "your prompt"`, puedes ejecutar Claude de forma no interactiva, sin un prompt interactivo. La ejecución aún crea una sesión reanudable a menos que pases `--no-session-persistence`. [El modo no interactivo](https://code.claude.com/docs/es/headless.md) es cómo integras Claude en canalizaciones de CI, hooks de pre-commit o cualquier flujo de trabajo automatizado. Los formatos de salida te permiten analizar resultados mediante programación: texto sin formato, JSON o JSON en streaming.510Ninguna configuración reemplaza observar el primer minuto e intervenir cuando Claude se dirige a donde no pretendías. Solo hay unos pocos controles para eso, y vale la pena conocerlos de memoria:

435 511 

436```bash theme={null}512* `Esc` detiene a Claude a mitad de una acción y conserva todo hasta ese punto, para que puedas redirigirlo sin perder trabajo.

437# One-off queries513* `/rewind`, o `Esc` dos veces con el prompt vacío, abre el [menú de rebobinado](https://code.claude.com/docs/es/checkpointing.md#rewind-and-summarize), donde puedes devolver el código, la conversación o ambos a un prompt anterior. Eso hace que sea poco arriesgado probar primero el enfoque más audaz y rebobinar si no funciona. El mismo menú también puede resumir parte de la conversación cuando se ha quedado obsoleta.

438claude -p "Explain what this project does"514* `/clear` empieza de nuevo. Si has corregido lo mismo dos veces y sigue estando mal, una tercera corrección sobre todo agrega más a una conversación que ya contiene dos intentos fallidos que Claude sigue releyendo. `/clear` más un prompt nuevo que incorpore lo que aprendiste funciona mejor casi siempre.

439 

440# Structured output for scripts

441claude -p "List all API endpoints" --output-format json

442 515 

443# Streaming for real-time processing516> [!WARNING]

444claude -p "Analyze this log file" --output-format stream-json --verbose517>

445```518> Los checkpoints cubren los archivos que Claude editó con sus propias herramientas de archivos en tu conversación principal, así que un archivo que solo tocó un comando Bash [no se restaura](https://code.claude.com/docs/es/checkpointing.md#bash-command-changes-not-tracked). Funcionan junto con git, no lo reemplazan.

446 519 

447El primer comando imprime texto sin formato. El formato `json` devuelve un único objeto JSON con un campo `result`. El formato `stream-json` imprime un objeto JSON por línea, comenzando con un evento de inicialización.520Dos más pequeños: [`/btw`](https://code.claude.com/docs/es/interactive-mode#side-questions-with-%2Fbtw) responde una pregunta rápida sin agregar nada al historial. Y para un trabajo que abarca varios días, `/rename oauth-migration` en la sesión le pone nombre, de modo que [`claude --resume oauth-migration`](https://code.claude.com/docs/es/sessions#resume-by-session-id-or-name) desde tu shell la retoma más tarde, checkpoints incluidos. `claude --continue` reanuda la más reciente.

448 521 

449### Ejecutar múltiples sesiones de Claude522## Deja que Claude trabaje sin ti

450 523 

451> [!TIP]524> [!TIP]

452>525>

453> Ejecuta múltiples sesiones de Claude en paralelo para acelerar el desarrollo, ejecutar experimentos aislados o iniciar flujos de trabajo complejos.526> Antes de dejar una ejecución desatendida, asegúrate de que sepa cómo se ve el trabajo terminado, pueda verificar su propio trabajo y solo pueda tocar lo que debe. Dale un límite de turnos o de gasto, y haz que una persona apruebe el resultado al final.

454 

455Elige el enfoque paralelo que se ajuste a cuánta coordinación deseas hacer tú mismo, y agrega mensajería cuando las sesiones necesiten pasar hallazgos entre ellas:

456 527 

457* [Worktrees](https://code.claude.com/docs/es/worktrees.md): ejecuta sesiones de CLI separadas en checkouts de git aislados para que las ediciones no choquen528Todo lo de esta página importa un poco más cuando no estás presente para detectar errores. Mientras observas, que a Claude le falte algo de contexto no es gran cosa: lo notas en uno o dos mensajes y se lo dices. En una ejecución que iniciaste antes de irte a dormir, nadie se lo dice, y a la mañana siguiente descubres que pasó toda la noche construyendo sobre una suposición equivocada.

458* [Mensajería entre sesiones](https://code.claude.com/docs/es/cross-session-messaging.md): permite que las sesiones que ejecutas tú mismo pasen hallazgos entre sí

459* [Aplicación de escritorio](https://code.claude.com/docs/es/desktop.md#work-in-parallel-with-sessions): administra múltiples sesiones locales visualmente, opcionalmente cada una en su propio worktree

460* [Usar Claude Code en la nube](https://code.claude.com/docs/es/claude-code-on-the-web.md): ejecuta sesiones en infraestructura administrada por Anthropic de forma predeterminada

461* [Vista de agente](https://code.claude.com/docs/es/agent-view.md): vista previa de investigación. Ejecuta `claude agents` para enviar sesiones que sigan ejecutándose en segundo plano y obsérvalas desde una pantalla

462* [Equipos de agentes](https://code.claude.com/docs/es/agent-teams.md): experimental y deshabilitado de forma predeterminada. Coordinación automatizada de múltiples sesiones con tareas compartidas, mensajería y un líder de equipo

463 529 

464Más allá de paralelizar el trabajo, múltiples sesiones permiten flujos de trabajo enfocados en la calidad. Un contexto fresco mejora la revisión de código ya que Claude no estará sesgado hacia el código que acaba de escribir.530Antes de dejar una tarea ejecutándose por su cuenta, vale la pena repasar estas cinco preguntas pensando en esa tarea concreta:

465 531 

466Por ejemplo, usa un patrón Escritor/Revisor:5321. ¿Sabe cómo se ve el trabajo terminado? Una condición de objetivo, un archivo de especificación o una prueba fallida que tiene que poner en verde.

5332. ¿Puede verificar su propio trabajo? El conjunto de pruebas, un hook `Stop`, algún tipo de paso de revisión.

5343. ¿Qué puede tocar? Reglas de permisos, `dontAsk`, el sandbox, un worktree, la única rama a la que puede hacer push.

5354. ¿Qué lo detiene? `--max-turns`, `--max-budget-usd`, un límite de gasto.

5365. ¿Adónde va el resultado y quién da el visto bueno? Un PR, un comentario o un resumen, y luego una persona que aprueba la fusión, el despliegue o cualquier otra cosa que no se pueda deshacer.

467 537 

468| Sesión A (Escritor) | Sesión B (Revisor) |538Una vez en marcha, Claude llevará adelante una tarea larga por su cuenta. Las partes que quedan en tus manos son iniciarla, decidir qué significa "terminado" esta vez y aprobar la fusión al final.

469| - | - |

470| `Implement a rate limiter for our API endpoints` | |

471| | `Review the rate limiter implementation in @src/middleware/rateLimiter.ts. Look for edge cases, race conditions, and consistency with our existing middleware patterns.` |

472| `Here's the review feedback: [Session B output]. Address these issues.` | |

473 539 

474Puedes hacer algo similar con pruebas: haz que un Claude escriba pruebas, luego otro escriba código para pasarlas.540### Ejecuta Claude desde un script

475 541 

476### Distribuir entre archivos542[`claude -p "prompt"`](https://code.claude.com/docs/es/headless) se ejecuta una vez y termina, y así es como Claude Code acaba en trabajos de CI, hooks de git y bucles de shell.

477 

478> [!TIP]

479>

480> Recorre tareas llamando a `claude -p` para cada una. Usa `--allowedTools` para aprobar previamente herramientas para operaciones por lotes.

481 543 

482Para migraciones o análisis grandes, puedes distribuir el trabajo entre muchas invocaciones paralelas de Claude. Ejecuta [`/batch <instruction>`](https://code.claude.com/docs/es/commands#all-commands) para que Claude divida el cambio entre 5 a 30 subagentes. Cada subagente trabaja en su propio worktree. Para impulsar la distribución desde tu propio script en su lugar, recorre `claude -p`:544En un script casi siempre querrás algunos flags más:

483 545 

484**1. Generar una lista de tareas**546* [`--bare`](https://code.claude.com/docs/es/headless#start-faster-with-bare-mode) omite hooks, skills, plugins, servidores MCP y archivos `CLAUDE.md`, tanto los del repositorio como los de la máquina, para que la ejecución haga lo mismo dondequiera que se ejecute. Tampoco toca nunca tu inicio de sesión de claude.ai: la autenticación proviene de `ANTHROPIC_API_KEY`, de un `apiKeyHelper` en el archivo que pasas con `--settings` o de las credenciales de tu proveedor de nube.

547* `--append-system-prompt`, `--mcp-config` y `--settings` pasan explícitamente lo que la ejecución *sí* necesita.

548* `--allowedTools` aprueba previamente sus herramientas, y [`--permission-mode dontAsk`](https://code.claude.com/docs/es/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) rechaza cualquier otra cosa que habría pedido aprobación.

549* `--output-format json` te da un único objeto de resultado para analizar, y `stream-json` con `--verbose` transmite los eventos a medida que ocurren.

485 550 

486Haz que Claude escriba la lista de archivos que necesitan migración en un archivo, para que el bucle en el siguiente paso pueda leerlo, con un prompt como `list all 2,000 Python files that need migrating and save the list to files.txt`551Todo junto, se ve así:

487 

488**2. Escribir un script para recorrer la lista**

489 552 

490```bash theme={null}553```bash theme={null}

491for file in $(cat files.txt); do554for file in $(cat files.txt); do

492 claude -p "Migrate $file from Python 2 to Python 3. Return OK or FAIL." \555 claude --bare -p "Migrate $file to the new logger API and commit. Reply OK or FAIL." \

493 --allowedTools "Edit,Bash(git commit *)" \556 --allowedTools "Read,Edit,Bash(git add *),Bash(git commit *)" \

494 --permission-mode dontAsk557 --permission-mode dontAsk \

558 --max-turns 20

495done559done

496```560```

497 561 

498**3. Probar en algunos archivos, luego ejecutar en todos ellos**562Cuando una ejecución termina, Claude responde `OK` o `FAIL`, y una ejecución que alcanza el límite de turnos sale con un error en su lugar. Pruébalo primero con tres archivos, observa qué sale mal, corrige el prompt y luego ejecuta el resto.

499 

500Refina tu prompt basándote en lo que sale mal con los primeros 2-3 archivos, luego ejecuta en el conjunto completo. El flag `--allowedTools` aprueba previamente las herramientas que necesita la migración. [`--permission-mode dontAsk`](https://code.claude.com/docs/es/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) deniega cualquier otra cosa que requeriría aprobación, lo que importa cuando estás ejecutando sin supervisión, aunque un [mod](https://code.claude.com/docs/es/plugins/mods/overview.md) que hayas instalado todavía puede aprobar algunas de esas llamadas.

501 563 

502También puedes integrar Claude en canalizaciones de datos/procesamiento existentes:564El modo automático también funciona con `-p` si pasas `--permission-mode auto`. En una ejecución no interactiva, un bloqueo del clasificador deniega esa acción concreta y Claude continúa, y los bloqueos repetidos no pausan la ejecución como lo hacen en una terminal. Lee [cómo se aplican allí los umbrales](https://code.claude.com/docs/es/permission-modes.md#repeated-block-thresholds) antes de confiar en ello.

503 565 

504```bash theme={null}566### Inicia ejecuciones según un horario o un evento

505claude -p "<your prompt>" --output-format json | your_command

506```

507 567 

508### Ejecutar de forma autónoma con modo automático568Una vez que una ejecución está en marcha, Claude puede encargarse del resto por sí mismo. Lo único que no puede hacer es decidir *empezar*, así que algo tiene que hacerlo: tú, un temporizador o un evento como una verificación de CI fallida o un nuevo PR.

509 569 

510Para ejecución ininterrumpida con comprobaciones de seguridad en segundo plano, usa el [modo automático](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode). Un modelo clasificador revisa los comandos antes de que se ejecuten, bloqueando escalada de alcance, infraestructura desconocida y acciones impulsadas por contenido hostil mientras permite que el trabajo habitual continúe sin solicitudes de permiso.570Dentro de una sesión abierta, eso es [`/loop`](https://code.claude.com/docs/es/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop), que repite un prompt en un intervalo:

511 571 

512```bash theme={null}572```text theme={null}

513claude --permission-mode auto -p "fix all lint errors"573/loop 15m check CI on this branch, and if it's red pull the failing job's log, fix it and push

514```574```

515 575 

516Cuando el clasificador bloquea repetidamente acciones en una ejecución no interactiva con el flag `-p`, Claude Code no detiene la ejecución. Consulta [cuándo el modo automático retrocede](https://code.claude.com/docs/es/permission-modes.md#when-auto-mode-falls-back) para saber qué sucede en su lugar y para los umbrales.576Cada ejecución es otro turno en la misma sesión, así que no dejes uno en marcha en una conversación larga. Para cualquier cosa que deba ocurrir mientras tu portátil está cerrada, [`/schedule`](https://code.claude.com/docs/es/routines#create-from-the-cli) configura una [tarea programada en la nube](https://code.claude.com/docs/es/routines.md) que se ejecuta con un temporizador. Necesita un inicio de sesión de claude.ai en lugar de una clave de API. Puedes agregar un disparador de eventos de GitHub pidiéndoselo a Claude, o un disparador de API en [claude.ai/code/routines](https://claude.ai/code/routines).

517 

518### Agregar un paso de revisión adversarial

519 577 

520> [!TIP]578> [!WARNING]

521>579>

522> Antes de tratar una tarea como completada, haz que un subagente revise el diff en un contexto fresco e informe sobre brechas.580> Antes de dejar una tarea programada en la nube en ejecución, protege `main` con una [regla de rama de GitHub que la tarea no pueda eludir](https://code.claude.com/docs/es/routines.md#repositories-and-branch-permissions). Y observa las primeras ejecuciones de cualquier cosa nueva antes de confiar en ella sin supervisión.

523 

524Cuanto más tiempo trabaje Claude sin supervisión, más importa una verificación independiente antes de contar el trabajo como completado. Un revisor que se ejecuta en un contexto de [subagente](https://code.claude.com/docs/es/sub-agents.md) fresco ve solo el diff y los criterios que le proporcionas, no el razonamiento que produjo el cambio, por lo que evalúa el resultado en sus propios términos.

525 581 

526Para una verificación de corrección, ejecuta el [skill `/code-review`](https://code.claude.com/docs/es/commands) incluido, que revisa el diff actual en busca de errores en un subagente fresco y devuelve hallazgos a la sesión. Para verificar el diff contra tu plan en su lugar, escribe el prompt de revisión tú mismo. Nombra el trabajo a verificar, el plan contra el cual verificarlo y qué cuenta como un hallazgo:582### Ejecuta sesiones en paralelo

527 583 

528```text wrap theme={null}584Cuando tienes varios trabajos separados en marcha a la vez, dale a cada uno su propio checkout para que las ediciones no choquen. [`claude -w feature-auth`](https://code.claude.com/docs/es/worktrees#start-claude-in-a-worktree) inicia una sesión en un nuevo worktree, la [aplicación de escritorio](https://code.claude.com/docs/es/desktop.md#work-in-parallel-with-sessions) ejecuta varias de estas una al lado de otra, y las [sesiones en la nube](https://code.claude.com/docs/es/claude-code-on-the-web.md) las ejecutan en la nube en lugar de en tu máquina.

529Use a subagent to review the rate limiter diff against PLAN.md. Check that

530every requirement is implemented, the listed edge cases have tests, and

531nothing outside the task's scope changed. Report gaps, not style preferences.

532```

533 585 

534Debido a que el revisor se ejecuta como un subagente, la sesión de implementación recibe las brechas directamente y puede corregirlas y revisar nuevamente sin que tú copies hallazgos entre ventanas.586Un worktree es un checkout nuevo, lo que significa que los archivos ignorados por git como `.env` no están ahí y las dependencias no están instaladas. Para lo primero, enumera los archivos ignorados por git que necesitas en un [`.worktreeinclude`](https://code.claude.com/docs/es/worktrees#copy-gitignored-files-into-worktrees) en la raíz del repositorio (misma sintaxis que `.gitignore`) y Claude Code los copia en cada worktree que crea:

535 587 

536Un revisor al que se le pide encontrar brechas generalmente reportará algunas, incluso cuando el trabajo es sólido, porque eso es lo que se le pidió que hiciera. Perseguir cada hallazgo conduce a sobreingeniería: capas de abstracción adicionales, código defensivo y pruebas para casos que no pueden suceder. Dile al revisor que marque solo brechas que afecten la corrección o los requisitos establecidos, y trata el resto como opcional.588```text .worktreeinclude theme={null}

589.env

590.env.local

591config/dev-credentials.json

592```

537 593 

538***594Limítalo a archivos pequeños: copia en lugar de enlazar, así que tener `node_modules` ahí significaría una copia completa por worktree. Para directorios grandes existe el ajuste [`worktree.symlinkDirectories`](https://code.claude.com/docs/es/settings-reference#worktree-symlinkdirectories), o bien mantén el comando de instalación en `CLAUDE.md` para que Claude lo ejecute cada vez que empiece en un checkout nuevo.

539 595 

540## Evite patrones de falla comunes596Rara vez tienes que limpiar nada de esto tú mismo:

541 597 

542Estos son errores comunes. Reconocerlos temprano ahorra tiempo:598* Cuando sales de una sesión de worktree sin nombre, Claude Code [elimina el worktree](https://code.claude.com/docs/es/worktrees.md#clean-up-worktrees) si no hay nada en él. Para una sesión con nombre, o una con cambios, te pregunta qué hacer.

599* Los worktrees de subagentes desaparecen cuando el subagente termina sin cambios.

600* Los worktrees de subagentes y de sesiones en segundo plano que sí quedan se eliminan una vez que superan `cleanupPeriodDays` y no contienen trabajo.

543 601 

544* **La sesión de todo incluido.** Comienza con una tarea, luego pregunta a Claude algo no relacionado, luego vuelve a la primera tarea. El contexto está lleno de información irrelevante.602> [!NOTE]

545 > **Solución**: `/clear` entre tareas no relacionadas.603>

546* **Corrección una y otra vez.** Claude hace algo mal, lo corrige, sigue siendo incorrecto, lo corrige de nuevo. El contexto está contaminado con enfoques fallidos.604> Una ejecución `claude -p --worktree` es una que limpias tú mismo, ya que termina sin preguntar. Elimínalas con `git worktree remove <path>` y, si git se niega porque el worktree está bloqueado, primero ejecuta `git worktree unlock <path>`.

547 > **Solución**: Después de dos correcciones fallidas, `/clear` y escriba una indicación inicial mejor incorporando lo que aprendió.

548* **El CLAUDE.md sobre especificado.** Si su CLAUDE.md es demasiado largo, Claude ignora la mitad porque las reglas importantes se pierden en el ruido.

549 > **Solución**: Elimine sin piedad. Si Claude ya hace algo correctamente sin la instrucción, elimínelo o conviértalo en un hook.

550* **La brecha de confianza-luego-verificación.** Claude produce una implementación que se ve plausible pero no maneja casos extremos.

551 > **Solución**: Siempre proporcione verificación (pruebas, scripts, capturas de pantalla). Si no puede verificarlo, no lo envíe.

552* **La exploración infinita.** Pide a Claude que "investigue" algo sin delimitarlo. Claude lee cientos de archivos, llenando el contexto.

553 > **Solución**: Delimite investigaciones estrechamente o use subagents para que la exploración no consuma su contexto principal.

554 605 

555***606Para un gran cambio mecánico en muchos archivos, [`/batch migrate every handler to the v2 response helpers`](https://code.claude.com/docs/es/commands) divide el trabajo en entre 5 y 30 unidades y te muestra el plan. Luego ejecuta cada unidad en su propio worktree y abre un PR para ella. Desde tu shell, [`claude agents`](https://code.claude.com/docs/es/agent-view) (todavía en vista previa de investigación) te da una sola pantalla para todo lo que se ejecuta en segundo plano en tu máquina.

556 607 

557## Desarrolle su intuición608Una segunda sesión es también el revisor independiente más fácil que puedes conseguir. Una sesión escribe el limitador de velocidad, otra revisa `@src/middleware/rateLimiter.ts` sin haber visto cómo se escribía, y tú pegas los hallazgos de vuelta en la primera. Es la misma idea que `/code-review`, pero eres tú quien lleva los mensajes.

558 609 

559Los patrones en esta guía no están grabados en piedra. Son puntos de partida que funcionan bien en general, pero podrían no ser óptimos para cada situación.610## Lo que puedes dejar de hacer

560 611 

561A veces *debería* dejar que el contexto se acumule porque está profundo en un problema complejo y el historial es valioso. A veces debería omitir la planificación y dejar que Claude lo descubra porque la tarea es exploratoria. A veces una indicación vaga es exactamente lo correcto porque desea ver cómo Claude interpreta el problema antes de limitarlo.612Cada uno de estos fue un buen consejo cuando se escribió. La mayoría eran soluciones alternativas para algo que el modelo todavía no podía hacer de forma fiable, y desde entonces los modelos se han puesto al día. Si algunos siguen siendo hábitos, aquí está por qué es seguro abandonarlos.

562 613 

563Preste atención a lo que funciona. Cuando Claude produce una salida excelente, note lo que hizo: la estructura de la indicación, el contexto que proporcionó, el modo en que estaba. Cuando Claude lucha, pregúntese por qué. ¿Fue el contexto demasiado ruidoso? ¿La indicación demasiado vaga? ¿La tarea demasiado grande para un pase?614| El consejo antiguo | Por qué ya no aplica |

615| :- | :- |

616| La ventana de contexto es tu principal restricción, gestiónala agresivamente | La mayoría de los modelos actuales tienen una ventana de 1M de tokens y la compactación ocurre por sí sola, así que quedarse sin contexto es poco común. `/clear` entre tareas sigue valiendo la pena, porque un contexto enfocado te da mejores respuestas y cuesta menos. |

617| Agrega IMPORTANT o MAYÚSCULAS a las instrucciones que Claude sigue pasando por alto | Los modelos anteriores a veces necesitaban el énfasis. Los actuales siguen una línea redactada con sencillez, y acumular énfasis sobre todo hace que Claude aplique la regla en exceso. Si es una regla que no puede flexibilizarse, conviértela en un hook o una regla de denegación. Si la línea se pierde en un archivo largo, el archivo necesita ser más corto. |

618| Usa subagentes para proteger tu ventana de contexto | Quedarse sin contexto ya rara vez es el problema. Los subagentes siguen siendo excelentes para el trabajo en paralelo, para mantener fuera de tu camino la salida ruidosa y para la revisión independiente, pero cada uno de esos usos cuesta tokens adicionales. |

619| Delega en un subagente para obtener una mejor respuesta | Pasarle la misma tarea a un subagente no mejora la respuesta. Un revisor nuevo sí ayuda, porque no ha visto tu razonamiento, lo cual es algo distinto de delegar. |

620| `think hard`, `think harder`, `be thorough` en el prompt | El esfuerzo es el control para eso. Esas frases son texto de prompt normal que empuja a Claude dentro de su ajuste de esfuerzo, no palabras clave que lo eleven. `ultrathink` sigue funcionando: pide un razonamiento más profundo en ese único turno sin tocar tu ajuste de esfuerzo. |

621| Dile a Claude que siga adelante, que itere hasta terminar, que no sea perezoso | Los modelos actuales normalmente continúan con una tarea acordada sin que se lo digan, y ese tipo de líneas tienen más probabilidades de provocar trabajo de más que de resolver un estancamiento. Darle a Claude una verificación que superar es distinto, y sigue valiendo la pena. Si una ejecución se detiene antes de tiempo, di `continue`, y para las ejecuciones que nadie está observando, `/goal` o un hook `Stop` lo exigen. |

622| Describe tu arquitectura y la estructura de archivos en `CLAUDE.md` | Claude lee el repositorio por sí mismo. Escribe solo lo que no está ahí. |

564 623 

565Con el tiempo, desarrollará intuición que ninguna guía puede capturar. Sabrá cuándo ser específico y cuándo ser abierto, cuándo planificar y cuándo explorar, cuándo limpiar contexto y cuándo dejarlo acumular.624Si algún otro consejo de esta página empieza a parecerte trabajo innecesario, probablemente sea señal de que también pertenece a esta tabla.

566 625 

567## Recursos relacionados626## Recursos relacionados

568 627 

569* [Cómo funciona Claude Code](https://code.claude.com/docs/es/how-claude-code-works.md): el bucle agencial, herramientas y gestión de contexto628* [Cómo funciona Claude Code](https://code.claude.com/docs/es/how-claude-code-works.md): el bucle, las herramientas y lo que se carga al inicio

570* [Extender Claude Code](https://code.claude.com/docs/es/features-overview.md): skills, hooks, MCP, subagents y plugins629* [Explora la ventana de contexto](https://code.claude.com/docs/es/context-window.md): qué ocupa espacio en una sesión y cuándo se carga

571* [Flujos de trabajo comunes](https://code.claude.com/docs/es/common-workflows.md): recetas paso a paso para depuración, pruebas, PRs y más630* [Extiende Claude Code](https://code.claude.com/docs/es/features-overview.md): cómo elegir entre skills, hooks, MCP, subagentes y plugins

572* [CLAUDE.md](https://code.claude.com/docs/es/memory.md): almacenar convenciones de proyecto y contexto persistente631* [Elige un modo de permisos](https://code.claude.com/docs/es/permission-modes.md) y [Configura los permisos](https://code.claude.com/docs/es/permissions.md)

632* [Gestiona los costos de forma eficaz](https://code.claude.com/docs/es/costs.md)

633* [Ejecuta Claude Code mediante programación](https://code.claude.com/docs/es/headless.md) y [Automatiza el trabajo con tareas programadas en la nube](https://code.claude.com/docs/es/routines.md)

634* Para líderes de equipo y administradores: [Configura Claude Code para tu organización](https://code.claude.com/docs/es/admin-setup.md)

chrome.md +1 −1

Details

43 43 

44En las organizaciones Enterprise que tienen HIPAA habilitado, Claude en Chrome está desactivado de forma predeterminada, y un [propietario](https://code.claude.com/docs/es/server-managed-settings.md#access-control) puede activarlo en [**Configuración de la organización > Claude en Chrome**](https://claude.ai/admin-settings/browser-extension). Tu Acuerdo de Asociado Comercial (BAA) con Anthropic no cubre los datos enviados a sitios de terceros a través de Claude en Chrome. Consulta la [Guía de implementación](https://trust.anthropic.com/resources?s=l1wrssd9hsbi4gak0tp5a6\&name=%5Banthropic%5D-hipaa-ready-offering-implementation-guide) para ver una lista de Servicios Elegibles.44En las organizaciones Enterprise que tienen HIPAA habilitado, Claude en Chrome está desactivado de forma predeterminada, y un [propietario](https://code.claude.com/docs/es/server-managed-settings.md#access-control) puede activarlo en [**Configuración de la organización > Claude en Chrome**](https://claude.ai/admin-settings/browser-extension). Tu Acuerdo de Asociado Comercial (BAA) con Anthropic no cubre los datos enviados a sitios de terceros a través de Claude en Chrome. Consulta la [Guía de implementación](https://trust.anthropic.com/resources?s=l1wrssd9hsbi4gak0tp5a6\&name=%5Banthropic%5D-hipaa-ready-offering-implementation-guide) para ver una lista de Servicios Elegibles.

45 45 

46La integración de Chrome también requiere iniciar sesión con `/login`. Si te autenticas con una clave de API o un token de larga duración de [`claude setup-token`](https://code.claude.com/docs/es/authentication#generate-a-long-lived-token), Claude Code mantiene la integración de Chrome desactivada, incluso cuando pasas `--chrome`, porque la extensión del navegador no puede autenticarse con esas credenciales. Antes de v2.1.216, estas sesiones podían habilitar la integración de Chrome, pero cada intento de conectarse a la extensión del navegador fallaba con un error 403.46La integración de Chrome también requiere iniciar sesión con `/login`. Si te autenticas con una clave de API o un token de larga duración de [`claude setup-token`](https://code.claude.com/docs/es/authentication#generate-a-long-lived-token), Claude Code mantiene la integración de Chrome desactivada, incluso cuando pasas `--chrome`. La extensión del navegador no puede autenticarse con esas credenciales.

47 47 

48> [!NOTE]48> [!NOTE]

49>49>

Details

996 996 

997[Memoria de aprobación](https://code.claude.com/docs/es/server-managed-settings.md#approval-memory) explica cuánto dura una aprobación y cuándo vuelve a aparecer el diálogo.997[Memoria de aprobación](https://code.claude.com/docs/es/server-managed-settings.md#approval-memory) explica cuánto dura una aprobación y cuándo vuelve a aparecer el diálogo.

998 998 

999Claude Code aplica algunas variables de `env` entregadas sin mostrar al desarrollador el diálogo de aprobación, como los ajustes de selección de modelo y los límites numéricos. Otras variables entregadas pueden requerir la aprobación del desarrollador antes de surtir efecto; un valor no vacío de proxy, URL base u `OTEL_EXPORTER_OTLP_ENDPOINT` siempre la requiere. Cuando una variable entregada necesita aprobación, el diálogo la nombra.999Claude Code aplica algunas variables de `env` entregadas sin mostrar al desarrollador el diálogo de aprobación, como los ajustes de selección de modelo y los límites numéricos. Otras variables entregadas pueden requerir la aprobación del desarrollador; un valor no vacío de proxy, de URL base o de `OTEL_EXPORTER_OTLP_ENDPOINT` siempre la requiere. Cuando una variable entregada necesita aprobación, el diálogo la nombra. [Variables de entorno y el diálogo de aprobación](https://code.claude.com/docs/es/server-managed-settings.md#environment-variables-and-the-approval-dialog) tiene los detalles, incluidos cuatro interruptores de privacidad cuyo valor entregado decide si necesitan aprobación.

1000 

1001[Variables de entorno y el diálogo de aprobación](https://code.claude.com/docs/es/server-managed-settings.md#environment-variables-and-the-approval-dialog) tiene los detalles, incluidos cuatro interruptores de privacidad cuyo valor entregado decide si necesitan aprobación. Antes de v2.1.218, Claude Code aplicaba menos variables sin preguntar al desarrollador, por lo que más variables entregadas activaban el diálogo.

1002 1000 

1003La configuración de [telemetría](#telemetry) del gateway envía `OTEL_EXPORTER_OTLP_ENDPOINT`, por lo que establecer `telemetry.forward_to` activa el diálogo en cada cliente interactivo. El diálogo protege la máquina del desarrollador frente a un gateway comprometido u hostil, no a la organización frente al desarrollador.1001La configuración de [telemetría](#telemetry) del gateway envía `OTEL_EXPORTER_OTLP_ENDPOINT`, por lo que establecer `telemetry.forward_to` activa el diálogo en cada cliente interactivo. El diálogo protege la máquina del desarrollador frente a un gateway comprometido u hostil, no a la organización frente al desarrollador.

1004 1002 

Details

264* **El tutorial completo, incluida la creación de PR**: consulta [Revisar e iterar](https://code.claude.com/docs/es/web-quickstart.md#review-and-iterate)264* **El tutorial completo, incluida la creación de PR**: consulta [Revisar e iterar](https://code.claude.com/docs/es/web-quickstart.md#review-and-iterate)

265* **Hacer que Claude monitoree automáticamente el PR para detectar fallos de CI y comentarios de revisión**: consulta [Corregir automáticamente pull requests](#auto-fix-pull-requests)265* **Hacer que Claude monitoree automáticamente el PR para detectar fallos de CI y comentarios de revisión**: consulta [Corregir automáticamente pull requests](#auto-fix-pull-requests)

266 266 

267#### Solucionar problemas de un archivo que falta en la vista de diff

268 

269Es posible que falte un archivo que esperabas en la lista de archivos de la vista de diff cuando esta compara con la rama base, tanto si la sesión ya envió cambios como si no:

270 

271* **Aún no se han enviado cambios**: la lista incluye las ediciones propias de Claude, pero no los cambios hechos por comandos que Claude ejecutó, como un formateador

272* **Cambios enviados**: la lista incluye los commits enviados, pero no los cambios hechos después del último envío

273 

274Para agregar a la lista un cambio que falta, pídele a Claude que haga commit y envíe los cambios.

275 

267### Gestionar contexto276### Gestionar contexto

268 277 

269Las sesiones en la nube admiten [comandos integrados](https://code.claude.com/docs/es/commands.md) que producen salida de texto. Los comandos que solo se ejecutan en la interfaz de terminal, como `/plugin` o `/resume`, no están disponibles. Los comandos que abren un selector o panel en el terminal se comportan de manera diferente en sesiones en la nube:278Las sesiones en la nube admiten [comandos integrados](https://code.claude.com/docs/es/commands.md) que producen salida de texto. Los comandos que solo se ejecutan en la interfaz de terminal, como `/plugin` o `/resume`, no están disponibles. Los comandos que abren un selector o panel en el terminal se comportan de manera diferente en sesiones en la nube:

270 279 

271* **`/model`, `/effort`, `/color` y `/rename`**: pasa el valor como argumento, por ejemplo `/model sonnet`, en lugar de abrir el selector de terminal o el control deslizante. Las formas con argumento siguen las [notas de disponibilidad](https://code.claude.com/docs/es/commands.md#all-commands) de cada comando.280* **`/model`, `/effort`, `/color` y `/rename`**: pasa el valor como argumento, por ejemplo `/model sonnet`, en lugar de abrir el selector de terminal o el control deslizante. Las formas con argumento siguen las [notas de disponibilidad](https://code.claude.com/docs/es/commands.md#all-commands) de cada comando.

272* **`/fast`**: alterna el [modo rápido](https://code.claude.com/docs/es/fast-mode.md#use-fast-mode-in-cloud-sessions) para la sesión cuando el modo rápido está [disponible en su cuenta](https://code.claude.com/docs/es/fast-mode.md#requirements). Requiere Claude Code v2.1.271 o posterior en el entorno de la sesión.281* **`/fast`**: alterna el [modo rápido](https://code.claude.com/docs/es/fast-mode.md#use-fast-mode-in-cloud-sessions) para la sesión cuando el modo rápido está [disponible en su cuenta](https://code.claude.com/docs/es/fast-mode.md#requirements). Requiere Claude Code v2.1.271 o posterior en el entorno de la sesión.

273* **`/config`**: en tu navegador en claude.ai/code, abre la sección Claude Code de tu configuración en lugar de establecer un valor. Para cambiar un ajuste de una sesión en la nube, establece una [variable de entorno](https://code.claude.com/docs/es/cloud-environments.md#set-environment-variables) en el entorno. En una sesión con un repositorio fuera de los hilos de un [proyecto](https://code.claude.com/docs/es/claude-projects.md), en su lugar haz commit de la clave en el archivo `.claude/settings.json` de ese repositorio. [Configuración en sesiones en la nube](https://code.claude.com/docs/es/settings.md#settings-in-cloud-sessions) enumera lo que cada sesión lee.282* **`/config`**: en tu navegador en claude.ai/code, abre **Settings > Code** o **Settings > Claude Code** en lugar de establecer un valor. Para cambiar un ajuste de una sesión en la nube, establece una [variable de entorno](https://code.claude.com/docs/es/cloud-environments.md#set-environment-variables) en el entorno. En una sesión con un repositorio fuera de los hilos de un [proyecto](https://code.claude.com/docs/es/claude-projects.md), en su lugar haz commit de la clave en el archivo `.claude/settings.json` de ese repositorio. [Configuración en sesiones en la nube](https://code.claude.com/docs/es/settings.md#settings-in-cloud-sessions) enumera lo que cada sesión lee.

274 283 

275Para la gestión de contexto en una sesión en la nube fuera de los [hilos de un proyecto](https://code.claude.com/docs/es/claude-projects.md#choose-models-and-let-claude-manage-context):284Para la gestión de contexto en una sesión en la nube fuera de los [hilos de un proyecto](https://code.claude.com/docs/es/claude-projects.md#choose-models-and-let-claude-manage-context):

276 285 


337* **Acceso al repositorio**: la verificación no está habilitada de forma predeterminada346* **Acceso al repositorio**: la verificación no está habilitada de forma predeterminada

338* **Contenido sensible**: revisa tu sesión antes de compartirla. Las sesiones pueden contener código y credenciales de repositorios privados de GitHub347* **Contenido sensible**: revisa tu sesión antes de compartirla. Las sesiones pueden contener código y credenciales de repositorios privados de GitHub

339 348 

340Para requerir que los destinatarios tengan acceso al repositorio, u ocultar su nombre de sesiones compartidas, vaya a [**Settings > Claude Code > Sharing settings**](https://claude.ai/settings/claude-code).349Para requerir que los destinatarios tengan acceso al repositorio, u ocultar tu nombre de las sesiones compartidas, abre Settings en claude.ai y luego:

350 

351* **Si el menú Settings muestra Code en lugar de Claude Code**: ve a [**Privacy**](https://claude.ai/settings/data-privacy-controls), que tiene estos ajustes

352* **De lo contrario**: ve a [**Claude Code > Sharing settings**](https://claude.ai/settings/claude-code)

341 353 

342### Archivar sesiones354### Archivar sesiones

343 355 

Details

55}55}

56```56```

57 57 

58Claude Code también ejecuta este comando al inicio cuando no puede validar sus credenciales de AWS existentes, y muestra la salida del comando en un panel de `Authentication` hasta que el inicio de sesión se complete.58Claude Code también ejecuta este comando al inicio cuando no puede validar tus credenciales de AWS existentes, y muestra la salida del comando en un panel de `Authentication` hasta que el inicio de sesión se complete.

59 59 

60Con `awsAuthRefresh` configurado, ejecute `/login`, seleccione **plataforma de terceros**, luego seleccione **Claude Platform on AWS · actualizar credenciales** en **Usando plataformas de terceros**. Claude Code ejecuta el comando configurado y vuelve a leer sus credenciales de AWS sin reiniciar.60Con `awsAuthRefresh` configurado, ejecute `/login`, seleccione **plataforma de terceros**, luego seleccione **Claude Platform on AWS · actualizar credenciales** en **Usando plataformas de terceros**. Claude Code ejecuta el comando configurado y vuelve a leer sus credenciales de AWS sin reiniciar.

61 61 


95 95 

96Claude Platform on AWS utiliza los mismos ID de modelo que la API de Claude directa.96Claude Platform on AWS utiliza los mismos ID de modelo que la API de Claude directa.

97 97 

98Los alias predeterminados `fable`, `opus`, `sonnet` y `haiku` se resuelven a los valores predeterminados integrados de Claude Code para Claude Platform on AWS, que pueden estar retrasados respecto a la versión más reciente. Sin `ANTHROPIC_DEFAULT_OPUS_MODEL`, el alias `opus` se resuelve a Opus 5.5. Antes de v2.1.280, se resolvía a Opus 5 desde v2.1.219, y a Opus 4.8 desde v2.1.207.98Los alias predeterminados `fable`, `opus`, `sonnet` y `haiku` se resuelven a los valores predeterminados integrados de Claude Code para Claude Platform on AWS, que pueden estar retrasados respecto a la versión más reciente. Sin `ANTHROPIC_DEFAULT_OPUS_MODEL`, el alias `opus` se resuelve a Opus 5.5. Antes de v2.1.280, se resolvía a Opus 5 desde v2.1.219.

99 99 

100Si implementa Claude Code en un equipo, fije explícitamente los ID de modelo para que un nuevo lanzamiento no mueva a todos a la vez:100Si implementa Claude Code en un equipo, fije explícitamente los ID de modelo para que un nuevo lanzamiento no mueva a todos a la vez:

101 101 

claude-projects.md +16 −10

Details

70Puedes crear y usar proyectos en [claude.ai/code](https://claude.ai/code), en la pestaña Code de la aplicación de escritorio o en la aplicación móvil de Claude para [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) y [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude). En el navegador y en la aplicación de escritorio hay dos formas de iniciar un proyecto:70Puedes crear y usar proyectos en [claude.ai/code](https://claude.ai/code), en la pestaña Code de la aplicación de escritorio o en la aplicación móvil de Claude para [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) y [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude). En el navegador y en la aplicación de escritorio hay dos formas de iniciar un proyecto:

71 71 

72* **Desde cero**, cuando sabes qué flujo de trabajo quieres que Claude ejecute: abre el diálogo **New project** y ponle un nombre. [Iniciar un proyecto nuevo desde cero](#start-a-new-project-from-scratch) explica el diálogo paso a paso.72* **Desde cero**, cuando sabes qué flujo de trabajo quieres que Claude ejecute: abre el diálogo **New project** y ponle un nombre. [Iniciar un proyecto nuevo desde cero](#start-a-new-project-from-scratch) explica el diálogo paso a paso.

73* **Desde una sesión en la nube que ya está haciendo el trabajo**: en el menú de la barra lateral de esa sesión, elige **Move to project** y luego **Continue as new project**. Claude propone la configuración del proyecto a partir de lo que estaba haciendo la sesión. Consulta [Empezar desde una sesión en la nube existente](#start-from-an-existing-cloud-session).73* **Desde una sesión en la nube que ya está haciendo el trabajo**: en el menú de la barra lateral de esa sesión, elige **Continue in project** y luego **Continue as new project**. Claude propone la configuración del proyecto a partir de lo que estaba haciendo la sesión. Consulta [Empezar desde una sesión en la nube existente](#start-from-an-existing-cloud-session).

74 74 

75En cualquier caso, primero [revisa los requisitos previos](#check-the-prerequisites).75En cualquier caso, primero [revisa los requisitos previos](#check-the-prerequisites).

76 76 


113 113 

114### Empezar desde una sesión existente114### Empezar desde una sesión existente

115 115 

116Si una sesión en la nube que iniciaste tú mismo está haciendo un trabajo que corresponde a un proyecto, abre su menú de la barra lateral, elige **Move to project** y luego elige una opción del submenú:116Si una sesión en la nube que iniciaste tú mismo está haciendo un trabajo que corresponde a un proyecto, abre su menú de la barra lateral, elige **Continue in project** y luego elige una opción del submenú:

117 117 

118* Elige **Continue as new project** para crear un proyecto nuevo a partir de la sesión. El proyecto se abre, y Claude lee la sesión y publica **Setup recommendations** en la conversación del proyecto para que las confirmes. La sesión original permanece en tu lista de sesiones. Si estaba en medio de un turno, sigue ejecutándose, así que detenla tú mismo si no quieres que ambos trabajen a la vez.118* Elige **Continue as new project** para crear un proyecto nuevo a partir de la sesión. El proyecto se abre, y Claude lee la sesión y publica **Setup recommendations** en la conversación del proyecto para que las confirmes. La sesión original permanece en tu lista de sesiones. Si estaba en medio de un turno, sigue ejecutándose, así que detenla tú mismo si no quieres que ambos trabajen a la vez.

119* Elige uno de tus proyectos existentes para llevar el trabajo de la sesión a ese proyecto. Ese proyecto se abre, y un mensaje enviado en tu nombre le pide a Claude que lea la sesión y continúe donde se quedó. La sesión original permanece en tu lista de sesiones, sin cambios.119* Elige uno de tus proyectos existentes para llevar el trabajo de la sesión a ese proyecto. Ese proyecto se abre, y un mensaje enviado en tu nombre le pide a Claude que lea la sesión y continúe donde se quedó. La sesión original permanece en tu lista de sesiones, sin cambios.


262 262 

263En la computadora que tiene la carpeta que la tarea necesita, póngala disponible a través de Remote Control de una de dos maneras. Ambas necesitan Claude Code v2.1.280 o posterior en esa computadora.263En la computadora que tiene la carpeta que la tarea necesita, póngala disponible a través de Remote Control de una de dos maneras. Ambas necesitan Claude Code v2.1.280 o posterior en esa computadora.

264 264 

265* **En la aplicación de escritorio de Claude**: abra **Settings > Claude Code**, active **Use this computer from your phone and claude.ai**, y agregue la carpeta a la lista bajo ese interruptor. Los hilos pueden ejecutarse en esta computadora mientras la aplicación está abierta.265* **En la aplicación de escritorio de Claude**: abre **Settings > Code** o **Settings > Claude Code** y activa **Use this computer from your phone and claude.ai**. Agrega la carpeta a la lista debajo de ese interruptor. Los hilos pueden ejecutarse en esta computadora mientras la aplicación está abierta.

266* **En una terminal**: ejecute `claude remote-control` en la carpeta y déjela ejecutándose. En un repositorio de git, agregue `--spawn worktree` para dar a cada hilo allí su propio [worktree](https://code.claude.com/docs/es/worktrees.md) en lugar de la carpeta misma.266* **En una terminal**: ejecuta `claude remote-control` en la carpeta y déjalo en ejecución. En un repositorio de git, agrega `--spawn worktree` para dar a cada hilo allí su propio [worktree](https://code.claude.com/docs/es/worktrees.md) en lugar de la carpeta misma.

267 267 

268**2. Solicitar la tarea con Work locally**268**2. Solicitar la tarea con Work locally**

269 269 

270En la conversación del proyecto, elija **Work locally** del menú **+** junto al cuadro de mensaje, que etiqueta su mensaje como **Local**, y escriba qué desea que se haga. Decir en el mensaje que la tarea debe ejecutarse en su computadora también funciona.270En la conversación del proyecto, elige **Work locally** en el menú **+** junto al cuadro de mensaje, lo que etiqueta tu mensaje como **Local**, y escribe lo que quieres que se haga. Decir en el mensaje que la tarea debe ejecutarse en tu computadora también funciona.

271 271 

272**3. Permitirlo en la tarjeta**272**3. Permitirlo en la tarjeta**

273 273 

274Claude responde con una tarjeta **Allow Claude to work in a folder on your device**. Elija la carpeta si conectó varias. Dos hilos trabajando en una carpeta al mismo tiempo pueden sobrescribir los cambios del otro, por lo que si la carpeta es un repositorio de git, puede activar **Worktree** en las opciones de la carpeta para dar a este hilo su propio worktree en lugar de eso. Luego haga clic en **Allow once**.274Claude responde con una tarjeta **Allow Claude to work in a folder on your device**. Elige la carpeta si conectaste varias. Dos hilos trabajando en una carpeta al mismo tiempo pueden sobrescribir los cambios del otro, por lo que si la carpeta es un repositorio de git, puedes activar **Worktree** en las opciones de la carpeta para dar a este hilo su propio worktree en su lugar. Luego haz clic en **Allow once**.

275 275 

276El hilo se ejecuta en [modo automático](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode), por lo que Claude ejecuta comandos y edita archivos en esa carpeta sin pedirle cada vez. Si el modo automático no está disponible o está desactivado en Claude Code de esa computadora, el hilo se ejecuta sin él, y cualquier aviso de permiso que genere espera su respuesta en el hilo, como [Desbloquear un hilo esperando aprobación](#unblock-a-thread-waiting-on-approval) describe.276El hilo se ejecuta en [modo automático](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode), por lo que Claude ejecuta comandos y edita archivos en esa carpeta sin pedirle cada vez. Si el modo automático no está disponible o está desactivado en Claude Code de esa computadora, el hilo se ejecuta sin él, y cualquier aviso de permiso que genere espera su respuesta en el hilo, como [Desbloquear un hilo esperando aprobación](#unblock-a-thread-waiting-on-approval) describe.

277 277 

278Mientras el hilo se ejecuta, un icono de portátil en su encabezado muestra si su computadora está conectada. Haga clic en él para ver qué carpeta está usando el hilo o para desactivar la conexión. El hilo se pausa mientras esa computadora está dormida, y se detiene si la aplicación de escritorio o `claude remote-control` se cierra. [Lost contact with your folder](#lost-contact-with-your-folder) cubre cómo hacerlo funcionar de nuevo. En la aplicación de escritorio, active **Keep this computer awake for Remote Control** bajo **Settings > Claude Code** para evitar que la computadora se duerma por sí sola.278Mientras el hilo se ejecuta, un icono de portátil en su encabezado muestra si tu computadora está conectada. Haz clic en él para ver qué carpeta está usando el hilo o para desactivar la conexión. El hilo se pausa mientras esa computadora está en reposo, y se detiene si la aplicación de escritorio o `claude remote-control` se cierra.

279 

280* **Para volver a poner en marcha el hilo**: consulta [Lost contact with your folder](#lost-contact-with-your-folder)

281* **Para evitar que la computadora entre en reposo por sí sola**: en la aplicación de escritorio, activa **Keep this computer awake for Remote Control** en **Settings > Code** o **Settings > Claude Code**

279 282 

280Un proyecto no puede ejecutar un hilo en su computadora mientras [**Require trusted devices**](https://code.claude.com/docs/es/remote-control.md#trusted-devices) está activado para su cuenta.283Un proyecto no puede ejecutar un hilo en su computadora mientras [**Require trusted devices**](https://code.claude.com/docs/es/remote-control.md#trusted-devices) está activado para su cuenta.

281 284 


427Varias características de Claude Code permiten que más de una sesión trabaje al mismo tiempo, así que ejecutar trabajo en paralelo no es por sí solo para qué es un proyecto. En un proyecto, Claude comienza y rastrea las sesiones en lugar de usted, y cada una comienza desde las mismas instrucciones. Así es como cada característica vecina se conecta a un proyecto:430Varias características de Claude Code permiten que más de una sesión trabaje al mismo tiempo, así que ejecutar trabajo en paralelo no es por sí solo para qué es un proyecto. En un proyecto, Claude comienza y rastrea las sesiones en lugar de usted, y cada una comienza desde las mismas instrucciones. Así es como cada característica vecina se conecta a un proyecto:

428 431 

429* **Claude Tag**: [Claude Tag](https://claude.com/docs/claude-tag/overview) es Claude en los canales de Slack de tu equipo, en planes Team y Enterprise. Cualquiera en un canal puede darle trabajo, todos en el canal lo ven y lo dirigen, y utiliza conexiones que un administrador configuró para ese canal. Un proyecto es solo tuyo: eres el único que le envía trabajo o ve sus hilos, utiliza tu propio acceso a GitHub y conectores, y está en Pro y Max. [Cómo Claude Tag difiere de Cowork y Claude Code](https://claude.com/docs/claude-tag/concepts/how-it-works#how-claude-tag-differs-from-cowork-and-claude-code) tiene el lado a lado.432* **Claude Tag**: [Claude Tag](https://claude.com/docs/claude-tag/overview) es Claude en los canales de Slack de tu equipo, en planes Team y Enterprise. Cualquiera en un canal puede darle trabajo, todos en el canal lo ven y lo dirigen, y utiliza conexiones que un administrador configuró para ese canal. Un proyecto es solo tuyo: eres el único que le envía trabajo o ve sus hilos, utiliza tu propio acceso a GitHub y conectores, y está en Pro y Max. [Cómo Claude Tag difiere de Cowork y Claude Code](https://claude.com/docs/claude-tag/concepts/how-it-works#how-claude-tag-differs-from-cowork-and-claude-code) tiene el lado a lado.

430* **Sesiones en la nube**: cada hilo es una [sesión en la nube](https://code.claude.com/docs/es/claude-code-on-the-web.md) a menos que le pidas a Claude que la ejecute en tu máquina. De cualquier forma, Claude la comienza y rastrea en lugar de ti. También puedes llevar el trabajo de una sesión en la nube que iniciaste tú mismo a un proyecto: elige [**Move to project**](#start-from-an-existing-cloud-session) en el menú de la barra lateral de esa sesión.433* **Sesiones en la nube**: cada hilo es una [sesión en la nube](https://code.claude.com/docs/es/claude-code-on-the-web.md) a menos que le pidas a Claude que la ejecute en tu máquina. De cualquier forma, Claude la comienza y rastrea en lugar de ti. También puedes llevar el trabajo de una sesión en la nube que iniciaste tú mismo a un proyecto: elige [**Continue in project**](#start-from-an-existing-cloud-session) en el menú de la barra lateral de esa sesión.

431* **Tareas programadas**: cuando pides trabajo programado en un proyecto, Claude crea una [tarea programada en la nube](https://code.claude.com/docs/es/routines.md) que se ejecuta como hilos en ese proyecto y aparece en su pestaña **Scheduled tasks**. Las tareas programadas que creas fuera de un proyecto siguen funcionando por su cuenta.434* **Tareas programadas**: cuando pides trabajo programado en un proyecto, Claude crea una [tarea programada en la nube](https://code.claude.com/docs/es/routines.md) que se ejecuta como hilos en ese proyecto y aparece en su pestaña **Scheduled tasks**. Las tareas programadas que creas fuera de un proyecto siguen funcionando por su cuenta.

432* **Remote Control**: [Remote Control](https://code.claude.com/docs/es/remote-control.md) conecta claude.ai a una sesión de Claude Code que se ejecuta en su máquina. Cuando pide a Claude en un proyecto que ejecute un hilo en su computadora, el proyecto [utiliza Remote Control para hacerlo](#run-a-thread-on-your-own-computer).435* **Remote Control**: [Remote Control](https://code.claude.com/docs/es/remote-control.md) conecta claude.ai a una sesión de Claude Code que se ejecuta en su máquina. Cuando pide a Claude en un proyecto que ejecute un hilo en su computadora, el proyecto [utiliza Remote Control para hacerlo](#run-a-thread-on-your-own-computer).

433* **Sesiones locales y agent view**: una sesión que inicias tú mismo en tu terminal, IDE o el entorno local de la aplicación de escritorio queda fuera de tus proyectos, aunque puedes [llevar su trabajo a uno](#start-from-an-existing-cloud-session). [Agent view](https://code.claude.com/docs/es/agent-view.md) es una pantalla para rastrear varias sesiones locales lado a lado, y sigues iniciando cada una y dándole su tarea tú mismo.436* **Sesiones locales y agent view**: una sesión que inicias tú mismo en tu terminal, IDE o el entorno local de la aplicación de escritorio queda fuera de tus proyectos, aunque puedes [llevar su trabajo a uno](#start-from-an-existing-cloud-session). [Agent view](https://code.claude.com/docs/es/agent-view.md) es una pantalla para rastrear varias sesiones locales lado a lado, y sigues iniciando cada una y dándole su tarea tú mismo.


445* No puedes agregar a un proyecto una sesión que iniciaste tú mismo en tu máquina, aunque sí puedes [traer su trabajo a uno](#start-from-an-existing-cloud-session). Un proyecto llega a tu máquina al [ejecutar un hilo allí a través de Remote Control](#run-a-thread-on-your-own-computer), y esa sección enumera lo que necesita.448* No puedes agregar a un proyecto una sesión que iniciaste tú mismo en tu máquina, aunque sí puedes [traer su trabajo a uno](#start-from-an-existing-cloud-session). Un proyecto llega a tu máquina al [ejecutar un hilo allí a través de Remote Control](#run-a-thread-on-your-own-computer), y esa sección enumera lo que necesita.

446* La sandbox de un hilo en la nube se pausa entre turnos y se reanuda cuando el hilo continúa. Si la sandbox no se puede reanudar, el hilo continúa desde un clon fresco, así que los cambios no confirmados pueden perderse. En tareas largas, pídele a Claude que confirme e inserte trabajo en progreso.449* La sandbox de un hilo en la nube se pausa entre turnos y se reanuda cuando el hilo continúa. Si la sandbox no se puede reanudar, el hilo continúa desde un clon fresco, así que los cambios no confirmados pueden perderse. En tareas largas, pídele a Claude que confirme e inserte trabajo en progreso.

447* Un proyecto pertenece a un usuario. No puedes compartir un proyecto o sus hilos con otro usuario, y las transcripciones de hilos no tienen la opción de compartir que tienen otras sesiones en la nube. No hay controles a nivel de organización para proyectos durante la beta.450* Un proyecto pertenece a un usuario. No puedes compartir un proyecto o sus hilos con otro usuario, y las transcripciones de hilos no tienen la opción de compartir que tienen otras sesiones en la nube. No hay controles a nivel de organización para proyectos durante la beta.

448* Un hilo pertenece al único proyecto que lo comenzó. No puede mover o copiar un hilo a otro proyecto, o sacarlo para que esté solo. [**Move to project**](#start-from-an-existing-cloud-session) va solo en la otra dirección: trae el trabajo de una sesión en la nube a un proyecto. No puede fusionar dos proyectos en uno.451* Un hilo pertenece al único proyecto que lo comenzó. No puedes mover o copiar un hilo a otro proyecto, o sacarlo para que esté solo. [**Continue in project**](#start-from-an-existing-cloud-session) va solo en la otra dirección: trae el trabajo de una sesión en la nube a un proyecto. No puedes fusionar dos proyectos en uno.

449 452 

450## Solución de problemas453## Solución de problemas

451 454 


489 492 

490### Perdiste contacto con tu carpeta493### Perdiste contacto con tu carpeta

491 494 

492Un hilo que se ejecuta en tu computadora muestra esto cuando la sesión de Claude Code allí dejó de responder, generalmente porque la computadora se durmió o la aplicación de escritorio o `claude remote-control` se cerró. Despierta la computadora, y si la aplicación de escritorio o `claude remote-control` ya no se está ejecutando allí, inicia de nuevo: reabre la aplicación y confirma que **Use this computer from your phone and claude.ai** aún está activado en **Settings > Claude Code**, o ejecuta `claude remote-control` de nuevo en la misma carpeta.495Un hilo que se ejecuta en tu computadora muestra esto cuando la sesión de Claude Code allí dejó de responder, generalmente porque la computadora se durmió o la aplicación de escritorio o `claude remote-control` se cerró. Despierta la computadora. Si la aplicación de escritorio o `claude remote-control` ya no se está ejecutando allí, inícialo de nuevo:

496 

497* **Aplicación de escritorio**: reabre la aplicación y confirma que **Use this computer from your phone and claude.ai** aún está activado en **Settings > Code** o **Settings > Claude Code**

498* **Terminal**: ejecuta `claude remote-control` de nuevo en la misma carpeta

493 499 

494### Otros mensajes500### Otros mensajes

495 501 

Details

71* En una sesión de terminal, donde `/code-review` ejecuta la revisión como un [subagente bifurcado](https://code.claude.com/docs/es/skills.md#run-skills-in-a-subagent)71* En una sesión de terminal, donde `/code-review` ejecuta la revisión como un [subagente bifurcado](https://code.claude.com/docs/es/skills.md#run-skills-in-a-subagent)

72* En una ejecución con `-p` con salida de texto o JSON72* En una ejecución con `-p` con salida de texto o JSON

73 73 

74En una aplicación host que solicita la lista de hallazgos, como la [aplicación de escritorio](https://code.claude.com/docs/es/desktop.md#review-your-code), Claude informa los hallazgos de la revisión a través de la [herramienta `ReportFindings`](https://code.claude.com/docs/es/tools-reference) en su lugar. El informe aparece como una lista de hallazgos, y cada entrada muestra la ubicación del archivo, un resumen de una oración y una etiqueta de categoría como `correctness` cuando el hallazgo tiene una. Una solicitud del host aplica en todos los niveles de esfuerzo y requiere Claude Code v2.1.218 o posterior.74En una aplicación host que solicita la lista de hallazgos, como la [aplicación de escritorio](https://code.claude.com/docs/es/desktop.md#review-your-code), Claude informa los hallazgos de la revisión a través de la [herramienta `ReportFindings`](https://code.claude.com/docs/es/tools-reference) en su lugar. El informe aparece como una lista de hallazgos, y cada entrada muestra la ubicación del archivo, un resumen de una oración y una etiqueta de categoría como `correctness` cuando el hallazgo tiene una. Una solicitud del host aplica en todos los niveles de esfuerzo.

75 75 

76Cuando Claude corrige hallazgos informados más adelante en la sesión, los informa de nuevo. Luego, Claude Code marca cada hallazgo en la lista actualizada como corregido, omitido o sin cambios necesarios.76Cuando Claude corrige hallazgos informados más adelante en la sesión, los informa de nuevo. Luego, Claude Code marca cada hallazgo en la lista actualizada como corregido, omitido o sin cambios necesarios.

77 77 


104Después del nivel de esfuerzo y los flags, Claude Code lee el resto de la línea como el objetivo de la revisión. El argumento `ultra` cambia esa interpretación:104Después del nivel de esfuerzo y los flags, Claude Code lee el resto de la línea como el objetivo de la revisión. El argumento `ultra` cambia esa interpretación:

105 105 

106* **Con `ultra`**: Claude Code lee una sola palabra como una rama base o un número de PR. Un texto más largo que no nombra una rama ni un PR se convierte en [una nota adjunta a la revisión](https://code.claude.com/docs/es/ultrareview.md#pass-a-request-in-plain-words). `/code-review ultra check my auth changes` revisa tu rama actual, y Claude relaciona los hallazgos con tu nota.106* **Con `ultra`**: Claude Code lee una sola palabra como una rama base o un número de PR. Un texto más largo que no nombra una rama ni un PR se convierte en [una nota adjunta a la revisión](https://code.claude.com/docs/es/ultrareview.md#pass-a-request-in-plain-words). `/code-review ultra check my auth changes` revisa tu rama actual, y Claude relaciona los hallazgos con tu nota.

107* **Sin `ultra`**: todo lo que queda es el objetivo de la revisión, incluso cuando empieza con el nombre de otro comando. `/code-review /fix-issue 123` revisa con `/fix-issue 123` como texto del objetivo en lugar de cargar `/fix-issue` como un segundo [skill apilado](https://code.claude.com/docs/es/skills.md#stack-several-skills-in-one-message). Antes de la v2.1.218, un comando apilado después de `/code-review` se expandía como su propio skill.107* **Sin `ultra`**: todo lo que queda es el objetivo de la revisión, incluso cuando empieza con el nombre de otro comando. `/code-review /fix-issue 123` revisa con `/fix-issue 123` como texto del objetivo en lugar de cargar `/fix-issue` como un segundo [skill apilado](https://code.claude.com/docs/es/skills.md#stack-several-skills-in-one-message).

108 108 

109## Ejecutar en primer plano109## Ejecutar en primer plano

110 110 


114* Establece [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/es/env-vars) en `1`, lo que también desactiva otras funciones de tareas en segundo plano114* Establece [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/es/env-vars) en `1`, lo que también desactiva otras funciones de tareas en segundo plano

115* Ejecuta `/code-review` de nuevo mientras una revisión anterior sigue en curso115* Ejecuta `/code-review` de nuevo mientras una revisión anterior sigue en curso

116 116 

117Antes de la v2.1.218, la revisión se ejecutaba dentro de tu conversación.

118 

119## Deja que Claude inicie la revisión117## Deja que Claude inicie la revisión

120 118 

121Claude puede iniciar `/code-review` por su cuenta, sin que escribas el comando:119Claude puede iniciar `/code-review` por su cuenta, sin que escribas el comando:

commands.md +3 −3

Details

37* **[Skill](https://code.claude.com/docs/es/skills.md#bundled-skills)**: un skill incluido. Funciona como los skills que escribes tú mismo: un prompt que se le entrega a Claude.37* **[Skill](https://code.claude.com/docs/es/skills.md#bundled-skills)**: un skill incluido. Funciona como los skills que escribes tú mismo: un prompt que se le entrega a Claude.

38 * `/verify` solo se ejecuta cuando lo invocas. Antes de v2.1.215, Claude también podía ejecutar `/verify` por su cuenta.38 * `/verify` solo se ejecuta cuando lo invocas. Antes de v2.1.215, Claude también podía ejecutar `/verify` por su cuenta.

39* **[Workflow](https://code.claude.com/docs/es/workflows.md#bundled-workflows)**: un [flujo de trabajo dinámico](https://code.claude.com/docs/es/workflows.md) incluido que distribuye el trabajo entre muchos subagentes y se ejecuta en segundo plano.39* **[Workflow](https://code.claude.com/docs/es/workflows.md#bundled-workflows)**: un [flujo de trabajo dinámico](https://code.claude.com/docs/es/workflows.md) incluido que distribuye el trabajo entre muchos subagentes y se ejecuta en segundo plano.

40 * `/deep-research` solo se ejecuta cuando lo invocas. Antes de v2.1.218, Claude también podía iniciarlo por su cuenta.40 * `/deep-research` solo se ejecuta cuando lo invocas.

41 41 

42Para agregar tus propios comandos, consulta [skills](https://code.claude.com/docs/es/skills.md).42Para agregar tus propios comandos, consulta [skills](https://code.claude.com/docs/es/skills.md).

43 43 


54| `/agents` | Imprime un recordatorio para pedirle a Claude que cree o administre [subagentes](https://code.claude.com/docs/es/sub-agents.md), o para editar `.claude/agents/` o `~/.claude/agents/` directamente. En v2.1.197 y anteriores, abre una interfaz interactiva para crear y administrar configuraciones de subagentes |54| `/agents` | Imprime un recordatorio para pedirle a Claude que cree o administre [subagentes](https://code.claude.com/docs/es/sub-agents.md), o para editar `.claude/agents/` o `~/.claude/agents/` directamente. En v2.1.197 y anteriores, abre una interfaz interactiva para crear y administrar configuraciones de subagentes |

55| `/artifact-capabilities` | **[Skill](https://code.claude.com/docs/es/skills.md#bundled-skills).** Carga la referencia de las capacidades de tiempo de ejecución que puede usar un [artefacto](https://code.claude.com/docs/es/artifacts.md) publicado, como [llamar a tus conectores](https://code.claude.com/docs/es/artifacts.md#pull-live-data-with-mcp-connectors) u [ofrecer la descarga de un archivo](https://code.claude.com/docs/es/artifacts.md#offer-a-file-download), incluidas las que tiene tu cuenta. Normalmente Claude la carga por su cuenta antes de crear una página que use alguna. Disponible donde lo están los [artefactos](https://code.claude.com/docs/es/artifacts.md#availability) |55| `/artifact-capabilities` | **[Skill](https://code.claude.com/docs/es/skills.md#bundled-skills).** Carga la referencia de las capacidades de tiempo de ejecución que puede usar un [artefacto](https://code.claude.com/docs/es/artifacts.md) publicado, como [llamar a tus conectores](https://code.claude.com/docs/es/artifacts.md#pull-live-data-with-mcp-connectors) u [ofrecer la descarga de un archivo](https://code.claude.com/docs/es/artifacts.md#offer-a-file-download), incluidas las que tiene tu cuenta. Normalmente Claude la carga por su cuenta antes de crear una página que use alguna. Disponible donde lo están los [artefactos](https://code.claude.com/docs/es/artifacts.md#availability) |

56| `/artifact-diagramming` | **[Skill](https://code.claude.com/docs/es/skills.md#bundled-skills).** Carga orientación sobre diagramas para que Claude la siga en [artefactos](https://code.claude.com/docs/es/artifacts.md): cuándo ayuda un diagrama, qué dibujar y cómo escribir SVG en línea que siga siendo legible en temas claros y oscuros. Requiere Claude Code v2.1.221 o posterior |56| `/artifact-diagramming` | **[Skill](https://code.claude.com/docs/es/skills.md#bundled-skills).** Carga orientación sobre diagramas para que Claude la siga en [artefactos](https://code.claude.com/docs/es/artifacts.md): cuándo ayuda un diagrama, qué dibujar y cómo escribir SVG en línea que siga siendo legible en temas claros y oscuros. Requiere Claude Code v2.1.221 o posterior |

57| `/artifacts` | Enumera los [artefactos](https://code.claude.com/docs/es/artifacts.md#find-an-artifact-again) que te pertenecen o que se compartieron contigo y luego adjunta uno a la sesión, ábrelo en tu navegador o copia su enlace. Disponible donde lo están los [artefactos](https://code.claude.com/docs/es/artifacts.md#availability). Requiere Claude Code v2.1.208 o posterior; adjuntar con `Enter` requiere v2.1.216 |57| `/artifacts` | Enumera los [artefactos](https://code.claude.com/docs/es/artifacts.md#find-an-artifact-again) que te pertenecen o que se compartieron contigo y luego adjunta uno a la sesión, ábrelo en tu navegador o copia su enlace. Disponible donde lo están los [artefactos](https://code.claude.com/docs/es/artifacts.md#availability) |

58| `/auto-mode-setup` | [Genera un borrador de entradas `autoMode.environment`](https://code.claude.com/docs/es/auto-mode-config#generate-environment-entries) a partir de tu proyecto y tus sesiones recientes, luego revisa el borrador y guárdalo en tu configuración de usuario. En un plan Pro, Max o Team, requiere Claude Code v2.1.228 o posterior, o v2.1.233 o posterior en Windows nativo. En un plan Enterprise o con una clave de API de Claude Console, requiere v2.1.283 o posterior. Si el comando no aparece, consulta [`/auto-mode-setup` devuelve "Unknown command"](https://code.claude.com/docs/es/auto-mode-config#auto-mode-setup-returns-unknown-command) |58| `/auto-mode-setup` | [Genera un borrador de entradas `autoMode.environment`](https://code.claude.com/docs/es/auto-mode-config#generate-environment-entries) a partir de tu proyecto y tus sesiones recientes, luego revisa el borrador y guárdalo en tu configuración de usuario. En un plan Pro, Max o Team, requiere Claude Code v2.1.228 o posterior, o v2.1.233 o posterior en Windows nativo. En un plan Enterprise o con una clave de API de Claude Console, requiere v2.1.283 o posterior. Si el comando no aparece, consulta [`/auto-mode-setup` devuelve "Unknown command"](https://code.claude.com/docs/es/auto-mode-config#auto-mode-setup-returns-unknown-command) |

59| `/autocompact [auto\|<tokens>]` | Establece la ventana de compactación automática: qué tan llena se pone la ventana de contexto antes de que Claude Code compacte automáticamente. Pasa un tamaño como `500k`, o `auto` para volver a la ventana ajustada para tu modelo. Claude Code guarda el valor en la configuración de usuario y lo aplica a la sesión actual. Consulta [Establecer la ventana de compactación automática](https://code.claude.com/docs/es/model-config.md#set-the-auto-compact-window) para ver los valores aceptados y qué lo sobrescribe. Sin argumento, abre un diálogo que muestra la ventana actual. Requiere Claude Code v2.1.221 o posterior |59| `/autocompact [auto\|<tokens>]` | Establece la ventana de compactación automática: qué tan llena se pone la ventana de contexto antes de que Claude Code compacte automáticamente. Pasa un tamaño como `500k`, o `auto` para volver a la ventana ajustada para tu modelo. Claude Code guarda el valor en la configuración de usuario y lo aplica a la sesión actual. Consulta [Establecer la ventana de compactación automática](https://code.claude.com/docs/es/model-config.md#set-the-auto-compact-window) para ver los valores aceptados y qué lo sobrescribe. Sin argumento, abre un diálogo que muestra la ventana actual. Requiere Claude Code v2.1.221 o posterior |

60| `/autofix-pr [prompt]` | Inicia una [sesión en la nube](https://code.claude.com/docs/es/claude-code-on-the-web.md#auto-fix-pull-requests) que vigila el PR de la rama actual y envía correcciones cuando falla la CI o los revisores dejan comentarios. Detecta el PR abierto desde tu rama activa con `gh pr view`; para vigilar otro PR, primero cambia a su rama. De forma predeterminada, se le indica a la sesión en la nube que corrija cada falla de CI y cada comentario de revisión; pasa un prompt para darle instrucciones diferentes, por ejemplo `/autofix-pr only fix lint and type errors`. Requiere la CLI `gh` y acceso a [sesiones en la nube](https://code.claude.com/docs/es/claude-code-on-the-web.md) |60| `/autofix-pr [prompt]` | Inicia una [sesión en la nube](https://code.claude.com/docs/es/claude-code-on-the-web.md#auto-fix-pull-requests) que vigila el PR de la rama actual y envía correcciones cuando falla la CI o los revisores dejan comentarios. Detecta el PR abierto desde tu rama activa con `gh pr view`; para vigilar otro PR, primero cambia a su rama. De forma predeterminada, se le indica a la sesión en la nube que corrija cada falla de CI y cada comentario de revisión; pasa un prompt para darle instrucciones diferentes, por ejemplo `/autofix-pr only fix lint and type errors`. Requiere la CLI `gh` y acceso a [sesiones en la nube](https://code.claude.com/docs/es/claude-code-on-the-web.md) |


85| `/desktop` | Continúa la sesión actual en la app de escritorio de Claude Code. Requiere macOS o Windows x64 y una suscripción a Claude. Alias: `/app` |85| `/desktop` | Continúa la sesión actual en la app de escritorio de Claude Code. Requiere macOS o Windows x64 y una suscripción a Claude. Alias: `/app` |

86| `/diff` | Revisa los cambios en tu árbol de trabajo, incluidas las ediciones que Claude ha hecho hasta ahora. Consulta [Revisar cambios con /diff](https://code.claude.com/docs/es/interactive-mode.md#review-changes-with-%2Fdiff) |86| `/diff` | Revisa los cambios en tu árbol de trabajo, incluidas las ediciones que Claude ha hecho hasta ahora. Consulta [Revisar cambios con /diff](https://code.claude.com/docs/es/interactive-mode.md#review-changes-with-%2Fdiff) |

87| `/doctor [prompt-audit [path]]` | **[Skill](https://code.claude.com/docs/es/skills.md#bundled-skills).** Ejecuta una revisión de la configuración que diagnostica problemas de instalación, configuración, extensiones y `CLAUDE.md`, y propone correcciones que Claude aplica después de que confirmas. Para saber qué cubre la revisión, o para auditar tus instrucciones con `prompt-audit` en su lugar, consulta [Revisar tu configuración con `/doctor`](https://code.claude.com/docs/es/skills#check-your-setup-with-/doctor). El subcomando `prompt-audit` requiere Claude Code v2.1.283 o posterior. Alias: `/checkup` |87| `/doctor [prompt-audit [path]]` | **[Skill](https://code.claude.com/docs/es/skills.md#bundled-skills).** Ejecuta una revisión de la configuración que diagnostica problemas de instalación, configuración, extensiones y `CLAUDE.md`, y propone correcciones que Claude aplica después de que confirmas. Para saber qué cubre la revisión, o para auditar tus instrucciones con `prompt-audit` en su lugar, consulta [Revisar tu configuración con `/doctor`](https://code.claude.com/docs/es/skills#check-your-setup-with-/doctor). El subcomando `prompt-audit` requiere Claude Code v2.1.283 o posterior. Alias: `/checkup` |

88| `/effort [level\|auto\|status\|ultracode [on\|off]]` | Establece el [nivel de esfuerzo](https://code.claude.com/docs/es/model-config.md#adjust-effort-level): de `low` a `xhigh`, `max` o `auto`; `status` lo imprime. `ultracode` o `ultracode on` activa [ultracode](https://code.claude.com/docs/es/workflows.md#let-claude-decide-with-ultracode) para la sesión en el nivel actual, y `ultracode off` lo desactiva; la clave [`ultracode`](https://code.claude.com/docs/es/settings-reference#ultracode) persiste. `max` es solo para la sesión. Los argumentos `on` y `off` y mantener el nivel actual requieren Claude Code v2.1.284 o posterior. Antes de v2.1.284, `/effort ultracode` establecía la sesión en `xhigh`, y `/effort ultracode off` fallaba con `Invalid argument`. Ejecútalo mientras Claude está respondiendo y, una vez que confirmes la [advertencia de caché](https://code.claude.com/docs/es/prompt-caching.md#changing-effort-level), si Claude Code muestra una, Claude Code aplica el nuevo nivel a la siguiente solicitud de ese turno. Antes de v2.1.242, Claude Code decidía, a partir de un feature flag que obtenía de Anthropic, si ejecutar el comando a mitad del turno o ponerlo en cola hasta que terminara el turno, y siempre lo ponía en cola en una sesión que no [obtiene feature flags](https://code.claude.com/docs/es/env-vars.md#features-that-need-feature-flag-fetching), como con un [proveedor externo](https://code.claude.com/docs/es/third-party-integrations.md). Funciona en `-p` |88| `/effort [level\|auto\|status\|ultracode [on\|off]]` | Establece el [nivel de esfuerzo](https://code.claude.com/docs/es/model-config.md#adjust-effort-level): de `low` a `xhigh`, `max` o `auto`; `status` lo imprime. `ultracode` o `ultracode on` activa [ultracode](https://code.claude.com/docs/es/workflows.md#let-claude-decide-with-ultracode) para la sesión, y `ultracode off` lo desactiva; la clave [`ultracode`](https://code.claude.com/docs/es/settings-reference#ultracode) persiste. `max` es solo para la sesión. Los argumentos `on` y `off` requieren Claude Code v2.1.284 o posterior. Si ejecutas `/effort` mientras Claude está trabajando, consulta [cuándo empieza el nuevo nivel](https://code.claude.com/docs/es/model-config.md#when-a-new-effort-level-starts). Funciona en `-p` en v2.1.205 o posterior |

89| `/exit` | Sale de la CLI. En una [sesión en segundo plano](https://code.claude.com/docs/es/agent-view.md#attach-to-a-session) adjunta, esto la separa y la sesión sigue ejecutándose. Alias: `/quit` |89| `/exit` | Sale de la CLI. En una [sesión en segundo plano](https://code.claude.com/docs/es/agent-view.md#attach-to-a-session) adjunta, esto la separa y la sesión sigue ejecutándose. Alias: `/quit` |

90| `/export [filename]` | Exporta la conversación actual como texto sin formato. Con un nombre de archivo, escribe directamente en ese archivo. Sin él, abre un diálogo para copiar al portapapeles o guardar en un archivo |90| `/export [filename]` | Exporta la conversación actual como texto sin formato. Con un nombre de archivo, escribe directamente en ese archivo. Sin él, abre un diálogo para copiar al portapapeles o guardar en un archivo |

91| `/fast [on\|off]` | Activa o desactiva el [modo rápido](https://code.claude.com/docs/es/fast-mode.md). Ejecútalo mientras Claude está respondiendo y Claude Code cambia el modo rápido sin esperar a que termine el turno, aunque el turno en curso termina a su velocidad original. Antes de v2.1.242, Claude Code decidía, a partir de un feature flag que obtenía de Anthropic, si ejecutar el comando a mitad del turno o ponerlo en cola hasta que terminara el turno, y siempre lo ponía en cola en una sesión que no [obtiene feature flags](https://code.claude.com/docs/es/env-vars.md#features-that-need-feature-flag-fetching). La disponibilidad en modo no interactivo con `-p` es limitada; consulta [Alternar el modo rápido](https://code.claude.com/docs/es/fast-mode.md#toggle-fast-mode) |91| `/fast [on\|off]` | Activa o desactiva el [modo rápido](https://code.claude.com/docs/es/fast-mode.md). Ejecútalo mientras Claude está respondiendo y Claude Code cambia el modo rápido sin esperar a que termine el turno, aunque el turno en curso termina a su velocidad original. Antes de v2.1.242, Claude Code decidía, a partir de un feature flag que obtenía de Anthropic, si ejecutar el comando a mitad del turno o ponerlo en cola hasta que terminara el turno, y siempre lo ponía en cola en una sesión que no [obtiene feature flags](https://code.claude.com/docs/es/env-vars.md#features-that-need-feature-flag-fetching). La disponibilidad en modo no interactivo con `-p` es limitada; consulta [Alternar el modo rápido](https://code.claude.com/docs/es/fast-mode.md#toggle-fast-mode) |

computer-use.md +1 −1

Details

178| Característica | Desktop | CLI |178| Característica | Desktop | CLI |

179| :- | :- | :- |179| :- | :- | :- |

180| Plataformas | macOS y Windows | Solo macOS |180| Plataformas | macOS y Windows | Solo macOS |

181| Habilitar | Alternar en **Settings > This computer > System** | Habilitar `computer-use` en `/mcp` |181| Habilitar | Alternar en [Settings](https://code.claude.com/docs/es/desktop.md#enable-computer-use) | Habilitar `computer-use` en `/mcp` |

182| Lista de aplicaciones denegadas | Configurable en Settings | Aún no disponible |182| Lista de aplicaciones denegadas | Configurable en Settings | Aún no disponible |

183| Alternar auto-unhide | Opcional | Siempre activado |183| Alternar auto-unhide | Opcional | Siempre activado |

184| Integración de Dispatch | Las sesiones generadas por Dispatch pueden usar computer use | No aplicable |184| Integración de Dispatch | Las sesiones generadas por Dispatch pueden usar computer use | No aplicable |

Details

70* [Extender Claude Code](https://code.claude.com/docs/es/features-overview.md): cuándo usar CLAUDE.md vs skills vs reglas vs hooks vs MCP70* [Extender Claude Code](https://code.claude.com/docs/es/features-overview.md): cuándo usar CLAUDE.md vs skills vs reglas vs hooks vs MCP

71* [Almacenar instrucciones y memorias](https://code.claude.com/docs/es/memory.md): jerarquía de CLAUDE.md y memoria automática71* [Almacenar instrucciones y memorias](https://code.claude.com/docs/es/memory.md): jerarquía de CLAUDE.md y memoria automática

72* [Subagents](https://code.claude.com/docs/es/sub-agents.md): delegar investigación a una ventana de contexto separada72* [Subagents](https://code.claude.com/docs/es/sub-agents.md): delegar investigación a una ventana de contexto separada

73* [Mejores prácticas](https://code.claude.com/docs/es/best-practices.md): gestionar el contexto como su restricción principal73* [Buenas prácticas](https://code.claude.com/docs/es/best-practices.md#keep-cost-and-context-down): mantener las sesiones enfocadas y los costos bajos

74* [Almacenamiento en caché de prompts](https://code.claude.com/docs/es/prompt-caching.md): qué acciones invalidan el prefijo en caché74* [Almacenamiento en caché de prompts](https://code.claude.com/docs/es/prompt-caching.md): qué acciones invalidan el prefijo en caché

75* [Reducir el uso de tokens](https://code.claude.com/docs/es/costs.md#reduce-token-usage): estrategias para mantener el uso de contexto bajo75* [Reducir el uso de tokens](https://code.claude.com/docs/es/costs.md#reduce-token-usage): estrategias para mantener el uso de contexto bajo

Details

174Cualquiera de estas opciones te muestra el texto completo:174Cualquiera de estas opciones te muestra el texto completo:

175 175 

176* Presiona `Ctrl+O` para abrir el [visor de transcripciones](https://code.claude.com/docs/es/interactive-mode.md#transcript-viewer) y leer el texto completo bajo el nombre de la sesión del remitente.176* Presiona `Ctrl+O` para abrir el [visor de transcripciones](https://code.claude.com/docs/es/interactive-mode.md#transcript-viewer) y leer el texto completo bajo el nombre de la sesión del remitente.

177 

178 Si Claude está ocupado y todavía no ha recibido el mensaje, desplázate hasta el final de la transcripción, donde el mensaje aparece bajo `Waiting to be delivered`. Requiere Claude Code v2.1.309 o posterior.

179 

177* En el [renderizado de pantalla completa](https://code.claude.com/docs/es/fullscreen.md#use-the-mouse), haz clic en una línea de vista previa que omita parte del mensaje para expandirla en su lugar.180* En el [renderizado de pantalla completa](https://code.claude.com/docs/es/fullscreen.md#use-the-mouse), haz clic en una línea de vista previa que omita parte del mensaje para expandirla en su lugar.

181 

178* En una sesión iniciada con [`--verbose`](https://code.claude.com/docs/es/cli-reference#cli-flags), Claude Code muestra el texto completo en lugar de la vista previa.182* En una sesión iniciada con [`--verbose`](https://code.claude.com/docs/es/cli-reference#cli-flags), Claude Code muestra el texto completo en lugar de la vista previa.

179 183 

180La vista previa acorta solo lo que ves. La expandas o no, Claude lee el mensaje completo.184La vista previa acorta solo lo que ves. La expandas o no, Claude lee el mensaje completo.

desktop.md +31 −22

Details

69* **Usar la sugerencia**: presiona **Tab** o **Flecha derecha** para colocarla en el cuadro de prompt, edítala si quieres y luego presiona **Enter** para enviarla. Presionar **Enter** antes de aceptar la sugerencia no la envía.69* **Usar la sugerencia**: presiona **Tab** o **Flecha derecha** para colocarla en el cuadro de prompt, edítala si quieres y luego presiona **Enter** para enviarla. Presionar **Enter** antes de aceptar la sugerencia no la envía.

70* **Escribir tu propio prompt**: empieza a escribir. La sugerencia solo se muestra mientras el cuadro de prompt está vacío y no tiene archivos adjuntos.70* **Escribir tu propio prompt**: empieza a escribir. La sugerencia solo se muestra mientras el cuadro de prompt está vacío y no tiene archivos adjuntos.

71 71 

72Ve a **Configuración > Claude Code** y desactiva **Prompt suggestions** en **Sessions** para dejar de ver sugerencias en cada sesión a partir de la próxima vez que se inicie o se reanude.72Desactiva **Prompt suggestions** en **Configuración > Code** o **Configuración > Claude Code** para dejar de ver sugerencias. Cada sesión deja de mostrarlas la próxima vez que se inicia o se reanuda.

73 73 

74### Agregar archivos y contexto a los prompts74### Agregar archivos y contexto a los prompts

75 75 


92| **Accept edits** | `acceptEdits` | Claude acepta automáticamente ediciones de archivos y comandos comunes del sistema de archivos como `mkdir`, `touch` y `mv`, pero aún pregunta antes de ejecutar otros comandos de terminal. Usa esto cuando confíes en los cambios de archivos y quieras una iteración más rápida. |92| **Accept edits** | `acceptEdits` | Claude acepta automáticamente ediciones de archivos y comandos comunes del sistema de archivos como `mkdir`, `touch` y `mv`, pero aún pregunta antes de ejecutar otros comandos de terminal. Usa esto cuando confíes en los cambios de archivos y quieras una iteración más rápida. |

93| **Plan** | `plan` | Claude lee archivos y ejecuta comandos para explorar, luego propone un plan sin editar tu código fuente. Bueno para tareas complejas donde quieres revisar el enfoque primero. |93| **Plan** | `plan` | Claude lee archivos y ejecuta comandos para explorar, luego propone un plan sin editar tu código fuente. Bueno para tareas complejas donde quieres revisar el enfoque primero. |

94| **Auto** | `auto` | Claude se ejecuta sin solicitudes de confirmación habituales; antes de que se ejecuten acciones como comandos de shell y solicitudes de red, un clasificador en segundo plano verifica que se alineen con tu solicitud. Aparece cuando [el modo automático está disponible](#auto-mode-availability); no hay un control de Configuración separado para esto. |94| **Auto** | `auto` | Claude se ejecuta sin solicitudes de confirmación habituales; antes de que se ejecuten acciones como comandos de shell y solicitudes de red, un clasificador en segundo plano verifica que se alineen con tu solicitud. Aparece cuando [el modo automático está disponible](#auto-mode-availability); no hay un control de Configuración separado para esto. |

95| **Bypass permissions** | `bypassPermissions` | Claude se ejecuta sin solicitudes de permiso, excepto para las [acciones que ningún modo aprueba automáticamente](https://code.claude.com/docs/es/permission-modes.md#actions-no-mode-auto-approves), los clasificadores de seguridad cuando Claude [actúa en sitios externos](#browse-external-sites), o acciones de escritorio como eliminar una sesión, aunque no [archivarla](#work-across-sessions). Equivalente a `--dangerously-skip-permissions` en la CLI. En los planes Pro y Max, habilítalo en tu Configuración → Claude Code en "Allow bypass permissions mode"; en los planes Team y Enterprise no hay un control de Configuración, y la política de la organización lo controla en su lugar. Úsalo solo en contenedores o máquinas virtuales en sandbox. |95| **Bypass permissions** | `bypassPermissions` | Claude se ejecuta sin solicitudes de permiso, excepto para las [acciones que ningún modo aprueba automáticamente](https://code.claude.com/docs/es/permission-modes.md#actions-no-mode-auto-approves), los clasificadores de seguridad cuando Claude [actúa en sitios externos](#browse-external-sites), o acciones de escritorio como eliminar una sesión, aunque no [archivarla](#work-across-sessions). Equivalente a `--dangerously-skip-permissions` en la CLI. En los planes Pro y Max, habilita "Allow bypass permissions mode" en **Configuración > Code** o **Configuración > Claude Code**. En los planes Team y Enterprise no hay un control de Configuración, y la política de la organización lo controla en su lugar. Úsalo solo en contenedores o máquinas virtuales en sandbox. |

96 96 

97Las versiones anteriores de la pestaña Code etiquetaban estos modos como Ask permissions, Auto accept edits y Plan mode.97Las versiones anteriores de la pestaña Code etiquetaban estos modos como Ask permissions, Auto accept edits y Plan mode.

98 98 


100 100 

101> [!TIP]101> [!TIP]

102>102>

103> Comienza las tareas complejas en Plan para que Claude trace un enfoque antes de realizar cambios. Una vez que apruebes el plan, cambia a Accept edits o Manual para ejecutarlo. Consulta [explorar primero, luego planificar, luego codificar](https://code.claude.com/docs/es/best-practices.md#explore-first-then-plan-then-code) para obtener más información sobre este flujo de trabajo.103> Comienza las tareas complejas en Plan para que Claude trace un enfoque antes de realizar cambios. Una vez que apruebes el plan, cambia a Accept edits o Manual para ejecutarlo. Consulta [modo plan](https://code.claude.com/docs/es/permission-modes.md#analyze-before-you-edit-with-plan-mode) para obtener más información sobre este flujo de trabajo.

104 104 

105Las sesiones en la nube admiten Accept edits, Plan y Auto. Accept edits corresponde al modo `default`: las sesiones en la nube aprueban previamente las ediciones de archivos, por lo que el selector muestra Accept edits en lugar de Manual. Bypass permissions no está disponible en sesiones en la nube, incluidas las sesiones en un [entorno autohospedado](https://code.claude.com/docs/es/self-hosted-environments).105Las sesiones en la nube admiten Accept edits, Plan y Auto. Accept edits corresponde al modo `default`: las sesiones en la nube aprueban previamente las ediciones de archivos, por lo que el selector muestra Accept edits en lugar de Manual. Bypass permissions no está disponible en sesiones en la nube, incluidas las sesiones en un [entorno autohospedado](https://code.claude.com/docs/es/self-hosted-environments).

106 106 


133 133 

134Claude crea la configuración inicial del servidor basada en tu proyecto. Si tu aplicación usa un comando de desarrollo personalizado, edita `.claude/launch.json` para que coincida con tu configuración. Consulta [Configurar servidores de vista previa](#configure-preview-servers) para la referencia completa.134Claude crea la configuración inicial del servidor basada en tu proyecto. Si tu aplicación usa un comando de desarrollo personalizado, edita `.claude/launch.json` para que coincida con tu configuración. Consulta [Configurar servidores de vista previa](#configure-preview-servers) para la referencia completa.

135 135 

136Para borrar los datos guardados del navegador, selecciona **Clear browsing data** en el menú **⋮** del panel del navegador. Para desactivar el navegador por completo, desactiva **Browser tools** en **Configuración > Claude Code**.136Para borrar los datos guardados del navegador, selecciona **Clear browsing data** en el menú **⋮** del panel del navegador. Para desactivar el navegador por completo, desactiva **Browser tools** en **Configuración > Code** o **Configuración > Claude Code**.

137 137 

138### Examinar sitios externos138### Examinar sitios externos

139 139 


164 164 

165### Revisar cambios con la vista de diff165### Revisar cambios con la vista de diff

166 166 

167Después de que Claude realiza cambios en tu código, la vista de diff te permite revisar las modificaciones archivo por archivo antes de crear un pull request. Para abrir la vista de diff, haz clic en los recuentos de líneas, como `+12 -1`, en la tarjeta **Changes** del [panel de detalles de la sesión](#see-session-details). También puedes hacer clic en **Changes** en la barra de título de la sesión.167Después de que Claude realiza cambios en tu código, la vista de diff te permite revisar las modificaciones archivo por archivo antes de crear un pull request. Para abrir la vista de diff, haz clic en los recuentos de líneas, como `+12 -1`, en la tarjeta **Changes** del [panel de detalles de la sesión](#see-session-details). También puedes hacer clic en **Changes** en la barra de título de la sesión. El diff de una sesión en la nube con respecto a la rama base puede [omitir cambios que aún no se han enviado](https://code.claude.com/docs/es/claude-code-on-the-web.md#troubleshoot-a-missing-file-in-the-diff-view).

168 168 

169Para comentar líneas específicas, haz clic en cualquier línea del diff para abrir un cuadro de comentarios. Escribe tu comentario y presiona **Enter** para agregarlo. Después de agregar comentarios a varias líneas, envía todos los comentarios a la vez:169Para comentar líneas específicas, pasa el cursor sobre una línea y haz clic en el **+** que aparece junto a su número de línea para abrir un cuadro de comentarios. Escribe tu comentario y presiona **Enter** para agregarlo. Después de agregar comentarios a varias líneas, envía todos los comentarios a la vez:

170 170 

171* **macOS**: presiona **Cmd+Enter**171* **macOS**: presiona **Cmd+Enter**

172* **Windows**: presiona **Ctrl+Enter**172* **Windows**: presiona **Ctrl+Enter**


194 * **Si el repositorio no permite auto-merge**: **Merge when ready** no se activa, así que primero habilita auto-merge en la [configuración de tu repositorio de GitHub](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository)194 * **Si el repositorio no permite auto-merge**: **Merge when ready** no se activa, así que primero habilita auto-merge en la [configuración de tu repositorio de GitHub](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository)

195* **[Diseño anterior](#check-which-layout-you-have)**: una vez que la sesión tiene un pull request, haz clic en **CI** en su barra de estado.195* **[Diseño anterior](#check-which-layout-you-have)**: una vez que la sesión tiene un pull request, haz clic en **CI** en su barra de estado.

196 196 

197Para archivar la sesión automáticamente una vez que el PR se fusiona o se cierra, activa [auto-archive](#archive-a-session) en **Configuración > Claude Code**.197Para archivar la sesión automáticamente una vez que el PR se fusiona o se cierra, activa [auto-archive](#archive-a-session) en **Configuración > Code** o **Configuración > Claude Code**.

198 198 

199> [!NOTE]199> [!NOTE]

200>200>


275* **Cmd+Ctrl**: presiona **Ctrl+Alt**275* **Cmd+Ctrl**: presiona **Ctrl+Alt**

276* **Cmd**: presiona **Ctrl**276* **Cmd**: presiona **Ctrl**

277 277 

278El cambio entre sesiones, el alternador de terminal y el alternador de modo de vista usan **Ctrl** en todas las plataformas.278Los atajos que comienzan con `Ctrl` son iguales en todas las plataformas.

279 279 

280| Atajo | Acción |280| Atajo | Acción |

281| - | - |281| - | - |


284| `Cmd` `Option` `1`–`9` | En la pantalla de nueva sesión del [diseño actual](#check-which-layout-you-have), seleccionar un entorno |284| `Cmd` `Option` `1`–`9` | En la pantalla de nueva sesión del [diseño actual](#check-which-layout-you-have), seleccionar un entorno |

285| `Cmd` `Option` `0` | En la pantalla de nueva sesión del diseño actual, abrir el [diálogo **New environment**](#create-a-saved-environment) |285| `Cmd` `Option` `0` | En la pantalla de nueva sesión del diseño actual, abrir el [diálogo **New environment**](#create-a-saved-environment) |

286| `Cmd` `W` | Cerrar sesión |286| `Cmd` `W` | Cerrar sesión |

287| `Ctrl` `Tab` / `Ctrl` `Shift` `Tab` | Sesión siguiente o anterior |287| `Ctrl` `Tab` / `Ctrl` `Shift` `Tab` | Cambiar entre sesiones |

288| `Cmd` `Shift` `]` / `Cmd` `Shift` `[` | Sesión siguiente o anterior |288| `Cmd` `Shift` `]` / `Cmd` `Shift` `[` | Sesión siguiente o anterior |

289| `Esc` | Detener la respuesta de Claude |289| `Esc` | Detener la respuesta de Claude |

290| `Tab` / `Right arrow` | [Aceptar el prompt sugerido](#accept-a-suggested-prompt) en un cuadro de prompt vacío |290| `Tab` / `Right arrow` | [Aceptar el prompt sugerido](#accept-a-suggested-prompt) en un cuadro de prompt vacío |


352 352 

353**2. Activar el control deslizante**353**2. Activar el control deslizante**

354 354 

355En la aplicación de escritorio, ve a **Configuración > Esta computadora > Sistema**. En **Computer use**, activa **Enable computer use**. En Windows, el interruptor surte efecto de inmediato y la configuración queda completa. En macOS, continúa con el siguiente paso.355En la aplicación de escritorio, abre **Configuración** y luego:

356 

357* **Si el menú de Configuración muestra This computer**: ve a **This computer > System**

358* **De lo contrario**: ve a **Capabilities**

359 

360En **Computer use**, activa **Enable computer use**:

361 

362* **Windows**: el interruptor surte efecto de inmediato y la configuración queda completa

363* **macOS**: continúa con el siguiente paso

356 364 

357Si no ve el control deslizante, confirme que está en macOS o Windows con un plan Pro o Max, luego actualice y reinicie la aplicación.365Si no ve el control deslizante, confirme que está en macOS o Windows con un plan Pro o Max, luego actualice y reinicie la aplicación.

358 366 


379 387 

380Las aplicaciones con amplio alcance como terminales, Finder o File Explorer y Configuración del Sistema o Settings muestran una advertencia adicional en el aviso para que sepa qué aprobación les otorga.388Las aplicaciones con amplio alcance como terminales, Finder o File Explorer y Configuración del Sistema o Settings muestran una advertencia adicional en el aviso para que sepa qué aprobación les otorga.

381 389 

382La sección **Computer use** en **Configuración > Esta computadora > Sistema** incluye estas opciones:390En Configuración, la sección **Computer use** donde [activaste el uso de computadora](#enable-computer-use) incluye estas opciones:

383 391 

384* **Denied apps**: agregue aplicaciones aquí para rechazarlas sin solicitar. Claude aún puede afectar una aplicación denegada indirectamente a través de acciones en una aplicación permitida, pero no puede interactuar directamente con la aplicación denegada.392* **Denied apps**: agregue aplicaciones aquí para rechazarlas sin solicitar. Claude aún puede afectar una aplicación denegada indirectamente a través de acciones en una aplicación permitida, pero no puede interactuar directamente con la aplicación denegada.

385* **Unhide apps when Claude finishes**: cuando el uso de computadora no se ejecuta en segundo plano, Claude oculta sus otras ventanas mientras trabaja para que interactúe solo con la aplicación aprobada. Cuando Claude termina, las ventanas ocultas se restauran a menos que desactive esta configuración.393* **Unhide apps when Claude finishes**: cuando el uso de computadora no se ejecuta en segundo plano, Claude oculta sus otras ventanas mientras trabaja para que interactúe solo con la aplicación aprobada. Cuando Claude termina, las ventanas ocultas se restauran a menos que desactive esta configuración.


390 398 

391### Trabajar en paralelo con sesiones399### Trabajar en paralelo con sesiones

392 400 

393Haz clic en **+ New** en la barra lateral, o presiona **Cmd+N** en macOS o **Ctrl+N** en Windows, para trabajar en múltiples tareas en paralelo. Presiona **Ctrl+Tab** y **Ctrl+Shift+Tab** para recorrer las sesiones de la barra lateral.401Haz clic en **+ New** en la barra lateral, o presiona **Cmd+N** en macOS o **Ctrl+N** en Windows, para trabajar en múltiples tareas en paralelo. Presiona **Ctrl+Tab** y **Ctrl+Shift+Tab** para cambiar entre sesiones.

394 402 

395También puedes abrir una segunda sesión junto a la sesión actual o en una ventana propia:403También puedes abrir una segunda sesión junto a la sesión actual o en una ventana propia:

396 404 


401 409 

402#### Ejecutar una sesión en su propio worktree410#### Ejecutar una sesión en su propio worktree

403 411 

404En un proyecto que es un repositorio de Git, activa **Worktree** antes de iniciar una sesión para ejecutarla en su propio [Git worktree](https://code.claude.com/docs/es/worktrees.md), una copia aislada del proyecto. De forma predeterminada, **Worktree** está desactivado y Claude trabaja directamente en la carpeta del proyecto. Haz clic en el control de la carpeta del proyecto en la [fila debajo del cuadro del prompt](#start-a-session) y activa **Worktree**.412En un proyecto que es un repositorio de Git, activa **Worktree** antes de iniciar una sesión para ejecutarla en su propio [Git worktree](https://code.claude.com/docs/es/worktrees.md), una copia aislada del proyecto. De forma predeterminada, **Worktree** está desactivado y Claude trabaja directamente en la carpeta del proyecto. En el [diseño actual](#check-which-layout-you-have), activa el botón **Worktree** en la [fila debajo del cuadro del prompt](#start-a-session).

405 413 

406* **Con un [entorno guardado](#create-a-saved-environment)**: establece **Worktree** cuando crees o edites el entorno414* **Con un [proveedor externo](https://code.claude.com/docs/es/third-party-integrations.md)**: si la fila debajo del cuadro del prompt muestra el control de la carpeta del proyecto pero no el botón **Worktree**, haz clic en ese control y activa **Worktree**

415* **Como valor predeterminado para un [entorno local o SSH guardado](#create-a-saved-environment)**: establece **Worktree** cuando crees o edites el entorno

407* **[Diseño anterior](#check-which-layout-you-have)**: selecciona la casilla **worktree** junto al nombre de la rama, encima del cuadro del prompt416* **[Diseño anterior](#check-which-layout-you-have)**: selecciona la casilla **worktree** junto al nombre de la rama, encima del cuadro del prompt

408 417 

409Los worktrees se almacenan en `<project-root>/.claude/worktrees/` de forma predeterminada. Para almacenarlos en un directorio personalizado:418Los worktrees se almacenan en `<project-root>/.claude/worktrees/` de forma predeterminada. Para almacenarlos en un directorio personalizado:

410 419 

411* **Sesiones locales**: establece **Worktree location** en **Configuración > Claude Code**420* **Sesiones locales**: establece **Worktree location** en **Configuración > Code** o **Configuración > Claude Code**

412* **Sesiones SSH**: establece **Worktree folder** en la [conexión SSH](#choose-where-ssh-session-worktrees-go)421* **Sesiones SSH**: establece **Worktree folder** en la [conexión SSH](#choose-where-ssh-session-worktrees-go)

413 422 

414También puedes establecer un **Branch prefix** en **Configuración > Claude Code**. Desktop lo antepone a cada nombre de rama de worktree, lo que es útil para mantener organizadas las ramas creadas por Claude.423También puedes establecer un **Branch prefix** en **Configuración > Code** o **Configuración > Claude Code**. Desktop lo antepone a cada nombre de rama de worktree, lo que es útil para mantener organizadas las ramas creadas por Claude.

415 424 

416Para incluir archivos ignorados por git como `.env` en nuevos worktrees, crea un [archivo `.worktreeinclude`](https://code.claude.com/docs/es/worktrees#copy-gitignored-files-into-worktrees) en la raíz de tu proyecto. Consulta [Qué comparten los worktrees con el checkout principal](https://code.claude.com/docs/es/worktrees.md#what-worktrees-share-with-the-main-checkout) para saber de dónde lee una sesión de worktree la configuración del proyecto, los hooks y los skills.425Para incluir archivos ignorados por git como `.env` en nuevos worktrees, crea un [archivo `.worktreeinclude`](https://code.claude.com/docs/es/worktrees#copy-gitignored-files-into-worktrees) en la raíz de tu proyecto. Consulta [Qué comparten los worktrees con el checkout principal](https://code.claude.com/docs/es/worktrees.md#what-worktrees-share-with-the-main-checkout) para saber de dónde lee una sesión de worktree la configuración del proyecto, los hooks y los skills.

417 426 


430 439 

431Antes de archivar una sesión cuyo worktree tiene cambios sin commit, consulta [Conservar los cambios sin commit cuando se archiva una sesión](#keep-uncommitted-changes-when-a-session-is-archived). Para archivar una sesión, pasa el cursor sobre ella en la barra lateral, abre su menú y selecciona **Archive**. La sesión se mueve a tus [sesiones archivadas](#organize-and-find-sessions).440Antes de archivar una sesión cuyo worktree tiene cambios sin commit, consulta [Conservar los cambios sin commit cuando se archiva una sesión](#keep-uncommitted-changes-when-a-session-is-archived). Para archivar una sesión, pasa el cursor sobre ella en la barra lateral, abre su menú y selecciona **Archive**. La sesión se mueve a tus [sesiones archivadas](#organize-and-find-sessions).

432 441 

433Para que las sesiones se archiven automáticamente cuando su pull request se fusione o se cierre, activa **Auto-archive after PR merge or close** en **Configuración > Claude Code**. Las sesiones en la nube y las sesiones que todavía se están ejecutando no se archivan automáticamente.442Para que las sesiones se archiven automáticamente cuando su pull request se fusione o se cierre, activa **Auto-archive after PR merge or close** en **Configuración > Code** o **Configuración > Claude Code**. Las sesiones en la nube y las sesiones que todavía se están ejecutando no se archivan automáticamente.

434 443 

435#### Conservar los cambios sin commit cuando se archiva una sesión444#### Conservar los cambios sin commit cuando se archiva una sesión

436 445 


527Una sesión local se conecta cuando activas Remote Control para ella, o cuando se conecta automáticamente al iniciarse:536Una sesión local se conecta cuando activas Remote Control para ella, o cuando se conecta automáticamente al iniciarse:

528 537 

529* **Lo activas para esa sesión**: con el interruptor **Remote Control** de la sesión, o escribiendo `/remote-control` en su cuadro del prompt.538* **Lo activas para esa sesión**: con el interruptor **Remote Control** de la sesión, o escribiendo `/remote-control` en su cuadro del prompt.

530* **Se conecta al iniciarse**: las sesiones nuevas se conectan automáticamente mientras **Connect new sessions to Remote Control** está activado en **Configuración > Claude Code**. Si nunca has cambiado ese ajuste, Desktop sigue [`remoteControlAtStartup`](https://code.claude.com/docs/es/settings-reference#remotecontrolatstartup) en tu configuración de usuario o configuración administrada y, después, el valor predeterminado de tu organización.539* **Se conecta al iniciarse**: las sesiones nuevas se conectan automáticamente mientras **Connect new sessions to Remote Control** está activado en **Configuración > Code** o **Configuración > Claude Code**. Si nunca has cambiado ese ajuste, Desktop sigue [`remoteControlAtStartup`](https://code.claude.com/docs/es/settings-reference#remotecontrolatstartup) en tu configuración de usuario o configuración administrada y, después, el valor predeterminado de tu organización.

531 540 

532Para ver si una sesión está conectada, revisa el interruptor **Remote Control** en la tarjeta **Environment** de su [panel de detalles de la sesión](#see-session-details).541Para ver si una sesión está conectada, revisa el interruptor **Remote Control** en la tarjeta **Environment** de su [panel de detalles de la sesión](#see-session-details).

533 542 

534Para que las sesiones no aparezcan en tus otros dispositivos, desactiva Remote Control en el nivel que necesites:543Para que las sesiones no aparezcan en tus otros dispositivos, desactiva Remote Control en el nivel que necesites:

535 544 

536* **Una sesión**: desactiva su interruptor **Remote Control**. En una sesión que se conectó al iniciarse, escribir `/remote-control` deja Remote Control activado y muestra `Remote Control is already on. This session connected automatically when it started.` Haz clic en **Turn off** en esa línea para desconectarla.545* **Una sesión**: desactiva su interruptor **Remote Control**. En una sesión que se conectó al iniciarse, escribir `/remote-control` deja Remote Control activado y muestra `Remote Control is already on. This session connected automatically when it started.` Haz clic en **Turn off** en esa línea para desconectarla.

537* **Nuevas sesiones de Desktop en esta computadora**: desactiva **Connect new sessions to Remote Control** en **Configuración > Claude Code**. Si ya aparece desactivado, actívalo y luego desactívalo para que Desktop guarde tu elección. Una vez guardado, tiene precedencia sobre `remoteControlAtStartup` y los valores predeterminados.546* **Nuevas sesiones de Desktop en esta computadora**: desactiva **Connect new sessions to Remote Control** en **Configuración > Code** o **Configuración > Claude Code**. Si ya aparece desactivado, actívalo y luego desactívalo para que Desktop guarde tu elección. Una vez guardado, tiene precedencia sobre `remoteControlAtStartup` y los valores predeterminados.

538* **Cualquier sesión en esta computadora, incluida la CLI**: establece [`disableRemoteControl`](https://code.claude.com/docs/es/settings-reference#disableremotecontrol) en `true` en `~/.claude/settings.json` para impedir que las sesiones se conecten. Una sesión que ya estaba conectada cuando guardaste el archivo permanece conectada hasta que desactives Remote Control para ella.547* **Cualquier sesión en esta computadora, incluida la CLI**: establece [`disableRemoteControl`](https://code.claude.com/docs/es/settings-reference#disableremotecontrol) en `true` en `~/.claude/settings.json` para impedir que las sesiones se conecten. Una sesión que ya estaba conectada cuando guardaste el archivo permanece conectada hasta que desactives Remote Control para ella.

539 548 

540Para ocultar una sesión que ya aparece en tus otros dispositivos, archívala en Desktop. Desktop también archiva la copia de Remote Control de la sesión, por lo que deja de aparecer en la lista de sesiones predeterminada de esos dispositivos. Para verla o eliminarla allí, consulta [Archivar sesiones](https://code.claude.com/docs/es/claude-code-on-the-web.md#archive-sessions).549Para ocultar una sesión que ya aparece en tus otros dispositivos, archívala en Desktop. Desktop también archiva la copia de Remote Control de la sesión, por lo que deja de aparecer en la lista de sesiones predeterminada de esos dispositivos. Para verla o eliminarla allí, consulta [Archivar sesiones](https://code.claude.com/docs/es/claude-code-on-the-web.md#archive-sessions).


576> * **Connectors aparece en gris en una sesión WSL**: consulta [Si la terminal o los conectores no están disponibles](https://code.claude.com/docs/es/desktop-wsl.md#check-for-the-terminal-and-connectors)585> * **Connectors aparece en gris en una sesión WSL**: consulta [Si la terminal o los conectores no están disponibles](https://code.claude.com/docs/es/desktop-wsl.md#check-for-the-terminal-and-connectors)

577> * **Sesiones en la nube**: consulta [Cómo llegan los conectores a Claude Code](https://code.claude.com/docs/es/mcp.md#how-connectors-reach-claude-code)586> * **Sesiones en la nube**: consulta [Cómo llegan los conectores a Claude Code](https://code.claude.com/docs/es/mcp.md#how-connectors-reach-claude-code)

578 587 

579Una vez conectado, Claude puede leer tu calendario, enviar mensajes, crear issues e interactuar con tus herramientas directamente. Puedes preguntarle a Claude qué conectores están configurados en tu sesión. Para administrar o desconectar conectores, ve a **Settings > Connectors** en la aplicación de escritorio.588Una vez conectado, Claude puede leer tu calendario, enviar mensajes, crear issues e interactuar con tus herramientas directamente. Puedes preguntarle a Claude qué conectores están configurados en tu sesión. Para administrar o desconectar conectores, haz clic en **Customize** en la barra lateral y abre **Connectors**.

580 589 

581Para integraciones no listadas en Connectors, agrega servidores MCP manualmente a través de [archivos de configuración](https://code.claude.com/docs/es/mcp.md#installing-mcp-servers). También puedes [crear conectores personalizados](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp).590Para integraciones no listadas en Connectors, agrega servidores MCP manualmente a través de [archivos de configuración](https://code.claude.com/docs/es/mcp.md#installing-mcp-servers). También puedes [crear conectores personalizados](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp).

582 591 


2028| `--model sonnet` | Selector de modelo en la fila debajo del cuadro del prompt |2037| `--model sonnet` | Selector de modelo en la fila debajo del cuadro del prompt |

2029| `--resume`, `--continue` | Haz clic en una sesión en la barra lateral, o escribe `/resume` en el cuadro del prompt para retomar una sesión que iniciaste desde la CLI |2038| `--resume`, `--continue` | Haz clic en una sesión en la barra lateral, o escribe `/resume` en el cuadro del prompt para retomar una sesión que iniciaste desde la CLI |

2030| `--permission-mode` | Selector de modo en la fila debajo del cuadro del prompt |2039| `--permission-mode` | Selector de modo en la fila debajo del cuadro del prompt |

2031| `--dangerously-skip-permissions` | Modo Bypass permissions. En planes Pro y Max, habilítalo en Configuración → Claude Code → "Allow bypass permissions mode"; en planes Team y Enterprise, la política de la organización lo controla |2040| `--dangerously-skip-permissions` | Modo Bypass permissions. En planes Pro y Max, habilita "Allow bypass permissions mode" en **Configuración > Code** o **Configuración > Claude Code**; en planes Team y Enterprise, la política de la organización lo controla |

2032| `--add-dir` | [Agrega carpetas a una sesión](#add-folders-to-a-session) en sesiones locales y SSH, o selecciona [varios repositorios](#run-long-running-tasks-in-the-cloud) en una sesión en la nube |2041| `--add-dir` | [Agrega carpetas a una sesión](#add-folders-to-a-session) en sesiones locales y SSH, o selecciona [varios repositorios](#run-long-running-tasks-in-the-cloud) en una sesión en la nube |

2033| `--allowedTools`, `--disallowedTools` | Sin equivalente por sesión. Las reglas de permisos en [archivos de configuración](https://code.claude.com/docs/es/settings.md) aún se aplican. |2042| `--allowedTools`, `--disallowedTools` | Sin equivalente por sesión. Las reglas de permisos en [archivos de configuración](https://code.claude.com/docs/es/settings.md) aún se aplican. |

2034| `--verbose` | [Modo de vista Verbose](#switch-view-modes) |2043| `--verbose` | [Modo de vista Verbose](#switch-view-modes) |


2088* **Equipos de agentes**: los equipos coordinados, donde Claude como líder del equipo asigna tareas a compañeros de equipo desde una lista de tareas compartida, están disponibles en la [CLI](https://code.claude.com/docs/es/agent-teams.md), no en Desktop. Para trabajo multiagente dentro de una sesión, usa [flujos de trabajo dinámicos](https://code.claude.com/docs/es/workflows.md), que se ejecutan en Desktop; Claude también puede [enviar mensajes y gestionar tus otras sesiones](#work-across-sessions) directamente.2097* **Equipos de agentes**: los equipos coordinados, donde Claude como líder del equipo asigna tareas a compañeros de equipo desde una lista de tareas compartida, están disponibles en la [CLI](https://code.claude.com/docs/es/agent-teams.md), no en Desktop. Para trabajo multiagente dentro de una sesión, usa [flujos de trabajo dinámicos](https://code.claude.com/docs/es/workflows.md), que se ejecutan en Desktop; Claude también puede [enviar mensajes y gestionar tus otras sesiones](#work-across-sessions) directamente.

2089* **Comandos de diálogo de terminal**: los comandos integrados que abren un panel interactivo en la terminal se comportan de manera diferente en la pestaña Code. Edita los [archivos de configuración](https://code.claude.com/docs/es/settings.md) directamente para gestionar reglas de permisos y configuración, o ejecuta los comandos desde la CLI independiente.2098* **Comandos de diálogo de terminal**: los comandos integrados que abren un panel interactivo en la terminal se comportan de manera diferente en la pestaña Code. Edita los [archivos de configuración](https://code.claude.com/docs/es/settings.md) directamente para gestionar reglas de permisos y configuración, o ejecuta los comandos desde la CLI independiente.

2090 * Los comandos sin forma de argumento, como `/permissions`, responden con `isn't available in this environment`.2099 * Los comandos sin forma de argumento, como `/permissions`, responden con `isn't available in this environment`.

2091 * `/config` abre **Configuración > Claude Code**.2100 * `/config` abre **Configuración > Code** o **Configuración > Claude Code**.

2092 2101 

2093## Solución de problemas2102## Solución de problemas

2094 2103 

Details

135 135 

136Las tareas programadas locales se ejecutan en tu máquina. Desktop verifica la programación cada minuto mientras la aplicación está abierta e inicia una sesión nueva cuando una tarea vence, independientemente de cualquier sesión manual que tengas abierta. Cada tarea obtiene un pequeño retraso de unos pocos minutos después de la hora programada para escalonar el tráfico de API. El retraso es determinista: la misma tarea siempre comienza en el mismo desplazamiento.136Las tareas programadas locales se ejecutan en tu máquina. Desktop verifica la programación cada minuto mientras la aplicación está abierta e inicia una sesión nueva cuando una tarea vence, independientemente de cualquier sesión manual que tengas abierta. Cada tarea obtiene un pequeño retraso de unos pocos minutos después de la hora programada para escalonar el tráfico de API. El retraso es determinista: la misma tarea siempre comienza en el mismo desplazamiento.

137 137 

138Las tareas solo se ejecutan mientras la aplicación de escritorio está en ejecución y tu computadora está despierta. Si tu computadora se duerme durante una hora programada, la ejecución se omite. Para evitar el reposo por inactividad, activa **Keep computer awake** en **Settings > This computer > System**. Cerrar la tapa del portátil aún lo pone en reposo.138Las tareas solo se ejecutan mientras la aplicación de escritorio está en ejecución y tu computadora está despierta. Si tu computadora se duerme durante una hora programada, la ejecución se omite. Para evitar el reposo por inactividad, activa **Keep computer awake** en **Settings > Desktop app** o en **Settings > This computer > System**. Cerrar la tapa del portátil aún lo pone en reposo.

139 139 

140> [!NOTE]140> [!NOTE]

141>141>

env-vars.md +2 −0

Details

291| `CLAUDE_CODE_ENABLE_TASKS` | Selecciona qué herramientas de seguimiento de tareas proporciona Claude Code en las [sesiones que las tienen](https://code.claude.com/docs/es/tools-reference.md#task-tool-availability). De forma predeterminada, Claude Code proporciona las herramientas Task `TaskCreate`, `TaskUpdate`, `TaskGet` y `TaskList`. Establécela en `0` para obtener en su lugar la herramienta heredada `TodoWrite`. Consulta [Lista de tareas](https://code.claude.com/docs/es/interactive-mode.md#task-list) |291| `CLAUDE_CODE_ENABLE_TASKS` | Selecciona qué herramientas de seguimiento de tareas proporciona Claude Code en las [sesiones que las tienen](https://code.claude.com/docs/es/tools-reference.md#task-tool-availability). De forma predeterminada, Claude Code proporciona las herramientas Task `TaskCreate`, `TaskUpdate`, `TaskGet` y `TaskList`. Establécela en `0` para obtener en su lugar la herramienta heredada `TodoWrite`. Consulta [Lista de tareas](https://code.claude.com/docs/es/interactive-mode.md#task-list) |

292| `CLAUDE_CODE_ENABLE_TELEMETRY` | Establécela en `1` para habilitar la recopilación de datos de OpenTelemetry para métricas y registros. Es necesaria antes de configurar los exportadores de OTel. Establécela en tu shell, en la configuración de usuario o en la configuración administrada. Se ignora en la [configuración de proyecto y local](https://code.claude.com/docs/es/settings-reference.md#variables-claude-code-ignores-in-env). Consulta [Monitoreo](https://code.claude.com/docs/es/monitoring-usage.md) |292| `CLAUDE_CODE_ENABLE_TELEMETRY` | Establécela en `1` para habilitar la recopilación de datos de OpenTelemetry para métricas y registros. Es necesaria antes de configurar los exportadores de OTel. Establécela en tu shell, en la configuración de usuario o en la configuración administrada. Se ignora en la [configuración de proyecto y local](https://code.claude.com/docs/es/settings-reference.md#variables-claude-code-ignores-in-env). Consulta [Monitoreo](https://code.claude.com/docs/es/monitoring-usage.md) |

293| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | Establécela en `1` para obtener las herramientas de seguimiento de tareas en todos los modelos. Sin ella, Claude Code las proporciona de forma predeterminada solo en los modelos indicados en [Disponibilidad de la herramienta Task](https://code.claude.com/docs/es/tools-reference.md#task-tool-availability). `CLAUDE_CODE_ENABLE_TASKS` sigue seleccionando las herramientas Task o `TodoWrite`. Requiere Claude Code v2.1.233 o posterior |293| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | Establécela en `1` para obtener las herramientas de seguimiento de tareas en todos los modelos. Sin ella, Claude Code las proporciona de forma predeterminada solo en los modelos indicados en [Disponibilidad de la herramienta Task](https://code.claude.com/docs/es/tools-reference.md#task-tool-availability). `CLAUDE_CODE_ENABLE_TASKS` sigue seleccionando las herramientas Task o `TodoWrite`. Requiere Claude Code v2.1.233 o posterior |

294| `CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS` | Establécela en `1` para [ejecutar comandos `rm` peligrosos sin solicitud](https://code.claude.com/docs/es/permission-modes#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode) en el modo `bypassPermissions`, lo que elimina una solicitud de seguridad para los borrados destructivos. La sección enlazada indica dónde no tiene efecto. [Establécela en el entorno que inicia Claude Code](#set-variables-in-your-shell), porque Claude Code [la ignora en un bloque `env` de la configuración](https://code.claude.com/docs/es/settings-reference#variables-claude-code-ignores-in-env). Requiere Claude Code v2.1.311 o posterior |

294| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Tiempo en milisegundos que se espera después de que el bucle de consultas queda inactivo antes de salir automáticamente. Útil para flujos de trabajo automatizados y scripts que usan el modo SDK |295| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Tiempo en milisegundos que se espera después de que el bucle de consultas queda inactivo antes de salir automáticamente. Útil para flujos de trabajo automatizados y scripts que usan el modo SDK |

295| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Establécela en `1` para habilitar los [equipos de agentes](https://code.claude.com/docs/es/agent-teams.md). Los equipos de agentes son experimentales y están deshabilitados de forma predeterminada |296| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Establécela en `1` para habilitar los [equipos de agentes](https://code.claude.com/docs/es/agent-teams.md). Los equipos de agentes son experimentales y están deshabilitados de forma predeterminada |

296| `CLAUDE_CODE_EXTRA_BODY` | Objeto JSON que se combina con el nivel superior del cuerpo de cada solicitud a la API. Útil para pasar parámetros específicos del proveedor que Claude Code no expone directamente. Un valor exportado en tu shell también se aplica a las [sesiones en segundo plano](https://code.claude.com/docs/es/agent-view.md) que lanzas con `claude agents` o `--bg`. Antes de la v2.1.206, las sesiones en segundo plano ignoraban un valor exportado en el shell y usaban la copia que hubiera heredado el proceso supervisor en segundo plano |297| `CLAUDE_CODE_EXTRA_BODY` | Objeto JSON que se combina con el nivel superior del cuerpo de cada solicitud a la API. Útil para pasar parámetros específicos del proveedor que Claude Code no expone directamente. Un valor exportado en tu shell también se aplica a las [sesiones en segundo plano](https://code.claude.com/docs/es/agent-view.md) que lanzas con `claude agents` o `--bg`. Antes de la v2.1.206, las sesiones en segundo plano ignoraban un valor exportado en el shell y usaban la copia que hubiera heredado el proceso supervisor en segundo plano |


368| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Establécela en `1` para reanudar automáticamente si la sesión anterior terminó a mitad de un turno. Se usa en el modo SDK para que el modelo continúe sin que el SDK tenga que volver a enviar el prompt. Para desactivarla, elimina la variable o establécela en `0`. Para el panel de chat de VS Code, consulta [Continuar conversaciones después de recargar](https://code.claude.com/docs/es/vs-code.md#continue-conversations-after-a-reload) |369| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Establécela en `1` para reanudar automáticamente si la sesión anterior terminó a mitad de un turno. Se usa en el modo SDK para que el modelo continúe sin que el SDK tenga que volver a enviar el prompt. Para desactivarla, elimina la variable o establécela en `0`. Para el panel de chat de VS Code, consulta [Continuar conversaciones después de recargar](https://code.claude.com/docs/es/vs-code.md#continue-conversations-after-a-reload) |

369| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Antigüedad máxima en milisegundos del último mensaje de la transcripción para que una sesión que terminó a mitad de un turno continúe automáticamente al reanudarse. Cuando el último mensaje es más antiguo que este límite, Claude Code omite la reanudación automática de `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` y su mensaje de continuación `CLAUDE_CODE_RESUME_PROMPT`, y la sesión se inicia inactiva para que continúes de forma explícita. Sin establecer o con `0` no hay límite, salvo que algunos turnos solo se reanudan dentro de las seis horas posteriores a su último mensaje, como uno que terminó con un error de la API. Un valor positivo limita todos los turnos, incluidos esos; un valor negativo o no numérico aplica un límite de una hora. Los scripts que inician agentes de larga duración pueden establecerla para que un reinicio sobre una transcripción antigua no vuelva a ejecutar un prompt obsoleto. Claude Code establece por sí mismo un límite de una hora cuando reinicia una sesión de la [vista de agentes](https://code.claude.com/docs/es/agent-view.md) que falló y que heredó su conversación de una sesión interactiva. Requiere Claude Code v2.1.211 o posterior |370| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Antigüedad máxima en milisegundos del último mensaje de la transcripción para que una sesión que terminó a mitad de un turno continúe automáticamente al reanudarse. Cuando el último mensaje es más antiguo que este límite, Claude Code omite la reanudación automática de `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` y su mensaje de continuación `CLAUDE_CODE_RESUME_PROMPT`, y la sesión se inicia inactiva para que continúes de forma explícita. Sin establecer o con `0` no hay límite, salvo que algunos turnos solo se reanudan dentro de las seis horas posteriores a su último mensaje, como uno que terminó con un error de la API. Un valor positivo limita todos los turnos, incluidos esos; un valor negativo o no numérico aplica un límite de una hora. Los scripts que inician agentes de larga duración pueden establecerla para que un reinicio sobre una transcripción antigua no vuelva a ejecutar un prompt obsoleto. Claude Code establece por sí mismo un límite de una hora cuando reinicia una sesión de la [vista de agentes](https://code.claude.com/docs/es/agent-view.md) que falló y que heredó su conversación de una sesión interactiva. Requiere Claude Code v2.1.211 o posterior |

370| `CLAUDE_CODE_RESUME_PROMPT` | Sobrescribe el mensaje de continuación que Claude Code envía a Claude cuando `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` continúa un turno interrumpido en lugar de volver a enviar su prompt, o cuando reanudas una [llamada a herramienta diferida](https://code.claude.com/docs/es/hooks.md#defer-a-tool-call-for-later) con `-p`. El valor predeterminado es `Continue from where you left off.`. Una cadena vacía usa el valor predeterminado |371| `CLAUDE_CODE_RESUME_PROMPT` | Sobrescribe el mensaje de continuación que Claude Code envía a Claude cuando `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` continúa un turno interrumpido en lugar de volver a enviar su prompt, o cuando reanudas una [llamada a herramienta diferida](https://code.claude.com/docs/es/hooks.md#defer-a-tool-call-for-later) con `-p`. El valor predeterminado es `Continue from where you left off.`. Una cadena vacía usa el valor predeterminado |

372| `CLAUDE_CODE_RESUME_SHOWS_CUT_OFF_CALLS` | Establécela en `1` para conservar las [llamadas a herramientas interrumpidas](https://code.claude.com/docs/es/sessions.md#what-a-resumed-session-restores), marcadas como cortadas, en un turno que continúa `CLAUDE_CODE_RESUME_INTERRUPTED_TURN`. Cuando no está establecida, esas llamadas se descartan antes de que el turno continúe. Algunas llamadas siguen descartándose, como las llamadas a subagentes, skills, flujos de trabajo y herramientas que esperan a una persona. Para el panel de chat de VS Code, consulta [Continuar conversaciones después de una recarga](https://code.claude.com/docs/es/vs-code.md#continue-conversations-after-a-reload). Requiere Claude Code v2.1.309 o posterior |

371| `CLAUDE_CODE_RETRY_WATCHDOG` | Establécela en `1` para sesiones desatendidas, como harnesses de evaluación, trabajos de CI o workers remotos. Reintenta indefinidamente los errores de capacidad `429` y `529` en lugar de fallar después de `CLAUDE_CODE_MAX_RETRIES` intentos. Claude Code falla de inmediato cuando una solicitud de velocidad estándar recibe un `429` que informa de un límite de gasto o de créditos de uso agotados, incluso uno de un [límite de gasto del gateway](https://code.claude.com/docs/es/errors.md#spend-limit-reached) que se restablece según un calendario. Antes de la v2.1.239, el watchdog reintentaba estos errores indefinidamente. Para las solicitudes en modo rápido, consulta [Manejar los rate limits](https://code.claude.com/docs/es/fast-mode.md#handle-rate-limits). El watchdog espera hasta 5 minutos entre intentos, o hasta que se restablezca el límite cuando la respuesta incluye una hora de restablecimiento del rate limit, de modo que una sesión que alcanza un límite de uso espera a que transcurra la ventana restante. En la v2.1.199 o posterior, también aumenta a 300 el número predeterminado de reintentos para otros errores transitorios, como errores del servidor, tiempos de espera agotados y conexiones interrumpidas, lo que equivale aproximadamente a tres horas de backoff, y elimina el límite de 15 en `CLAUDE_CODE_MAX_RETRIES` si estableces esa variable de forma explícita. Requiere Claude Code v2.1.186 o posterior |373| `CLAUDE_CODE_RETRY_WATCHDOG` | Establécela en `1` para sesiones desatendidas, como harnesses de evaluación, trabajos de CI o workers remotos. Reintenta indefinidamente los errores de capacidad `429` y `529` en lugar de fallar después de `CLAUDE_CODE_MAX_RETRIES` intentos. Claude Code falla de inmediato cuando una solicitud de velocidad estándar recibe un `429` que informa de un límite de gasto o de créditos de uso agotados, incluso uno de un [límite de gasto del gateway](https://code.claude.com/docs/es/errors.md#spend-limit-reached) que se restablece según un calendario. Antes de la v2.1.239, el watchdog reintentaba estos errores indefinidamente. Para las solicitudes en modo rápido, consulta [Manejar los rate limits](https://code.claude.com/docs/es/fast-mode.md#handle-rate-limits). El watchdog espera hasta 5 minutos entre intentos, o hasta que se restablezca el límite cuando la respuesta incluye una hora de restablecimiento del rate limit, de modo que una sesión que alcanza un límite de uso espera a que transcurra la ventana restante. En la v2.1.199 o posterior, también aumenta a 300 el número predeterminado de reintentos para otros errores transitorios, como errores del servidor, tiempos de espera agotados y conexiones interrumpidas, lo que equivale aproximadamente a tres horas de backoff, y elimina el límite de 15 en `CLAUDE_CODE_MAX_RETRIES` si estableces esa variable de forma explícita. Requiere Claude Code v2.1.186 o posterior |

372| `CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS` | Tiempo máximo en milisegundos que cada solicitud a la API dedica a esperar a que pasen los errores `429` y `529` cuando `CLAUDE_CODE_RETRY_WATCHDOG` está establecida. Una vez agotado ese tiempo, el siguiente error de ese tipo termina la solicitud. Indica un número entero positivo con dígitos simples, como `1800000` para 30 minutos. Cuando no está establecida, la espera no tiene límite. Requiere Claude Code v2.1.295 o posterior |374| `CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS` | Tiempo máximo en milisegundos que cada solicitud a la API dedica a esperar a que pasen los errores `429` y `529` cuando `CLAUDE_CODE_RETRY_WATCHDOG` está establecida. Una vez agotado ese tiempo, el siguiente error de ese tipo termina la solicitud. Indica un número entero positivo con dígitos simples, como `1800000` para 30 minutos. Cuando no está establecida, la espera no tiene límite. Requiere Claude Code v2.1.295 o posterior |

373| `CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS` | Intervalo mínimo en milisegundos entre comprobaciones de si un [límite de uso](https://code.claude.com/docs/es/errors.md#youve-hit-your-session-limit) ya se levantó, mientras una solicitud espera a que ese límite se restablezca con `CLAUDE_CODE_RETRY_WATCHDOG` establecida. Cuando una comprobación detecta que el límite se levantó, la solicitud se envía de inmediato. Indica un número entero en dígitos simples desde `60000`, un minuto, hasta `10800000`, tres horas. Las comprobaciones solo se realizan para el límite de sesión o semanal de una suscripción de claude.ai mientras no se están usando créditos de uso, y no mientras `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` está establecida. Cuando esta variable no está establecida o su valor está fuera de ese rango, no se realizan comprobaciones. Requiere Claude Code v2.1.305 o posterior |375| `CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS` | Intervalo mínimo en milisegundos entre comprobaciones de si un [límite de uso](https://code.claude.com/docs/es/errors.md#youve-hit-your-session-limit) ya se levantó, mientras una solicitud espera a que ese límite se restablezca con `CLAUDE_CODE_RETRY_WATCHDOG` establecida. Cuando una comprobación detecta que el límite se levantó, la solicitud se envía de inmediato. Indica un número entero en dígitos simples desde `60000`, un minuto, hasta `10800000`, tres horas. Las comprobaciones solo se realizan para el límite de sesión o semanal de una suscripción de claude.ai mientras no se están usando créditos de uso, y no mientras `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` está establecida. Cuando esta variable no está establecida o su valor está fuera de ese rango, no se realizan comprobaciones. Requiere Claude Code v2.1.305 o posterior |

errors.md +39 −12

Details

146| `N sessions ended while this machine was offline — the environment was cleaned up on the server and can't be resumed.` | [Red](#sessions-ended-while-this-machine-was-offline) |146| `N sessions ended while this machine was offline — the environment was cleaned up on the server and can't be resumed.` | [Red](#sessions-ended-while-this-machine-was-offline) |

147| `Couldn't share the transcript.` | [Red](#couldnt-share-the-transcript) |147| `Couldn't share the transcript.` | [Red](#couldnt-share-the-transcript) |

148| `Couldn't send feedback` | [Red](#couldnt-send-feedback) |148| `Couldn't send feedback` | [Red](#couldnt-send-feedback) |

149| `Feedback payload too large. Try again without the transcript, or shorten the details.` | [Red](#feedback-payload-too-large) |

149| `MCP server "<name>" connection timed out. Your computer went to sleep or its clock changed while connecting.` | [Red](#mcp-server-connection-timed-out-during-a-sleep-or-clock-change) |150| `MCP server "<name>" connection timed out. Your computer went to sleep or its clock changed while connecting.` | [Red](#mcp-server-connection-timed-out-during-a-sleep-or-clock-change) |

150| `Prompt is too long` / `Input is too long for requested model` | [Errores de solicitud](#prompt-is-too-long) |151| `Prompt is too long` / `Input is too long for requested model` | [Errores de solicitud](#prompt-is-too-long) |

151| `Prompt is too long · automatic compaction failed:` | [Errores de solicitud](#prompt-is-too-long) |152| `Prompt is too long · automatic compaction failed:` | [Errores de solicitud](#prompt-is-too-long) |


335| `Failed to write the plan approval request to the lead's inbox — plan not submitted` | [Errores de herramientas](#failed-to-write-to-a-teammate-inbox) |336| `Failed to write the plan approval request to the lead's inbox — plan not submitted` | [Errores de herramientas](#failed-to-write-to-a-teammate-inbox) |

336| `Its agent definition was not restored: the folder its definition file came from is not trusted` | [Errores de herramientas](#teammate-agent-definition-not-restored) |337| `Its agent definition was not restored: the folder its definition file came from is not trusted` | [Errores de herramientas](#teammate-agent-definition-not-restored) |

337| `Only a teammate can approve a shutdown request` | [Errores de herramientas](#only-a-teammate-can-approve-a-shutdown-request) |338| `Only a teammate can approve a shutdown request` | [Errores de herramientas](#only-a-teammate-can-approve-a-shutdown-request) |

339| `A command-line deny rule cannot be handed to a teammate intact` | [Errores de herramientas](#command-line-deny-rule-cannot-be-handed-to-a-teammate) |

338| `Message too large for cross-session delivery` | [Errores de herramientas](#message-too-large-for-cross-session-delivery) |340| `Message too large for cross-session delivery` | [Errores de herramientas](#message-too-large-for-cross-session-delivery) |

339| `Too many messages to this session just now` | [Errores de herramientas](#too-many-messages-to-this-session-just-now) |341| `Too many messages to this session just now` | [Errores de herramientas](#too-many-messages-to-this-session-just-now) |

340| `Cross-session message was dropped at the recipient session's inbox` | [Errores de herramientas](#cross-session-message-dropped-at-the-inbox) |342| `Cross-session message was dropped at the recipient session's inbox` | [Errores de herramientas](#cross-session-message-dropped-at-the-inbox) |


375| `This conversation is already open in another running Claude session` | [Errores de sesión en segundo plano](#this-session-is-running-in-another-terminal) |377| `This conversation is already open in another running Claude session` | [Errores de sesión en segundo plano](#this-session-is-running-in-another-terminal) |

376| `This session's saved conversation is no longer on disk` | [Errores de sesión en segundo plano](#this-sessions-saved-conversation-is-no-longer-on-disk) |378| `This session's saved conversation is no longer on disk` | [Errores de sesión en segundo plano](#this-sessions-saved-conversation-is-no-longer-on-disk) |

377| `Bypass permissions was requested at launch and ignored` | [Bypass permissions ignorado en una sesión en segundo plano](https://code.claude.com/docs/es/permission-modes.md#bypass-permissions-ignored-in-a-background-session) |379| `Bypass permissions was requested at launch and ignored` | [Bypass permissions ignorado en una sesión en segundo plano](https://code.claude.com/docs/es/permission-modes.md#bypass-permissions-ignored-in-a-background-session) |

378| `kept <id> — its worktree is still at <path>` | [Errores de sesión en segundo plano](#worktree-has-commits-that-are-not-pushed-anywhere) |380| `kept <id> — its worktree is still at <path>` | [Errores de sesiones en segundo plano](#worktree-has-commits-that-are-not-pushed-anywhere) si la siguiente línea del mensaje menciona commits sin enviar; de lo contrario, [Qué elimina borrar una sesión](https://code.claude.com/docs/es/agent-view.md#what-deleting-a-session-removes) |

379| `kept <id> — <n> unpushed commits on <branch>` | [Errores de sesión en segundo plano](#worktree-has-commits-that-are-not-pushed-anywhere) |381| `kept <id> — <n> unpushed commits on <branch>` | [Errores de sesión en segundo plano](#worktree-has-commits-that-are-not-pushed-anywhere) |

380| `kept <id> — worktree has commits that are not pushed anywhere` | [Errores de sesión en segundo plano](#worktree-has-commits-that-are-not-pushed-anywhere) |382| `kept <id> — worktree has commits that are not pushed anywhere` | [Errores de sesión en segundo plano](#worktree-has-commits-that-are-not-pushed-anywhere) |

381| `terminal host process died — press Enter to restart` / `This session's terminal host process died` | [Errores de sesión en segundo plano](#terminal-host-process-died) |383| `terminal host process died — press Enter to restart` / `This session's terminal host process died` | [Errores de sesión en segundo plano](#terminal-host-process-died) |


2188 2190 

2189### Couldn't send feedback2191### Couldn't send feedback

2190 2192 

2191Un mensaje que empieza con `Couldn't send feedback` significa que el informe que enviaste desde el [diálogo de `/feedback`, `/bug` o `/share`](https://code.claude.com/docs/es/commands#all-commands), o un [borrador de comentarios](https://code.claude.com/docs/es/tools-reference.md#sendfeedback-tool-behavior) en cola, no se envió. Cuando después de los dos puntos sigue una oración sobre tu organización, tu organización rechaza los comentarios y el mismo informe recibe la misma respuesta.2193Un mensaje que empieza con `Couldn't send feedback` significa que el servicio de comentarios no confirmó el informe que enviaste desde el [diálogo de `/feedback`, `/bug` o `/share`](https://code.claude.com/docs/es/commands#all-commands), o un [borrador de comentarios](https://code.claude.com/docs/es/tools-reference.md#sendfeedback-tool-behavior) en cola. Considéralo como no recibido. Cuando después de los dos puntos sigue una oración sobre tu organización, tu organización rechaza los comentarios y el mismo informe recibe la misma respuesta.

2192 2194 

2193El primero de estos dos ejemplos es un fallo de red y el segundo es el rechazo de una organización:2195El segundo de estos dos ejemplos es el rechazo de una organización:

2194 2196 

2195```text wrap theme={null}2197```text wrap theme={null}

2196Couldn't send feedback (couldn't reach the service). If it keeps failing, you can file at https://github.com/anthropics/claude-code/issues instead.2198Couldn't send feedback (couldn't reach the service). If it keeps failing, you can file at https://github.com/anthropics/claude-code/issues instead.


2203* **Sin sesión iniciada**: el mensaje continúa con `: not signed in. Run /login, then retry.` Ejecuta `/login` y vuelve a enviar2205* **Sin sesión iniciada**: el mensaje continúa con `: not signed in. Run /login, then retry.` Ejecuta `/login` y vuelve a enviar

2204* **Rechazo de tu organización**: por ejemplo, `: Feedback has not been enabled for your organization.` o `: Feedback collection is not available for organizations with custom data retention policies.` Si el mensaje agrega `To report a bug, open an issue`, hazlo en [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues). Un borrador en cola permanece en la cola, y puedes [descartarlo](https://code.claude.com/docs/es/tools-reference.md#discard-or-keep-a-draft)2206* **Rechazo de tu organización**: por ejemplo, `: Feedback has not been enabled for your organization.` o `: Feedback collection is not available for organizations with custom data retention policies.` Si el mensaje agrega `To report a bug, open an issue`, hazlo en [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues). Un borrador en cola permanece en la cola, y puedes [descartarlo](https://code.claude.com/docs/es/tools-reference.md#discard-or-keep-a-draft)

2205* **Credenciales rechazadas**: el mensaje continúa con `: the sign-in this session uses is not allowed to send feedback` o `: the server did not accept the credentials this session uses`. Ejecuta `/status` en el prompt de Claude Code para ver qué inicio de sesión, token o clave de API envía esta sesión2207* **Credenciales rechazadas**: el mensaje continúa con `: the sign-in this session uses is not allowed to send feedback` o `: the server did not accept the credentials this session uses`. Ejecuta `/status` en el prompt de Claude Code para ver qué inicio de sesión, token o clave de API envía esta sesión

2206* **`(request timed out)` o `(couldn't reach the service)` justo después de `Couldn't send feedback`**: son fallos de red. Vuelve a enviar el informe o el borrador en cola. El diálogo conserva tu texto, y el mensaje de un borrador en cola dice `The draft is still queued.` Si otras solicitudes también están fallando, revisa tu conexión de red y consulta [Unable to connect to API](#unable-to-connect-to-api). Si sigue fallando, presenta el informe en [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues)2208* **`(request timed out)` o `(couldn't reach the service)` justo después de `Couldn't send feedback`**: vuelve a enviar el informe o el borrador en cola. El diálogo conserva tu texto, y el mensaje de un borrador en cola dice `The draft is still queued.` Si otras solicitudes también están fallando, revisa tu conexión de red y consulta [Unable to connect to API](#unable-to-connect-to-api). Si sigue fallando, presenta el informe en [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues)

2207* **`(server returned <status>)`, o ningún motivo, justo después de `Couldn't send feedback`**: el estado es el código de respuesta del servicio. El mensaje propio del servicio lo sigue cuando se envió uno, como en `(server returned 403: Access Forbidden)`. Si sigue fallando, presenta el informe en [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues)2209* **`(server returned <status>)`, o ningún motivo, justo después de `Couldn't send feedback`**: el estado es el código de respuesta del servicio. El mensaje propio del servicio lo sigue cuando se envió uno, como en `(server returned 403: Access Forbidden)`. Si sigue fallando, presenta el informe en [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues)

2208 2210 

2209Los issues en github.com/anthropics/claude-code son públicos, así que omite el código, las transcripciones y cualquier otra cosa confidencial cuando abras uno.2211Los issues en github.com/anthropics/claude-code son públicos, así que omite el código, las transcripciones y cualquier otra cosa confidencial cuando abras uno.

2210 2212 

2211Antes de v2.1.281, todos los envíos fallaban con este mensaje una vez que llegaba un **Stop** de Remote Control o un mensaje urgente entre sesiones mientras el diálogo estaba abierto. En esas versiones, cierra el diálogo, vuelve a abrirlo y envía de nuevo.2213Antes de v2.1.281, todos los envíos fallaban con este mensaje una vez que llegaba un **Stop** de Remote Control o un mensaje urgente entre sesiones mientras el diálogo estaba abierto. En esas versiones, cierra el diálogo, vuelve a abrirlo y envía de nuevo.

2212 2214 

2215### Feedback payload too large

2216 

2217Este mensaje en la [pantalla de revisión](https://code.claude.com/docs/es/tools-reference.md#review-and-edit-a-draft) de un [borrador de comentarios](https://code.claude.com/docs/es/tools-reference.md#sendfeedback-tool-behavior) significa que Claude Code no tiene confirmación de que el servicio aceptó el borrador. Considéralo como no recibido. El borrador permanece en tu cola de `/feedback`, así que puedes volver a enviarlo.

2218 

2219```text wrap theme={null}

2220Feedback payload too large. Try again without the transcript, or shorten the details.

2221```

2222 

2223**Qué hacer:**

2224 

2225* En la pantalla de revisión, establece **Send transcript** en `no` y luego vuelve a enviar el borrador. Acortar los detalles elimina como máximo 10 KB de texto, que es todo lo que pueden contener los detalles de un borrador.

2226 

2213### Se agotó el tiempo de espera de la conexión al servidor MCP durante una suspensión o un cambio de reloj2227### Se agotó el tiempo de espera de la conexión al servidor MCP durante una suspensión o un cambio de reloj

2214 2228 

2215Este mensaje significa que se agotó el tiempo de espera de una conexión a un [servidor MCP](https://code.claude.com/docs/es/mcp.md) y que Claude Code detectó que el reloj de tu sistema se adelantó durante el intento:2229Este mensaje significa que se agotó el tiempo de espera de una conexión a un [servidor MCP](https://code.claude.com/docs/es/mcp.md) y que Claude Code detectó que el reloj de tu sistema se adelantó durante el intento:


3281* **`Error: Workspace not trusted. <folder> is your home directory`**: como la confianza para tu directorio home nunca se guarda, ejecutar `claude` ahí primero no sirve. Ejecuta `claude ultrareview` desde un directorio de proyecto en su lugar, después de ejecutar `claude` ahí una vez para aceptar el diálogo de confianza, o agrega `--trust-workspace` al final.3295* **`Error: Workspace not trusted. <folder> is your home directory`**: como la confianza para tu directorio home nunca se guarda, ejecutar `claude` ahí primero no sirve. Ejecuta `claude ultrareview` desde un directorio de proyecto en su lugar, después de ejecutar `claude` ahí una vez para aceptar el diálogo de confianza, o agrega `--trust-workspace` al final.

3282* **`No answer in time.` seguido de `Error: Workspace not trusted`**: la pregunta `Trust <folder>? [y/N]` quedó sin respuesta durante 5 minutos. Vuelve a ejecutar `claude ultrareview` y respóndela.3296* **`No answer in time.` seguido de `Error: Workspace not trusted`**: la pregunta `Trust <folder>? [y/N]` quedó sin respuesta durante 5 minutos. Vuelve a ejecutar `claude ultrareview` y respóndela.

3283* **`Ultrareview did not start: <folder> is not trusted`**: rechazaste la pregunta `Trust <folder>? [y/N]`, por ejemplo respondiendo `n` o presionando Enter. Para iniciar la revisión, vuelve a ejecutar `claude ultrareview` y responde `y`.3297* **`Ultrareview did not start: <folder> is not trusted`**: rechazaste la pregunta `Trust <folder>? [y/N]`, por ejemplo respondiendo `n` o presionando Enter. Para iniciar la revisión, vuelve a ejecutar `claude ultrareview` y responde `y`.

3284* **``Ultrareview did not start: `--trust-workspace` takes no value``**: algo que no es un flag sigue a `--trust-workspace`, como un número de PR o `false`. Si no confías en la carpeta, no incluyas el flag. Para confiar en ella durante esta ejecución, coloca el número de PR o la rama base antes del flag: `claude ultrareview 1234 --trust-workspace`.3298* **``Ultrareview did not start: `--trust-workspace` takes no value``**: algo que no es un flag sigue a `--trust-workspace`, como un número de PR o `false`. Si no confías en la carpeta, omite el flag. Para confiar en ella durante esta ejecución, coloca el número de PR o la rama base antes del flag: `claude ultrareview 1234 --trust-workspace`.

3285 3299 

3286Antes de v2.1.309, `claude ultrareview` no aceptaba `--trust-workspace`.3300Antes de v2.1.309, `claude ultrareview` no aceptaba `--trust-workspace`.

3287 3301 


3476 3490 

3477### El servidor MCP rechazó la capacidad de elicitación3491### El servidor MCP rechazó la capacidad de elicitación

3478 3492 

3479Un servidor MCP creado con Java MCP SDK 0.11.0 a 0.17.0 rechazó la conexión. Esas versiones del SDK no pueden analizar los [modos de elicitación](https://code.claude.com/docs/es/mcp.md#elicitation-modes-claude-code-declares) `form` y `url` que Claude Code declara en su handshake. `claude mcp list` muestra el servidor como fallido con este mensaje en lugar del error propio del servidor:3493Un servidor MCP construido con Java MCP SDK 0.11.0 a 0.17.0 rechazó la conexión. Esas versiones del SDK no pueden analizar los [modos de elicitación](https://code.claude.com/docs/es/mcp.md#elicitation-modes-claude-code-declares) `form` y `url` que Claude Code declara en su handshake. El mensaje dice:

3480 3494 

3481```text theme={null}3495```text theme={null}

3482This server (Java MCP SDK 0.17.0 or older) rejected Claude Code's elicitation capability. Set "bareElicitationCapability": true for it, or upgrade to Java MCP SDK 0.17.1+ (Spring AI 1.0.7+ or 1.1.6+).3496This server (Java MCP SDK 0.17.0 or older) rejected Claude Code's elicitation capability. Set "bareElicitationCapability": true for it, or upgrade to Java MCP SDK 0.17.1+ (Spring AI 1.0.7+ or 1.1.6+).


3573 3587 

3574Hay cadenas similares que se activan antes de que el comando llegue a ejecutarse:3588Hay cadenas similares que se activan antes de que el comando llegue a ejecutarse:

3575 3589 

3576* `Shell command permission check failed for pattern "..."`: la comprobación de permisos del comando no lo permitió. [Comprobaciones de permisos en comandos inyectados](https://code.claude.com/docs/es/skills.md#permission-checks-on-injected-commands) explica qué resultados abortan en cada modo de permisos y cómo aprobar previamente un comando con `allowed-tools`3590* `Shell command permission check failed for pattern "..."`: la verificación de permisos del comando no lo permitió. [Verificaciones de permisos en comandos inyectados](https://code.claude.com/docs/es/skills.md#permission-checks-on-injected-commands) explica qué resultados abortan en cada modo de permisos y cómo preaprobar un comando con `allowed-tools`

3577* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: el frontmatter del skill exige bash en una máquina que no lo tiene. Instala Git for Windows o cambia el frontmatter a `shell: powershell`. Consulta [Cómo se ejecutan los comandos inyectados](https://code.claude.com/docs/es/skills.md#how-injected-commands-run)3591* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: el frontmatter del skill exige bash en una máquina que no lo tiene. Instala Git for Windows o cambia el frontmatter a `shell: powershell`. Consulta [Cómo se ejecutan los comandos inyectados](https://code.claude.com/docs/es/skills.md#how-injected-commands-run)

3578* `No shell command in <name> was run`: uno de los comandos `!` del archivo contiene un carácter de control sin procesar distinto de tabulación o salto de línea, así que ninguno de ellos se ejecuta. Consulta [cómo encontrar y eliminar el carácter](#no-shell-command-was-run)3592* `No shell command in <name> was run`: uno de los comandos `!` del archivo contiene un carácter de control sin procesar distinto de tabulación o salto de línea, así que ninguno de ellos se ejecuta. Consulta [cómo encontrar y eliminar el carácter](#no-shell-command-was-run)

3579 3593 


3725 3739 

3726* **No pasaste una rama base**: Claude Code comparó contra la rama predeterminada del repositorio y sugiere pasar tu base explícitamente, como en el ejemplo anterior3740* **No pasaste una rama base**: Claude Code comparó contra la rama predeterminada del repositorio y sugiere pasar tu base explícitamente, como en el ejemplo anterior

3727* **Pasaste una rama base que ya estaba en tu clon**: la sugerencia dice ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``3741* **Pasaste una rama base que ya estaba en tu clon**: la sugerencia dice ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``

3728* **Pasaste una rama base que no estaba en tu clon**: Claude Code la obtuvo de origin antes de comparar. La sugerencia dice ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; cuando Claude Code no puede determinar si tu clon es superficial, sugiere `git fetch --unshallow origin` en su lugar. Antes de la v2.1.221, la sugerencia proponía `git fetch --unshallow origin` para cada rama base obtenida, y en un clon completo ese comando falla con `fatal: --unshallow on a complete repository does not make sense`.3742* **Pasaste una rama base que no estaba en tu clon**: Claude Code la obtuvo de origin antes de comparar. La sugerencia dice ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; cuando Claude Code no puede determinar si tu clon es superficial (shallow), sugiere `git fetch --unshallow origin` en su lugar. Antes de la v2.1.221, la sugerencia proponía `git fetch --unshallow origin` para toda rama base obtenida, y en un clon completo ese comando falla con `fatal: --unshallow on a complete repository does not make sense`.

3729 3743 

3730**Qué hacer:**3744**Qué hacer:**

3731 3745 


4678* Si el compañero de equipo sigue ejecutándose, pídele al líder en su prompt que apague al compañero, por ejemplo `Ask the researcher teammate to shut down`. Consulta [Apagar compañeros de equipo](https://code.claude.com/docs/es/agent-teams.md#shut-down-teammates).4692* Si el compañero de equipo sigue ejecutándose, pídele al líder en su prompt que apague al compañero, por ejemplo `Ask the researcher teammate to shut down`. Consulta [Apagar compañeros de equipo](https://code.claude.com/docs/es/agent-teams.md#shut-down-teammates).

4679* Si un antiguo compañero de equipo que reanudaste tú mismo con `claude --resume` recibió este rechazo, no se envió nada. Para terminar esa sesión, ejecuta `/exit` en su prompt.4693* Si un antiguo compañero de equipo que reanudaste tú mismo con `claude --resume` recibió este rechazo, no se envió nada. Para terminar esa sesión, ejecuta `/exit` en su prompt.

4680 4694 

4695### A command-line deny rule cannot be handed to a teammate intact

4696 

4697Este mensaje significa que Claude Code no inició un compañero de equipo en [panel dividido](https://code.claude.com/docs/es/agent-teams.md#choose-a-display-mode) en tu [equipo de agentes](https://code.claude.com/docs/es/agent-teams.md). Claude Code pasa las reglas de denegación de línea de comandos del líder a un compañero de equipo en panel dividido a través de la propia línea de comandos del compañero, y se detiene cuando el compañero interpretaría una de ellas de forma distinta:

4698 

4699```text wrap theme={null}

4700A command-line deny rule cannot be handed to a teammate intact, so the teammate would not enforce it — spawn aborted

4701```

4702 

4703**Qué hacer:**

4704 

4705* Ejecuta `/config` en la sesión del líder y establece **Teammate mode** en `in-process`, y luego pídele a Claude que inicie de nuevo al compañero de equipo. No necesitas encontrar la regla ni reiniciar al líder. Un compañero de equipo en proceso [se ejecuta bajo las reglas de denegación activas del líder](https://code.claude.com/docs/es/agent-teams.md#permissions).

4706* Las sesiones posteriores que toman [`teammateMode`](https://code.claude.com/docs/es/settings-reference#teammatemode) de tu configuración de usuario también inician compañeros de equipo en proceso, porque `/config` guarda la elección ahí. Para volver a los paneles divididos en una sesión posterior, establece **Teammate mode** en `auto`, `tmux` o `iterm2`, el que usaras antes.

4707 

4681### Message too large for cross-session delivery4708### Message too large for cross-session delivery

4682 4709 

4683El [mensaje entre sesiones](https://code.claude.com/docs/es/cross-session-messaging.md) de Claude a otra de tus sesiones en esta máquina era demasiado largo para enviarse. Claude Code lo rechazó, y la sesión receptora no recibió nada. El rechazo aparece en el resultado de la herramienta de la sesión remitente, no como un aviso en tu terminal. Nombra ambos tamaños y cómo hacer que el mensaje quepa:4710El [mensaje entre sesiones](https://code.claude.com/docs/es/cross-session-messaging.md) de Claude a otra de tus sesiones en esta máquina era demasiado largo para enviarse. Claude Code lo rechazó, y la sesión receptora no recibió nada. El rechazo aparece en el resultado de la herramienta de la sesión remitente, no como un aviso en tu terminal. Nombra ambos tamaños y cómo hacer que el mensaje quepa:


5115**Qué hacer:**5142**Qué hacer:**

5116 5143 

5117* Para conservar los commits, envía la rama del worktree, o fusiónala en la rama predeterminada activa en tu checkout principal, y luego elimina la sesión nuevamente5144* Para conservar los commits, envía la rama del worktree, o fusiónala en la rama predeterminada activa en tu checkout principal, y luego elimina la sesión nuevamente

5118* Para descartar los commits, ejecuta el comando `claude rm <id> --discard-unpushed` que imprimió el mensaje, o presiona `Ctrl+X` dos veces nuevamente en la fila de la sesión en agent view. Esto elimina la sesión y el worktree junto con su rama, los commits no enviados y cualquier cambio sin commit. Si el worktree ha ganado un commit desde el rechazo, Claude Code lo conserva nuevamente y muestra el estado actualizado5145* Para descartar los commits, ejecuta el comando `claude rm <id> --discard-unpushed` que imprimió el mensaje, o presiona `Ctrl+X` dos veces nuevamente en la fila de la sesión en agent view. Esto elimina la sesión y el worktree junto con su rama, los commits no enviados y cualquier cambio sin commit. Si la eliminación se rechaza de nuevo, sigue el nuevo mensaje.

5119* Cuando el mensaje dice que el worktree también está registrado por otra sesión terminada, eliminar nuevamente no lo descarta: envía los commits y luego elimina la sesión nuevamente5146* Cuando el mensaje dice que el worktree también está registrado por otra sesión terminada, eliminar nuevamente no lo descarta: envía los commits y luego elimina la sesión nuevamente

5120 5147 

5121Antes de v2.1.268, `claude rm` ponía el resumen de commits en la propia línea `kept`. Cuando `claude rm` no podía resumir los commits, la línea `kept` decía `worktree has commits that are not pushed anywhere` en lugar del resumen.5148Antes de v2.1.268, `claude rm` ponía el resumen de commits en la propia línea `kept`. Cuando `claude rm` no podía resumir los commits, la línea `kept` decía `worktree has commits that are not pushed anywhere` en lugar del resumen.

5122 5149 

5123Antes de v2.1.260, el mensaje no nombraba la rama ni los commits, y eliminar nuevamente se rechazaba de la misma manera: eliminar la sesión sin enviar los commits significaba eliminar el worktree tú mismo con `git worktree remove --force <path>` y luego ejecutar `claude rm <id>` nuevamente.5150Antes de v2.1.260, el mensaje no nombraba la rama ni los commits, y no había forma de descartarlos. Aun así puedes eliminar la sesión, perdiendo los cambios sin commit pero conservando la rama y los commits. Ejecuta `git worktree remove --force --force <path>` con la ruta que imprimió el rechazo y luego `claude rm <id>`. Git necesita `--force` dos veces para un worktree bloqueado.

5124 5151 

5125Antes de v2.1.248, la rama predeterminada activa en tu checkout principal no contaba: una rama que ya habías fusionado allí seguía activando este rechazo hasta que sus commits llegaran a un remoto.5152Antes de v2.1.248, la rama predeterminada activa en tu checkout principal no contaba: una rama que ya habías fusionado allí seguía activando este rechazo hasta que sus commits llegaran a un remoto.

5126 5153 


6133 6160 

6134El sandbox crea un marcador de posición mientras se ejecuta un comando en el sandbox y lo elimina cuando el comando termina. Uno queda atrás en casos como estos:6161El sandbox crea un marcador de posición mientras se ejecuta un comando en el sandbox y lo elimina cuando el comando termina. Uno queda atrás en casos como estos:

6135 6162 

6136* La sesión se termina antes de que acabe el comando, por ejemplo por SIGKILL6163* La sesión se termina a la fuerza antes de que acabe el comando, por ejemplo por SIGKILL

6137* Sales de la sesión mientras un comando en el sandbox todavía se está ejecutando, como uno en segundo plano6164* Sales de la sesión mientras un comando en el sandbox todavía se está ejecutando, como uno en segundo plano

6138 6165 

6139En `claude doctor`, la advertencia dice:6166En `claude doctor`, la advertencia dice:


6151 6178 

6152Antes de v2.1.309, la advertencia decía `Stale sandbox mask files left by a killed session`.6179Antes de v2.1.309, la advertencia decía `Stale sandbox mask files left by a killed session`.

6153 6180 

6154Antes de v2.1.257, `claude doctor` no señalaba estos archivos; las versiones anteriores dejan los mismos marcadores de posición cuando se termina una sesión.6181Antes de v2.1.257, `claude doctor` no señalaba estos archivos; las versiones anteriores dejan los mismos marcadores de posición cuando se termina una sesión a la fuerza.

6155 6182 

6156## Las respuestas parecen de menor calidad que lo habitual6183## Las respuestas parecen de menor calidad que lo habitual

6157 6184 

fast-mode.md +2 −2

Details

45* Un pequeño icono `↯` aparece junto al prompt mientras el modo rápido está activo45* Un pequeño icono `↯` aparece junto al prompt mientras el modo rápido está activo

46* Ejecuta `/fast` nuevamente en cualquier momento para verificar si el modo rápido está activado o desactivado46* Ejecuta `/fast` nuevamente en cualquier momento para verificar si el modo rápido está activado o desactivado

47 47 

48Opus 5.5 es el valor predeterminado del modo rápido en Claude Code v2.1.280 y posterior. Antes de v2.1.280, el modo rápido utilizaba Opus 5 de forma predeterminada a partir de v2.1.219, y Opus 4.8 en v2.1.154 a v2.1.218.48Opus 5.5 es el valor predeterminado del modo rápido en Claude Code v2.1.280 y posterior. Antes de v2.1.280, el modo rápido utilizaba Opus 5 de forma predeterminada a partir de v2.1.219.

49 49 

50Cuando desactivas el modo rápido con `/fast` nuevamente, permaneces en Opus. Para cambiar a un modelo diferente, usa `/model`.50Cuando desactivas el modo rápido con `/fast` nuevamente, permaneces en Opus. Para cambiar a un modelo diferente, usa `/model`.

51 51 


58 58 

59Siempre que un cambio de modelo activa o desactiva el modo rápido, Claude Code muestra una confirmación `Fast mode ON` o `Fast mode OFF`, y el icono `↯` aparece mientras el modo rápido está activado. Esto se aplica tanto si cambias con `/model`, con [`/config model=<model>`](https://code.claude.com/docs/es/settings), como desde un dispositivo conectado a través de [Control Remoto](https://code.claude.com/docs/es/remote-control.md).59Siempre que un cambio de modelo activa o desactiva el modo rápido, Claude Code muestra una confirmación `Fast mode ON` o `Fast mode OFF`, y el icono `↯` aparece mientras el modo rápido está activado. Esto se aplica tanto si cambias con `/model`, con [`/config model=<model>`](https://code.claude.com/docs/es/settings), como desde un dispositivo conectado a través de [Control Remoto](https://code.claude.com/docs/es/remote-control.md).

60 60 

61Claude Code reenvía el estado del modo rápido de la sesión a los dispositivos conectados a través de Control Remoto después de un cambio de modelo, una reconexión, o una [verificación de disponibilidad](#use-fast-mode-behind-proxies-and-llm-gateways) fallida.61Claude Code reenvía el estado del modo rápido de la sesión a los dispositivos conectados a través de Remote Control después de un cambio de modelo, una reconexión, o una [verificación de disponibilidad](#use-fast-mode-behind-proxies-and-llm-gateways) fallida.

62 62 

63### Usar el modo rápido en sesiones en la nube63### Usar el modo rápido en sesiones en la nube

64 64 

glossary.md +1 −1

Details

373 373 

374Cómo una sesión sabe que el trabajo está realmente hecho en lugar de aceptar un resultado que parece plausible. Le das a Claude una verificación que puede ejecutar, como un conjunto de pruebas, una compilación o una comparación de capturas de pantalla, y Claude itera hasta que la verificación pase en lugar de detenerse después de un intento. Un bucle de verificación es el requisito previo para [`/goal`](https://code.claude.com/docs/es/goal), las ejecuciones desatendidas y los [flujos de trabajo dinámicos](https://code.claude.com/docs/es/workflows.md): sin uno, lo único que decide que el agente ha terminado es el propio agente.374Cómo una sesión sabe que el trabajo está realmente hecho en lugar de aceptar un resultado que parece plausible. Le das a Claude una verificación que puede ejecutar, como un conjunto de pruebas, una compilación o una comparación de capturas de pantalla, y Claude itera hasta que la verificación pase en lugar de detenerse después de un intento. Un bucle de verificación es el requisito previo para [`/goal`](https://code.claude.com/docs/es/goal), las ejecuciones desatendidas y los [flujos de trabajo dinámicos](https://code.claude.com/docs/es/workflows.md): sin uno, lo único que decide que el agente ha terminado es el propio agente.

375 375 

376Más información: [Give Claude a way to verify its work](https://code.claude.com/docs/es/best-practices.md#give-claude-a-way-to-verify-its-work)376Más información: [Dale a Claude una verificación que pueda ejecutar](https://code.claude.com/docs/es/best-practices.md#give-claude-a-check-to-run)

377 377 

378## W378## W

379 379 

Details

166| Modelo principal | `claude-opus-5-5` |166| Modelo principal | `claude-opus-5-5` |

167| Modelo pequeño/rápido | `claude-sonnet-4-5@20250929` |167| Modelo pequeño/rápido | `claude-sonnet-4-5@20250929` |

168 168 

169Antes de v2.1.280, el modelo principal en Google Cloud's Agent Platform se establecía de forma predeterminada en Opus 5 y el alias `opus` se resolvía a Opus 5 desde v2.1.219.

170 

169Las tareas en segundo plano como la generación de títulos de sesión utilizan el modelo pequeño/rápido, normalmente un modelo de clase Haiku. En Google Cloud's Agent Platform, Claude Code utiliza el modelo Sonnet predeterminado para tareas en segundo plano porque Haiku puede no estar habilitado en todos los proyectos o regiones. Dos selecciones cambian qué modelo las realiza:171Las tareas en segundo plano como la generación de títulos de sesión utilizan el modelo pequeño/rápido, normalmente un modelo de clase Haiku. En Google Cloud's Agent Platform, Claude Code utiliza el modelo Sonnet predeterminado para tareas en segundo plano porque Haiku puede no estar habilitado en todos los proyectos o regiones. Dos selecciones cambian qué modelo las realiza:

170 172 

171* Cuando selecciona un modelo principal con `--model`, `ANTHROPIC_MODEL`, o la configuración `model`, las tareas en segundo plano utilizan ese modelo. Cuando Claude Code inicia la sesión en el modelo que establece con [`ANTHROPIC_DEFAULT_MODEL`](https://code.claude.com/docs/es/model-config#set-a-default-model-for-new-sessions), las tareas en segundo plano utilizan ese modelo también. Establecer `ANTHROPIC_DEFAULT_OPUS_MODEL` sin `ANTHROPIC_DEFAULT_SONNET_MODEL` también cuenta como una selección, porque el modelo Sonnet integrado puede no estar habilitado en un proyecto que dirige su propio Opus.173* Cuando selecciona un modelo principal con `--model`, `ANTHROPIC_MODEL`, o la configuración `model`, las tareas en segundo plano utilizan ese modelo. Cuando Claude Code inicia la sesión en el modelo que establece con [`ANTHROPIC_DEFAULT_MODEL`](https://code.claude.com/docs/es/model-config#set-a-default-model-for-new-sessions), las tareas en segundo plano utilizan ese modelo también. Establecer `ANTHROPIC_DEFAULT_OPUS_MODEL` sin `ANTHROPIC_DEFAULT_SONNET_MODEL` también cuenta como una selección, porque el modelo Sonnet integrado puede no estar habilitado en un proyecto que dirige su propio Opus.


175>177>

176> Los modelos Opus tienen un precio por token más alto que los modelos Sonnet, por lo que si no fijas un modelo principal, se te factura a la tarifa de Opus. Para usar Sonnet 4.5 como el modelo principal, establece `ANTHROPIC_MODEL` en su ID de modelo completo. Un despliegue que dirige el valor predeterminado con `ANTHROPIC_DEFAULT_SONNET_MODEL` y no establece `ANTHROPIC_DEFAULT_OPUS_MODEL` mantiene su modelo Sonnet dirigido como el valor predeterminado.178> Los modelos Opus tienen un precio por token más alto que los modelos Sonnet, por lo que si no fijas un modelo principal, se te factura a la tarifa de Opus. Para usar Sonnet 4.5 como el modelo principal, establece `ANTHROPIC_MODEL` en su ID de modelo completo. Un despliegue que dirige el valor predeterminado con `ANTHROPIC_DEFAULT_SONNET_MODEL` y no establece `ANTHROPIC_DEFAULT_OPUS_MODEL` mantiene su modelo Sonnet dirigido como el valor predeterminado.

177 179 

178Antes de v2.1.280, el modelo principal en Google Cloud's Agent Platform se establecía de forma predeterminada en Opus 5 y el alias `opus` se resolvía a Opus 5 desde v2.1.219. En v2.1.207 a v2.1.218, el modelo principal en Google Cloud's Agent Platform se establecía de forma predeterminada en Opus 4.8 y el alias `opus` se resolvía a Opus 4.8.

179 

180Para personalizar aún más los modelos:180Para personalizar aún más los modelos:

181 181 

182```bash theme={null}182```bash theme={null}

headless.md +4 −3

Details

236 236 

237Si faltan algunos de estos mensajes en tu stream, compara tu versión de Claude Code con estos mínimos:237Si faltan algunos de estos mensajes en tu stream, compara tu versión de Claude Code con estos mínimos:

238 238 

239* **Reenvío en cada nivel de anidamiento**: v2.1.219 o posterior

240* **Un skill bifurcado que Claude inicia con la herramienta Skill desde la conversación principal**: v2.1.86 o posterior para sus bloques `tool_use` y `tool_result`, y v2.1.265 o posterior para su primer mensaje `user` y sus bloques de texto y pensamiento239* **Un skill bifurcado que Claude inicia con la herramienta Skill desde la conversación principal**: v2.1.86 o posterior para sus bloques `tool_use` y `tool_result`, y v2.1.265 o posterior para su primer mensaje `user` y sus bloques de texto y pensamiento

241* **Mensajes de subagentes que genera un skill bifurcado, y de skills bifurcados iniciados dentro de un subagente u otro skill bifurcado**: v2.1.275 o posterior240* **Mensajes de subagentes que genera un skill bifurcado, y de skills bifurcados iniciados dentro de un subagente u otro skill bifurcado**: v2.1.275 o posterior

242* **Mensajes de un skill bifurcado que inicias pasando `/<skill-name>` como prompt**: v2.1.287 o posterior241* **Mensajes de un skill bifurcado que inicias pasando `/<skill-name>` como prompt**: v2.1.287 o posterior


285| Campo | Tipo | Descripción |284| Campo | Tipo | Descripción |

286| - | - | - |285| - | - | - |

287| `mcp_servers` | matriz | servidores MCP en la sesión, cada uno con `name` y `status` |286| `mcp_servers` | matriz | servidores MCP en la sesión, cada uno con `name` y `status` |

288| `mcp_server_errors` | matriz | entradas `--mcp-config` omitidas por la validación de configuración, cada una con `name`, `type` y `message`. `type` es una categoría de omisión como `unknown_type`, `url_missing_type`, `invalid_config` o `reserved_name`; trata los valores que no reconozcas como una omisión genérica. Los servidores afectados están ausentes de `mcp_servers`. La clave se omite cuando no hay errores, por lo que una puerta de CI puede fallar ante una matriz no vacía. Requiere Claude Code v2.1.219 o posterior |287| `mcp_server_errors` | matriz | entradas `--mcp-config` omitidas por la validación de configuración, cada una con `name`, `type` y `message`. `type` es una categoría de omisión como `unknown_type`, `url_missing_type`, `invalid_config` o `reserved_name`; trata los valores que no reconozcas como una omisión genérica. Los servidores afectados están ausentes de `mcp_servers`. La clave se omite cuando no hay errores, por lo que una puerta de CI puede fallar ante una matriz no vacía |

289 288 

290Cuando ejecutas el comando a mano en una terminal, Claude Code también imprime una advertencia de inicio en stderr, como `Warning: 1 MCP server skipped due to invalid config:`, seguida de la razón de cada entrada omitida. Cuando rediriges stderr, o cuando un programa como un ejecutor de CI o un host del SDK lo captura, Claude Code no imprime ninguna advertencia e informa las entradas omitidas solo en el campo `mcp_server_errors`. La advertencia requiere Claude Code v2.1.219 o posterior.289Cuando ejecutas el comando a mano en una terminal, Claude Code también imprime una advertencia de inicio en stderr, como `Warning: 1 MCP server skipped due to invalid config:`, seguida de la razón de cada entrada omitida.

290 

291Cuando rediriges stderr, o cuando un programa como un ejecutor de CI o un host del SDK lo captura, Claude Code no imprime ninguna advertencia. Informa las entradas omitidas solo en el campo `mcp_server_errors`.

291 292 

292#### Rastrear instalaciones de plugins293#### Rastrear instalaciones de plugins

293 294 

hooks.md +5 −9

Details

679 679 

680Los hooks de frontmatter en una skill de proyecto siguen la misma [regla de confianza de espacio de trabajo que los hooks en archivos de configuración](#workspace-trust). Claude Code los registra cuando tú o Claude invocas la skill, incluyendo en una ejecución `-p` en una carpeta que no has confiado.680Los hooks de frontmatter en una skill de proyecto siguen la misma [regla de confianza de espacio de trabajo que los hooks en archivos de configuración](#workspace-trust). Claude Code los registra cuando tú o Claude invocas la skill, incluyendo en una ejecución `-p` en una carpeta que no has confiado.

681 681 

682Los hooks de frontmatter en un subagente de proyecto se ejecutan solo después de que aceptes el [diálogo de confianza de espacio de trabajo](https://code.claude.com/docs/es/permissions.md#project-allow-rules-and-workspace-trust) para la carpeta de la que vino el archivo del agente. Una sesión `-p` no cuenta como aceptarlo. [Qué se ejecuta antes de confiar en una carpeta](https://code.claude.com/docs/es/permissions.md#what-runs-before-you-trust-a-folder) compara esto con la regla del archivo de configuración, y la página de subagentes enumera [qué alcances están exentos](https://code.claude.com/docs/es/sub-agents.md#hooks-in-subagent-frontmatter). Antes de v2.1.218, estos hooks podían ejecutarse desde carpetas que no habías confiado.682Los hooks de frontmatter en un subagente de proyecto se ejecutan solo después de que aceptes el [diálogo de confianza de espacio de trabajo](https://code.claude.com/docs/es/permissions.md#project-allow-rules-and-workspace-trust) para la carpeta de la que vino el archivo del agente. Una sesión `-p` no cuenta como aceptarlo. [Qué se ejecuta antes de confiar en una carpeta](https://code.claude.com/docs/es/permissions.md#what-runs-before-you-trust-a-folder) compara esto con la regla del archivo de configuración, y la página de subagentes enumera [qué alcances están exentos](https://code.claude.com/docs/es/sub-agents.md#hooks-in-subagent-frontmatter).

683 683 

684#### Límites de los hooks de skills684#### Límites de los hooks de skills

685 685 


3196* **Hooks de comando** (`type: "command"`): imprime la ruta como la última línea no vacía de stdout. Claude Code elimina los códigos de escape ANSI antes de leer esa línea, así que los banners de inicio del shell impresos antes de tu `echo` se ignoran. Redirige cualquier otra salida del hook a stderr.3196* **Hooks de comando** (`type: "command"`): imprime la ruta como la última línea no vacía de stdout. Claude Code elimina los códigos de escape ANSI antes de leer esa línea, así que los banners de inicio del shell impresos antes de tu `echo` se ignoran. Redirige cualquier otra salida del hook a stderr.

3197* **Hooks HTTP** (`type: "http"`): devuelve `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` en el cuerpo de la respuesta.3197* **Hooks HTTP** (`type: "http"`): devuelve `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` en el cuerpo de la respuesta.

3198 3198 

3199Si el hook falla o no produce ninguna ruta, la creación del worktree falla con un error.3199Si el hook falla o no produce ninguna ruta, la creación del worktree falla con un error. Claude Code resuelve una ruta relativa respecto al directorio en el que se ejecutó el hook, colapsando cualquier segmento `.` o `..` que contenga. Si la ruta resultante no es un directorio al que Claude Code pueda entrar, la sesión imprime un error que nombra la ruta y termina con el código 1.

3200 3200 

3201Claude Code resuelve una ruta relativa respecto al directorio en el que se ejecutó el hook, colapsando cualquier segmento `.` o `..` que contenga. Si la ruta resultante no es un directorio al que Claude Code pueda entrar, la sesión imprime un error que nombra la ruta y termina con código 1.3201Claude Code rechaza una ruta absoluta que contenga segmentos `.` o `..`, y cualquier ruta que pase por un enlace simbólico debajo de la raíz del repositorio. El error nombra el componente rechazado. Un enlace simbólico incluido en un commit del repositorio podría redirigir el worktree fuera de él. Devuelve una ruta normalizada que no pase por un enlace simbólico dentro del repositorio.

3202 

3203Claude Code rechaza una ruta absoluta que contenga segmentos `.` o `..`, y cualquier ruta que pase por un enlace simbólico debajo de la raíz del repositorio, porque un enlace simbólico incluido en un commit del repositorio podría redirigir el worktree fuera de él. El error nombra el componente rechazado. Devuelve una ruta normalizada que no pase por un enlace simbólico dentro del repositorio. Antes de v2.1.216, la creación del worktree seguía la ruta del hook sin esta comprobación.

3204 3202 

3205### WorktreeRemove3203### WorktreeRemove

3206 3204 


3228* **El hook termina con 0**: el worktree cuenta como eliminado. Claude Code no lee nada más del hook, así que asegúrate de que tu hook haya eliminado el directorio.3226* **El hook termina con 0**: el worktree cuenta como eliminado. Claude Code no lee nada más del hook, así que asegúrate de que tu hook haya eliminado el directorio.

3229* **El hook termina con un código distinto de cero**: la eliminación falla si el directorio en `worktree_path` sigue existiendo después, y el worktree permanece en el disco sin recurrir a git. Un hook que eliminó el directorio antes de terminar con un código distinto de cero cuenta como eliminado. Para saber cómo se informa el fallo, consulta [Entrada de WorktreeRemove](#worktreeremove-input).3227* **El hook termina con un código distinto de cero**: la eliminación falla si el directorio en `worktree_path` sigue existiendo después, y el worktree permanece en el disco sin recurrir a git. Un hook que eliminó el directorio antes de terminar con un código distinto de cero cuenta como eliminado. Para saber cómo se informa el fallo, consulta [Entrada de WorktreeRemove](#worktreeremove-input).

3230 3228 

3231Claude Code nunca elimina una rama perteneciente a un worktree creado por un hook, porque solo conoce la ruta que devolvió tu hook WorktreeCreate. Si tu hook WorktreeCreate crea una rama, elimínala en tu hook WorktreeRemove.3229Claude Code nunca elimina una rama que pertenezca a un worktree creado por un hook, porque solo conoce la ruta que devolvió tu hook WorktreeCreate. Si tu hook WorktreeCreate crea una rama, elimínala en tu hook WorktreeRemove. Claude Code descarta los [campos de salida JSON](#json-output) de un hook WorktreeRemove, como `systemMessage` y `continue`.

3232 

3233Claude Code descarta los [campos de salida JSON](#json-output) de un hook WorktreeRemove, como `systemMessage` y `continue`.

3234 3230 

3235Al eliminar una sesión en segundo plano, Claude Code verifica la ruta del worktree almacenada antes de ejecutar el hook y rechaza una ruta que sea un enlace simbólico o que pase por uno debajo de la raíz del repositorio. En esa vía, el hook se ejecuta para un worktree que todavía contiene archivos solo cuando confirmas la eliminación en la [vista de agentes](https://code.claude.com/docs/es/agent-view.md#what-deleting-a-session-removes); para un worktree así, [`claude rm`](https://code.claude.com/docs/es/agent-view#manage-sessions-from-the-shell) conserva la sesión y el worktree. Antes de v2.1.216, el hook se ejecutaba sobre la ruta almacenada sin estas comprobaciones.3231Al eliminar una sesión en segundo plano, Claude Code verifica la ruta del worktree almacenada antes de ejecutar el hook, y rechaza una ruta que sea un enlace simbólico o pase por uno debajo de la raíz del repositorio. En esa vía, el hook se ejecuta para un worktree que todavía contiene archivos solo cuando confirmas la eliminación en la [vista de agentes](https://code.claude.com/docs/es/agent-view.md#what-deleting-a-session-removes). Para un worktree así, [`claude rm`](https://code.claude.com/docs/es/agent-view#manage-sessions-from-the-shell) conserva la sesión y el worktree.

3236 3232 

3237Claude Code pasa la ruta devuelta por WorktreeCreate como `worktree_path` en la entrada del hook. Este ejemplo lee esa ruta y elimina el directorio:3233Claude Code pasa la ruta devuelta por WorktreeCreate como `worktree_path` en la entrada del hook. Este ejemplo lee esa ruta y elimina el directorio:

3238 3234 

Details

174 174 

175## Trabajar efectivamente con Claude Code175## Trabajar efectivamente con Claude Code

176 176 

177Estos consejos le ayudan a obtener mejores resultados de Claude Code. Para más información sobre indicaciones específicas, verificación y planificación, consulte [Mejores prácticas](https://code.claude.com/docs/es/best-practices.md).177Estos consejos te ayudan a obtener mejores resultados de Claude Code. Para más información sobre prompts específicos, verificación y las reglas que vale la pena aplicar en lugar de pedirlas en el prompt, consulta [Buenas prácticas](https://code.claude.com/docs/es/best-practices.md).

178 178 

179### Pida ayuda a Claude Code179### Pida ayuda a Claude Code

180 180 


216 216 

217```text theme={null}217```text theme={null}

218El flujo de pago está roto para usuarios con tarjetas vencidas.218El flujo de pago está roto para usuarios con tarjetas vencidas.

219El código relevante está en src/payments/. ¿Puede investigar y arreglarlo?219El código relevante está en src/payments/. ¿Puedes investigar y arreglarlo?

220```220```

221 221 

222No necesita especificar qué archivos leer o qué comandos ejecutar. Claude lo descubre.222No necesita especificar qué archivos leer o qué comandos ejecutar. Claude lo descubre.

Details

92| `/` al inicio | Comando o skill | Consulte [comandos](#commands) y [skills](https://code.claude.com/docs/es/skills.md) |92| `/` al inicio | Comando o skill | Consulte [comandos](#commands) y [skills](https://code.claude.com/docs/es/skills.md) |

93| `!` al inicio | Modo shell | Ejecute un comando directamente, agregue su salida a la sesión y haga que Claude responda a ella |93| `!` al inicio | Modo shell | Ejecute un comando directamente, agregue su salida a la sesión y haga que Claude responda a ella |

94| `@` | Mención de ruta de archivo | Activar autocompletado de ruta de archivo. En sesiones con [mensajería entre sesiones](https://code.claude.com/docs/es/cross-session-messaging.md#message-another-session), cuando escribe al menos una letra después de `@`, Claude Code también sugiere sus otras sesiones activas en esta máquina, para que pueda decirle a Claude que envíe un mensaje a la que elija. Requiere Claude Code v2.1.232 o posterior |94| `@` | Mención de ruta de archivo | Activar autocompletado de ruta de archivo. En sesiones con [mensajería entre sesiones](https://code.claude.com/docs/es/cross-session-messaging.md#message-another-session), cuando escribe al menos una letra después de `@`, Claude Code también sugiere sus otras sesiones activas en esta máquina, para que pueda decirle a Claude que envíe un mensaje a la que elija. Requiere Claude Code v2.1.232 o posterior |

95| `:` | Código abreviado de emoji | Escriba un `:name:` completo para insertar el emoji, o dos o más caracteres para sugerencias. Consulte [Códigos abreviados de emoji](#emoji-shortcodes). Requiere Claude Code v2.1.217 o posterior |95| `:` | Código abreviado de emoji | Escribe un `:name:` completo para insertar el emoji, o dos o más caracteres para ver sugerencias. Consulta [Códigos abreviados de emoji](#emoji-shortcodes) |

96| `?` en entrada vacía | Alternar panel de ayuda de atajos | Escribir `?` cuando la entrada ya contiene texto inserta el carácter |96| `?` en entrada vacía | Alternar panel de ayuda de atajos | Escribir `?` cuando la entrada ya contiene texto inserta el carácter |

97 97 

98### Visor de transcripción98### Visor de transcripción


197 197 

198> [!NOTE]198> [!NOTE]

199>199>

200> En modo NORMAL de vim, si el cursor está al principio o al final de la entrada y no puede moverse más, `j`/`k` y `↑`/`↓` navegan por el historial de comandos en su lugar. `←` en un prompt vacío abre [vista de agente](https://code.claude.com/docs/es/agent-view.md) desde modo NORMAL así como INSERT; antes de v2.1.219, `←` en un prompt vacío no hacía nada en modo NORMAL.200> En modo NORMAL de vim, si el cursor está al principio o al final de la entrada y no puede moverse más, `j`/`k` y `↑`/`↓` navegan por el historial de comandos en su lugar. `←` en un prompt vacío abre [vista de agente](https://code.claude.com/docs/es/agent-view.md) desde modo NORMAL así como INSERT.

201 201 

202### Edición (modo NORMAL)202### Edición (modo NORMAL)

203 203 


396Claude Code ejecuta algunos comandos tan pronto como los envías en lugar de encolarlos, entre ellos `/model`, `/effort` y `/fast`. Cada uno de los tres cambia un ajuste: el modelo, el nivel de esfuerzo o el modo rápido. Si Claude Code aplica el nuevo ajuste al turno en el que Claude ya está trabajando, o solo desde tu siguiente turno, difiere según el comando:396Claude Code ejecuta algunos comandos tan pronto como los envías en lugar de encolarlos, entre ellos `/model`, `/effort` y `/fast`. Cada uno de los tres cambia un ajuste: el modelo, el nivel de esfuerzo o el modo rápido. Si Claude Code aplica el nuevo ajuste al turno en el que Claude ya está trabajando, o solo desde tu siguiente turno, difiere según el comando:

397 397 

398* [`/model`](https://code.claude.com/docs/es/model-config#setting-your-model): una vez que confirmes la [advertencia de caché](https://code.claude.com/docs/es/prompt-caching.md#switching-models), si Claude Code muestra una, Claude Code aplica tu cambio a la siguiente solicitud que realiza en ese turno398* [`/model`](https://code.claude.com/docs/es/model-config#setting-your-model): una vez que confirmes la [advertencia de caché](https://code.claude.com/docs/es/prompt-caching.md#switching-models), si Claude Code muestra una, Claude Code aplica tu cambio a la siguiente solicitud que realiza en ese turno

399* [`/effort`](https://code.claude.com/docs/es/model-config#adjust-effort-level): una vez que confirmes la [advertencia de caché](https://code.claude.com/docs/es/prompt-caching.md#changing-effort-level), si Claude Code muestra una, Claude Code aplica tu cambio a la siguiente solicitud que realiza en ese turno399* `/effort`: el siguiente mensaje que envíes se ejecuta con el nuevo nivel. Para [iniciarlo en el turno en el que Claude ya está trabajando](https://code.claude.com/docs/es/model-config.md#when-a-new-effort-level-starts), encola un mensaje mientras Claude está ejecutando llamadas a herramientas

400* [`/fast`](https://code.claude.com/docs/es/fast-mode#toggle-fast-mode): Claude Code mantiene el ajuste de modo rápido que estaba activo cuando el turno comenzó, por lo que tu cambio de velocidad se aplica desde tu siguiente turno. Si tu modelo actual no admite modo rápido, activarlo también [cambia tu modelo](https://code.claude.com/docs/es/prompt-caching.md#turning-on-fast-mode), y Claude Code usa el nuevo modelo desde su siguiente solicitud en ese turno400* [`/fast`](https://code.claude.com/docs/es/fast-mode#toggle-fast-mode): Claude Code mantiene el ajuste de modo rápido que estaba activo cuando el turno comenzó, por lo que tu cambio de velocidad se aplica desde tu siguiente turno. Si tu modelo actual no admite modo rápido, activarlo también [cambia tu modelo](https://code.claude.com/docs/es/prompt-caching.md#turning-on-fast-mode), y Claude Code usa el nuevo modelo desde su siguiente solicitud en ese turno

401 401 

402### Enviar al segundo plano una sesión con mensajes encolados402### Enviar al segundo plano una sesión con mensajes encolados


513 513 

514## Códigos de emoji514## Códigos de emoji

515 515 

516Escriba un `:` seguido de un código de emoji en la entrada del prompt para insertar el emoji. Requiere Claude Code v2.1.217 o posterior.516Escribe un `:` seguido de un código de emoji en la entrada del prompt para insertar el emoji.

517 517 

518* Escriba un código completo como `:heart:` y Claude Code lo reemplaza con ❤️ tan pronto como escriba el `:` de cierre518* Escriba un código completo como `:heart:` y Claude Code lo reemplaza con ❤️ tan pronto como escriba el `:` de cierre

519* Escriba `:` más al menos dos caracteres de un nombre, como `:hea`, para abrir una ventana emergente de sugerencias, luego presione `Tab` o `Enter` para insertar el emoji resaltado519* Escriba `:` más al menos dos caracteres de un nombre, como `:hea`, para abrir una ventana emergente de sugerencias, luego presione `Tab` o `Enter` para insertar el emoji resaltado

Details

31 31 

32> [!TIP]32> [!TIP]

33>33>

34> Para técnicas de flujo de trabajo que mantengan el contexto pequeño en cualquier repositorio, como [ejecutar exploración en un subagente](https://code.claude.com/docs/es/best-practices.md#use-subagents-for-investigation) para que las lecturas de archivos se mantengan fuera de la conversación principal, consulte [Mejores prácticas para Claude Code](https://code.claude.com/docs/es/best-practices.md). Para implementar una configuración de línea base para cada desarrollador en su organización, consulte [Configurar Claude Code para su organización](https://code.claude.com/docs/es/admin-setup.md).34> Para técnicas de flujo de trabajo que mantengan el contexto pequeño en cualquier repositorio, consulta [Buenas prácticas para Claude Code](https://code.claude.com/docs/es/best-practices.md). Un ejemplo es [ejecutar la exploración en un subagente](https://code.claude.com/docs/es/best-practices.md#know-what-subagents-cost) para que las lecturas de archivos se mantengan fuera de la conversación principal. Para implementar una configuración de línea base para cada desarrollador de tu organización, consulta [Configurar Claude Code para tu organización](https://code.claude.com/docs/es/admin-setup.md).

35 35 

36### El monorepo de ejemplo36### El monorepo de ejemplo

37 37 


158Las reglas de negación pueden cubrir a todos los que trabajan en el repositorio, solo a usted, o cada sesión en la máquina, dependiendo de en qué archivo de configuración las coloque:158Las reglas de negación pueden cubrir a todos los que trabajan en el repositorio, solo a usted, o cada sesión en la máquina, dependiendo de en qué archivo de configuración las coloque:

159 159 

160* **Todos los que trabajan en el repositorio**: confirme las reglas en `.claude/settings.json`, en la raíz del repositorio si inicia Claude allí, o en cada `.claude/` del paquete si inicia desde subdirectorios. Como otras configuraciones de proyecto en esta página, ese archivo no se hereda de directorios principales.160* **Todos los que trabajan en el repositorio**: confirme las reglas en `.claude/settings.json`, en la raíz del repositorio si inicia Claude allí, o en cada `.claude/` del paquete si inicia desde subdirectorios. Como otras configuraciones de proyecto en esta página, ese archivo no se hereda de directorios principales.

161* **Solo usted**: use `.claude/settings.local.json` en la raíz del repositorio, que se carga en cada sesión CLI dentro del repositorio independientemente del directorio de inicio, excepto en los casos donde Claude Code [no usa la raíz del repositorio](https://code.claude.com/docs/es/settings.md#where-claude-code-looks-for-each-file), como en Windows. Los patrones relativos como el `Read(./**/vendor/**/*)` del ejemplo aún [se anclan en el directorio de trabajo actual de la sesión](https://code.claude.com/docs/es/permissions.md#read-and-edit) en lugar de la raíz del repositorio, por lo que si inicia sesiones desde subdirectorios, escriba las reglas en este archivo como rutas absolutas `//`, como `Read(//absolute/path/to/repo/**/vendor/**/*)`. Antes de v2.1.211, `.claude/settings.local.json` también se cargaba solo desde el directorio de inicio.161* **Solo tú**: usa `.claude/settings.local.json` en la raíz del repositorio. Se carga en cada sesión de la CLI dentro del repositorio independientemente del directorio de inicio, excepto en los casos donde Claude Code [no usa la raíz del repositorio](https://code.claude.com/docs/es/settings.md#where-claude-code-looks-for-each-file), como en Windows.

162 

163 Los patrones relativos como el `Read(./**/vendor/**/*)` del ejemplo aún [se anclan en el directorio de trabajo actual de la sesión](https://code.claude.com/docs/es/permissions.md#read-and-edit) en lugar de la raíz del repositorio. Si inicias sesiones desde subdirectorios, escribe las reglas en este archivo como rutas absolutas con `//`, como `Read(//absolute/path/to/repo/**/vendor/**/*)`.

162* **Todos, aplicado en cada sesión**: establezca las reglas en [configuraciones administradas](https://code.claude.com/docs/es/managed-settings.md), que las configuraciones de usuario y proyecto no pueden anular.164* **Todos, aplicado en cada sesión**: establezca las reglas en [configuraciones administradas](https://code.claude.com/docs/es/managed-settings.md), que las configuraciones de usuario y proyecto no pueden anular.

163 165 

164El ejemplo a continuación bloquea artefactos de compilación y un SDK vendido. Sus patrones de directorio terminan con `/**/*` en lugar de `/**` para que cada regla cubra todo dentro del directorio pero no el directorio en sí. Claude puede entonces aún listar esos directorios o cambiar a ellos, por ejemplo con `ls dist` o `cd build`.166El ejemplo a continuación bloquea artefactos de compilación y un SDK vendido. Sus patrones de directorio terminan con `/**/*` en lugar de `/**` para que cada regla cubra todo dentro del directorio pero no el directorio en sí. Claude puede entonces aún listar esos directorios o cambiar a ellos, por ejemplo con `ls dist` o `cd build`.


376Mueva convenciones y contenido de referencia fuera de CLAUDE.md siempre cargado y hacia mecanismos que se cargan bajo demanda:378Mueva convenciones y contenido de referencia fuera de CLAUDE.md siempre cargado y hacia mecanismos que se cargan bajo demanda:

377 379 

378* [Skills](https://code.claude.com/docs/es/skills.md): material de referencia que Claude carga solo cuando es relevante para la tarea380* [Skills](https://code.claude.com/docs/es/skills.md): material de referencia que Claude carga solo cuando es relevante para la tarea

379* [Plugins](https://code.claude.com/docs/es/plugins/overview.md): paquetes versionados de skills, hooks y comandos que un equipo de plataforma posee centralmente381* [Plugins](https://code.claude.com/docs/es/plugins/overview.md): paquetes versionados de skills, hooks y comandos que un equipo de plataforma posee centralmente y puede [instalar para todos mediante la configuración administrada](https://code.claude.com/docs/es/plugins/org.md#pre-install-and-require-plugins)

380* [Servidores MCP](https://code.claude.com/docs/es/mcp.md): si su organización ya ejecuta una búsqueda de código o índice RAG sobre el repositorio, expóngalo como una herramienta MCP para que Claude lo consulte en lugar de leer archivos directamente382* [Servidores MCP](https://code.claude.com/docs/es/mcp.md): si su organización ya ejecuta una búsqueda de código o índice RAG sobre el repositorio, expóngalo como una herramienta MCP para que Claude lo consulte en lugar de leer archivos directamente

381 383 

382Consulte [configuraciones administradas por servidor o punto final](https://code.claude.com/docs/es/server-managed-settings.md#choose-between-server-managed-and-endpoint-managed-settings) para cómo los equipos de plataforma pueden aplicar esto centralmente.384Consulte [configuraciones administradas por servidor o punto final](https://code.claude.com/docs/es/server-managed-settings.md#choose-between-server-managed-and-endpoint-managed-settings) para cómo los equipos de plataforma pueden aplicar esto centralmente.


465Dos técnicas ayudan a mantener un cambio entre paquetes consistente:467Dos técnicas ayudan a mantener un cambio entre paquetes consistente:

466 468 

467* **Dé a Claude el cambio completo en una sesión**: entregar la edición compartida y sus sitios de llamada juntos mantiene las decisiones detrás de cada edición consistentes, en lugar de rederivarse por paquete469* **Dé a Claude el cambio completo en una sesión**: entregar la edición compartida y sus sitios de llamada juntos mantiene las decisiones detrás de cada edición consistentes, en lugar de rederivarse por paquete

468* **Planifique antes de editar**: [planifique primero](https://code.claude.com/docs/es/best-practices.md#explore-first-then-plan-then-code) en [plan mode](https://code.claude.com/docs/es/permission-modes.md#analyze-before-you-edit-with-plan-mode), y Claude escribe el plan en un archivo. Una sesión larga entre paquetes [compacta su contexto](https://code.claude.com/docs/es/context-window.md#what-survives-compaction) en el camino. Claude Code reinyecta el archivo del plan después de cada compactación, por lo que el plan sobrevive donde el historial de conversación puede no hacerlo470* **Planifica antes de editar**: planifica primero en [modo plan](https://code.claude.com/docs/es/permission-modes.md#analyze-before-you-edit-with-plan-mode), y Claude escribe el plan en un archivo. Una sesión larga entre paquetes [compacta su contexto](https://code.claude.com/docs/es/context-window.md#what-survives-compaction) sobre la marcha. Claude Code reinyecta el archivo del plan después de cada compactación, por lo que el plan sobrevive donde el historial de la conversación puede no hacerlo

469 471 

470## Próximos pasos472## Próximos pasos

471 473 

Details

361 361 

362La puerta de enlace lleva solicitudes de modelo, pero Claude Code también envía tráfico de fondo no esencial fuera de la ruta de la puerta de enlace, a Anthropic y a servicios de terceros como GitHub: comprobaciones de versión, telemetría, notas de lanzamiento, y solicitudes similares. En una red que solo permite salida a la puerta de enlace, estas solicitudes fallan y pueden aparecer como conexiones bloqueadas en su monitoreo de salida.362La puerta de enlace lleva solicitudes de modelo, pero Claude Code también envía tráfico de fondo no esencial fuera de la ruta de la puerta de enlace, a Anthropic y a servicios de terceros como GitHub: comprobaciones de versión, telemetría, notas de lanzamiento, y solicitudes similares. En una red que solo permite salida a la puerta de enlace, estas solicitudes fallan y pueden aparecer como conexiones bloqueadas en su monitoreo de salida.

363 363 

364Claude Code adjunta una credencial a una solicitud de telemetría o métricas de uso solo cuando la solicitud va al host al que pertenece la credencial. Mientras `ANTHROPIC_BASE_URL` apunta a la puerta de enlace, Claude Code envía sus eventos de telemetría a Anthropic sin su credencial de puerta de enlace. Con una [variable de credencial](#set-the-credential-variable) o `apiKeyHelper` también activos, Claude Code no reporta métricas de uso al panel de [análisis](https://code.claude.com/docs/es/analytics.md#access-analytics-for-api-customers) de la Consola. Antes de v2.1.246, Claude Code podría adjuntar la credencial de puerta de enlace a solicitudes de telemetría y métricas de uso destinadas a hosts de Anthropic; las solicitudes de modelo siempre iban a la puerta de enlace con la credencial que la puerta de enlace espera.

365 

366Para desactivar ese tráfico, establezca `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` junto con las variables de puerta de enlace, en las mismas exportaciones de shell o bloque `env` del archivo de configuración:364Para desactivar ese tráfico, establezca `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` junto con las variables de puerta de enlace, en las mismas exportaciones de shell o bloque `env` del archivo de configuración:

367 365 

368**Bash o Zsh**366**Bash o Zsh**

mcp.md +9 −3

Details

84 84 

85Solo una aplicación host SDK, como una aplicación [Agent SDK](https://code.claude.com/docs/es/agent-sdk/mcp.md) o la [aplicación de escritorio](https://code.claude.com/docs/es/desktop.md), puede registrar un servidor `"type": "sdk"` en proceso. Claude Code omite una entrada `"type": "sdk"` en `.mcp.json`, `~/.claude.json`, o la configuración e informa `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`.85Solo una aplicación host SDK, como una aplicación [Agent SDK](https://code.claude.com/docs/es/agent-sdk/mcp.md) o la [aplicación de escritorio](https://code.claude.com/docs/es/desktop.md), puede registrar un servidor `"type": "sdk"` en proceso. Claude Code omite una entrada `"type": "sdk"` en `.mcp.json`, `~/.claude.json`, o la configuración e informa `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`.

86 86 

87En ejecuciones `--output-format stream-json`, Claude Code también informa una entrada `--mcp-config` omitida en el campo [`mcp_server_errors`](https://code.claude.com/docs/es/headless#stream-responses) del evento `system/init`, para que los scripts puedan detectar que el servidor nunca se cargó. Esto requiere Claude Code v2.1.219 o posterior.87> [!NOTE]

88>

89> En ejecuciones con `--output-format stream-json`, Claude Code también informa de una entrada omitida de `--mcp-config` en el [campo `mcp_server_errors`](https://code.claude.com/docs/es/headless#stream-responses) del evento `system/init`, para que los scripts puedan detectar que el servidor nunca se cargó.

88 90 

89### Opción 2: Agregar un servidor SSE remoto91### Opción 2: Agregar un servidor SSE remoto

90 92 


250 252 

251Los estados en esta lista informan una decisión de configuración en lugar de un intento de conexión, por lo que Claude Code los imprime sin conectarse al servidor:253Los estados en esta lista informan una decisión de configuración en lugar de un intento de conexión, por lo que Claude Code los imprime sin conectarse al servidor:

252 254 

253* ``⏸ Pending approval (run `claude` to approve)``: un servidor con alcance de proyecto de `.mcp.json` que todavía no has aprobado. Claude Code lo muestra tanto en `claude mcp list` como en `claude mcp get <name>`. Ejecuta `claude` de forma interactiva para revisarlo y aprobarlo.255* ``⏸ Pending approval (run `claude` to approve)``: un servidor con alcance de proyecto de `.mcp.json` que aún no has aprobado. Claude Code lo muestra tanto en `claude mcp list` como en `claude mcp get <name>`. Ejecuta `claude` de forma interactiva para revisarlo y aprobarlo.

254* `✘ Rejected (see disabledMcpjsonServers in settings)`: un servidor `.mcp.json` que una entrada [`disabledMcpjsonServers`](https://code.claude.com/docs/es/settings-reference#disabledmcpjsonservers) rechaza. Claude Code lo muestra solo en `claude mcp get <name>`.256* `✘ Rejected (see disabledMcpjsonServers in settings)`: un servidor `.mcp.json` que una entrada [`disabledMcpjsonServers`](https://code.claude.com/docs/es/settings-reference#disabledmcpjsonservers) rechaza. Claude Code lo muestra solo en `claude mcp get <name>`.

255* `⊘ Disabled for this project (re-enable via /mcp)`: un servidor que la lista [`disabledMcpServers`](#disable-a-server-without-removing-it) del proyecto nombra. Claude Code lo muestra tanto en `claude mcp list` como en `claude mcp get <name>`. Vuelve a activar el servidor desde el panel `/mcp`.257* `⊘ Disabled for this project (re-enable via /mcp)`: un servidor que la lista [`disabledMcpServers`](#disable-a-server-without-removing-it) del proyecto nombra. Claude Code lo muestra tanto en `claude mcp list` como en `claude mcp get <name>`. Vuelve a activar el servidor desde el panel `/mcp`.

256 258 


276 278 

277Cuando seleccionas **Disable** o **Clear authentication** desde el menú de un servidor en `/mcp`, Claude Code también descarta la entrada de caché de ese servidor. **Reconnect** también la descarta en un servidor conectado o fallido; en un servidor `cached`, **Reconnect** conecta el servidor de inmediato y mantiene la entrada. La próxima vez que Claude Code se conecte al servidor después de descartar la entrada, obtiene la lista de herramientas del servidor en lugar de la caché.279Cuando seleccionas **Disable** o **Clear authentication** desde el menú de un servidor en `/mcp`, Claude Code también descarta la entrada de caché de ese servidor. **Reconnect** también la descarta en un servidor conectado o fallido; en un servidor `cached`, **Reconnect** conecta el servidor de inmediato y mantiene la entrada. La próxima vez que Claude Code se conecte al servidor después de descartar la entrada, obtiene la lista de herramientas del servidor en lugar de la caché.

278 280 

279Cuando el estado de un servidor es `✘ Failed to connect`, `claude mcp list` añade el detalle de la falla a esa línea de estado, y `claude mcp get <name>` lo muestra en una línea `Issue:`: el código de estado HTTP o código de error, más cualquier texto de error que el servidor haya devuelto. La vista de detalle del servidor en `/mcp` incluye el mismo texto informado por el servidor en su fila `Issue:`. Claude Code oculta de este detalle el texto similar a credenciales y nunca incluye la URL expandida del servidor, que puede llevar secretos. Claude Code no añade detalle a un estado `✘ Connection error`, porque el texto de excepción que imprimiría allí puede incrustar esa URL. Antes de v2.1.219, ambos comandos mostraban solo el estado de falla sin más, sin el código de estado ni el texto de error del servidor.281##### Errores de conexión y servidores sin configurar

282 

283Cuando el estado de un servidor es `✘ Failed to connect`, `claude mcp list` añade el detalle del error a esa línea de estado, y `claude mcp get <name>` lo muestra en una línea `Issue:`. El detalle es el estado HTTP o el código de error, más cualquier texto de error que haya devuelto el servidor. La vista de detalle del servidor en `/mcp` incluye el mismo texto informado por el servidor en su fila `Issue:`.

284 

285Claude Code oculta de este detalle el texto que parece una credencial y nunca incluye la URL expandida del servidor, que puede contener secretos. Claude Code no añade ningún detalle a un estado `✘ Connection error`, porque el texto de la excepción que imprimiría allí puede incluir esa URL.

280 286 

281Cuando completas la autenticación desde `/mcp` y la conexión aún falla con un código de estado HTTP o un código de error de transporte, Claude Code añade ese código y el origen de la URL del servidor al mensaje que imprime después del intento. El origen es el esquema y el host, más el puerto cuando la URL nombra uno, como `https://mcp.example.com`.287Cuando completas la autenticación desde `/mcp` y la conexión aún falla con un código de estado HTTP o un código de error de transporte, Claude Code añade ese código y el origen de la URL del servidor al mensaje que imprime después del intento. El origen es el esquema y el host, más el puerto cuando la URL nombra uno, como `https://mcp.example.com`.

282 288 

memory.md +3 −3

Details

237 237 

238Cada grupo de llaves multiplica el número de patrones expandidos: `src/*.{ts,tsx}` se expande a dos patrones, y `{a,b}/{c,d}/*.{ts,tsx}` a ocho. Para mantener la expansión acotada, toda la lista `paths` de una regla comparte un único presupuesto de 1.000 patrones expandidos y 4 MiB, y los patrones sin llaves no cuentan contra él.238Cada grupo de llaves multiplica el número de patrones expandidos: `src/*.{ts,tsx}` se expande a dos patrones, y `{a,b}/{c,d}/*.{ts,tsx}` a ocho. Para mantener la expansión acotada, toda la lista `paths` de una regla comparte un único presupuesto de 1.000 patrones expandidos y 4 MiB, y los patrones sin llaves no cuentan contra él.

239 239 

240Claude Code usa sin expandir cualquier patrón que excedería el presupuesto, y sus llaves literales no coinciden con ningún archivo. Antes de v2.1.217, un valor `paths` con muchos grupos de llaves detenía o bloqueaba la CLI al iniciar.240Claude Code usa sin expandir cualquier patrón que excedería el presupuesto, y sus llaves literales no coinciden con ningún archivo.

241 241 

242La sintaxis glob trata `[` como el inicio de una expresión de corchetes como `[abc]`. Un patrón con un `[` que no se puede leer como expresión de corchetes, como `photos [2024/**`, es inválido: no coincide con nada, y los demás patrones de la regla siguen funcionando. Para hacer coincidir un `[` literal en un nombre de archivo, escápalo como `photos \[2024/**`.242La sintaxis glob trata `[` como el inicio de una expresión de corchetes como `[abc]`. Un patrón con un `[` que no se puede leer como expresión de corchetes, como `photos [2024/**`, es inválido: no coincide con nada, y los demás patrones de la regla siguen funcionando. Para hacer coincidir un `[` literal en un nombre de archivo, escápalo como `photos \[2024/**`.

243 243 


568 568 

569El comando `/memory` enumera tus archivos CLAUDE.md, CLAUDE.local.md y otras ubicaciones de archivos de memoria en los alcances de usuario y proyecto, incluidas las entradas CLAUDE.md de usuario y proyecto para archivos que aún no existen. También te permite activar o desactivar la memoria automática y ofrece una opción para abrir la carpeta de memoria automática. Selecciona cualquier archivo para abrirlo en tu editor; si seleccionas uno que aún no existe, primero se crea. Para verificar qué archivos `CLAUDE.md` y archivos de reglas se cargaron al iniciar, ejecuta `/context`.569El comando `/memory` enumera tus archivos CLAUDE.md, CLAUDE.local.md y otras ubicaciones de archivos de memoria en los alcances de usuario y proyecto, incluidas las entradas CLAUDE.md de usuario y proyecto para archivos que aún no existen. También te permite activar o desactivar la memoria automática y ofrece una opción para abrir la carpeta de memoria automática. Selecciona cualquier archivo para abrirlo en tu editor; si seleccionas uno que aún no existe, primero se crea. Para verificar qué archivos `CLAUDE.md` y archivos de reglas se cargaron al iniciar, ejecuta `/context`.

570 570 

571Los editores GUI como VS Code abren el archivo en una ventana separada, y puede seguir usando la sesión mientras está abierto. Antes de v2.1.216, `/memory` esperaba a que cerrara el archivo antes de responder. Los editores de terminal como Vim toman el control del terminal hasta que salga.571Los editores GUI como VS Code abren el archivo en una ventana separada, y puedes seguir usando la sesión mientras está abierto. Los editores de terminal como Vim toman el control de la terminal hasta que salgas.

572 572 

573Cuando le pide a Claude que recuerde algo, como "siempre usar pnpm, no npm" o "recuerde que las pruebas de API requieren una instancia local de Redis", Claude lo guarda en auto memory. Para agregar instrucciones a CLAUDE.md en su lugar, pídale a Claude directamente, como "agregue esto a CLAUDE.md", o edite el archivo usted mismo a través de `/memory`.573Cuando le pide a Claude que recuerde algo, como "siempre usar pnpm, no npm" o "recuerde que las pruebas de API requieren una instancia local de Redis", Claude lo guarda en auto memory. Para agregar instrucciones a CLAUDE.md en su lugar, pídale a Claude directamente, como "agregue esto a CLAUDE.md", o edite el archivo usted mismo a través de `/memory`.

574 574 


635Verifica si tu archivo supera el límite y redúcelo si es así:635Verifica si tu archivo supera el límite y redúcelo si es así:

636 636 

6371. Confirma que el límite se aplica a tu archivo. El límite se aplica a estos archivos, que se cargan bajo demanda:6371. Confirma que el límite se aplica a tu archivo. El límite se aplica a estos archivos, que se cargan bajo demanda:

638 * `CLAUDE.md` y `CLAUDE.local.md` en un subdirectorio del directorio donde iniciaste Claude Code, y los archivos que [importan](#import-additional-files) con `@path`638 * `CLAUDE.md` y `CLAUDE.local.md` en un subdirectorio del directorio donde iniciaste Claude Code, y los archivos que estos [importan](#import-additional-files) con `@path`

639 * Archivos de reglas en `.claude/rules/` de un subdirectorio639 * Archivos de reglas en `.claude/rules/` de un subdirectorio

640 * [Reglas con alcance de ruta](#path-specific-rules) en `.claude/rules/` de tu proyecto o en `~/.claude/rules/`640 * [Reglas con alcance de ruta](#path-specific-rules) en `.claude/rules/` de tu proyecto o en `~/.claude/rules/`

6412. Busca el límite para la [ventana de contexto](https://code.claude.com/docs/es/model-config.md#extended-context) de tu sesión:6412. Busca el límite para la [ventana de contexto](https://code.claude.com/docs/es/model-config.md#extended-context) de tu sesión:

model-config.md +21 −4

Details

542Se aplica un nivel diferente en casos como estos:542Se aplica un nivel diferente en casos como estos:

543 543 

544* **Tu propio cambio**: una vez que eliges un nivel de esfuerzo, seleccionas un modelo en `/model` o reanudas la sesión más tarde, el nivel de la solicitud marcada deja de trasladarse.544* **Tu propio cambio**: una vez que eliges un nivel de esfuerzo, seleccionas un modelo en `/model` o reanudas la sesión más tarde, el nivel de la solicitud marcada deja de trasladarse.

545* **Esfuerzo del skill**: un nivel que el frontmatter `effort` de un skill estableció para la solicitud marcada se aplica a ese turno, y los turnos posteriores se ejecutan en el nivel que el [orden de resolución de esfuerzo](#adjust-effort-level) da al modelo de respaldo.545* **Esfuerzo establecido para un turno**: si elevaste el turno marcado con `ultrathink`, o el frontmatter `effort` de un skill estableció su nivel, ese nivel se aplica a ese turno. Los turnos posteriores se ejecutan en el nivel que el [orden de resolución de esfuerzo](#adjust-effort-level) da al modelo de respaldo.

546 546 

547En la sesión, ejecuta `/effort status` para ver el nivel vigente, o `/effort` para cambiarlo.547En la sesión, ejecuta `/effort status` para ver el nivel vigente, o `/effort` para cambiarlo.

548 548 


674 674 

675#### Usar ultrathink para un razonamiento profundo puntual675#### Usar ultrathink para un razonamiento profundo puntual

676 676 

677Incluye `ultrathink` en cualquier parte de tu prompt para solicitar un razonamiento más profundo en ese turno sin cambiar tu ajuste de esfuerzo de la sesión. Claude Code reconoce la palabra clave y agrega una instrucción en contexto. El nivel de esfuerzo enviado a la API no cambia. Claude Code pasa otras frases como "think", "think hard" y "think more" como texto normal del prompt y no las reconoce como palabras clave.677Incluye `ultrathink` en cualquier parte de tu prompt para solicitar un razonamiento más profundo en ese turno sin cambiar tu ajuste de esfuerzo de la sesión. Claude Code reconoce la palabra clave y agrega una instrucción en contexto. Claude Code pasa otras frases como "think", "think hard" y "think more" como texto normal del prompt y no las reconoce como palabras clave.

678 

679Si la escribes en el prompt de la terminal, la palabra también puede elevar ese turno al esfuerzo `xhigh`. Cuando puede hacerlo, la palabra se muestra en colores de arcoíris. Requiere Claude Code v2.1.311 o posterior. Si la palabra no aparece en colores de arcoíris cuando empiezas un turno nuevo, prueba una de estas opciones:

680 

681* Vuelve a escribirla fuera de cualquier elemento como comillas, corchetes, una ruta o un comando, en un prompt que no empiece con `/`

682* Quita `CLAUDE_CODE_EFFORT_LEVEL` si está establecida por debajo de `xhigh`, sube tu propio [`maxEffortLevel`](https://code.claude.com/docs/es/settings-reference#maxeffortlevel) a `xhigh` o superior, o pide a un administrador de la organización que suba el [límite de tu organización](#organization-effort-limits)

683* Ejecuta `/model` en tu sesión para cambiar a un modelo Opus 5.5, Sonnet 5.5, Haiku 5.5 o Fable 5.1. Donde la palabra no puede elevar un turno, como en Amazon Bedrock, [establece el nivel de esfuerzo](#set-the-effort-level) en su lugar

678 684 

679#### Establecer el nivel de esfuerzo685#### Establecer el nivel de esfuerzo

680 686 

681Puedes cambiar el esfuerzo mediante cualquiera de las siguientes opciones:687Puedes cambiar el esfuerzo mediante cualquiera de las siguientes opciones:

682 688 

683* **`/effort`**: ejecuta `/effort` sin argumentos para abrir un control deslizante interactivo, `/effort` seguido de un nombre de nivel para establecerlo directamente, o `/effort auto` para borrar tu nivel guardado para el modelo activo. Puedes ejecutarlo mientras Claude está trabajando y, una vez que confirmes la [advertencia de caché](https://code.claude.com/docs/es/prompt-caching.md#changing-effort-level), si Claude Code muestra una, Claude Code aplica el nuevo nivel a la siguiente solicitud del turno689* **`/effort`**: ejecuta `/effort` sin argumentos para abrir un control deslizante interactivo, `/effort` seguido de un nombre de nivel para establecerlo directamente, o `/effort auto` para borrar tu nivel guardado para el modelo activo

684* **En `/model`**: usa las flechas izquierda/derecha para ajustar el control deslizante de esfuerzo al seleccionar un modelo690* **En `/model`**: usa las flechas izquierda/derecha para ajustar el control deslizante de esfuerzo al seleccionar un modelo

685* **Flag `--effort`**: pasa un nombre de nivel para establecerlo en una sola sesión al iniciar Claude Code691* **Flag `--effort`**: pasa un nombre de nivel para establecerlo en una sola sesión al iniciar Claude Code

686* **Variable de entorno**: establece `CLAUDE_CODE_EFFORT_LEVEL` en un nombre de nivel o en `auto`692* **Variable de entorno**: establece `CLAUDE_CODE_EFFORT_LEVEL` en un nombre de nivel o en `auto`


692 698 

693Si estableces `effortLevel` en la [configuración administrada](https://code.claude.com/docs/es/managed-settings.md), Claude Code lo aplica en el paso de configuración del [orden de resolución del esfuerzo](#adjust-effort-level), y los usuarios aún pueden cambiar el nivel con `/effort` o `--effort`. Para mantener a los usuarios en un nivel o por debajo de él, establece [`maxEffortLevel`](https://code.claude.com/docs/es/settings-reference#maxeffortlevel).699Si estableces `effortLevel` en la [configuración administrada](https://code.claude.com/docs/es/managed-settings.md), Claude Code lo aplica en el paso de configuración del [orden de resolución del esfuerzo](#adjust-effort-level), y los usuarios aún pueden cambiar el nivel con `/effort` o `--effort`. Para mantener a los usuarios en un nivel o por debajo de él, establece [`maxEffortLevel`](https://code.claude.com/docs/es/settings-reference#maxeffortlevel).

694 700 

695El control deslizante de esfuerzo aparece en `/model` cuando se selecciona un modelo compatible. El nivel de esfuerzo actual también se muestra en el encabezado de la sesión junto al nombre del modelo, por ejemplo "with low effort", para que puedas confirmar qué ajuste está activo sin abrir `/model`. El pie de página también muestra brevemente el nivel de esfuerzo al iniciar y cuando cambia.701#### Comprobar el nivel de esfuerzo que estableciste

702 

703El control deslizante de esfuerzo aparece en `/model` cuando se selecciona un modelo compatible. Un nivel en el encabezado de la sesión, por ejemplo "with low effort", proviene de tu ajuste de esfuerzo, aunque Claude [siga trabajando con el nivel anterior](#when-a-new-effort-level-starts). El pie de página también muestra brevemente el nivel de esfuerzo al iniciar y cuando cambia.

704 

705#### Cuándo empieza un nuevo nivel de esfuerzo

706 

707En una sesión de terminal, una vez que `/effort` confirma el nuevo nivel, el siguiente mensaje que envíes se ejecuta con ese nivel. Puedes enviarlo después de que termine el turno en curso o [mientras Claude sigue trabajando](https://code.claude.com/docs/es/interactive-mode.md#queue-messages-while-claude-works):

708 

709* **Después de que termine el turno**: no tienes que hacer nada hasta entonces, y es normal que el turno termine con el nivel anterior

710* **Mientras Claude sigue trabajando**: escribe un mensaje, como `keep going`, y presiona `Enter` para ponerlo en cola sin interrumpir el turno. Claude lo recibe cuando terminan sus llamadas a herramientas actuales, o como máximo cuando termina el turno, y trabaja con el nuevo nivel a partir de entonces.

711 

712Antes de la v2.1.242, Claude Code podía poner en cola el propio `/effort` hasta que terminara el turno, y siempre lo hacía en una sesión que no [obtiene feature flags](https://code.claude.com/docs/es/env-vars.md#features-that-need-feature-flag-fetching), como en un [proveedor de terceros](https://code.claude.com/docs/es/third-party-integrations.md).

696 713 

697#### Razonamiento adaptativo y presupuestos de pensamiento fijos714#### Razonamiento adaptativo y presupuestos de pensamiento fijos

698 715 

Details

648| `claude_code.code_edit_tool.decision` | Conteo de decisiones de permisos de herramientas de edición de código | ninguna |648| `claude_code.code_edit_tool.decision` | Conteo de decisiones de permisos de herramientas de edición de código | ninguna |

649| `claude_code.active_time.total` | Tiempo activo total | s |649| `claude_code.active_time.total` | Tiempo activo total | s |

650 650 

651Cuando `prometheus` es el único exportador indicado en `OTEL_METRICS_EXPORTER`, Claude Code omite las unidades `USD`, `tokens` y `s` de las métricas exportadas para que el scrape siga siendo un formato de texto de Prometheus válido. Los nombres de las métricas no cambian, y las configuraciones que combinan exportadores, como `otlp,prometheus`, conservan las unidades. Antes de v2.1.216, el scrape de Prometheus incluía líneas `# UNIT` exclusivas de OpenMetrics que algunos scrapers rechazaban.651Cuando `prometheus` es el único exportador listado en `OTEL_METRICS_EXPORTER`, Claude Code omite las unidades `USD`, `tokens` y `s` de las métricas exportadas para que el scrape siga siendo un formato de texto de Prometheus válido. Los nombres de las métricas no cambian, y las configuraciones que combinan exportadores, como `otlp,prometheus`, conservan las unidades.

652 652 

653### Detalles de las métricas653### Detalles de las métricas

654 654 


995 995 

996 El valor de `source` no indica cuál de estas fuentes coincidió. Para averiguar cuál rechazó una llamada, busca el [evento de seguridad](#safety-event) con el mismo `tool_use_id` y lee sus atributos `category` y `rule_source`. Algunas llamadas rechazadas [no tienen evento de seguridad](#calls-without-a-safety-event).996 El valor de `source` no indica cuál de estas fuentes coincidió. Para averiguar cuál rechazó una llamada, busca el [evento de seguridad](#safety-event) con el mismo `tool_use_id` y lee sus atributos `category` y `rule_source`. Algunas llamadas rechazadas [no tienen evento de seguridad](#calls-without-a-safety-event).

997 997 

998 Claude Code también informa `"config"` cuando falla la propia solicitud de permiso. Por ejemplo, esa solicitud falla cuando el callback [`canUseTool`](https://code.claude.com/docs/es/agent-sdk/typescript#canusetool) del Agent SDK o la herramienta [`--permission-prompt-tool`](https://code.claude.com/docs/es/cli-reference#cli-flags) devuelven un resultado no válido, o cuando el flujo de entrada se cierra mientras la solicitud está pendiente. Antes de v2.1.216, Claude Code informaba estas fallas como `"user_reject"`.998 Claude Code también informa `"config"` cuando falla la propia solicitud de permiso. Por ejemplo, esa solicitud falla cuando el callback [`canUseTool`](https://code.claude.com/docs/es/agent-sdk/typescript#canusetool) del Agent SDK o la herramienta [`--permission-prompt-tool`](https://code.claude.com/docs/es/cli-reference#cli-flags) devuelven un resultado no válido, o cuando el flujo de entrada se cierra mientras la solicitud está pendiente.

999 * `"hook"`: Un hook `PreToolUse` o `PermissionRequest` devolvió la decisión.999 * `"hook"`: Un hook `PreToolUse` o `PermissionRequest` devolvió la decisión.

1000 * `"user_permanent"`: Se emite cuando el usuario eligió "Yes, and don't ask again for ..." en una solicitud de permiso, lo que guarda una regla de permitir en su configuración personal. En la CLI interactiva, se emite solo para esa elección; las llamadas posteriores que coinciden con la regla guardada emiten `"config"` en su lugar. En sesiones del Agent SDK o no interactivas con `-p`, tanto la elección inicial como las coincidencias posteriores con la regla emiten `"user_permanent"`. Se trata como una aceptación.1000 * `"user_permanent"`: Se emite cuando el usuario eligió "Yes, and don't ask again for ..." en una solicitud de permiso, lo que guarda una regla de permitir en su configuración personal. En la CLI interactiva, esto se emite solo para esa elección en sí; las llamadas posteriores que coinciden con la regla guardada emiten `"config"` en su lugar. En sesiones del Agent SDK o sesiones no interactivas con `-p`, tanto la elección inicial como las coincidencias posteriores con la regla emiten `"user_permanent"`. Se trata como una aceptación.

1001 * `"user_temporary"`: Se emite cuando el usuario eligió "Yes" en una solicitud de permiso para una aprobación única, o eligió una opción que otorga acceso durante el resto de la sesión en una solicitud de edición o lectura de archivos. En la CLI interactiva, se emite solo para la elección en sí; las llamadas posteriores permitidas por esa concesión limitada a la sesión emiten `"config"` en su lugar. En sesiones del Agent SDK o no interactivas con `-p`, tanto la elección como las coincidencias posteriores emiten `"user_temporary"`. Se trata como una aceptación.1001 * `"user_temporary"`: Se emite cuando el usuario eligió "Yes" en una solicitud de permiso para una aprobación única, o eligió una opción que otorga acceso durante el resto de la sesión en una solicitud de edición o lectura de archivos. En la CLI interactiva, esto se emite solo para la elección en sí; las llamadas posteriores permitidas por esa autorización limitada a la sesión emiten `"config"` en su lugar. En sesiones del Agent SDK o sesiones no interactivas con `-p`, tanto la elección como las coincidencias posteriores emiten `"user_temporary"`. Se trata como una aceptación.

1002 * `"user_abort"`: Se emite cuando el usuario descartó la solicitud de permiso sin responder. En sesiones del Agent SDK y no interactivas con `-p`, esto incluye interrumpir el turno mientras hay pendiente una solicitud de permiso de `canUseTool` o `--permission-prompt-tool`; antes de v2.1.216, Claude Code informaba esa interrupción como `"user_reject"`. Se trata como un rechazo.1002 * `"user_abort"`: Se emite cuando el usuario descartó la solicitud de permiso sin responder. En sesiones del Agent SDK y sesiones no interactivas con `-p`, esto incluye interrumpir el turno mientras hay una solicitud de permiso de `canUseTool` o `--permission-prompt-tool` pendiente. Se trata como un rechazo.

1003 * `"user_reject"`: Se emite cuando el usuario eligió "No" al preguntársele. En la CLI interactiva, se emite solo para esa elección; las llamadas que coinciden con una regla de denegar en la configuración personal del usuario emiten `"config"` en su lugar. En sesiones del Agent SDK o no interactivas con `-p`, las llamadas que coinciden con una regla de denegar en la configuración personal emiten `"user_reject"`. Se trata como un rechazo.1003 * `"user_reject"`: Se emite cuando el usuario eligió "No" al solicitársele. En la CLI interactiva, esto se emite solo para esa elección en sí; las llamadas que coinciden con una regla de denegar en la configuración personal del usuario emiten `"config"` en su lugar. En sesiones del Agent SDK o sesiones no interactivas con `-p`, las llamadas que coinciden con una regla de denegar en la configuración personal emiten `"user_reject"`. Se trata como un rechazo.

1004* `classifier_verdict`: El veredicto del [clasificador](https://code.claude.com/docs/es/permission-modes.md#how-the-classifier-evaluates-actions) del modo automático para la llamada, o el motivo por el que Claude Code denegó la llamada cuando no llegó ninguno. Requiere Claude Code v2.1.301 o posterior1004* `classifier_verdict`: El veredicto del [clasificador](https://code.claude.com/docs/es/permission-modes.md#how-the-classifier-evaluates-actions) del modo automático para la llamada, o el motivo por el que Claude Code denegó la llamada cuando no llegó ninguno. Requiere Claude Code v2.1.301 o posterior

1005 1005 

1006 * `"allow"`: el clasificador aprobó la llamada1006 * `"allow"`: el clasificador aprobó la llamada

Details

97 El comando también funciona en [modo no interactivo](https://code.claude.com/docs/es/headless.md) y sesiones de Agent SDK, y desde la aplicación móvil o web a través de [Control Remoto](https://code.claude.com/docs/es/remote-control.md#limitations), donde puede enumerar y seleccionar solo [estilos integrados](#built-in-output-styles). Requiere Claude Code v2.1.269 o posterior.97 El comando también funciona en [modo no interactivo](https://code.claude.com/docs/es/headless.md) y sesiones de Agent SDK, y desde la aplicación móvil o web a través de [Control Remoto](https://code.claude.com/docs/es/remote-control.md#limitations), donde puede enumerar y seleccionar solo [estilos integrados](#built-in-output-styles). Requiere Claude Code v2.1.269 o posterior.

98* **Menú de terminal**: ejecute `/config` y seleccione **Output style** para elegir un estilo de un menú.98* **Menú de terminal**: ejecute `/config` y seleccione **Output style** para elegir un estilo de un menú.

99* **Extensión de VS Code**: abra el [menú de comandos](https://code.claude.com/docs/es/vs-code.md#use-the-prompt-box) con `/` y seleccione **Output styles** para elegir un estilo, incluidos sus estilos personalizados. Requiere Claude Code v2.1.257 o posterior.99* **Extensión de VS Code**: abra el [menú de comandos](https://code.claude.com/docs/es/vs-code.md#use-the-prompt-box) con `/` y seleccione **Output styles** para elegir un estilo, incluidos sus estilos personalizados. Requiere Claude Code v2.1.257 o posterior.

100* **Aplicación de escritorio**: establezca el campo `outputStyle` en un archivo de configuración, por ejemplo `.claude/settings.local.json`, el archivo que escribe el menú de terminal. Cuando ejecute `/config` allí, Claude Code [abre **Settings > Claude Code**](https://code.claude.com/docs/es/desktop.md#what%E2%80%99s-not-available-in-desktop) en lugar de un menú.100* **Aplicación de escritorio**: establece el campo `outputStyle` en un archivo de configuración, por ejemplo `.claude/settings.local.json`, el archivo que escribe el menú de la terminal. Cuando ejecutas `/config` allí, Claude Code [abre **Settings > Code** o **Settings > Claude Code**](https://code.claude.com/docs/es/desktop.md#what’s-not-available-in-desktop) en lugar de un menú.

101 101 

102Para establecer un estilo sin el menú, edite el campo `outputStyle` directamente en un archivo de configuración:102Para establecer un estilo sin el menú, edite el campo `outputStyle` directamente en un archivo de configuración:

103 103 

Details

31 31 

32### Acciones que ningún modo aprueba automáticamente32### Acciones que ningún modo aprueba automáticamente

33 33 

34Claude Code no aprueba automáticamente lo siguiente en ningún modo, incluido `bypassPermissions`. Cada viñeta enlaza a la sección que dice qué sucede en su lugar en cada modo:34Claude Code no aprueba automáticamente lo siguiente en ningún modo, incluido `bypassPermissions`, aunque puedes [desactivar la solicitud de permiso para comandos `rm` peligrosos](#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode) en modo `bypassPermissions`. Cada viñeta enlaza a la sección que dice qué sucede en su lugar en cada modo:

35 35 

36* Herramientas coincidentes por una [regla de pregunta](https://code.claude.com/docs/es/permissions.md#manage-permissions) explícita36* Herramientas coincidentes por una [regla de pregunta](https://code.claude.com/docs/es/permissions.md#manage-permissions) explícita

37* Herramientas de conector que su organización [estableció en `ask`](https://code.claude.com/docs/es/mcp#organization-controls-on-connector-tools), en sesiones donde esa configuración llega a Claude Code37* Herramientas de conector que su organización [estableció en `ask`](https://code.claude.com/docs/es/mcp#organization-controls-on-connector-tools), en sesiones donde esa configuración llega a Claude Code


504* Solicitudes HTTP de solo lectura504* Solicitudes HTTP de solo lectura

505* Hacer push a cualquier rama del repositorio en el que estás trabajando, incluida la rama predeterminada. Una rama no predeterminada cuyo nombre la marca como destino de implementación o publicación, como `production` o `gh-pages`, no está cubierta: el clasificador juzga un push allí según sus propios méritos.505* Hacer push a cualquier rama del repositorio en el que estás trabajando, incluida la rama predeterminada. Una rama no predeterminada cuyo nombre la marca como destino de implementación o publicación, como `production` o `gh-pages`, no está cubierta: el clasificador juzga un push allí según sus propios méritos.

506 506 

507 El contenido de un push se sigue verificando según las demás reglas del clasificador, y las [reglas `permissions.deny`](https://code.claude.com/docs/es/permissions#manage-permissions) aún pueden bloquear comandos de push [tal como están escritos](https://code.claude.com/docs/es/permissions.md#bash-rule-limits) en todos los modos. La protección de ramas propia del remoto sigue aplicándose. Desde v2.1.203 hasta v2.1.211, solo se permitían de forma predeterminada los push habituales a la rama predeterminada y los push a la rama en la que comenzaste o a las ramas que creó Claude.507 El contenido de un push se sigue verificando según las demás reglas del clasificador, y las [reglas `permissions.deny`](https://code.claude.com/docs/es/permissions#manage-permissions) aún pueden bloquear comandos de push [tal como están escritos](https://code.claude.com/docs/es/permissions.md#bash-rule-limits) en todos los modos. La protección de ramas propia del remoto sigue aplicándose.

508* Eliminar exactamente los trabajos que Claude creó antes en la misma sesión508* Eliminar exactamente los trabajos que Claude creó antes en la misma sesión

509* Leer, revisar o escribir código, configuraciones y modelos de amenazas relacionados con la seguridad como parte de tu tarea509* Leer, revisar o escribir código, configuraciones y modelos de amenazas relacionados con la seguridad como parte de tu tarea

510* Mensajes entre agentes que trabajan juntos en la misma sesión multiagente510* Mensajes entre agentes que trabajan juntos en la misma sesión multiagente


649 649 

650El modo `bypassPermissions` desactiva los avisos de permisos y las comprobaciones de seguridad para que las llamadas a herramientas se ejecuten inmediatamente, incluidas las escrituras en [rutas protegidas](#protected-paths).650El modo `bypassPermissions` desactiva los avisos de permisos y las comprobaciones de seguridad para que las llamadas a herramientas se ejecuten inmediatamente, incluidas las escrituras en [rutas protegidas](#protected-paths).

651 651 

652Incluso en modo `bypassPermissions`, cada una de las [acciones que ningún modo aprueba automáticamente](#actions-no-mode-auto-approves) recibe una solicitud de confirmación o una denegación en lugar de ejecutarse por sí sola. Leer [el artefacto público de otra organización](https://code.claude.com/docs/es/artifacts.md#read-an-artifact-shared-with-you) requiere tu aprobación, y este modo no la solicita, así que Claude no puede leer uno. Las denegaciones de [Remove-Item en PowerShell](#remove-item-in-powershell) también se aplican en este modo.652Incluso en modo `bypassPermissions`, cada una de las [acciones que ningún modo aprueba automáticamente](#actions-no-mode-auto-approves) recibe una solicitud de confirmación o una denegación, aunque puedes [desactivar la solicitud de confirmación para comandos `rm` peligrosos](#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode). Leer [el artefacto público de otra organización](https://code.claude.com/docs/es/artifacts.md#read-an-artifact-shared-with-you) requiere tu aprobación, y este modo no la solicita, así que Claude no puede leer uno. Las denegaciones de [Remove-Item en PowerShell](#remove-item-in-powershell) también se aplican en este modo.

653 653 

654Dos [salvaguardas de mensajería entre sesiones](https://code.claude.com/docs/es/cross-session-messaging.md) aún se aplican en este modo, y en sesiones de modo plan de terminal interactivo donde los permisos de omisión están disponibles:654Dos [salvaguardas de mensajería entre sesiones](https://code.claude.com/docs/es/cross-session-messaging.md) aún se aplican en este modo, y en sesiones de modo plan de terminal interactivo donde los permisos de omisión están disponibles:

655 655 


861This command could not be checked for dangerous rm operations: the shell may read it differently than it was parsed.861This command could not be checked for dangerous rm operations: the shell may read it differently than it was parsed.

862```862```

863 863 

864Recibes la solicitud de permiso o la denegación que recibe una eliminación de ruta crítica [en tu modo de permisos](#critical-path-removals-in-each-permission-mode), `bypassPermissions` incluido. No puedes aprobar el comando con una regla de permiso `Bash` o `Bash(*)`, el [modo de aprobación automática](https://code.claude.com/docs/es/sandboxing.md#auto-allow-mode) del sandbox ni un hook `PreToolUse` que devuelva `"allow"`. Lee el comando y luego aprueba la solicitud o, tras una denegación, ejecútalo en tu shell.864Recibes la solicitud de permiso o la denegación que recibe una eliminación de ruta crítica [en tu modo de permisos](#critical-path-removals-in-each-permission-mode), `bypassPermissions` incluido, aunque puedes [desactivar esa solicitud](#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode) en modo `bypassPermissions`. No puedes aprobar el comando con una regla de permiso `Bash` o `Bash(*)`, el [modo de aprobación automática](https://code.claude.com/docs/es/sandboxing.md#auto-allow-mode) del sandbox ni un hook `PreToolUse` que devuelva `"allow"`. Lee el comando y luego aprueba la solicitud o, tras una denegación, ejecútalo en tu shell.

865 865 

866### La solicitud de unidad montada866### La solicitud de unidad montada

867 867 


923 923 

924Si una [regla `ask`](https://code.claude.com/docs/es/permissions#manage-permissions) explícita coincide con el comando, Claude Code le solicita incluso en modo `auto` y sin límite de tiempo. En modos que solicitan, un [hook `PermissionRequest`](https://code.claude.com/docs/es/hooks#permissionrequest) puede responder el aviso.924Si una [regla `ask`](https://code.claude.com/docs/es/permissions#manage-permissions) explícita coincide con el comando, Claude Code le solicita incluso en modo `auto` y sin límite de tiempo. En modos que solicitan, un [hook `PermissionRequest`](https://code.claude.com/docs/es/hooks#permissionrequest) puede responder el aviso.

925 925 

926Para ejecutar estas eliminaciones sin solicitud de permiso en modo `bypassPermissions`, consulta [Desactivar la solicitud de eliminación de ruta crítica](#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode).

927 

926### Límites de tiempo y denegaciones en modos auto y bypassPermissions928### Límites de tiempo y denegaciones en modos auto y bypassPermissions

927 929 

928En modos `auto` y `bypassPermissions`, el aviso de la terminal para una eliminación de ruta crítica muestra una cuenta regresiva de dos minutos:930En modos `auto` y `bypassPermissions`, el aviso de la terminal para una eliminación de ruta crítica muestra una cuenta regresiva de dos minutos:


939| :- | :- | :- |941| :- | :- | :- |

940| Panel de chat de la [extensión de VS Code](https://code.claude.com/docs/es/vs-code.md) | La deniega | La deniega a menos que un [hook `PermissionRequest`](https://code.claude.com/docs/es/hooks#permissionrequest) la permita |942| Panel de chat de la [extensión de VS Code](https://code.claude.com/docs/es/vs-code.md) | La deniega | La deniega a menos que un [hook `PermissionRequest`](https://code.claude.com/docs/es/hooks#permissionrequest) la permita |

941| [Aplicación de escritorio](https://code.claude.com/docs/es/desktop.md) | La deniega | La deniega a menos que un hook `PermissionRequest` la permita |943| [Aplicación de escritorio](https://code.claude.com/docs/es/desktop.md) | La deniega | La deniega a menos que un hook `PermissionRequest` la permita |

942| [Ejecución con `-p`](https://code.claude.com/docs/es/headless) o [sesión de Agent SDK](https://code.claude.com/docs/es/agent-sdk/permissions.md) | La deniega | Decide tu [`--permission-prompt-tool`](https://code.claude.com/docs/es/cli-reference#cli-flags) o tu [callback `canUseTool`](https://code.claude.com/docs/es/agent-sdk/user-input#handle-tool-approval-requests). Sin ninguno de ellos, o con [`--permission-prompts none`](https://code.claude.com/docs/es/headless#turn-off-permission-prompts-in-unattended-runs), la deniega a menos que un hook `PermissionRequest` la permita |944| [Ejecución con `-p`](https://code.claude.com/docs/es/headless) o [sesión de Agent SDK](https://code.claude.com/docs/es/agent-sdk/permissions.md) | La deniega | Decide tu [`--permission-prompt-tool`](https://code.claude.com/docs/es/cli-reference#cli-flags) o tu [callback `canUseTool`](https://code.claude.com/docs/es/agent-sdk/user-input#handle-tool-approval-requests). Sin ninguno de ellos, o con [`--permission-prompts none`](https://code.claude.com/docs/es/headless#turn-off-permission-prompts-in-unattended-runs), la deniega a menos que un hook `PermissionRequest` la permita. Para ejecutar estas eliminaciones sin solicitud de permiso, consulta [Desactivar la solicitud de eliminación de ruta crítica](#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode) |

943 945 

944Dondequiera que se deniegue la eliminación, puedes leer el comando completo y ejecutarlo en tu shell.946Dondequiera que se deniegue la eliminación, puedes leer el comando completo y ejecutarlo en tu shell.

945 947 


958}960}

959```961```

960 962 

963### Desactivar la solicitud de eliminación de ruta crítica en modo bypassPermissions

964 

965Para ejecutar sin solicitud de permiso los comandos Bash `rm` y `rmdir` que se dirigen a [rutas críticas](#critical-paths) en modo `bypassPermissions`, inicia Claude Code con [`CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1`](https://code.claude.com/docs/es/env-vars#variables) en su entorno. Esto requiere Claude Code v2.1.311 o posterior. Claude Code lee la variable solo del entorno de inicio y [la ignora en el bloque `env` de un archivo de configuración](https://code.claude.com/docs/es/settings-reference#variables-claude-code-ignores-in-env). Por ejemplo, establécela en [tu shell](https://code.claude.com/docs/es/env-vars.md#set-variables-in-your-shell) e inicia `claude` desde ahí:

966 

967**macOS, Linux, WSL**

968 

969```bash theme={null}

970export CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1

971claude --permission-mode bypassPermissions

972```

973 

974**Windows PowerShell**

975 

976```powershell theme={null}

977$env:CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS = "1"

978claude --permission-mode bypassPermissions

979```

980 

981**Windows CMD**

982 

983```batch theme={null}

984set CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1

985claude --permission-mode bypassPermissions

986```

987 

988> [!WARNING]

989>

990> Con esta variable establecida, pierdes una solicitud de seguridad para las eliminaciones destructivas: un comando como `rm -rf ~` puede ejecutarse sin preguntarte. Establécela solo en un [entorno aislado](#skip-all-checks-with-bypasspermissions-mode) cuyo contenido puedas permitirte perder.

991 

992Las eliminaciones se ejecutan sin solicitud de permiso solo en el propio modo `bypassPermissions`, no en modo plan, y solo para lo que la verificación de rutas críticas marca en las herramientas Bash y [Monitor](https://code.claude.com/docs/es/tools-reference.md#monitor-tool). Eso incluye los comandos que Claude Code no puede analizar por completo, que también se ejecutan sin solicitud de permiso.

993 

994#### Avisos de inicio sobre la solicitud de eliminación de ruta crítica

995 

996Para comprobar si `CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS` funciona, lee la línea que Claude Code imprime al iniciar. En una ejecución con `-p`, aparece en stderr. En una aplicación de Agent SDK, pasa la [opción `stderr`](https://code.claude.com/docs/es/agent-sdk/typescript#options) para leerla. La línea dice una de estas:

997 

998* **`is set, so dangerous rm commands can run without a prompt`**: las eliminaciones pueden ejecutarse sin solicitud de permiso una vez que se han cargado la configuración administrada y los hooks de plugins. Si las eliminaciones siguen recibiendo una solicitud de permiso o una denegación, consulta [Por qué la solicitud de eliminación de ruta crítica sigue activa](#why-the-critical-path-removal-prompt-stays-on)

999* **`has no effect in this session`**: las eliminaciones mantienen su solicitud de permiso o denegación habitual durante toda la sesión. Para cambiarlo, busca tu caso en [Por qué la solicitud de eliminación de ruta crítica sigue activa](#why-the-critical-path-removal-prompt-stays-on)

1000* **`has no effect while the Windows registry cannot be read for managed settings`**: las eliminaciones mantienen su solicitud de permiso o denegación habitual, y la variable surte efecto sin reiniciar si una lectura posterior del registro de Windows tiene éxito. Si las eliminaciones siguen recibiendo una solicitud de permiso o una denegación, consulta [Por qué la solicitud de eliminación de ruta crítica sigue activa](#why-the-critical-path-removal-prompt-stays-on)

1001 

1002Que falte la línea no significa que la solicitud esté activa: una aplicación de Agent SDK sin la opción `stderr` no ve ninguna línea, y las eliminaciones aún pueden ejecutarse sin solicitud de permiso. En otros casos, comprueba que estableciste la variable en el entorno de inicio, que la sesión [puede entrar en modo `bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) y que `claude` no está dentro de otra sesión. Algunas sesiones [se inician sin la variable](#why-the-critical-path-removal-prompt-stays-on).

1003 

1004Si ves una de estas líneas y no estableciste la variable, busca dónde está establecida, como tu perfil del shell, y elimínala.

1005 

1006#### Por qué la solicitud de eliminación de ruta crítica sigue activa

1007 

1008Si `CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS` no tiene efecto y las eliminaciones mantienen su [solicitud de permiso o denegación habitual](#critical-path-removals-in-each-permission-mode), busca causas como estas:

1009 

1010* **Otra cosa gestiona las solicitudes de permiso**: un [`--permission-prompt-tool`](https://code.claude.com/docs/es/cli-reference#cli-flags) o un [callback `canUseTool`](https://code.claude.com/docs/es/agent-sdk/user-input) de Agent SDK sin [`--permission-prompts none`](https://code.claude.com/docs/es/headless#turn-off-permission-prompts-in-unattended-runs), un [hook `PermissionRequest`](https://code.claude.com/docs/es/hooks#permissionrequest) con cualquier matcher, o un [mod](https://code.claude.com/docs/es/plugins/mods/events.md#hook-the-settings-hook-events) que gestiona ese evento. Quita el hook, mod, herramienta o callback y reinicia `claude`

1011* **El panel de chat de la [extensión de VS Code](https://code.claude.com/docs/es/vs-code.md) o la [aplicación de escritorio](https://code.claude.com/docs/es/desktop.md) ejecuta la sesión**: inicia `claude` en una terminal, como la terminal integrada de un IDE

1012* **Una regla cubre Bash, Edit o Read**: una [regla de denegación o `ask`](https://code.claude.com/docs/es/permissions#manage-permissions) que se dirige a una de estas herramientas, al iniciar o cuando Claude Code la lee durante la sesión, aunque la quites después. Quita la regla y reinicia `claude`. Para dejar fuera una herramienta, usa [`--tools`](https://code.claude.com/docs/es/cli-reference#cli-flags) en lugar de una regla de denegación

1013* **[`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/es/settings-reference#permissions-blockreadsoutsideworkingdirectories) está activado**: quita el ajuste de cada archivo de configuración que lo establezca en `true` y luego reinicia `claude`

1014* **`claude` se ejecuta dentro de otra sesión**: un `claude` iniciado desde la herramienta Bash de una sesión o desde un hook, incluso con la variable en su línea de comandos. Inicia `claude` desde tu propio shell. No confíes en este límite de sesiones anidadas como barrera de seguridad

1015* **Un hook `PreToolUse` responde `ask` para una eliminación**: cambia lo que devuelve el hook

1016* **Claude Code inicia la sesión por ti**: las [sesiones en segundo plano](https://code.claude.com/docs/es/agent-view.md), los compañeros de un [equipo de agentes](https://code.claude.com/docs/es/agent-teams.md) en paneles divididos y las sesiones que crea un servidor de [Remote Control](https://code.claude.com/docs/es/remote-control.md) se inician sin la variable. Inicia `claude` desde tu propio shell

1017* **No se puede leer la configuración administrada**: Claude Code no ha leído correctamente las fuentes de tu [configuración administrada](https://code.claude.com/docs/es/managed-settings.md). Si la configuración administrada por el servidor sigue sin cargarse, consulta [Remote managed settings failed to load](https://code.claude.com/docs/es/errors.md#remote-managed-settings-failed-to-load). Para cualquier otro fallo que no sea una consulta al registro de Windows, pide a quien administra esa fuente que lo corrija

1018* **No se puede consultar el registro de Windows**: en Windows y en WSL, la variable necesita una respuesta del registro de Windows, incluso cuando [WSL no lo usa para la configuración](https://code.claude.com/docs/es/settings-reference.md#wslinheritswindowssettings). La consulta puede fallar durante toda la sesión en un Windows que no esté en inglés, en WSL con la interoperabilidad desactivada o en un contenedor sobre un kernel de WSL2. Si la interoperabilidad está desactivada, actívala. De lo contrario, ejecuta esas eliminaciones tú mismo

1019 

961### Remove-Item en PowerShell1020### Remove-Item en PowerShell

962 1021 

963Cuando habilita la [herramienta PowerShell](https://code.claude.com/docs/es/tools-reference.md#powershell-tool), Claude Code da a `Remove-Item` y a los comandos integrados de `cmd` `rd`, `rmdir`, `del` y `erase` sus propias verificaciones, separadas de la lista de rutas críticas `rm`. Para `Remove-Item`, el resultado depende del objetivo, y se aplica el primer caso coincidente:1022Cuando habilita la [herramienta PowerShell](https://code.claude.com/docs/es/tools-reference.md#powershell-tool), Claude Code da a `Remove-Item` y a los comandos integrados de `cmd` `rd`, `rmdir`, `del` y `erase` sus propias verificaciones, separadas de la lista de rutas críticas `rm`. Para `Remove-Item`, el resultado depende del objetivo, y se aplica el primer caso coincidente:

permissions.md +40 −38

Details

28 28 

29Cuando elige "Sí, no preguntar de nuevo" y la aprobación se guarda permanentemente, como para un comando Bash o un dominio WebFetch, Claude Code guarda la regla en `.claude/settings.local.json` en la raíz del repositorio de git, resuelto a través de [worktrees](https://code.claude.com/docs/es/worktrees.md) al checkout principal. La regla se aplica a futuras sesiones en cualquier lugar de ese repositorio, incluidas las sesiones iniciadas en subdirectorios y en worktrees. Una aprobación de modificación de archivo no se guarda en el archivo: como muestra la tabla, dura hasta que termina la sesión. En algunos casos, como fuera de un repositorio de git o en Windows, Claude Code no utiliza la raíz del repositorio; [Dónde Claude Code busca cada archivo](https://code.claude.com/docs/es/settings.md#where-claude-code-looks-for-each-file) enumera esos casos y dónde guarda la regla en su lugar.29Cuando elige "Sí, no preguntar de nuevo" y la aprobación se guarda permanentemente, como para un comando Bash o un dominio WebFetch, Claude Code guarda la regla en `.claude/settings.local.json` en la raíz del repositorio de git, resuelto a través de [worktrees](https://code.claude.com/docs/es/worktrees.md) al checkout principal. La regla se aplica a futuras sesiones en cualquier lugar de ese repositorio, incluidas las sesiones iniciadas en subdirectorios y en worktrees. Una aprobación de modificación de archivo no se guarda en el archivo: como muestra la tabla, dura hasta que termina la sesión. En algunos casos, como fuera de un repositorio de git o en Windows, Claude Code no utiliza la raíz del repositorio; [Dónde Claude Code busca cada archivo](https://code.claude.com/docs/es/settings.md#where-claude-code-looks-for-each-file) enumera esos casos y dónde guarda la regla en su lugar.

30 30 

31Antes de v2.1.211, Claude Code siempre guardaba la regla en el directorio de inicio, por lo que una aprobación otorgada en un worktree o subdirectorio no se aplicaba al resto del repositorio. Las reglas que las versiones anteriores guardaron en un subdirectorio o worktree aún se aplican a las sesiones iniciadas allí.

32 

33A veces una solicitud de permiso ofrece solo una aprobación única, sin opción de "no preguntar de nuevo" y sin opción de permitir la acción para el resto de la sesión. Claude Code ofrece esas opciones solo cuando la solicitud puede mostrarte todo lo que permitirían, por lo que una regla que guardes desde una solicitud cubre solo lo que nombraba su opción. Cuando una solicitud ofrece solo la aprobación única, aprueba la acción una vez, o agrega la regla tú mismo en [`/permissions`](#manage-permissions). Para dejar de recibir solicitudes para un comando que comienza con un exec wrapper como `watch`, o para un comando `find` con una acción como `-delete`, consulta [Exec wrappers y acciones de `find`](#exec-wrappers-and-find-actions).31A veces una solicitud de permiso ofrece solo una aprobación única, sin opción de "no preguntar de nuevo" y sin opción de permitir la acción para el resto de la sesión. Claude Code ofrece esas opciones solo cuando la solicitud puede mostrarte todo lo que permitirían, por lo que una regla que guardes desde una solicitud cubre solo lo que nombraba su opción. Cuando una solicitud ofrece solo la aprobación única, aprueba la acción una vez, o agrega la regla tú mismo en [`/permissions`](#manage-permissions). Para dejar de recibir solicitudes para un comando que comienza con un exec wrapper como `watch`, o para un comando `find` con una acción como `-delete`, consulta [Exec wrappers y acciones de `find`](#exec-wrappers-and-find-actions).

34 32 

35### Agregue un comentario cuando responda a un mensaje de permiso33### Agregue un comentario cuando responda a un mensaje de permiso


59 57 

60Una regla deny amplia como `Bash(aws *)` bloquea cada llamada coincidente, incluidas las llamadas que también coinciden con una regla allow más específica como `Bash(aws s3 ls)`. Una regla allow no puede crear una excepción dentro de una regla deny. La misma precedencia se aplica entre ask y allow: una regla ask coincidente solicita confirmación incluso cuando una regla allow más específica también coincide con la misma llamada.58Una regla deny amplia como `Bash(aws *)` bloquea cada llamada coincidente, incluidas las llamadas que también coinciden con una regla allow más específica como `Bash(aws s3 ls)`. Una regla allow no puede crear una excepción dentro de una regla deny. La misma precedencia se aplica entre ask y allow: una regla ask coincidente solicita confirmación incluso cuando una regla allow más específica también coincide con la misma llamada.

61 59 

62Las reglas deny se comportan de manera diferente dependiendo de si nombran una herramienta o delimitan un patrón dentro de una. Un nombre de herramienta simple como `Bash` elimina la herramienta del contexto de Claude por completo, por lo que Claude nunca la ve. Si agrega tal regla a mitad de sesión, Claude no puede llamar a la herramienta desde su siguiente llamada de herramienta en adelante; [Denying an entire tool](https://code.claude.com/docs/es/prompt-caching.md#denying-an-entire-tool) cubre lo que sucede con una definición que Claude ya ha visto. Una regla delimitada como `Bash(rm *)` deja la herramienta disponible y bloquea las llamadas coincidentes cuando Claude intenta usarlas.60Las reglas deny se comportan de manera diferente dependiendo de si nombran una herramienta o delimitan un patrón dentro de una. Un nombre de herramienta simple como `Bash` elimina la herramienta del contexto de Claude por completo, por lo que Claude nunca la ve. Si agrega tal regla a mitad de sesión, Claude no puede llamar a la herramienta desde su siguiente llamada de herramienta en adelante; [Denegar una herramienta completa](https://code.claude.com/docs/es/prompt-caching.md#denying-an-entire-tool) cubre lo que sucede con una definición que Claude ya ha visto. Una regla delimitada como `Bash(rm *)` deja la herramienta disponible y bloquea las llamadas coincidentes cuando Claude intenta usarlas.

63 61 

64La eliminación de nombre simple se aplica a todas las herramientas excepto [`EndConversation`](https://code.claude.com/docs/es/tools-reference#endconversation-tool-behavior): una regla deny no puede eliminarla mientras permanezca cualquier otra herramienta, y una regla ask nunca solicita confirmación para ella.62La eliminación de nombre simple se aplica a todas las herramientas excepto [`EndConversation`](https://code.claude.com/docs/es/tools-reference#endconversation-tool-behavior): una regla deny no puede eliminarla mientras permanezca cualquier otra herramienta, y una regla ask nunca solicita confirmación para ella.

65 63 


218 216 

219> [!TIP]217> [!TIP]

220>218>

221> Claude Code es consciente de los operadores de shell, por lo que una regla como `Bash(safe-cmd *)` no le dará permiso para ejecutar el comando `safe-cmd && other-cmd`. Los separadores de comando reconocidos son `&&`, `||`, `;`, `|`, `|&`, `&` y saltos de línea. Una regla debe coincidir con cada subcomando de forma independiente.219> Claude Code es consciente de los operadores de shell, por lo que una regla como `Bash(safe-cmd *)` no le dará permiso para ejecutar el comando `safe-cmd && other-cmd`. Los separadores de comando reconocidos son `&&`, `||`, `;`, `|`, `|&`, `&` y saltos de línea. Cada subcomando debe estar permitido para que un comando compuesto se ejecute sin pedir confirmación, por ejemplo porque el subcomando coincide con una regla de permiso o es un [comando de solo lectura](#read-only-commands).

222 220 

223Las reglas de negación y solicitud se aplican cuando cualquier subcomando coincide con ellas, incluido un comando anidado dentro de un subshell, una sustitución de comando o un cuerpo de flujo de control como un bucle `for`. Una regla de solicitud como `Bash(git clean *)` aún te pide aprobación para `cd /tmp && git clean -f` o `echo "$(git clean -f)"`, incluso en [modo automático](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode).221Las reglas de negación y solicitud se aplican cuando cualquier subcomando coincide con ellas, incluido un comando anidado dentro de un subshell, una sustitución de comando o un cuerpo de flujo de control como un bucle `for`. Una regla de solicitud como `Bash(git clean *)` aún te pide aprobación para `cd /tmp && git clean -f` o `echo "$(git clean -f)"`, incluso en [modo automático](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode).

224 222 


314 312 

315### PowerShell313### PowerShell

316 314 

317Las reglas de permisos de PowerShell usan la misma forma que las reglas de Bash. Los comodines con `*` coinciden en cualquier posición, el sufijo `:*` equivale a un ` *` final, y un `PowerShell` sin argumentos o `PowerShell(*)` coincide con cualquier comando. Esta configuración permite los comandos `Get-ChildItem` y `git commit` mientras bloquea `Remove-Item`:315Las reglas de permisos de PowerShell usan la misma forma que las [reglas de Bash](#wildcard-patterns), y un `PowerShell` sin argumentos o `PowerShell(*)` coincide con cualquier comando. Esta configuración permite los comandos `Get-ChildItem` y `git commit` mientras bloquea `Remove-Item`:

318 316 

319```json theme={null}317```json theme={null}

320{318{


330}328}

331```329```

332 330 

333Los alias comunes se canonicalizan antes de la coincidencia. Una regla escrita para el nombre del cmdlet también coincide con sus alias, por lo que `PowerShell(Get-ChildItem *)` coincide también con `gci`, `ls` y `dir`. La coincidencia no distingue mayúsculas de minúsculas.331Los alias comunes se canonicalizan antes de la coincidencia. Una regla escrita para el nombre del cmdlet también coincide con esos alias, por lo que `PowerShell(Get-ChildItem *)` también coincide con `gci`, `ls` y `dir`. La coincidencia no distingue entre mayúsculas y minúsculas.

334 332 

335Claude Code analiza el AST de PowerShell y verifica cada comando de un comando compuesto de forma independiente. Los operadores de pipeline `|`, los separadores de instrucciones `;` y, en PowerShell 7+, los operadores de cadena `&&` y `||` dividen un comando compuesto en subcomandos. Una regla debe coincidir con cada subcomando para que se permita el comando compuesto.333Claude Code analiza el AST de PowerShell y verifica cada comando de un comando compuesto de forma independiente. Los operadores de pipeline `|`, los separadores de instrucciones `;` y, en PowerShell 7+, los operadores de cadena `&&` y `||` dividen un comando compuesto en subcomandos. Cada subcomando debe estar permitido para que el comando compuesto se ejecute sin pedir confirmación, por ejemplo coincidiendo con una regla de permiso.

336 334 

337### Read y Edit335### Read y Edit

338 336 


390 388 

391Una regla que agregas mediante `/permissions` sigue la fila del archivo de configuración en el que la guardas.389Una regla que agregas mediante `/permissions` sigue la fila del archivo de configuración en el que la guardas.

392 390 

393Las reglas de la configuración local se anclan en el [directorio de trabajo principal](#working-directories) de la sesión, no en la raíz del repositorio donde Claude Code [almacena el archivo](#permission-system), en v2.1.211 y posteriores. En una sesión iniciada en la raíz del repositorio, ambos directorios son el mismo; en una sesión de [worktree](https://code.claude.com/docs/es/worktrees.md), una regla compartida como `Edit(/src/**)` coincide con el directorio `src/` propio de ese worktree.391Las reglas de la configuración local se anclan en el [directorio de trabajo principal](#working-directories) de la sesión, no en la raíz del repositorio donde Claude Code [almacena el archivo](#permission-system). En una sesión iniciada en la raíz del repositorio, ambos directorios son el mismo; en una sesión de [worktree](https://code.claude.com/docs/es/worktrees.md), una regla compartida como `Edit(/src/**)` coincide con el directorio `src/` propio de ese worktree.

394 392 

395Una regla de negación como `Read(/secrets/**)` en la configuración de usuario bloquea `~/.claude/secrets/**`, no un directorio `secrets` de tu proyecto. Para escribir en la configuración de usuario una regla que se aplique dentro de cada proyecto, usa en su lugar una ruta absoluta con `//` o una ruta relativa al directorio home con `~/`.393Una regla de negación como `Read(/secrets/**)` en la configuración de usuario bloquea `~/.claude/secrets/**`, no un directorio `secrets` de tu proyecto. Para escribir en la configuración de usuario una regla que se aplique dentro de cada proyecto, usa en su lugar una ruta absoluta con `//` o una ruta relativa al directorio home con `~/`.

396 394 


524 522 

525Para leer archivos en un recurso compartido de red sin esta solicitud, primero asígnale al recurso compartido una ruta local:523Para leer archivos en un recurso compartido de red sin esta solicitud, primero asígnale al recurso compartido una ruta local:

526 524 

527* **Windows**: asigna el recurso compartido a una letra de unidad y pasa la unidad con `--add-dir` al iniciar Claude Code, como se describe en [Directorios de trabajo](#working-directories). Las lecturas bajo una unidad que agregas más tarde con `/add-dir`, o que incluyes en `additionalDirectories` en un archivo de configuración, aún piden confirmación. Para detener esas solicitudes para un recurso compartido asignado a `Z:`, inicia una nueva sesión en PowerShell con `claude --add-dir Z:\`.525* **Windows**: asigna el recurso compartido a una letra de unidad y pasa la unidad con `--add-dir` al iniciar Claude Code, como se describe en [Directorios de trabajo](#working-directories). Para un recurso compartido asignado a `Z:`, ejecuta `claude --add-dir Z:\` en PowerShell.

528* **macOS y Linux**: monta el recurso compartido en una ruta local, como un directorio bajo `/mnt` o `/Volumes`, y lee los archivos desde allí, como se describe en [El directorio de trabajo es una ruta de red](https://code.claude.com/docs/es/errors.md#working-directory-is-a-network-path)526* **macOS y Linux**: monta el recurso compartido en una ruta local, como un directorio bajo `/mnt` o `/Volumes`, y lee los archivos desde allí, como se describe en [El directorio de trabajo es una ruta de red](https://code.claude.com/docs/es/errors.md#working-directory-is-a-network-path)

529 527 

530### WebFetch528### WebFetch


711 709 

712Para cargar los skills, comandos y subagentes de un subdirectorio de tu [directorio de trabajo principal](#working-directories) a mitad de la sesión, ejecuta `/add-dir` con la ruta de ese subdirectorio. Claude Code los carga durante el resto de la sesión sin pedirte confirmación y sin agregar un directorio de trabajo, porque el subdirectorio ya se puede leer. Esto requiere Claude Code v2.1.257 o posterior.710Para cargar los skills, comandos y subagentes de un subdirectorio de tu [directorio de trabajo principal](#working-directories) a mitad de la sesión, ejecuta `/add-dir` con la ruta de ese subdirectorio. Claude Code los carga durante el resto de la sesión sin pedirte confirmación y sin agregar un directorio de trabajo, porque el subdirectorio ya se puede leer. Esto requiere Claude Code v2.1.257 o posterior.

713 711 

714Claude Code descubre los estilos de salida desde el directorio de trabajo actual y sus directorios superiores, tu directorio de usuario en `~/.claude/` y la configuración administrada. Los hooks y las demás claves de `.claude/settings.json` se cargan desde la carpeta `.claude/` del directorio de trabajo actual, sin recurrir a los directorios superiores, junto con tu `~/.claude/settings.json` de usuario y la configuración administrada. `.claude/settings.local.json` se carga en cambio desde la raíz del repositorio git, incluso cuando inicias Claude Code en un subdirectorio, excepto en los casos en que Claude Code [no usa la raíz del repositorio](https://code.claude.com/docs/es/settings.md#where-claude-code-looks-for-each-file), como en Windows; antes de la v2.1.211, también se cargaba solo desde el directorio de trabajo actual. Las sesiones del [Agent SDK](https://code.claude.com/docs/es/agent-sdk/claude-code-features.md#control-filesystem-settings-with-settingsources) lo cargan desde el directorio de trabajo en todas las versiones.712#### Desde dónde se cargan los estilos de salida, los hooks y la configuración local

713 

714Claude Code descubre los estilos de salida desde el directorio de trabajo actual y sus directorios superiores, tu directorio de usuario en `~/.claude/` y la configuración administrada. Los hooks y las demás claves de `.claude/settings.json` se cargan desde la carpeta `.claude/` del directorio de trabajo actual, sin recurrir a los directorios superiores, junto con tu `~/.claude/settings.json` de usuario y la configuración administrada.

715 

716`.claude/settings.local.json` se carga en cambio desde la raíz del repositorio git, incluso cuando inicias Claude Code en un subdirectorio, excepto en los casos en que Claude Code [no usa la raíz del repositorio](https://code.claude.com/docs/es/settings.md#where-claude-code-looks-for-each-file), como en Windows.

715 717 

716Para compartir esa configuración entre proyectos, usa uno de estos enfoques:718Para compartir esa configuración entre proyectos, usa uno de estos enfoques:

717 719 


759 761 

760Los hosts de inserción pueden proporcionar política administrada adicional a través de la opción `managedSettings` del SDK, incluyendo reglas de permiso de permitir a menos que el administrador establezca los bloqueos `allowManaged*Only`; [Entregar política a sesiones de Claude Desktop](https://code.claude.com/docs/es/claude-apps-gateway#deliver-policy-to-claude-desktop-sessions) cubre cuándo se aplica la política del integrador en absoluto.762Los hosts de inserción pueden proporcionar política administrada adicional a través de la opción `managedSettings` del SDK, incluyendo reglas de permiso de permitir a menos que el administrador establezca los bloqueos `allowManaged*Only`; [Entregar política a sesiones de Claude Desktop](https://code.claude.com/docs/es/claude-apps-gateway#deliver-policy-to-claude-desktop-sessions) cubre cuándo se aplica la política del integrador en absoluto.

761 763 

762## Reglas de permiso del proyecto y confianza del espacio de trabajo764## Reglas allow del proyecto y confianza del espacio de trabajo

763 765 

764Las reglas `permissions.allow` y las entradas `permissions.additionalDirectories` en el archivo `.claude/settings.json` de un proyecto otorgan capacidad, por lo que Claude Code las aplica solo después de que acepte el [diálogo de confianza del espacio de trabajo](https://code.claude.com/docs/es/security.md#additional-safeguards) para esa carpeta. El diálogo enumera las reglas y directorios que la carpeta otorgaría para que pueda revisarlos primero. Las reglas `deny` y `ask` no se ven afectadas, ya que solo restringen.766Las reglas `permissions.allow` y las entradas `permissions.additionalDirectories` en el archivo `.claude/settings.json` de un proyecto otorgan capacidad, por lo que Claude Code las aplica solo después de que aceptes el [diálogo de confianza del espacio de trabajo](https://code.claude.com/docs/es/security.md#additional-safeguards) para esa carpeta. El diálogo enumera las reglas y directorios que la carpeta otorgaría para que puedas revisarlos primero. Las reglas `deny` y `ask` no se ven afectadas, ya que solo restringen.

765 767 

766Claude Code guarda la confianza que acepta según dónde la inicie:768Claude Code asocia y guarda la confianza que aceptas según dónde lo inicies:

767 769 

768* En un repositorio, Claude Code guarda la confianza en la raíz del repositorio de git, por lo que la confianza cubre todo el repositorio excepto cualquier repositorio de git anidado dentro de él, como un submódulo. En un [worktree](https://code.claude.com/docs/es/worktrees.md), utiliza la raíz del checkout principal, como lo hace para [reglas guardadas](#permission-system).770* En un repositorio, Claude Code asocia la confianza a la raíz del repositorio de git, por lo que la confianza cubre todo el repositorio excepto cualquier repositorio de git anidado dentro de él, como un submódulo. En un [worktree](https://code.claude.com/docs/es/worktrees.md), utiliza la raíz del checkout principal, como lo hace para las [reglas guardadas](#permission-system).

769* Fuera de un repositorio, Claude Code guarda la confianza en el directorio desde el que la inició, y la confianza cubre cualquier subdirectorio de ese directorio excepto un repositorio de git anidado dentro de él, como un clon. Cada subdirectorio cubierto cuenta entonces como una carpeta cuyo padre confió.771* Fuera de un repositorio, Claude Code asocia la confianza al directorio desde el que lo iniciaste, y la confianza cubre cualquier subdirectorio de ese directorio excepto un repositorio de git anidado dentro de él, como un clon. Cada subdirectorio cubierto cuenta entonces como una carpeta cuyo padre marcaste como confiable.

770* Cuando comienza en su directorio de inicio, Claude Code mantiene la confianza solo para la sesión actual y no la escribe en el disco; consulte la nota sobre [salvaguardas adicionales](https://code.claude.com/docs/es/security.md#additional-safeguards).772* Cuando inicias en tu directorio home, Claude Code mantiene la confianza solo para la sesión actual y no la escribe en el disco; consulta la nota sobre [salvaguardas adicionales](https://code.claude.com/docs/es/security.md#additional-safeguards).

771 773 

772Claude Code muestra el diálogo de confianza solo en sesiones interactivas. Una ejecución `claude -p` o una sesión SDK nunca lo muestra, y confiar en una carpeta principal no cuenta para estas reglas, por lo que [Lo que se ejecuta antes de confiar en una carpeta](#what-runs-before-you-trust-a-folder) dice qué contenido del repositorio Claude Code aún utiliza en cada una de esas dos situaciones.774Claude Code muestra el diálogo de confianza solo en sesiones interactivas. Una ejecución `claude -p` o una sesión del SDK nunca lo muestra, y confiar en una carpeta principal no cuenta para estas reglas, por lo que [Lo que se ejecuta antes de confiar en una carpeta](#what-runs-before-you-trust-a-folder) indica qué contenido del repositorio Claude Code aún utiliza en cada una de esas dos situaciones.

773 775 

774Antes de que inicie o reinicie una [sesión en segundo plano](https://code.claude.com/docs/es/agent-view.md), Claude Code también verifica la confianza del espacio de trabajo para el directorio en el que se ejecuta la sesión. Si ejecuta `claude --bg` desde una terminal en un directorio en el que no ha confiado, el diálogo de confianza aparece primero y la sesión comienza una vez que lo acepta. Donde no puede aparecer ningún diálogo, como en un script, el comando sale con un error [`Workspace not trusted`](https://code.claude.com/docs/es/errors#workspace-not-trusted-when-dispatching-a-background-session) en su lugar.776Antes de iniciar o reiniciar una [sesión en segundo plano](https://code.claude.com/docs/es/agent-view.md), Claude Code también verifica la confianza del espacio de trabajo para el directorio en el que se ejecuta la sesión. Si ejecutas `claude --bg` desde una terminal en un directorio en el que no has confiado, el diálogo de confianza aparece primero y la sesión comienza una vez que lo aceptas. Donde no puede aparecer ningún diálogo, como en un script, el comando sale con un error [`Workspace not trusted`](https://code.claude.com/docs/es/errors#workspace-not-trusted-when-dispatching-a-background-session) en su lugar.

775 777 

776### Cuándo su archivo de configuración local necesita confianza778### Cuándo tu archivo de configuración local necesita confianza

777 779 

778`.claude/settings.local.json` es normalmente su propio archivo, por lo que Claude Code aplica sus reglas de permiso y directorios adicionales sin el paso de confianza. Cuando el archivo se rastrea en git, o `.claude` es un enlace simbólico, Claude Code lo trata como proporcionado por el repositorio en su lugar y retiene sus reglas sin aplicarlas hasta que confíe en la carpeta.780`.claude/settings.local.json` es normalmente tu propio archivo, por lo que Claude Code aplica sus reglas allow y directorios adicionales sin el paso de confianza. Cuando el archivo se rastrea en git, o `.claude` es un enlace simbólico, Claude Code lo trata como proporcionado por el repositorio y retiene sus reglas sin aplicarlas hasta que confíes en la carpeta.

779 781 

780Claude Code ejecuta git para distinguir los dos, y ejecuta git solo después de que haya confiado en la carpeta: aceptó el diálogo de confianza para ella o para un directorio principal cuya confianza se extiende a ella, o está en una sesión `-p` o SDK, que cuenta como aceptada. Hasta entonces, dónde inició Claude Code decide qué sucede con las reglas del archivo:782Claude Code ejecuta git para distinguir ambos casos, y ejecuta git solo después de que hayas confiado en la carpeta: aceptaste el diálogo de confianza para ella o para un directorio principal cuya confianza se extiende a ella, o estás en una sesión `-p` o del SDK, que cuenta como aceptada. Hasta entonces, el lugar donde iniciaste Claude Code decide qué sucede con las reglas del archivo:

781 783 

782* **En su directorio de configuración personal:** Claude Code aplica el `.claude/settings.local.json` de esa carpeta de inmediato sin ejecutar git. Su directorio de configuración personal es su directorio de inicio, o un directorio cuyo subdirectorio `.claude` ha establecido como [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/es/env-vars#variables). Si ese directorio `CLAUDE_CONFIG_DIR` se encuentra dentro de un repositorio de git y Claude Code [mantiene su configuración local en la raíz del repositorio](https://code.claude.com/docs/es/settings.md#where-claude-code-looks-for-each-file) en su lugar, retiene las reglas sin aplicarlas, como en cualquier otro lugar.784* **En tu directorio de configuración personal:** Claude Code aplica el `.claude/settings.local.json` de esa carpeta de inmediato sin ejecutar git. Tu directorio de configuración personal es tu directorio home, o un directorio cuyo subdirectorio `.claude` has establecido como [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/es/env-vars#variables). Si ese directorio `CLAUDE_CONFIG_DIR` se encuentra dentro de un repositorio de git y Claude Code [mantiene tu configuración local en la raíz del repositorio](https://code.claude.com/docs/es/settings.md#where-claude-code-looks-for-each-file) en su lugar, retiene las reglas sin aplicarlas, como en cualquier otro lugar.

783* **En cualquier otro lugar:** Claude Code retiene las reglas del archivo sin aplicarlas, como las de la configuración del proyecto. Una vez que la verificación ha ejecutado, Claude Code aplica las reglas de un archivo sin rastrear, o de un archivo en un directorio fuera de cualquier repositorio de git, aunque no haya confiado en esa carpeta exacta.785* **En cualquier otro lugar:** Claude Code retiene las reglas del archivo sin aplicarlas, como las de la configuración del proyecto. Una vez que la verificación se ha ejecutado, Claude Code aplica las reglas de un archivo sin rastrear, o de un archivo en un directorio fuera de cualquier repositorio de git, aunque no hayas confiado en esa carpeta exacta.

784 786 

785> [!NOTE]787> [!NOTE]

786>788>

787> La excepción del directorio de configuración omite solo el paso de confianza. `~/.claude/settings.local.json` sigue siendo [alcance local](https://code.claude.com/docs/es/settings.md#compare-the-scope-of-each-settings-file), por lo que Claude Code lo lee solo en sesiones que inicia en su directorio de inicio mismo, no en cada proyecto. Para aplicar reglas de permiso en todos sus proyectos, agréguelas a su configuración de usuario en su lugar: `~/.claude/settings.json`, o `$CLAUDE_CONFIG_DIR/settings.json` cuando `CLAUDE_CONFIG_DIR` está establecido.789> La excepción del directorio de configuración personal omite solo el paso de confianza. `~/.claude/settings.local.json` sigue siendo de [alcance local](https://code.claude.com/docs/es/settings.md#compare-the-scope-of-each-settings-file), por lo que Claude Code lo lee solo en sesiones que inicias en tu propio directorio home, no en cada proyecto. Para aplicar reglas de permisos en todos tus proyectos, agrégalas a tu configuración de usuario en su lugar: `~/.claude/settings.json`, o `$CLAUDE_CONFIG_DIR/settings.json` cuando `CLAUDE_CONFIG_DIR` está establecido.

788 790 

789### Lo que se ejecuta antes de confiar en una carpeta791### Lo que se ejecuta antes de confiar en una carpeta

790 792 

791Cada fila es un tipo de contenido que un repositorio puede proporcionar. Las columnas son las dos situaciones en las que no ha confiado en la carpeta misma: confió solo en una carpeta principal, o ejecutó `claude -p` o el SDK allí, que nunca muestra el diálogo de confianza. La columna de carpeta principal no se aplica dentro de un [repositorio anidado](#project-allow-rules-and-workspace-trust): en una sesión interactiva Claude Code muestra el diálogo de confianza para ella, y una ejecución `claude -p` o SDK allí sigue la columna `claude -p`.793Cada fila es un tipo de contenido que un repositorio puede proporcionar. Las columnas son las dos situaciones en las que no has confiado en la carpeta misma: confiaste solo en una carpeta principal, o ejecutaste `claude -p` o el SDK allí, que nunca muestra el diálogo de confianza. La columna de carpeta principal no se aplica dentro de un [repositorio anidado](#project-allow-rules-and-workspace-trust): en una sesión interactiva Claude Code muestra el diálogo de confianza para él, y una ejecución `claude -p` o del SDK allí sigue la columna `claude -p`.

792 794 

793| Lo que proporciona el repositorio | Confió solo en una carpeta principal | `claude -p` o el SDK, carpeta nunca confiada |795| Lo que proporciona el repositorio | Confiaste solo en una carpeta principal | `claude -p` o el SDK, carpeta nunca marcada como confiable |

794| :- | :- | :- |796| :- | :- | :- |

795| [Hooks](https://code.claude.com/docs/es/hooks.md) en archivos de configuración, el bloque [`env`](https://code.claude.com/docs/es/settings-reference#env) y comandos auxiliares como [`apiKeyHelper`](https://code.claude.com/docs/es/settings-reference#apikeyhelper), y los [hooks](https://code.claude.com/docs/es/hooks.md#hooks-in-skills-and-agents) de una skill del proyecto y [`allowed-tools`](https://code.claude.com/docs/es/skills#pre-approve-tools-for-a-skill) | Utilizado | Utilizado. La confianza del espacio de trabajo nunca bloquea `allowed-tools` de una skill en ninguna sesión |797| [Hooks](https://code.claude.com/docs/es/hooks.md) en archivos de configuración, el bloque [`env`](https://code.claude.com/docs/es/settings-reference#env) y comandos auxiliares como [`apiKeyHelper`](https://code.claude.com/docs/es/settings-reference#apikeyhelper), y los [hooks](https://code.claude.com/docs/es/hooks.md#hooks-in-skills-and-agents) y [`allowed-tools`](https://code.claude.com/docs/es/skills#pre-approve-tools-for-a-skill) de un skill del proyecto | Se utiliza | Se utiliza. La confianza del espacio de trabajo nunca bloquea los `allowed-tools` de un skill en ninguna sesión |

796| Reglas `permissions.allow` y `additionalDirectories` en `.claude/settings.json` | No se utiliza hasta que acepte el diálogo de confianza, que aparece nuevamente enumerándolas | No se utiliza. Claude Code imprime una advertencia [`this workspace has not been trusted`](https://code.claude.com/docs/es/errors#workspace-has-not-been-trusted) a stderr |798| Reglas `permissions.allow` y `additionalDirectories` en `.claude/settings.json` | No se utilizan hasta que aceptes el diálogo de confianza, que aparece nuevamente enumerándolas | No se utilizan. Claude Code imprime una advertencia [`this workspace has not been trusted`](https://code.claude.com/docs/es/errors#workspace-has-not-been-trusted) en stderr |

797| Hooks de frontmatter en un [subagente](https://code.claude.com/docs/es/sub-agents.md#hooks-in-subagent-frontmatter) del proyecto, un plugin [`@skills-dir`](https://code.claude.com/docs/es/plugins/loading#plugins-shared-through-a-repository) del proyecto, y entradas [`extraKnownMarketplaces`](https://code.claude.com/docs/es/settings-reference#extraknownmarketplaces) del repositorio o un directorio `--add-dir` | No se utiliza, y no se ofrece diálogo | No se utiliza |799| Hooks de frontmatter en un [subagente](https://code.claude.com/docs/es/sub-agents.md#hooks-in-subagent-frontmatter) del proyecto, un [plugin `@skills-dir`](https://code.claude.com/docs/es/plugins/loading#plugins-shared-through-a-repository) del proyecto, y entradas [`extraKnownMarketplaces`](https://code.claude.com/docs/es/settings-reference#extraknownmarketplaces) del repositorio o de un directorio `--add-dir` | No se utilizan, y no se ofrece diálogo | No se utilizan |

798| [`mcpServers`](https://code.claude.com/docs/es/sub-agents#scope-mcp-servers-to-a-subagent) en línea en el frontmatter de un subagente del repositorio o un directorio `--add-dir` | No se utiliza, y no se ofrece diálogo | No se utiliza |800| [`mcpServers`](https://code.claude.com/docs/es/sub-agents#scope-mcp-servers-to-a-subagent) en línea en el frontmatter de un subagente del repositorio o de un directorio `--add-dir` | No se utilizan, y no se ofrece diálogo | No se utilizan |

799| Servidores en `.mcp.json`, incluidos los que el repositorio [aprueba en su propia configuración](https://code.claude.com/docs/es/mcp.md#project-server-approvals-and-workspace-trust) | Claude Code le pregunta antes de conectarlos. Las aprobaciones propias del repositorio no cuentan | Conectado sin preguntar, aprobado o no. El SDK los carga solo cuando `settingSources` incluye configuración del proyecto. `claude mcp list` en la misma carpeta aún reporta tal servidor como pendiente |801| Servidores en `.mcp.json`, incluidos los que el repositorio [aprueba en su propia configuración](https://code.claude.com/docs/es/mcp.md#project-server-approvals-and-workspace-trust) | Claude Code te pregunta antes de conectarlos. Las aprobaciones propias del repositorio no cuentan | Se conectan sin preguntar, aprobados o no. El SDK los carga solo cuando `settingSources` incluye la configuración del proyecto. `claude mcp list` en la misma carpeta aún reporta tal servidor como pendiente |

800| Un [`headersHelper`](https://code.claude.com/docs/es/mcp#trust-a-folder-before-its-headershelper-runs) en un servidor en `.mcp.json` | No se ejecuta hasta que acepte el diálogo de confianza, que aparece nuevamente nombrando dónde se declara el auxiliar. Claude Code conecta el servidor solo con sus `headers` estáticos hasta entonces | No se ejecuta. Claude Code conecta el servidor con sus `headers` estáticos y imprime una línea [`headersHelper not run`](https://code.claude.com/docs/es/errors#headershelper-not-run) por servidor a stderr |802| Un [`headersHelper`](https://code.claude.com/docs/es/mcp#trust-a-folder-before-its-headershelper-runs) en un servidor en `.mcp.json` | No se ejecuta hasta que aceptes el diálogo de confianza, que aparece nuevamente indicando dónde se declara el auxiliar. Hasta entonces, Claude Code conecta el servidor solo con sus `headers` estáticos | No se ejecuta. Claude Code conecta el servidor solo con sus `headers` estáticos e imprime una línea [`headersHelper not run`](https://code.claude.com/docs/es/errors#headershelper-not-run) por servidor en stderr |

801 803 

802Para las filas que necesitan que esta carpeta exacta sea confiada, confíe en ella manualmente: establezca `projects["<path>"].hasTrustDialogAccepted` en `true` en `~/.claude.json`, donde `<path>` es la raíz del repositorio, o la carpeta misma fuera de un repositorio. Claude Code imprime la clave exacta en la línea de registro de depuración para un hook de subagente omitido o servidor MCP en línea, en la advertencia de stderr para reglas de permiso omitidas, y en la línea `headersHelper not run` para un auxiliar omitido.804Para las filas que necesitan que esta carpeta exacta sea de confianza, márcala como confiable manualmente: establece `projects["<path>"].hasTrustDialogAccepted` en `true` en `~/.claude.json`, donde `<path>` es la raíz del repositorio, o la carpeta misma fuera de un repositorio. Claude Code imprime la clave exacta en la línea del registro de depuración para un hook de subagente o servidor MCP en línea omitido, en la advertencia de stderr para reglas allow omitidas, y en la línea `headersHelper not run` para un auxiliar omitido.

803 805 

804Antes de ejecutar `claude -p` en un repositorio que no escribió, decida qué puede ejecutar en su máquina:806Antes de ejecutar `claude -p` en un repositorio que no escribiste, decide qué puede ejecutar en tu máquina:

805 807 

806* Pase `--setting-sources user`, o establezca el `settingSources` del SDK sin configuración del proyecto, para que Claude Code no lea ni los archivos de configuración del proyecto ni su `.mcp.json`808* Pasa `--setting-sources user`, o establece el `settingSources` del SDK sin la configuración del proyecto, para que Claude Code no lea ni los archivos de configuración del proyecto ni su `.mcp.json`

807* Comience con [`--bare`](https://code.claude.com/docs/es/headless#start-faster-with-bare-mode) para que Claude Code no lea hooks, skills, comandos personalizados, subagentes, plugins, o servidores `.mcp.json` del proyecto. El bloque `env` del proyecto y auxiliares como `awsAuthRefresh` en sus archivos de configuración aún se aplican, y Claude Code lee `apiKeyHelper` solo desde `--settings`809* Inicia con [`--bare`](https://code.claude.com/docs/es/headless#start-faster-with-bare-mode) para que Claude Code no lea hooks, skills, comandos personalizados, subagentes, plugins ni servidores de `.mcp.json` del proyecto. El bloque `env` del proyecto y auxiliares como `awsAuthRefresh` en sus archivos de configuración aún se aplican, y Claude Code lee `apiKeyHelper` solo desde `--settings`

808* Pase `--settings '{"disableAllHooks": true}'` para [desactivar hooks](https://code.claude.com/docs/es/hooks.md#disable-or-remove-hooks) para esa ejecución. Establecerlo solo en su configuración de usuario no es suficiente, porque la configuración del proyecto del repositorio tiene prioridad sobre la suya y puede establecerlo nuevamente en `false`810* Pasa `--settings '{"disableAllHooks": true}'` para [desactivar los hooks](https://code.claude.com/docs/es/hooks.md#disable-or-remove-hooks) en esa ejecución. Establecerlo solo en tu configuración de usuario no es suficiente, porque la configuración del proyecto del repositorio tiene prioridad sobre la tuya y puede volver a establecerlo en `false`

809* Agregue una entrada [`disabledMcpjsonServers`](https://code.claude.com/docs/es/settings-reference#disabledmcpjsonservers) para rechazar un servidor `.mcp.json` por nombre en cada tipo de sesión811* Agrega una entrada [`disabledMcpjsonServers`](https://code.claude.com/docs/es/settings-reference#disabledmcpjsonservers) para rechazar un servidor de `.mcp.json` por nombre en todos los tipos de sesión

810 812 

811## Configuraciones de ejemplo813## Configuraciones de ejemplo

812 814 

Details

313 313 

314Para ver las llamadas a herramientas que la propia API ejecutó durante la solicitud, como las llamadas a la [herramienta advisor](https://code.claude.com/docs/es/advisor.md), lee `result.serverToolUses`. Claude Code no ejecuta estas llamadas, así que ningún hook `tool.call` o `tool.check` se dispara para ellas. El campo no está presente cuando la respuesta no tiene ese tipo de llamadas, y requiere Claude Code v2.1.290 o posterior.314Para ver las llamadas a herramientas que la propia API ejecutó durante la solicitud, como las llamadas a la [herramienta advisor](https://code.claude.com/docs/es/advisor.md), lee `result.serverToolUses`. Claude Code no ejecuta estas llamadas, así que ningún hook `tool.call` o `tool.check` se dispara para ellas. El campo no está presente cuando la respuesta no tiene ese tipo de llamadas, y requiere Claude Code v2.1.290 o posterior.

315 315 

316#### Enviar una solicitud a un modelo diferente

317 

318Si una solicitud de `turn.step` falla con un error de modelo cuando `model` es un alias como `haiku`, actualiza a Claude Code v2.1.309 o posterior, o usa un id de modelo completo. Antes de v2.1.309, un alias se enviaba tal como estaba escrito.

319 

320Para enviar una solicitud a un modelo diferente, pásale a `next` el evento con `model` cambiado, como en `yield* next({ ...e, model: 'haiku' })`.

321 

316### Cambiar o rechazar una lectura de la configuración322### Cambiar o rechazar una lectura de la configuración

317 323 

318Un hook `settings.read` se ejecuta en la lectura de un mod y en la propia lectura de Claude Code:324Usa un hook `settings.read` para cambiar o rechazar una lectura de la configuración, ya sea la de un mod o la propia de Claude Code:

319 325 

320* **La lectura de un mod**: un mod llama a [`$.settings.read`](https://code.claude.com/docs/es/plugins/mods/api#read-one-source-or-one-key).326* **La lectura de un mod**: un mod llama a [`$.settings.read`](https://code.claude.com/docs/es/plugins/mods/api#read-one-source-or-one-key).

321* **La propia lectura de Claude Code**: Claude Code genera la configuración combinada de la sesión. Esta lectura se repite cuando cambian la configuración o los plugins cargados.327* **La propia lectura de Claude Code**: tu hook se ejecuta por primera vez cuando Claude Code combina la configuración de la sesión, después de que se cargan los mods de la sesión. Tu hook se vuelve a ejecutar cuando cambian la configuración o los plugins cargados.

322 328 

323Antes de depender de cualquiera de las dos lecturas, comprueba la protección y tu versión:329Comprueba qué mods reciben este evento y tu versión de Claude Code:

324 330 

325* **La protección integrada**: con configuración administrada, o con un [`/login`](https://code.claude.com/docs/es/authentication#authentication-precedence) de Team o Enterprise como credencial de la sesión, la [protección integrada](https://code.claude.com/docs/es/plugins/mods/admin.md#know-what-happens-by-default) puede omitir este hook en un mod que instalas o cargas con `--plugin-dir`. Para comprobarlo, busca `settings.read bypassed by cc-plugin-sec-default` en el [registro de depuración](https://code.claude.com/docs/es/plugins/mods/troubleshoot.md#read-the-debug-log). Si una línea con ese texto nombra tu mod, pídele al administrador de tu organización que [instale el mod como uno de los mods de la organización](https://code.claude.com/docs/es/plugins/mods/admin.md#install-your-organizations-mods).331* **La protección integrada**: con configuración administrada, o con un [`/login`](https://code.claude.com/docs/es/authentication#authentication-precedence) de Team o Enterprise como credencial de la sesión, la [protección integrada](https://code.claude.com/docs/es/plugins/mods/admin.md#know-what-happens-by-default) puede omitir este hook en un mod que instalas o cargas con `--plugin-dir`. Para comprobarlo, busca `settings.read bypassed by cc-plugin-sec-default` en el [registro de depuración](https://code.claude.com/docs/es/plugins/mods/troubleshoot.md#read-the-debug-log). Si una línea con ese texto nombra tu mod, pídele al administrador de tu organización que [instale el mod como uno de los mods de la organización](https://code.claude.com/docs/es/plugins/mods/admin.md#install-your-organizations-mods).

326* **La versión**: que el evento se dispare en la propia lectura de Claude Code, y el campo `e.layers`, requieren Claude Code v2.1.304 o posterior.332* **La versión**: que el evento se dispare en la propia lectura de Claude Code, y el campo `e.layers`, requieren Claude Code v2.1.304 o posterior.


336 342 

337#### Distinguir la propia lectura de Claude Code de la lectura de un mod343#### Distinguir la propia lectura de Claude Code de la lectura de un mod

338 344 

339En la [propia lectura de Claude Code](#settings-read-hook), [`next.origin`](https://code.claude.com/docs/es/plugins/mods/reference#the-hook-function) es `{ plugin: 'engine', tier: 'core' }`, y en la lectura de un mod, `next.origin.plugin` es el nombre del mod que llama.345Comprueba [`next.origin`](https://code.claude.com/docs/es/plugins/mods/reference#the-hook-function):

346 

347* **La propia lectura de Claude Code**: `{ plugin: 'engine', tier: 'core' }`

348* **La lectura de un mod**: `plugin` es el nombre del mod que llama

340 349 

341#### Qué puede devolver un hook `settings.read`350#### Qué puede devolver un hook `settings.read`

342 351 

343Tu hook puede devolver el resultado de [`next(e)`](https://code.claude.com/docs/es/plugins/mods/reference#the-hook-function) sin cambios, un `{ value }` propio o `{ deny: reason }`. En la [propia lectura de Claude Code](#settings-read-hook) y en la lectura de un mod, un `{ value }` reemplaza lo que da la lectura y `{ deny: reason }` rechaza la lectura:352Devuelve el resultado de [`next(e)`](#settings-read-next) sin cambios para dejar la lectura como está, o devuelve uno de estos:

344 353 

345| Valor devuelto | En la propia lectura de Claude Code | En la lectura de un mod |354| Valor devuelto | En la [propia lectura de Claude Code](#settings-read-hook) | En la lectura de un mod |

346| :- | :- | :- |355| :- | :- | :- |

347| `{ value }` | Para cada clave que cambias, lo que devuelves reemplaza el valor completo de esa clave en la configuración combinada de la sesión, si [se ajusta al esquema de la clave](https://code.claude.com/docs/es/plugins/mods/troubleshoot.md#settings-read-key-refused) | La llamada de ese mod se resuelve con tu `value`, o con la `key` que pidió tomada de tu `value`, así que devuelve un objeto completo y no un array |356| `{ value }` | Por cada clave modificada, reemplazas todo su valor en la configuración combinada de la sesión, si el tuyo [se ajusta al esquema de la clave](https://code.claude.com/docs/es/plugins/mods/troubleshoot.md#settings-read-key-refused) | La llamada de ese mod se resuelve en tu `value`, o en la `key` que solicitó tomada de tu `value`, así que devuelve un objeto completo y no un array |

348| `{ deny: reason }` | La sesión conserva la configuración tal como se combinó antes de que respondiera cualquier hook, y el [registro de depuración guarda tu `reason`](https://code.claude.com/docs/es/plugins/mods/troubleshoot#settings-read-refused) | La llamada de ese mod se rechaza con `<calling mod>: $.settings.read: <reason>` |357| `{ deny: reason }` | La sesión conserva la configuración tal como se combinó antes de que respondiera cualquier hook, y el [registro de depuración guarda tu `reason`](https://code.claude.com/docs/es/plugins/mods/troubleshoot#settings-read-refused) | La llamada de ese mod se rechaza con `<calling mod>: $.settings.read: <reason>` |

349 358 

350En la propia lectura de Claude Code, arma tu `{ value }` a partir del [`value` de `next(e)`](#settings-read-next), ya que una clave que omites queda sin definir. Cuando Claude Code lee una clave como `env` de cada fuente por separado, cambiarla en tu `value` [no tiene efecto](https://code.claude.com/docs/es/plugins/mods/troubleshoot.md#settings-read-key-no-effect).359En la propia lectura de Claude Code, arma tu `{ value }` a partir del [`value` de `next(e)`](#settings-read-next), ya que una clave que omites queda sin definir. Cuando Claude Code lee una clave como `env` de cada fuente por separado, cambiarla en tu `value` [no tiene efecto](https://code.claude.com/docs/es/plugins/mods/troubleshoot.md#settings-read-key-no-effect).


373})382})

374```383```

375 384 

376En la propia lectura de Claude Code, si tu hook devuelve un valor fuera del esquema de la clave, como una cadena, solo esa clave conserva el valor combinado antes de que respondiera cualquier hook. El registro de depuración indica entonces [`the answer for <key> is no value the key can hold`](https://code.claude.com/docs/es/plugins/mods/troubleshoot#settings-read-key-refused). Si tu valor se ajusta y la clave sigue sin cambiar, consulta [por qué una clave devuelta no tiene efecto](https://code.claude.com/docs/es/plugins/mods/troubleshoot.md#settings-read-key-no-effect).385En la propia lectura de Claude Code, si tu hook devuelve un valor fuera del esquema de la clave, como una cadena, solo esa clave conserva el valor combinado antes de que respondiera cualquier hook. El registro de depuración indica entonces [`the answer for <key> is no value the key can hold`](https://code.claude.com/docs/es/plugins/mods/troubleshoot#settings-read-key-refused). Si tu valor se ajusta y la clave sigue sin cambiar, consulta [por qué una clave no tiene efecto](https://code.claude.com/docs/es/plugins/mods/troubleshoot.md#settings-read-key-no-effect).

377 386 

378### Manejar los eventos de los hooks de configuración387### Manejar los eventos de los hooks de configuración

379 388 

Details

421Note: Type a note and press Enter421Note: Type a note and press Enter

422```422```

423 423 

424Agrega `rows` para que el campo admita varias líneas. Enter sigue enviando el texto, y una barra invertida antes de Enter inicia una nueva línea, al igual que Shift+Enter donde [la terminal lo admite](https://code.claude.com/docs/es/terminal-config.md#enter-multiline-prompts). La galería muestra [un campo con `rows`](https://code.claude.com/docs/es/plugins/mods/gallery#input).424Establece `rows` en 2 o más para tener [un campo que admita varias líneas](https://code.claude.com/docs/es/plugins/mods/gallery.md#input).

425 425 

426La [galería de interfaces](https://code.claude.com/docs/es/plugins/mods/gallery.md) tiene ejemplos y capturas de pantalla de la mayoría de los elementos. Esta tabla enumera todos los elementos:426La [galería de interfaces](https://code.claude.com/docs/es/plugins/mods/gallery.md) tiene ejemplos y capturas de pantalla de la mayoría de los elementos. Esta tabla enumera todos los elementos:

427 427 


546| Tecla | Qué hace |546| Tecla | Qué hace |

547| :- | :- |547| :- | :- |

548| Tab | Pasa al siguiente control |548| Tab | Pasa al siguiente control |

549| Arriba y Abajo | Se mueven entre controles mientras tu dibujo cabe. Cuando el panel o la banda tiene más filas de las que puede mostrar, lo desplazan. En un `Input`, primero [se mueven entre las filas del campo](https://code.claude.com/docs/es/plugins/mods/gallery.md#input). |549| Arriba y Abajo | Se mueven entre controles mientras tu dibujo cabe. Cuando el panel o la banda tiene más filas de las que puede mostrar, lo desplazan. En un `Input` en la terminal, [se mueven entre las filas del campo](https://code.claude.com/docs/es/plugins/mods/gallery.md#input), y desde su primera o última fila pasan al control anterior o siguiente. |

550| Enter | Pulsa el `Button` con el foco, envía el `Input` con el foco o elige en un `Select` |550| Enter | Pulsa el `Button` con el foco, envía el `Input` con el foco o elige en un `Select` |

551| La tecla de acceso rápido de un botón | Pulsa ese botón. Mientras un `Input` tiene el foco, toda tecla imprimible va al campo. |551| La tecla de acceso rápido de un botón | Pulsa ese botón. Mientras un `Input` tiene el foco, toda tecla imprimible va al campo. |

552| Re Pág, Av Pág, Inicio y Fin | Desplazan tu panel o banda cuando tiene más filas de las que puede mostrar |552| Re Pág, Av Pág, Inicio y Fin | Desplazan tu panel o banda cuando tiene más filas de las que puede mostrar |

Details

110 110 

111### Comandos y configuración111### Comandos y configuración

112 112 

113Los eventos de comandos y configuración se disparan cuando un comando se ejecuta o se lista, cuando una fila de `/config` se muestra o cambia, y en una lectura de la configuración:

114 

115| Evento | Se dispara cuando | Un hook puede devolver |113| Evento | Se dispara cuando | Un hook puede devolver |

116| :- | :- | :- |114| :- | :- | :- |

117| [`command.run`](https://code.claude.com/docs/es/plugins/mods/api#add-a-command) | Un comando está a punto de ejecutarse | `{ text }`, `{}` o `next(e)` |115| [`command.run`](https://code.claude.com/docs/es/plugins/mods/api#add-a-command) | Un comando está a punto de ejecutarse | `{ text }`, `{}` o `next(e)` |

118| `command.describe` | Una vez por cada comando, para la lista de comandos | `{ description, argumentHint, isHidden }` |116| `command.describe` | Una vez por cada comando, para la lista de comandos | `{ description, argumentHint, isHidden }` |

119| `config.set` | Una fila de `/config` está a punto de cambiar | `next({ ...e, value })` o `{ deny: reason }` |117| `config.set` | Una fila de `/config` está a punto de cambiar | `next({ ...e, value })` o `{ deny: reason }` |

120| `config.describe` | Una vez por cada fila de `/config` | `{ label, description, isHidden }` |118| `config.describe` | Una vez por cada fila de `/config` | `{ label, description, isHidden }` |

121| [`settings.read`](https://code.claude.com/docs/es/plugins/mods/events#settings-read-hook) | Un mod llama a [`$.settings.read`](https://code.claude.com/docs/es/plugins/mods/api#reach-files-processes-and-the-network), o Claude Code genera la configuración combinada de la sesión | `next(e)`, `{ value }` o `{ deny: reason }` |119| [`settings.read`](https://code.claude.com/docs/es/plugins/mods/events#settings-read-hook) | Un mod llama a [`$.settings.read`](https://code.claude.com/docs/es/plugins/mods/api#reach-files-processes-and-the-network), o Claude Code genera la configuración combinada de la sesión. Requiere Claude Code v2.1.304 o posterior en la lectura propia de Claude Code y para `e.layers` | `next(e)`, `{ value }` o `{ deny: reason }` |

122 120 

123#### `e.layers` y `e.source` en `settings.read`121#### `e.layers` y `e.source` en `settings.read`

124 122 

125* **`e.layers`**: un objeto `{ source, settings }` por cada origen en uso que contiene configuración, empezando por el de menor [precedencia](https://code.claude.com/docs/es/settings.md#settings-precedence). Consulta [Qué recibe un hook de `settings.read`](https://code.claude.com/docs/es/plugins/mods/events#settings-read-receives).123* **`e.layers`**: un objeto `{ source, settings }` por cada origen en uso que contiene configuración, empezando por el de menor [precedencia](https://code.claude.com/docs/es/settings.md#settings-precedence). Consulta [Qué recibe un hook de `settings.read`](https://code.claude.com/docs/es/plugins/mods/events#settings-read-receives).

126* **`e.source`**: el único origen que pidió un mod, como en `$.settings.read({ source: 'policy' })`. Está ausente en la lectura propia de Claude Code y en cualquier otra lectura de la configuración combinada124* **`e.source`**: el único origen que pidió un mod, como en `$.settings.read({ source: 'policy' })`. Está ausente en la lectura propia de Claude Code y en una lectura de la configuración combinada

127 

128En `settings.read`, que el evento se dispare en la lectura propia de Claude Code y el campo `e.layers` requieren Claude Code v2.1.304 o posterior. Para saber cuándo se ejecuta el hook y qué puede devolver, con un ejemplo, consulta [Cambiar o rechazar una lectura de la configuración](https://code.claude.com/docs/es/plugins/mods/events.md#settings-read-hook).

129 125 

130### Turnos126### Turnos

131 127 


271| :- | :- | :-: | :-: | :-: |267| :- | :- | :-: | :-: | :-: |

272| [`Box`](https://code.claude.com/docs/es/plugins/mods/interface#build-a-tree-from-elements) | `key`, diseño flex, [`gap`, `padding`, `margin`](#box-spacing-steps), `width`, `height`, `minWidth`, `minHeight`, [`borderStyle`](#box-border-styles), `borderColor`, `borderDimColor`, `backgroundColor`, `position`, `top`, `left`, `right`, `bottom`, `overflow`, `display`, `hover` | ✓ | ✓ | ✓ |268| [`Box`](https://code.claude.com/docs/es/plugins/mods/interface#build-a-tree-from-elements) | `key`, diseño flex, [`gap`, `padding`, `margin`](#box-spacing-steps), `width`, `height`, `minWidth`, `minHeight`, [`borderStyle`](#box-border-styles), `borderColor`, `borderDimColor`, `backgroundColor`, `position`, `top`, `left`, `right`, `bottom`, `overflow`, `display`, `hover` | ✓ | ✓ | ✓ |

273| [`Text`](https://code.claude.com/docs/es/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, [`bold`](#text-bold), `italic`, `underline`, `strikethrough`, `dimColor`, `inverse`, `wrap`, [`size`, `weight`, `mono`, `tabular`](#text-typography), `hover` | ✓ | ✓ | ✓ |269| [`Text`](https://code.claude.com/docs/es/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, [`bold`](#text-bold), `italic`, `underline`, `strikethrough`, `dimColor`, `inverse`, `wrap`, [`size`, `weight`, `mono`, `tabular`](#text-typography), `hover` | ✓ | ✓ | ✓ |

274| [`Button`](https://code.claude.com/docs/es/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action`, `hover` | ✓ | ✓ | ✓ |270| [`Button`](https://code.claude.com/docs/es/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `children`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action`, `variant`, `role`, `hover` | ✓ | ✓ | ✓ |

275| [`Link`](https://code.claude.com/docs/es/plugins/mods/interface#link-in-the-desktop-app) | `href`, `label`. Consulta [Límites](#limits). | ✓ | ✓ | ✓ |271| [`Link`](https://code.claude.com/docs/es/plugins/mods/interface#link-in-the-desktop-app) | `href`, `label`. Consulta [Límites](#limits). | ✓ | ✓ | ✓ |

276| [`Code`](https://code.claude.com/docs/es/plugins/mods/gallery#show-code-and-changes) | `source`, `language`, `path`, `startLine`, `format`, `wrap` | ✓ | ✓ | ✓ |272| [`Code`](https://code.claude.com/docs/es/plugins/mods/gallery#show-code-and-changes) | `source`, `language`, `path`, `startLine`, `format`, `wrap` | ✓ | ✓ | ✓ |

277| `Markdown` | `text`, `key`, `dimColor`, `onLinkPress`, `pressableLinks` | ✓ | ✓ | ✓ |273| `Markdown` | `text`, `key`, `dimColor`, `onLinkPress`, `pressableLinks` | ✓ | ✓ | ✓ |


288* **Hotkeys de dígito en la banda**: 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 pausa284* **Hotkeys de dígito en la banda**: 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

289* **Una banda contraída**: mientras la banda está [contraída](https://code.claude.com/docs/es/plugins/mods/interface.md#when-the-user-collapses-the-band), ni un atajo de `action` ni un hotkey presionan un botón en ella285* **Una banda contraída**: mientras la banda está [contraída](https://code.claude.com/docs/es/plugins/mods/interface.md#when-the-user-collapses-the-band), ni un atajo de `action` ni un hotkey presionan un botón en ella

290* **Dos botones con un mismo hotkey**: cuando dos botones de un mismo dibujo nombran el mismo `hotkey`, el último se queda con él286* **Dos botones con un mismo hotkey**: cuando dos botones de un mismo dibujo nombran el mismo `hotkey`, el último se queda con él

287* **`variant`**: `primary` o `secondary`, y cualquier otro valor lanza un error. En la terminal, un botón `primary` se dibuja con el color de acento a menos que sea `plain`.

288* **`role`**: `dismiss` marca un botón de cierre, y cualquier otro valor lanza un error. Haz el cierre en tu `onPress`. En una banda que contiene texto y una fila de botones, la aplicación de escritorio puede dibujar el primer botón `dismiss` de la fila como su propio control de cierre. La terminal dibuja el botón como lo haría sin `role`.

289 

290Un `Button` puede contener `children` en lugar de un `label`:

291 

292* **Qué pueden ser los children**: cadenas y elementos `Text`, como un nombre seguido de un detalle atenuado o una etiqueta de color. Claude Code rechaza cualquier otro elemento dentro de un `Button`.

293* **Nombrar el botón**: el `label` nombra el botón y, de forma predeterminada, es el texto de sus children. Dale un `key` o un `label` a un botón cuyos children no sean una sola cadena.

294* **En la terminal**: los children se dibujan donde estaría el label, y una pulsación en cualquier parte de ellos cuenta como una sola pulsación, así que puedes hacer que cada fila de una lista sea un único botón

295* **En la aplicación de escritorio y la extensión de VS Code**: el botón dibuja su `label`

296 

297> [!NOTE]

298>

299> Un `Button` con children que no sean una sola cadena requiere Claude Code v2.1.295 o posterior.

291 300 

292`autoFocus` solo acepta `true` en cualquier control, así que omite la prop para dejarla desactivada.301`autoFocus` solo acepta `true` en cualquier control, así que omite la prop para dejarla desactivada.

293 302 


295 304 

296* **`Box`**: `position` con sus `top`, `left`, `right` y `bottom`, `alignSelf`, `borderDimColor` y `hover`305* **`Box`**: `position` con sus `top`, `left`, `right` y `bottom`, `alignSelf`, `borderDimColor` y `hover`

297* **`Text`**: `size`, `mono`, `tabular` y `hover`306* **`Text`**: `size`, `mono`, `tabular` y `hover`

298* **`Button`**: `hotkey`, `plain`, `autoFocus`, `action` y `hover`, así que allí el usuario presiona un botón con un clic, o con Enter una vez que tiene el foco307* **`Button`**: `hotkey`, `plain`, `autoFocus`, `action` y `hover`, así que allí el usuario presiona un botón con un clic, o con Enter una vez que tiene el foco. La extensión también ignora `variant` y `role`.

299* **`Code`**: `language`, `path`, `startLine`, `format` y `wrap`, así que el código se dibuja sin colores ni números de línea, y un bloque `format: 'diff'` muestra el texto sin procesar del diff308* **`Code`**: `language`, `path`, `startLine`, `format` y `wrap`, así que el código se dibuja sin colores ni números de línea, y un bloque `format: 'diff'` muestra el texto sin procesar del diff

300* **`Input` y `Select`**: `autoFocus`309* **`Input` y `Select`**: `autoFocus`, y `rows` en un `Input`

301* **`Svg`**: `isInteractive`310* **`Svg`**: `isInteractive`

302 311 

303### Estilos de borde de `Box`312### Estilos de borde de `Box`


364| El tiempo de ejecución de un controlador `.catch` | 1 segundo |373| El tiempo de ejecución de un controlador `.catch` | 1 segundo |

365| Todos los hooks `session.end` en conjunto | Lo mismo que el [presupuesto del hook SessionEnd](https://code.claude.com/docs/es/hooks.md#sessionend-input), 1.5 segundos a menos que lo cambies, contado desde que terminan los hooks `SessionEnd` de tu configuración |374| Todos los hooks `session.end` en conjunto | Lo mismo que el [presupuesto del hook SessionEnd](https://code.claude.com/docs/es/hooks.md#sessionend-input), 1.5 segundos a menos que lo cambies, contado desde que terminan los hooks `SessionEnd` de tu configuración |

366| Tiempo de espera de `$.process.run` | 30 segundos de forma predeterminada, 10 minutos como máximo |375| Tiempo de espera de `$.process.run` | 30 segundos de forma predeterminada, 10 minutos como máximo |

376| `stdout` y `stderr` de `$.process.run` | 4 MiB cada uno. `isStdoutTruncated` o `isStderrTruncated` es `true` cuando se cortó uno de ellos. |

367| `maxTokens` de `$.model.complete` | 1024 de forma predeterminada, hasta 64,000 o el límite de salida del modelo |377| `maxTokens` de `$.model.complete` | 1024 de forma predeterminada, hasta 64,000 o el límite de salida del modelo |

368| `$.fs.read` y `$.fs.write` | 4 MiB por archivo |378| `$.fs.read` y `$.fs.write` | 4 MiB por archivo |

369| El cuerpo de una solicitud de `$.http.fetch` | 4 MiB, contados en caracteres. Una llamada con un cuerpo más grande se rechaza. |379| El cuerpo de una solicitud de `$.http.fetch` | 4 MiB, contados en caracteres. Una llamada con un cuerpo más grande se rechaza. |


381| `$.store` | 4 MiB de JSON en total |391| `$.store` | 4 MiB de JSON en total |

382| `$.session.messages()` | Las 4,096 entradas más recientes |392| `$.session.messages()` | Las 4,096 entradas más recientes |

383| Redibujados de `$.ui.invalidate('ui.render')` | Limitados a 10 por segundo, o 30 en la terminal para el panel visible, la banda expandida y la línea de sugerencia debajo del prompt. Las llamadas que llegan antes se agrupan. |393| Redibujados de `$.ui.invalidate('ui.render')` | Limitados a 10 por segundo, o 30 en la terminal para el panel visible, la banda expandida y la línea de sugerencia debajo del prompt. Las llamadas que llegan antes se agrupan. |

384| `$.ui.toast` | Se muestra durante 4 segundos a menos que pases `{ timeoutMs }` |394| `$.ui.toast` | Se muestra durante 4 segundos a menos que pases `{ timeoutMs }`. En el [renderizador clásico](https://code.claude.com/docs/es/fullscreen.md#enable-fullscreen-rendering), un toast más reciente de un mod puede [ocupar el lugar de uno anterior del mismo mod](https://code.claude.com/docs/es/plugins/mods/troubleshoot.md#a-toast-doesn’t-appear) que se está mostrando o esperando para mostrarse. |

385| Un panel abierto sin que el usuario lo pida | Se coloca a partir de 144 columnas de la terminal, 110 después de que lo haya abierto una vez |395| Un panel abierto sin que el usuario lo pida | Se coloca a partir de 144 columnas de la terminal, 110 después de que lo haya abierto una vez |

396| Profundidad de anidamiento de los argumentos de una llamada a la API de mods | 28,000 niveles. A partir de ahí, la llamada se rechaza con un mensaje que termina en `nesting deeper than 28000 levels is not supported`. Requiere Claude Code v2.1.299 o posterior. |

397| Profundidad de anidamiento de un evento modificado que se pasa a `next`, fuera de los [hooks de generador asíncrono](#events) como uno en `turn.step` | 28,000 niveles. A partir de ahí, `next` se rechaza con un mensaje que termina en `nesting deeper than 28000 levels is not supported`. Requiere Claude Code v2.1.299 o posterior. |

398| Profundidad de anidamiento del valor de retorno de un hook, fuera de `ui.render`, `ui.resolve` y los hooks de generador asíncrono | 28,000 niveles. A partir de ahí, se rechaza el resultado del hook, y [la notificación que lo informa](https://code.claude.com/docs/es/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing) incluye `nesting deeper than 28000 levels is not supported`. Requiere Claude Code v2.1.299 o posterior. |

386| Alcances, como funciones, bloques y bucles, anidados unos dentro de otros en un archivo de un módulo de hooks | 2,000 |399| Alcances, como funciones, bloques y bucles, anidados unos dentro de otros en un archivo de un módulo de hooks | 2,000 |

387| Nombres de comandos, herramientas, tipos de subagente y paneles | Letras, dígitos, `_` y `-`, hasta 64 caracteres |400| Nombres de comandos, herramientas, tipos de subagente y paneles | Letras, dígitos, `_` y `-`, hasta 64 caracteres |

388| Una prueba de `claude plugin test` | 5 segundos a menos que la prueba establezca `timeoutMs` |401| Una prueba de `claude plugin test` | 5 segundos a menos que la prueba establezca `timeoutMs` |

Details

341 341 

342### Una clave que devuelve tu hook `settings.read` no surte efecto342### Una clave que devuelve tu hook `settings.read` no surte efecto

343 343 

344Las entradas `env` devueltas no se convierten en variables de entorno. Las reglas `allow`, `ask` y `deny` devueltas no se comprueban en las llamadas a herramientas. Defínelas en un [archivo de configuración](https://code.claude.com/docs/es/settings.md), o llama a [`$.env.set`](https://code.claude.com/docs/es/plugins/mods/api#reach-files-processes-and-the-network) para las variables de entorno.344Si devuelves reglas de permisos o `env` en [la propia lectura de Claude Code](https://code.claude.com/docs/es/plugins/mods/events.md#settings-read-hook), las reglas no se comprueban en las llamadas a herramientas y las entradas `env` no se convierten en variables de entorno. Usa un [archivo de configuración](https://code.claude.com/docs/es/settings.md) para ambas, o [`$.env.set`](https://code.claude.com/docs/es/plugins/mods/api#reach-files-processes-and-the-network) para `env`.

345 345 

346Para cualquier otra clave, comprueba [qué mods reciben `settings.read` y a partir de qué versión](https://code.claude.com/docs/es/plugins/mods/events#settings-read-hook), luego busca `settings.read` en el [registro de depuración](#read-the-debug-log) y localiza una de estas líneas:346Para cualquier otra clave, comprueba [qué mods reciben `settings.read` y a partir de qué versión](https://code.claude.com/docs/es/plugins/mods/events#settings-read-hook), luego busca `settings.read` en el [registro de depuración](#read-the-debug-log) y localiza una de estas líneas:

347 347 


349| :- | :- |349| :- | :- |

350| `settings.read hook skipped`, después del nombre de tu mod | Tu hook falló. [Corrige el error que indica la línea](#hook-skipped). |350| `settings.read hook skipped`, después del nombre de tu mod | Tu hook falló. [Corrige el error que indica la línea](#hook-skipped). |

351| `settings.read bypassed by cc-plugin-sec-default`, en una línea que nombra tu mod antes | La [protección integrada](https://code.claude.com/docs/es/plugins/mods/admin.md#know-what-happens-by-default) omitió tu hook. Pide al administrador de tu organización que [instale el mod como uno de los mods de la organización](https://code.claude.com/docs/es/plugins/mods/admin.md#install-your-organizations-mods). |351| `settings.read bypassed by cc-plugin-sec-default`, en una línea que nombra tu mod antes | La [protección integrada](https://code.claude.com/docs/es/plugins/mods/admin.md#know-what-happens-by-default) omitió tu hook. Pide al administrador de tu organización que [instale el mod como uno de los mods de la organización](https://code.claude.com/docs/es/plugins/mods/admin.md#install-your-organizations-mods). |

352| `settings.read: the answer for <key> is no value the key can hold` | El valor devuelto no se ajusta al esquema de la clave. [Devuelve uno que permita](#settings-read-key-refused). |352| `settings.read: the answer for <key> is no value the key can hold` | Claude Code rechazó el valor que un hook devolvió para esa clave. El hook puede ser el tuyo o el de otro mod. Sigue [el paso para tu caso](#settings-read-key-refused). |

353| `settings.read: the merge never settles for <key>` | Las claves que nombra la línea conservan los valores de las fuentes de configuración. Defínelas en un archivo de configuración. |353| `settings.read: the merge never settles for <key>` | Las claves que nombra la línea conservan los valores de las fuentes de configuración. Defínelas en un archivo de configuración. |

354| `answered settings.read without next()`, después del nombre de un mod | Solo es relevante si ese mod [se ejecuta antes que el tuyo](https://code.claude.com/docs/es/plugins/mods/events.md#the-order-mods-run-in). En ese caso, tu hook no se ejecutó en esa lectura. [Desactiva ese mod](https://code.claude.com/docs/es/plugins/mods/overview.md#turn-mods-on-or-off) o, si tu organización lo implementó, pide a su administrador que lo haga. |354| `answered settings.read without next()`, después del nombre de un mod | Tu hook se ve afectado si el mod nombrado [se ejecuta antes que el tuyo](https://code.claude.com/docs/es/plugins/mods/events.md#the-order-mods-run-in). En ese caso, tu hook no se ejecutó en esa lectura. [Desactiva ese mod](https://code.claude.com/docs/es/plugins/mods/overview.md#turn-mods-on-or-off) o, si tu organización lo implementó, pide a su administrador que lo haga. |

355| `settings.read: refused to the engine` | La lectura se rechazó, así que no se aplicó el `{ value }` de ningún hook. [Averigua qué la rechazó](#settings-read-refused). |355| `settings.read: refused to the engine` | Tu valor no se aplicó porque se rechazó la propia lectura de Claude Code. [Averigua qué la rechazó](#settings-read-refused). |

356 356 

357Si ninguna línea explica la clave, revisa los mods que se ejecutan antes que el tuyo en busca de un hook `settings.read` que [cambie la clave](https://code.claude.com/docs/es/plugins/mods/events.md#settings-read-example). Desactiva ese mod, o pide al administrador de tu organización que lo haga. Si ningún hook la cambia, define la clave en un archivo de configuración.357Si ninguna línea explica la clave, revisa los mods que se ejecutan antes que el tuyo en busca de un hook `settings.read` que [cambie la clave](https://code.claude.com/docs/es/plugins/mods/events.md#settings-read-example). Desactiva ese mod, o pide al administrador de tu organización que lo haga. Si ningún hook la cambia, define la clave en un archivo de configuración.

358 358 

359### `the answer for <key> is no value the key can hold`359### `the answer for <key> is no value the key can hold`

360 360 

361Esta línea del [registro de depuración](#read-the-debug-log) significa que Claude Code rechazó el valor que tu hook [`settings.read`](https://code.claude.com/docs/es/plugins/mods/events#settings-read-hook) devolvió para la clave nombrada, y solo para esa clave:361Esta línea del [registro de depuración](#read-the-debug-log) significa que Claude Code rechazó el valor que un hook [`settings.read`](https://code.claude.com/docs/es/plugins/mods/events#settings-read-hook) devolvió para la clave nombrada, y solo para esa clave:

362 362 

363```text theme={null}363```text theme={null}

364settings.read: the answer for <key> is no value the key can hold; the settings' own value stands364settings.read: the answer for <key> is no value the key can hold; the settings' own value stands

365```365```

366 366 

367El valor que devolviste para la clave nombrada no se ajustaba al esquema de esa clave, por ejemplo por tipo o por rango. Devuelve un valor que permita la entrada de la clave en la [referencia de configuración](https://code.claude.com/docs/es/settings-reference.md). Mientras tu valor no se ajuste, la clave conserva el valor combinado a partir de las fuentes de configuración antes de que respondiera cualquier hook. La línea lo llama el valor propio de la configuración.367El valor devuelto para la clave nombrada no se ajustaba al esquema de esa clave, por ejemplo por tipo o por rango.

368 

369* **Tu valor no se ajusta al esquema de la clave**: devuelve uno que permita la entrada de la clave en la [referencia de configuración](https://code.claude.com/docs/es/settings-reference.md).

370* **Tu valor se ajusta**: el valor que no se ajusta provino del hook `settings.read` de otro mod. Para encontrar ese mod, sigue [los pasos para desactivar los mods uno a uno](#settings-read-refused). Busca esta línea en cada nuevo registro en lugar de `refused to the engine`.

371 

372Mientras el valor no se ajuste, la clave conserva el valor combinado a partir de las fuentes de configuración antes de que respondiera cualquier hook. La línea lo llama el valor propio de la configuración.

368 373 

369### `settings.read: refused to the engine`374### `settings.read: refused to the engine`

370 375 

371Esta línea del [registro de depuración](#read-the-debug-log) significa que [la propia lectura de Claude Code](https://code.claude.com/docs/es/plugins/mods/events.md#settings-read-hook) se rechazó, así que no se aplicó el `{ value }` de ningún hook, incluido el tuyo. Cuando un hook `settings.read` rechaza esa lectura con [`{ deny: reason }`](https://code.claude.com/docs/es/plugins/mods/events#settings-read-returns), la línea incluye el motivo de ese hook:376Ves esta línea en el [registro de depuración](#read-the-debug-log) cuando se rechaza [la propia lectura de Claude Code](https://code.claude.com/docs/es/plugins/mods/events.md#settings-read-hook), y Claude Code descarta el valor de todos los hooks. Cuando un hook `settings.read` rechaza esa lectura con [`{ deny: reason }`](https://code.claude.com/docs/es/plugins/mods/events#settings-read-returns), la línea incluye el motivo de ese hook:

372 377 

373```text theme={null}378```text theme={null}

374settings.read: refused to the engine (engine: $.settings.read: <reason>); the settings' own values stand379settings.read: refused to the engine (engine: $.settings.read: <reason>); the settings' own values stand

375```380```

376 381 

377Busca el texto de `<reason>` en el código de tu propio hook:382Busca en tu código el motivo que aparece entre paréntesis:

378 383 

379* **Tu código lo contiene**: tu hook rechazó la lectura. Haz que devuelva `{ value }` cuando [`next.origin`](https://code.claude.com/docs/es/plugins/mods/events#settings-read-origin) indique la propia lectura de Claude Code.384* **Tu código lo contiene**: tu hook rechazó la lectura. Haz que devuelva `{ value }` cuando [`next.origin`](https://code.claude.com/docs/es/plugins/mods/events#settings-read-origin) indique la propia lectura de Claude Code.

380* **Tu código no lo contiene**: [desactiva](https://code.claude.com/docs/es/plugins/mods/overview.md#turn-mods-on-or-off) tus otros mods uno a uno. Después de cada uno, vuelve a ejecutar el comando de esta sesión desde tu shell con un `--debug-file` en una ruta nueva, y busca `refused to the engine` en ese archivo. Si la línea está, desactiva el siguiente mod. Si no, el último mod que desactivaste rechazó la lectura, así que mantenlo desactivado.385* **Tu código no lo contiene**: [desactiva](https://code.claude.com/docs/es/plugins/mods/overview.md#turn-mods-on-or-off) tus otros mods uno a uno. Si tu organización implementó un mod, pide a su administrador que lo desactive. Después de cada uno:

386 1. Inicia la sesión desde tu shell con `claude --debug-file ./settings-read-2.log`, seguido de los flags con los que se inició. Usa una ruta nueva cada vez.

387 2. Busca `refused to the engine` en ese archivo. Si la línea está, desactiva el siguiente mod. Si no, el último mod que desactivaste rechazó la lectura, así que mantenlo desactivado.

381 388 

382Si no queda ningún otro mod, usa un [archivo de configuración](https://code.claude.com/docs/es/settings.md) para las claves que devuelve tu hook. Sus valores se mantienen mientras la lectura esté rechazada.389Si la línea persiste sin que quede ningún otro mod, define en un [archivo de configuración](https://code.claude.com/docs/es/settings.md) las claves que devuelve tu hook. Sus valores se mantienen mientras la lectura esté rechazada.

383 390 

384## Lee el registro de depuración391## Lee el registro de depuración

385 392 

Details

192La extensión de VS Code y la aplicación de escritorio también tienen un interruptor de conexión automática:192La extensión de VS Code y la aplicación de escritorio también tienen un interruptor de conexión automática:

193 193 

194* **Extensión de VS Code**: **Enable Remote Control for all sessions** en la sección Configuración del [menú de comandos](https://code.claude.com/docs/es/vs-code.md#use-the-prompt-box).194* **Extensión de VS Code**: **Enable Remote Control for all sessions** en la sección Configuración del [menú de comandos](https://code.claude.com/docs/es/vs-code.md#use-the-prompt-box).

195* **Aplicación de escritorio**: **Settings > Claude Code > Connect new sessions to Remote Control**. Consulta [Controla qué sesiones aparecen en tus otros dispositivos](https://code.claude.com/docs/es/desktop.md#control-which-sessions-appear-on-your-other-devices).195* **Aplicación de escritorio**: **Connect new sessions to Remote Control** en **Settings > Code** o **Settings > Claude Code**. Consulta [Controla qué sesiones aparecen en tus otros dispositivos](https://code.claude.com/docs/es/desktop.md#control-which-sessions-appear-on-your-other-devices).

196 196 

197Para activar la conexión automática desde un archivo de configuración en su lugar, establezca [`remoteControlAtStartup`](https://code.claude.com/docs/es/settings-reference#remotecontrolatstartup) en `true` en su usuario `~/.claude/settings.json` o en [configuración administrada](https://code.claude.com/docs/es/managed-settings.md). En configuración de proyecto o local (`.claude/settings.json`, `.claude/settings.local.json`), Claude Code honra un `false` y desactiva la conexión automática para ese repositorio, pero ignora un `true`, por lo que un archivo registrado no puede activar Remote Control para todos los que abren el repositorio.197Para activar la conexión automática desde un archivo de configuración en su lugar, establezca [`remoteControlAtStartup`](https://code.claude.com/docs/es/settings-reference#remotecontrolatstartup) en `true` en su usuario `~/.claude/settings.json` o en [configuración administrada](https://code.claude.com/docs/es/managed-settings.md). En configuración de proyecto o local (`.claude/settings.json`, `.claude/settings.local.json`), Claude Code honra un `false` y desactiva la conexión automática para ese repositorio, pero ignora un `true`, por lo que un archivo registrado no puede activar Remote Control para todos los que abren el repositorio.

198 198 


363 * Comandos de salida de texto: `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap` y `/reload-plugins`. `/usage-credits` imprime la URL de facturación en lugar de abrir un navegador. `/reload-plugins` solo funciona cuando la sesión se ejecuta en una terminal interactiva; una sesión sin ella lo rechaza.363 * Comandos de salida de texto: `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap` y `/reload-plugins`. `/usage-credits` imprime la URL de facturación en lugar de abrir un navegador. `/reload-plugins` solo funciona cuando la sesión se ejecuta en una terminal interactiva; una sesión sin ella lo rechaza.

364 * `/model`, `/effort`, `/fast`, `/color` y `/rename`: pasa el valor como argumento, por ejemplo `/model sonnet` o `/effort high`. Desde el móvil y la web, `/model` y `/effort` toman el argumento en lugar del selector o el control deslizante de la terminal.364 * `/model`, `/effort`, `/fast`, `/color` y `/rename`: pasa el valor como argumento, por ejemplo `/model sonnet` o `/effort high`. Desde el móvil y la web, `/model` y `/effort` toman el argumento en lugar del selector o el control deslizante de la terminal.

365 * `/mcp`: desde la aplicación móvil, devuelve un resumen en texto del estado de los servidores en lugar de abrir el selector. En la web, `/mcp` por sí solo abre un directorio de [conectores de claude.ai](https://code.claude.com/docs/es/mcp.md#use-mcp-servers-from-claude-ai) en lugar de devolver el resumen. Los [subcomandos](https://code.claude.com/docs/es/commands.md#all-commands) `reconnect`, `enable` y `disable` funcionan desde ambos cuando la sesión se ejecuta en una terminal interactiva. `/mcp reconnect` sin nombre de servidor reintenta todos los servidores que fallaron o que necesitan autenticación. Para autorizar un conector de claude.ai sin el selector, consulta [Autorizar un conector de nuevo desde tu shell](#authorize-a-connector-again-from-your-shell).365 * `/mcp`: desde la aplicación móvil, devuelve un resumen en texto del estado de los servidores en lugar de abrir el selector. En la web, `/mcp` por sí solo abre un directorio de [conectores de claude.ai](https://code.claude.com/docs/es/mcp.md#use-mcp-servers-from-claude-ai) en lugar de devolver el resumen. Los [subcomandos](https://code.claude.com/docs/es/commands.md#all-commands) `reconnect`, `enable` y `disable` funcionan desde ambos cuando la sesión se ejecuta en una terminal interactiva. `/mcp reconnect` sin nombre de servidor reintenta todos los servidores que fallaron o que necesitan autenticación. Para autorizar un conector de claude.ai sin el selector, consulta [Autorizar un conector de nuevo desde tu shell](#authorize-a-connector-again-from-your-shell).

366 * `/config`: desde la aplicación móvil, pasa `key=value` para establecer un ajuste, o ejecútalo sin argumento para listar las claves que puedes establecer. En la web, `/config` abre en su lugar la sección de Claude Code de tu configuración.366 * `/config`: desde la aplicación móvil, pasa `key=value` para establecer un ajuste, o ejecútalo sin argumento para listar las claves que puedes establecer. En la web, `/config` abre en su lugar **Settings > Code** o **Settings > Claude Code**.

367 * En Team y Enterprise, `/usage-credits` desde el móvil o la web no envía una [solicitud de créditos de uso a tu administrador](https://code.claude.com/docs/es/costs.md#add-usage-credits-to-your-subscription). El envío requiere una confirmación que solo aparece en la CLI interactiva, por lo que el comando te indica que lo ejecutes allí.367 * En Team y Enterprise, `/usage-credits` desde el móvil o la web no envía una [solicitud de créditos de uso a tu administrador](https://code.claude.com/docs/es/costs.md#add-usage-credits-to-your-subscription). El envío requiere una confirmación que solo aparece en la CLI interactiva, por lo que el comando te indica que lo ejecutes allí.

368 * `/autocompact`, desde v2.1.221: pasa el tamaño de la ventana como argumento, por ejemplo `/autocompact 500k`. Sin argumento, imprime el tamaño actual de la ventana como texto en lugar de abrir el diálogo que el comando muestra en una sesión de terminal.368 * `/autocompact`, desde v2.1.221: pasa el tamaño de la ventana como argumento, por ejemplo `/autocompact 500k`. Sin argumento, imprime el tamaño actual de la ventana como texto en lugar de abrir el diálogo que el comando muestra en una sesión de terminal.

369 * `/advisor`, desde v2.1.260: pasa el modelo como argumento, por ejemplo `/advisor opus`, o pasa `off` para desactivar el asesor. Ambas formas se aplican solo a la sesión actual y no modifican tu valor predeterminado guardado. Sin argumento, imprime el asesor actual como texto en lugar de abrir el selector.369 * `/advisor`, desde v2.1.260: pasa el modelo como argumento, por ejemplo `/advisor opus`, o pasa `off` para desactivar el asesor. Ambas formas se aplican solo a la sesión actual y no modifican tu valor predeterminado guardado. Sin argumento, imprime el asesor actual como texto en lugar de abrir el selector.

routines.md +9 −5

Details

77 77 

78**2. Nombrar la tarea y escribir el prompt**78**2. Nombrar la tarea y escribir el prompt**

79 79 

80Dale a la tarea programada un nombre descriptivo y escribe el prompt que Claude ejecuta cada vez. El prompt es la parte más importante: la tarea se ejecuta de forma autónoma, por lo que el prompt debe ser autosuficiente y explícito sobre qué hacer y cómo se ve el éxito. Selecciona un modelo en el selector de modelo de la entrada del prompt. Claude lo usa en cada ejecución.80Dale a la tarea programada un nombre descriptivo y escribe el prompt que Claude ejecuta cada vez. El prompt es la parte más importante: la tarea se ejecuta de forma autónoma, por lo que el prompt debe ser autosuficiente y explícito sobre qué hacer y cómo se ve el éxito.

81 81 

82Cuando se activa un disparador, la sesión recibe el prompt guardado como su tarea asignada y la lleva a cabo, en lugar de tratarlo como contenido no confiable que llegó a mitad de la conversación. El disparador solo atestigua que el prompt fue almacenado con anticipación por una sesión autorizada en tu cuenta. Por lo tanto, el prompt activado no es entrada de usuario en vivo y no puede actuar como aprobación o consentimiento para acciones durante la ejecución. El contenido que la sesión obtiene durante la ejecución mantiene su tratamiento normal.82Cuando se activa un disparador, la sesión recibe el prompt guardado como su tarea asignada y la lleva a cabo, en lugar de tratarlo como contenido no confiable que llegó a mitad de la conversación. El disparador solo atestigua que el prompt fue almacenado con anticipación por una sesión autorizada en tu cuenta. Por lo tanto, el prompt activado no es entrada de usuario en vivo y no puede actuar como aprobación o consentimiento para acciones durante la ejecución. El contenido que la sesión obtiene durante la ejecución mantiene su tratamiento normal.

83 83 


115 115 

116Si tu tarea necesita llegar directamente a tus propios servicios, o a un dominio fuera de esa lista, edita el [acceso a la red](https://code.claude.com/docs/es/cloud-environments.md#network-access) del entorno antes de ejecutarla. Para usar un entorno separado, [crea uno](https://code.claude.com/docs/es/cloud-environments.md#configure-your-environment) primero.116Si tu tarea necesita llegar directamente a tus propios servicios, o a un dominio fuera de esa lista, edita el [acceso a la red](https://code.claude.com/docs/es/cloud-environments.md#network-access) del entorno antes de ejecutarla. Para usar un entorno separado, [crea uno](https://code.claude.com/docs/es/cloud-environments.md#configure-your-environment) primero.

117 117 

118**6. Revisar conectores**118**6. Seleccionar un modelo y un nivel de esfuerzo**

119 

120Selecciona un modelo en el selector de modelo de la entrada del prompt para que Claude lo use en cada ejecución. En una tarea de Claude Code, si el modelo ofrece [niveles de esfuerzo](https://code.claude.com/docs/es/model-config.md#adjust-effort-level), **Effort** en el mismo selector muestra el nivel actual. Para cambiarlo, selecciona otro nivel. La opción **Default** del selector no ofrece niveles.

121 

122**7. Revisar conectores**

119 123 

120Cambia a la pestaña **Connectors** de **Advanced settings**. Todos tus [conectores MCP](https://code.claude.com/docs/es/mcp.md) conectados se incluyen de forma predeterminada. Elimina los que la tarea no necesite: Claude puede usar un conector incluido durante una ejecución, incluidas las escrituras. Para saber cuándo una ejecución se detiene a preguntarte primero, consulta [Solicitudes de permiso durante una ejecución](#permission-prompts-during-a-run).124Cambia a la pestaña **Connectors** de **Advanced settings**. Todos tus [conectores MCP](https://code.claude.com/docs/es/mcp.md) conectados se incluyen de forma predeterminada. Elimina los que la tarea no necesite: Claude puede usar un conector incluido durante una ejecución, incluidas las escrituras. Para saber cuándo una ejecución se detiene a preguntarte primero, consulta [Solicitudes de permiso durante una ejecución](#permission-prompts-during-a-run).

121 125 

122**7. Crear la tarea**126**8. Crear la tarea**

123 127 

124Haz clic en **Create**. El diálogo se cierra y se abre la página de detalles de la nueva tarea. La tarea se ejecuta la próxima vez que uno de sus disparadores coincida. Para iniciar una ejecución de inmediato, haz clic en **Run now** en la página de detalles.128Haz clic en **Create**. El diálogo se cierra y se abre la página de detalles de la nueva tarea. La tarea se ejecuta la próxima vez que uno de sus disparadores coincida. Para iniciar una ejecución de inmediato, haz clic en **Run now** en la página de detalles.

125 129 


136En la aplicación de escritorio, si se abre un menú con **Local** y **Cloud**, selecciona **Cloud**. Se abre una página titulada **New routine** o **New scheduled task**. Completa sus campos:140En la aplicación de escritorio, si se abre un menú con **Local** y **Cloud**, selecciona **Cloud**. Se abre una página titulada **New routine** o **New scheduled task**. Completa sus campos:

137 141 

138* **Name**: escribe uno.142* **Name**: escribe uno.

139* **Instructions**: escribe el prompt. En el mismo cuadro, selecciona el modelo, los repositorios y el entorno. Para saber qué controla cada uno, consulta los pasos de [Crear desde la web](#create-from-the-web).143* **Instructions**: escribe el prompt. En el mismo cuadro, selecciona el modelo, el nivel de esfuerzo si el modelo lo ofrece, los repositorios y el entorno. Para saber qué controla cada uno, consulta los pasos de [Crear desde la web](#create-from-the-web).

140* **Select a trigger**: selecciona **Schedule**, **GitHub event** o **API**. Para un horario, consulta [Agregar un disparador de horario](#add-a-schedule-trigger). Para un [evento de GitHub](#add-a-github-trigger), selecciona un repositorio. Para un [disparador de API](#add-an-api-trigger), copia el token del diálogo **API token** que se abre después de hacer clic en **Create**, porque se muestra una sola vez. Para combinar varios disparadores, haz clic en **Add another trigger**.144* **Select a trigger**: selecciona **Schedule**, **GitHub event** o **API**. Para un horario, consulta [Agregar un disparador de horario](#add-a-schedule-trigger). Para un [evento de GitHub](#add-a-github-trigger), selecciona un repositorio. Para un [disparador de API](#add-an-api-trigger), copia el token del diálogo **API token** que se abre después de hacer clic en **Create**, porque se muestra una sola vez. Para combinar varios disparadores, haz clic en **Add another trigger**.

141* **Connectors**: todos tus conectores conectados se incluyen de forma predeterminada, así que elimina los que la tarea no necesite.145* **Connectors**: todos tus conectores conectados se incluyen de forma predeterminada, así que elimina los que la tarea no necesite.

142 146 


153* **Disparador de API**: edita la tarea en la web en [claude.ai/code/routines](https://claude.ai/code/routines)157* **Disparador de API**: edita la tarea en la web en [claude.ai/code/routines](https://claude.ai/code/routines)

154* **[Disparador de GitHub](#add-a-github-trigger)**: edita la tarea en la web, o pídeselo a Claude en la CLI. Agregarlo desde la CLI requiere Claude Code v2.1.225 o posterior158* **[Disparador de GitHub](#add-a-github-trigger)**: edita la tarea en la web, o pídeselo a Claude en la CLI. Agregarlo desde la CLI requiere Claude Code v2.1.225 o posterior

155 159 

156Una tarea programada sin disparador de horario, como una que solo se inicia mediante llamadas a la API o eventos de GitHub, no tiene hora de próxima ejecución. La CLI no muestra ninguna cuando Claude la guarda o la actualiza. Antes de v2.1.211, la CLI informaba una hora de próxima ejecución en el año 1 para estas tareas.160Una tarea programada sin disparador de horario, como una que solo se inicia mediante llamadas a la API o eventos de GitHub, no tiene hora de próxima ejecución. La CLI no muestra ninguna cuando Claude la guarda o la actualiza.

157 161 

158## Configurar disparadores162## Configurar disparadores

159 163 

sandboxing.md +61 −60

Details

250 250 

251Personaliza el comportamiento del sandbox a través de tu archivo `settings.json`. Consulta [Configuración](https://code.claude.com/docs/es/settings-reference.md#sandbox-settings) para ver la referencia completa de configuración.251Personaliza el comportamiento del sandbox a través de tu archivo `settings.json`. Consulta [Configuración](https://code.claude.com/docs/es/settings-reference.md#sandbox-settings) para ver la referencia completa de configuración.

252 252 

253De forma predeterminada, los comandos aislados en el sandbox pueden escribir en el directorio de trabajo actual, en el directorio temporal por usuario y en cualquier [directorio que hayas agregado](https://code.claude.com/docs/es/permissions.md#additional-directories-grant-file-access-not-configuration) con `--add-dir`, `/add-dir` o `permissions.additionalDirectories`. Si comandos de subprocesos como `kubectl`, `terraform` o `npm` necesitan escribir fuera de esos directorios, usa `sandbox.filesystem.allowWrite` para conceder acceso a rutas específicas:253De forma predeterminada, los comandos en el sandbox pueden escribir en el directorio de trabajo actual, en el directorio temporal de cada usuario y en cualquier [directorio que hayas agregado](https://code.claude.com/docs/es/permissions.md#additional-directories-grant-file-access-not-configuration) con `--add-dir`, `/add-dir` o `permissions.additionalDirectories`. Si comandos de subprocesos como `kubectl`, `terraform` o `npm` necesitan escribir fuera de esos directorios, usa `sandbox.filesystem.allowWrite` para conceder acceso a rutas específicas:

254 254 

255```json theme={null}255```json theme={null}

256{256{


265 265 

266Estas rutas se aplican a nivel del sistema operativo, por lo que todos los comandos que se ejecutan dentro del sandbox, incluidos sus procesos hijos, las respetan. Este es el enfoque recomendado cuando una herramienta necesita acceso de escritura a una ubicación específica, en lugar de excluir la herramienta del sandbox por completo con `excludedCommands`.266Estas rutas se aplican a nivel del sistema operativo, por lo que todos los comandos que se ejecutan dentro del sandbox, incluidos sus procesos hijos, las respetan. Este es el enfoque recomendado cuando una herramienta necesita acceso de escritura a una ubicación específica, en lugar de excluir la herramienta del sandbox por completo con `excludedCommands`.

267 267 

268Cuando defines el mismo arreglo de sistema de archivos en varios [alcances de configuración](https://code.claude.com/docs/es/settings.md#settings-precedence), Claude Code los combina, uniendo las rutas en lugar de reemplazar el arreglo de un alcance con el de otro. Claude Code deja una entrada fuera de la combinación cuando la cubre un bloqueo descrito en [Evitar que los desarrolladores amplíen la política](#keep-developers-from-widening-the-policy).268Cuando defines el mismo arreglo de sistema de archivos en varios [alcances de configuración](https://code.claude.com/docs/es/settings.md#settings-precedence), Claude Code los combina, uniendo las rutas en lugar de reemplazar el arreglo de un alcance por el de otro. Claude Code deja una entrada fuera de la combinación cuando la cubre un bloqueo de [Evitar que los desarrolladores amplíen la política](#keep-developers-from-widening-the-policy).

269 269 

270Si excluyes una fuente con [`--setting-sources`](https://code.claude.com/docs/es/cli-reference) en la CLI o con [`settingSources`](https://code.claude.com/docs/es/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources) en el Agent SDK, Claude Code ignora sus entradas de `sandbox.filesystem`, sus reglas de permisos de `Edit` y sus reglas de denegación de `Read` al construir la configuración del sandbox. Requiere Claude Code v2.1.246 o posterior.270Si excluyes una fuente con [`--setting-sources`](https://code.claude.com/docs/es/cli-reference) en la CLI o con [`settingSources`](https://code.claude.com/docs/es/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources) en el Agent SDK, Claude Code ignora sus entradas de `sandbox.filesystem`, sus reglas de permisos de `Edit` y sus reglas de denegación de `Read` al construir la configuración del sandbox. Requiere Claude Code v2.1.246 o posterior.

271 271 

272Cuando editas estas listas del sistema de archivos durante una sesión, Claude Code [aplica el cambio a la sesión en ejecución](https://code.claude.com/docs/es/settings.md#when-edits-take-effect), por lo que el siguiente comando aislado en el sandbox se ejecuta con las nuevas rutas.272Cuando editas estas listas del sistema de archivos durante una sesión, Claude Code [aplica el cambio a la sesión en curso](https://code.claude.com/docs/es/settings.md#when-edits-take-effect), de modo que el siguiente comando en el sandbox se ejecuta con las nuevas rutas.

273 273 

274Las rutas del sistema de archivos del sandbox usan las convenciones estándar: `/tmp/build` es absoluta y `~/.kube` es relativa a tu directorio home. Esto difiere de las [reglas de permisos de Read y Edit](https://code.claude.com/docs/es/permissions.md#read-and-edit), que usan `//path` para rutas absolutas y `/path` para rutas relativas al proyecto. Para rutas relativas, barras finales y comodines, consulta [Prefijos de ruta del sandbox](https://code.claude.com/docs/es/settings-reference.md#sandbox-path-prefixes).274Las rutas del sistema de archivos del sandbox usan las convenciones estándar: `/tmp/build` es absoluta y `~/.kube` es relativa a tu directorio home. Esto difiere de las [reglas de permisos de Read y Edit](https://code.claude.com/docs/es/permissions.md#read-and-edit), que usan `//path` para rutas absolutas y `/path` para rutas relativas al proyecto. Para rutas relativas, barras finales y comodines, consulta [Prefijos de ruta del sandbox](https://code.claude.com/docs/es/settings-reference.md#sandbox-path-prefixes).

275 275 

276También puedes denegar el acceso de escritura o lectura con `sandbox.filesystem.denyWrite` y `sandbox.filesystem.denyRead`, y volver a permitir rutas específicas dentro de una región denegada con `sandbox.filesystem.allowRead`. Cuando las reglas de lectura se superponen, se aplica la regla con la ruta más específica:276También puedes denegar el acceso de escritura o lectura usando `sandbox.filesystem.denyWrite` y `sandbox.filesystem.denyRead`, y volver a permitir rutas específicas dentro de una región denegada usando `sandbox.filesystem.allowRead`. Cuando las reglas de lectura se superponen, se aplica la regla con la ruta más específica:

277 277 

278| Reglas de ejemplo | Resultado |278| Reglas de ejemplo | Resultado |

279| :- | :- |279| :- | :- |

280| `"denyRead": ["~/"]` con `"allowRead": ["~/projects"]` | `~/projects` se puede leer y el resto del directorio home sigue bloqueado. El permiso más específico vuelve a abrir esa parte de la región denegada |280| `"denyRead": ["~/"]` con `"allowRead": ["~/projects"]` | `~/projects` se puede leer y el resto del directorio home sigue bloqueado. El permiso más específico vuelve a abrir esa parte de la región denegada |

281| `"allowRead": ["~/"]` con `"denyRead": ["~/.env"]` | `~/.env` sigue bloqueado y el resto del directorio home se puede leer. La denegación se mantiene dentro de un permiso más amplio, de modo que un permiso general no puede volver a exponer un secreto sin que lo notes |281| `"allowRead": ["~/"]` con `"denyRead": ["~/.env"]` | `~/.env` sigue bloqueado y el resto del directorio home se puede leer. La denegación se mantiene dentro de un permiso más amplio, así que un permiso general no puede volver a exponer un secreto sin avisar |

282| `"allowRead": ["~/"]` con `"denyRead": ["~/**/.env"]` | Todos los `.env` dentro del directorio home siguen bloqueados y el resto se puede leer. Una [denegación con comodín](https://code.claude.com/docs/es/settings-reference.md#sandbox-path-prefixes) se mantiene dentro de un permiso más amplio de la misma forma que una ruta exacta |282| `"allowRead": ["~/"]` con `"denyRead": ["~/**/.env"]` | Todos los `.env` dentro del directorio home siguen bloqueados y el resto se puede leer. Una [denegación con comodín](https://code.claude.com/docs/es/settings-reference.md#sandbox-path-prefixes) se mantiene dentro de un permiso más amplio de la misma manera que una ruta exacta |

283 283 

284El siguiente ejemplo bloquea la lectura de todo el directorio home y a la vez permite las lecturas del proyecto actual. Colócalo en el `.claude/settings.json` de tu proyecto, porque la ruta relativa `.` se resuelve como la raíz del proyecto solo cuando la configuración está en la configuración del proyecto:284El siguiente ejemplo bloquea la lectura de todo el directorio home mientras sigue permitiendo lecturas del proyecto actual. Colócalo en el `.claude/settings.json` de tu proyecto, porque la ruta relativa `.` se resuelve a la raíz del proyecto cuando la configuración está en la configuración del proyecto:

285 285 

286```json theme={null}286```json theme={null}

287{287{


295}295}

296```296```

297 297 

298Si colocaras la misma configuración en `~/.claude/settings.json`, `.` se resolvería como `~/.claude`, y los archivos del proyecto seguirían bloqueados por la regla `denyRead`.298Si colocaras la misma configuración en `~/.claude/settings.json`, `.` se resolvería a `~/.claude` en su lugar, y los archivos del proyecto seguirían bloqueados por la regla `denyRead`.

299 299 

300Para denegar a los comandos aislados en el sandbox el acceso de lectura a los directorios home y a los volúmenes montados, manteniendo legibles los directorios de trabajo, configura [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/es/settings-reference#permissions-blockreadsoutsideworkingdirectories) en lugar de escribir reglas de rutas.300Para denegar a los comandos en el sandbox el acceso de lectura a los directorios home y a los volúmenes montados manteniendo legibles los directorios de trabajo, configura [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/es/settings-reference#permissions-blockreadsoutsideworkingdirectories) en lugar de escribir reglas de rutas.

301 301 

302### Ejecutar comandos fuera del sandbox con `excludedCommands`302### Ejecutar comandos fuera del sandbox con `excludedCommands`

303 303 

304Agrega un patrón de comando a [`sandbox.excludedCommands`](https://code.claude.com/docs/es/settings-reference#sandbox-excludedcommands) para ejecutar los comandos que coincidan fuera del sandbox, lo que significa sin restricciones del sistema de archivos y sin proxy de red. Úsalo para una herramienta que no puede funcionar dentro del sandbox y a la que le confías todo tu acceso. Una herramienta que necesita un directorio más o un host más puede funcionar con `allowWrite` o `allowedDomains`, que mantienen el comando dentro del sandbox.304Agrega un patrón de comando en [`sandbox.excludedCommands`](https://code.claude.com/docs/es/settings-reference#sandbox-excludedcommands) para ejecutar los comandos que coincidan fuera del sandbox, lo que significa sin restricciones del sistema de archivos y sin proxy de red. Úsalo para una herramienta que no puede funcionar dentro del sandbox y a la que le confías tu acceso completo. Una herramienta que necesita un directorio más o un host más puede funcionar con `allowWrite` o `allowedDomains`, que mantienen el comando en el sandbox.

305 305 

306Este ejemplo saca del sandbox los comandos `docker compose`. Guárdalo en `~/.claude/settings.json` para aplicarlo a todos tus proyectos:306Este ejemplo saca los comandos `docker compose` del sandbox. Guárdalo en `~/.claude/settings.json` para aplicarlo a todos tus proyectos:

307 307 

308```json theme={null}308```json theme={null}

309{309{


314}314}

315```315```

316 316 

317Claude Code compara tus entradas con cada llamada a Bash y Monitor. Una llamada es la línea de comandos completa que envía Claude, que puede encadenar varios comandos. Las siguientes reglas deciden si una llamada sale del sandbox:317Claude Code compara tus entradas con cada llamada de Bash y Monitor. Una llamada es la línea de comandos completa que envía Claude, que puede encadenar varios comandos. Las siguientes reglas deciden si una llamada sale del sandbox:

318 318 

319* **Termina el patrón con ` *`**: las entradas usan la misma sintaxis que una [regla de permisos](https://code.claude.com/docs/es/permissions.md#permission-rule-syntax) `Bash(...)`, donde un patrón sin comodín es una coincidencia exacta. `docker` coincide solo con `docker` sin argumentos. `docker *` coincide con `docker` con o sin argumentos319* **Termina el patrón con ` *`**: las entradas usan la misma sintaxis que una [regla de permisos](https://code.claude.com/docs/es/permissions.md#permission-rule-syntax) `Bash(...)`, donde un patrón sin comodín es una coincidencia exacta. `docker` coincide solo con `docker` sin argumentos. `docker *` coincide con `docker` con o sin argumentos

320* **Todos los comandos de la llamada deben coincidir**: `npm ci && docker compose build` sigue dentro del sandbox a menos que otra entrada cubra `npm ci`320* **Cada comando de la llamada tiene que coincidir**: `npm ci && docker compose build` sigue en el sandbox a menos que otra entrada cubra `npm ci`

321* **Claude Code compara el texto de la llamada**: un script o un objetivo de `make` que llama a `docker` internamente no coincide, y tampoco `/usr/local/bin/docker`321* **Claude Code compara el texto de la llamada**: un script o un target de `make` que llama a `docker` internamente no coincide, y tampoco `/usr/local/bin/docker`

322* **Algunas llamadas permanecen en el sandbox**: una redirección a un archivo, un `cd` o una sustitución de comandos como `$(...)` mantiene toda la llamada dentro del sandbox. La [entrada de referencia](https://code.claude.com/docs/es/settings-reference.md#sandbox-excludedcommands) enumera más llamadas que permanecen en el sandbox322* **Algunas llamadas siguen en el sandbox**: una redirección a un archivo, un `cd` o una sustitución de comandos como `$(...)` mantienen toda la llamada en el sandbox. La [entrada de referencia](https://code.claude.com/docs/es/settings-reference.md#sandbox-excludedcommands) enumera más llamadas que siguen en el sandbox

323* **Dónde guardas la entrada puede importar**: mientras el sandbox sea [obligatorio por el administrador](#repository-settings-under-an-admin-required-sandbox), Claude Code ignora las entradas de `.claude/settings.json` y `.claude/settings.local.json`323* **Un `git clone` necesita rutas relativas**: tu entrada no cubre un clon que indica una ruta absoluta, una ruta que empieza con `~` o una con un segmento `..`. Si el clon puede ir dentro de tu directorio de trabajo, pídele a Claude que use una ruta relativa sin segmentos `..`, como `vendor/lib`

324* **Dónde guardas la entrada puede importar**: mientras el sandbox es [obligatorio por parte del administrador](#repository-settings-under-an-admin-required-sandbox), Claude Code ignora las entradas en `.claude/settings.json` y `.claude/settings.local.json`

324 325 

325Un comando excluido pasa por el flujo de permisos habitual:326Un comando excluido pasa por el flujo de permisos habitual:

326 327 


332 333 

333> [!WARNING]334> [!WARNING]

334>335>

335> Un comando excluido se ejecuta con todo tu acceso. Una entrada amplia como `docker *` cubre todo lo que esa herramienta puede hacer. Si escribes un patrón que cubre un intérprete, un script dentro de tu directorio de trabajo o una herramienta que actúa sobre un archivo de ese directorio, como hace `docker compose` con su archivo compose, Claude puede escribir ese archivo y luego ejecutarlo fuera del sandbox. Un patrón más específico deja menos cosas que Claude pueda ejecutar fuera del sandbox.336> Un comando excluido se ejecuta con tu acceso completo. Una entrada amplia como `docker *` cubre todo lo que esa herramienta puede hacer. Si escribes un patrón que cubre un intérprete, un script dentro de tu directorio de trabajo o una herramienta que actúa sobre un archivo de ese directorio, como hace `docker compose` con su archivo compose, Claude puede escribir ese archivo y luego ejecutarlo fuera del sandbox. Un patrón más específico deja menos cosas que Claude pueda ejecutar fuera del sandbox.

336 337 

337### Desactivar el aislamiento del sistema de archivos338### Desactivar el aislamiento del sistema de archivos

338 339 

339Establece `sandbox.filesystem.disabled` en `true` para omitir el aislamiento del sistema de archivos y mantener el aislamiento de red. El siguiente ejemplo desactiva el aislamiento del sistema de archivos y mantiene una lista de dominios de red permitidos:340Configura `sandbox.filesystem.disabled` en `true` para omitir el aislamiento del sistema de archivos manteniendo el aislamiento de red. El siguiente ejemplo desactiva el aislamiento del sistema de archivos mientras mantiene una lista de dominios de red permitidos:

340 341 

341```json theme={null}342```json theme={null}

342{343{


352}353}

353```354```

354 355 

355El sandbox tiene dos capas independientes: el [aislamiento del sistema de archivos](#filesystem-isolation) controla qué rutas pueden leer y escribir los comandos aislados en el sandbox, y el [aislamiento de red](#network-isolation) controla a qué dominios pueden acceder. Con la capa del sistema de archivos desactivada, los comandos aislados en el sandbox obtienen acceso de lectura y escritura sin restricciones al sistema de archivos del host, mientras que su tráfico de red saliente sigue limitado a tus dominios permitidos. Desactiva esta capa cuando uses el sandbox para controlar a dónde se conectan los comandos y no lo que escriben.356El sandbox tiene dos capas independientes: el [aislamiento del sistema de archivos](#filesystem-isolation) controla qué rutas pueden leer y escribir los comandos en el sandbox, y el [aislamiento de red](#network-isolation) controla a qué dominios pueden acceder. Con la capa del sistema de archivos desactivada, los comandos en el sandbox obtienen acceso de lectura y escritura sin restricciones al sistema de archivos del host, mientras que su tráfico de salida de red sigue limitado a tus dominios permitidos. Desactiva la capa cuando uses el sandbox para controlar a dónde se conectan los comandos en lugar de qué escriben.

356 357 

357`sandbox.filesystem.disabled` tiene `false` como valor predeterminado. Requiere Claude Code v2.1.216 o posterior.358`sandbox.filesystem.disabled` tiene como valor predeterminado `false`.

358 359 

359> [!WARNING]360> [!WARNING]

360>361>

361> Con el aislamiento del sistema de archivos desactivado y los comandos permitidos automáticamente, un comando aislado en el sandbox puede escribir archivos que comandos posteriores ejecutan o leen, como archivos de inicio del shell, ejecutables en `$PATH` o `~/.claude/settings.json`, y usarlos para ampliar su propio acceso en la siguiente ejecución. Establece `filesystem.disabled` en `true` solo para cargas de trabajo en las que confíes que no ampliarán su propio acceso. Bloquear los dominios de red con [`allowManagedDomainsOnly`](#keep-developers-from-widening-the-policy) reduce el riesgo, pero no lo elimina, ya que ese bloqueo se aplica solo a los comandos que se ejecutan dentro del sandbox.362> Con el aislamiento del sistema de archivos desactivado y los comandos permitidos automáticamente, un comando en el sandbox puede escribir archivos que comandos posteriores ejecutan o leen, como archivos de inicio del shell, ejecutables en `$PATH` o `~/.claude/settings.json`, y usarlos para ampliar su propio acceso en la siguiente ejecución. Configura `filesystem.disabled` en `true` solo para cargas de trabajo en las que confíes que no escalarán su propio acceso. Bloquear los dominios de red con [`allowManagedDomainsOnly`](#keep-developers-from-widening-the-policy) reduce el riesgo pero no lo elimina, ya que ese bloqueo se aplica solo a los comandos que se ejecutan dentro del sandbox.

362 363 

363#### Qué configuraciones pueden desactivarlo364#### Qué configuración puede desactivarlo

364 365 

365Como desactivar el aislamiento del sistema de archivos amplía lo que pueden hacer los comandos aislados en el sandbox, Claude Code respeta `filesystem.disabled` solo desde estas fuentes de configuración:366Como desactivar el aislamiento del sistema de archivos amplía lo que pueden hacer los comandos en el sandbox, Claude Code respeta `filesystem.disabled` solo desde estas fuentes de configuración:

366 367 

367* La configuración de usuario, la configuración administrada y el flag de CLI `--settings` pueden establecerlo. La configuración del proyecto en `.claude/settings.json` y `.claude/settings.local.json` no puede, de modo que un proyecto descargado no puede desactivar el aislamiento del sistema de archivos.368* La configuración de usuario, la configuración administrada y el flag de CLI `--settings` pueden establecerlo. La configuración del proyecto en `.claude/settings.json` y `.claude/settings.local.json` no puede, así que un proyecto clonado no puede desactivar el aislamiento del sistema de archivos.

368* Cuando la configuración administrada configura `sandbox.filesystem` de cualquier forma, o incluye alguna entrada de `sandbox.credentials.files` con `"mode": "deny"`, solo la configuración administrada puede establecer la clave. Esto evita que los desarrolladores desactiven el aislamiento del sistema de archivos en un despliegue así; para desactivarlo para todos, establece `"disabled": true` en la configuración administrada.369* Cuando la configuración administrada configura `sandbox.filesystem` de cualquier forma, o incluye alguna entrada de `sandbox.credentials.files` con `"mode": "deny"`, solo la configuración administrada puede establecer la clave. Esto evita que los desarrolladores desactiven el aislamiento del sistema de archivos en ese despliegue; para desactivarlo para todos, establece `"disabled": true` en la configuración administrada.

369* Cuando [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](https://code.claude.com/docs/es/env-vars) está establecida, Claude Code ignora `filesystem.disabled` desde cualquier fuente, incluida la configuración administrada, y mantiene activado el aislamiento del sistema de archivos.370* Cuando [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](https://code.claude.com/docs/es/env-vars) está definida, Claude Code ignora `filesystem.disabled` desde cualquier fuente, incluida la configuración administrada, y mantiene activado el aislamiento del sistema de archivos.

370 371 

371Una entrada `mask` [válida](https://code.claude.com/docs/es/settings-reference.md#invalid-credential-entries-in-managed-settings) no fija la clave, incluso cuando Claude Code [recurre a `deny`](#mask-credential-files) para ella al iniciar. Incluye una ruta que no se puede enmascarar, como un directorio de credenciales, como una entrada `deny` explícita en la configuración administrada, lo que fija la clave.372Una entrada `mask` [válida](https://code.claude.com/docs/es/settings-reference.md#invalid-credential-entries-in-managed-settings) no bloquea la clave, incluso cuando Claude Code [recurre a `deny`](#mask-credential-files) para ella al iniciar. Agrega una ruta que no se pueda enmascarar, como un directorio de credenciales, como una entrada `deny` explícita en la configuración administrada, lo que bloquea la clave.

372 373 

373#### Qué cambia cuando el aislamiento del sistema de archivos está desactivado374#### Qué cambia cuando el aislamiento del sistema de archivos está desactivado

374 375 


377| Protección | Con el aislamiento del sistema de archivos desactivado |378| Protección | Con el aislamiento del sistema de archivos desactivado |

378| - | - |379| - | - |

379| Bloqueos de lectura de `filesystem.denyRead` y de `deny` en [`credentials.files`](#protect-credentials) | No se aplican. La capa del sistema de archivos aplica ambos |380| Bloqueos de lectura de `filesystem.denyRead` y de `deny` en [`credentials.files`](#protect-credentials) | No se aplican. La capa del sistema de archivos aplica ambos |

380| Entradas `deny` y `mask` de `credentials.envVars` | Se aplican. La limpieza de variables de entorno es independiente de la capa del sistema de archivos |381| Entradas `deny` y `mask` de `credentials.envVars` | Se aplican. La depuración de variables de entorno es independiente de la capa del sistema de archivos |

381| [Entradas `mask` de `credentials.files`](#mask-credential-files) aplicadas como máscaras | Se aplican: el enmascaramiento es independiente de la capa del sistema de archivos. Una entrada que [recurrió a `deny`](#mask-credential-files) no se aplica, como cualquier entrada `deny` |382| [Entradas `mask` de `credentials.files`](#mask-credential-files) aplicadas como máscaras | Se aplican: el enmascaramiento es independiente de la capa del sistema de archivos. Una entrada que [recurrió a `deny`](#mask-credential-files) no se aplica, como cualquier entrada `deny` |

382 383 

383Cambian otras dos cosas:384Otras dos cosas cambian:

384 385 

385* Los comandos aislados en el sandbox heredan el `$TMPDIR` de tu shell en lugar del directorio temporal por usuario, porque todos los directorios temporales se pueden escribir y Claude Code ya no redirige los comandos al directorio por usuario.386* Los comandos en el sandbox heredan el `$TMPDIR` de tu shell en lugar del directorio temporal de cada usuario, porque todos los directorios temporales se pueden escribir y Claude Code ya no redirige los comandos al de cada usuario.

386 387 

387 En Linux, la variable a menudo no está establecida en el shell principal. Las indicaciones de la herramienta Bash le dicen a Claude que cree directorios temporales con `mktemp -d` en lugar de depender de `$TMPDIR`.388 En Linux, la variable a menudo no está definida en el shell padre. Las indicaciones de la herramienta Bash le dicen a Claude que cree directorios temporales con `mktemp -d` en lugar de depender de `$TMPDIR`.

388* [`autoAllowBashIfSandboxed`](https://code.claude.com/docs/es/settings-reference#sandbox-autoallowbashifsandboxed) sigue teniendo `true` como valor predeterminado, por lo que los comandos aislados en el sandbox siguen ejecutándose sin pedir confirmación. Establécelo en `false` para que se pida confirmación para los comandos aislados en el sandbox.389* [`autoAllowBashIfSandboxed`](https://code.claude.com/docs/es/settings-reference#sandbox-autoallowbashifsandboxed) sigue teniendo `true` como valor predeterminado, así que los comandos en el sandbox siguen ejecutándose sin pedir confirmación. Configúralo en `false` para pedir confirmación para los comandos en el sandbox.

389 390 

390### Proteger credenciales391### Proteger credenciales

391 392 

392El ajuste `sandbox.credentials` declara los archivos de credenciales y las variables de entorno que se deben proteger de los comandos aislados en el sandbox. Cada entrada indica una ruta de archivo o una variable de entorno y un `mode`. El bloque dedicado `credentials` mantiene las reglas de credenciales agrupadas y separadas de las reglas generales del sistema de archivos.393El ajuste `sandbox.credentials` declara archivos de credenciales y variables de entorno que se deben proteger de los comandos en el sandbox. Cada entrada indica una ruta de archivo o una variable de entorno y un `mode`. El bloque dedicado `credentials` mantiene las reglas de credenciales agrupadas y separadas de las reglas generales del sistema de archivos.

393 394 

394En las entradas con `"mode": "deny"`, se deniega la lectura de las rutas de archivo dentro del sandbox, la misma restricción que aplica `filesystem.denyRead`, y las variables de entorno se eliminan antes de que se ejecute cada comando aislado en el sandbox. La protección de archivos forma parte de la capa del sistema de archivos, por lo que no se aplica si [desactivas el aislamiento del sistema de archivos](#disable-filesystem-isolation); la protección de variables de entorno sí se sigue aplicando.395Para las entradas con `"mode": "deny"`, se deniega la lectura de las rutas de archivo dentro del sandbox, la misma restricción que aplica `filesystem.denyRead`, y las variables de entorno se eliminan antes de que se ejecute cada comando en el sandbox. La protección de archivos forma parte de la capa del sistema de archivos, así que no se aplica si [desactivas el aislamiento del sistema de archivos](#disable-filesystem-isolation); la protección de variables de entorno sí se sigue aplicando.

395 396 

396El siguiente ejemplo bloquea la lectura del archivo de credenciales de AWS y del directorio SSH, y elimina `GITHUB_TOKEN` y `NPM_TOKEN` del entorno de los comandos aislados en el sandbox:397El siguiente ejemplo bloquea la lectura del archivo de credenciales de AWS y del directorio SSH, y elimina `GITHUB_TOKEN` y `NPM_TOKEN` del entorno de los comandos en el sandbox:

397 398 

398```json theme={null}399```json theme={null}

399{400{


413}414}

414```415```

415 416 

416Las entradas de variables de entorno y de archivos también aceptan `"mode": "mask"`, que se describe en [Enmascarar credenciales](#mask-credentials).417Las entradas de variables de entorno y las de archivos también aceptan `"mode": "mask"`, que se describe en [Enmascarar credenciales](#mask-credentials).

417 418 

418Las rutas de archivo siguen las mismas [reglas de prefijos](https://code.claude.com/docs/es/settings-reference.md#sandbox-path-prefixes) que los ajustes `sandbox.filesystem.*`.419Las rutas de archivo siguen las mismas [reglas de prefijos](https://code.claude.com/docs/es/settings-reference.md#sandbox-path-prefixes) que los ajustes `sandbox.filesystem.*`.

419 420 

420Claude Code combina las entradas `deny` de todos los [alcances de configuración](https://code.claude.com/docs/es/settings.md#settings-precedence) que carga la sesión. Una entrada `deny` solo restringe el acceso, por lo que cualquier alcance puede agregar una, pero ningún alcance puede eliminar una que haya agregado otro alcance.421Claude Code combina las entradas `deny` de cada [alcance de configuración](https://code.claude.com/docs/es/settings.md#settings-precedence) que carga la sesión. Una entrada `deny` solo restringe el acceso, así que cualquier alcance puede agregar una, pero ningún alcance puede eliminar una que haya agregado otro alcance.

421 422 

422Cuando [excluyes una fuente de configuración](#configure-sandboxing):423Cuando [excluyes una fuente de configuración](#configure-sandboxing):

423 424 

424* **Configuración del proyecto o local**: Claude Code no aplica ninguna de sus entradas de `credentials`. Requiere Claude Code v2.1.246 o posterior.425* **Configuración del proyecto o local**: Claude Code no aplica ninguna de sus entradas de `credentials`. Requiere Claude Code v2.1.246 o posterior.

425* **Configuración de usuario**: Claude Code sigue aplicando las entradas `deny` de `~/.claude/settings.json` y mantiene sus [entradas `mask` de archivos](#mask-credential-files) como restricciones que ya no autorizan al proxy a sustituir el valor real, pero descarta sus [entradas `mask` de variables de entorno](#mask-environment-variables).426* **Configuración de usuario**: Claude Code sigue aplicando las entradas `deny` de `~/.claude/settings.json` y mantiene sus [entradas `mask` de archivos](#mask-credential-files) como restricciones que ya no autorizan al proxy a sustituir el valor real, pero descarta sus [entradas `mask` de variables de entorno](#mask-environment-variables).

426 427 

427No hay una lista de denegación de credenciales integrada, por lo que solo se restringen los archivos y las variables que indiques.428No hay una lista de denegación de credenciales integrada, así que solo se restringen los archivos y las variables que enumeres.

428 429 

429`sandbox.credentials` afecta solo a los comandos Bash aislados en el sandbox. Para quitar credenciales de todos los subprocesos independientemente del sandboxing, establece [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](https://code.claude.com/docs/es/env-vars).430`sandbox.credentials` afecta solo a los comandos de Bash en el sandbox. Para eliminar credenciales de todos los subprocesos independientemente del sandboxing, define [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](https://code.claude.com/docs/es/env-vars).

430 431 

431### Enmascarar credenciales432### Enmascarar credenciales

432 433 

433Cuando enmascaras una credencial, Claude Code muestra a los comandos aislados en el sandbox un marcador por sesión llamado centinela, y el [proxy del sandbox](#network-isolation) sustituye el valor real en las solicitudes salientes a los hosts que permitas. Una entrada `deny` de [Proteger credenciales](#protect-credentials), en cambio, bloquea la credencial. En el caso de los archivos en macOS, Claude Code [bloquea el archivo en su lugar](#mask-credential-files) en lugar de enmascararlo. La referencia de [`sandbox.credentials`](https://code.claude.com/docs/es/settings-reference#sandbox-credentials) enumera todos los campos.434Cuando enmascaras una credencial, Claude Code muestra a los comandos en el sandbox un marcador de posición por sesión llamado centinela, y el [proxy del sandbox](#network-isolation) sustituye el valor real en las solicitudes salientes a los hosts que permites. Una entrada `deny` en [Proteger credenciales](#protect-credentials) bloquea la credencial en su lugar. Para archivos en macOS, Claude Code [bloquea el archivo en lugar](#mask-credential-files) de enmascararlo. La referencia de [`sandbox.credentials`](https://code.claude.com/docs/es/settings-reference#sandbox-credentials) enumera todos los campos.

434 435 

435El enmascaramiento requiere lo siguiente:436El enmascaramiento requiere lo siguiente:

436 437 

437* **Terminación TLS**: el proxy sustituye el valor real dentro del contenido de la solicitud, por lo que necesita verlo. Configura [`network.tlsTerminate`](https://code.claude.com/docs/es/settings-reference#sandbox-network-tlsterminate) para que el proxy termine TLS por sí mismo. Sin esto, el enmascaramiento falla sin exponer nada: el comando sigue viendo solo el centinela, pero el centinela llega al servidor sin cambios y la autenticación falla. Para comprobar si existe esta configuración incorrecta, ejecuta `claude doctor` en tu terminal y busca la advertencia `TLS termination is unavailable`.438* **Terminación TLS**: el proxy sustituye el valor real dentro del contenido de las solicitudes, así que tiene que poder verlo. Configura [`network.tlsTerminate`](https://code.claude.com/docs/es/settings-reference#sandbox-network-tlsterminate) para que el proxy termine TLS por sí mismo. Sin esto, el enmascaramiento falla sin exponer nada: el comando sigue viendo solo el centinela, pero el centinela llega al servidor sin cambios y la autenticación falla. Para detectar esta configuración incorrecta, ejecuta `claude doctor` en tu terminal y busca la advertencia `TLS termination is unavailable`.

438* **Un destino permitido**: cada entrada `mask` puede incluir `injectHosts`, los hosts a los que puede llegar el valor real. El proxy solo inyecta en las conexiones que admite la [lista de dominios permitidos](#network-isolation), por lo que cada host de `injectHosts` también debe ser accesible a través de `network.allowedDomains`. En una entrada `mask` sin `injectHosts`, el proxy sustituye el valor real en las solicitudes a todos los hosts de `network.allowedDomains`.439* **Un destino permitido**: cada entrada `mask` puede incluir `injectHosts`, los hosts a los que se permite que llegue el valor real. El proxy solo inyecta en conexiones que admite la [lista de dominios permitidos](#network-isolation), así que cada host de `injectHosts` también debe ser accesible a través de `network.allowedDomains`. Para una entrada `mask` sin `injectHosts`, el proxy sustituye el valor real en las solicitudes a todos los hosts de `network.allowedDomains`.

439* **Un alcance de configuración de confianza**: el enmascaramiento autoriza al proxy a enviar tu credencial real a algún lugar, por lo que Claude Code respeta las entradas `mask`, `network.tlsTerminate`, [`credentials.allowPlaintextInject`](https://code.claude.com/docs/es/settings-reference#sandbox-credentials-allowplaintextinject), `awsPairs` y `sigv4` solo desde la configuración de usuario, la configuración administrada y el flag `--settings`. Los ignora en el `.claude/settings.json` o el `.claude/settings.local.json` de un repositorio. Cuando tu administrador entrega entradas `mask`, `network.tlsTerminate` o `credentials.allowPlaintextInject` a través de la configuración administrada por el servidor, cuentan como [configuraciones que requieren aprobación](https://code.claude.com/docs/es/server-managed-settings.md#security-approval-dialogs).440* **Un alcance de configuración de confianza**: el enmascaramiento autoriza al proxy a enviar tu credencial real a algún lugar, así que Claude Code respeta las entradas `mask`, `network.tlsTerminate`, [`credentials.allowPlaintextInject`](https://code.claude.com/docs/es/settings-reference#sandbox-credentials-allowplaintextinject), `awsPairs` y `sigv4` solo desde la configuración de usuario, la configuración administrada y el flag `--settings`. Los ignora en el `.claude/settings.json` o `.claude/settings.local.json` de un repositorio. Cuando tu administrador proporciona entradas `mask`, `network.tlsTerminate` o `credentials.allowPlaintextInject` mediante la configuración administrada por el servidor, cuentan como [configuración que necesita aprobación](https://code.claude.com/docs/es/server-managed-settings.md#security-approval-dialogs).

440 441 

441#### Enmascarar variables de entorno442#### Enmascarar variables de entorno

442 443 

443Para enmascarar una variable de entorno, establece `"mode": "mask"` en su entrada de `credentials.envVars`. El comando y todo lo que registra nunca contienen la credencial real, pero sus solicitudes se siguen autenticando. Cuando la misma variable aparece con `deny` en cualquier alcance, `deny` tiene precedencia.444Para enmascarar una variable de entorno, establece `"mode": "mask"` en su entrada de `credentials.envVars`. El comando y todo lo que registre nunca contienen la credencial real, pero sus solicitudes se siguen autenticando. Cuando la misma variable aparece con `deny` en cualquier alcance, `deny` tiene precedencia.

444 445 

445El siguiente ejemplo enmascara dos tokens. `GH_TOKEN` se sustituye solo en las solicitudes a `api.github.com`, mientras que `NPM_TOKEN` no tiene `injectHosts` y se sustituye en las solicitudes a todos los hosts de `network.allowedDomains`:446Este ejemplo enmascara dos tokens. `GH_TOKEN` se sustituye solo en las solicitudes a `api.github.com`, mientras que `NPM_TOKEN` no tiene `injectHosts` y se sustituye en las solicitudes a todos los hosts de `network.allowedDomains`:

446 447 

447```json theme={null}448```json theme={null}

448{449{


462}463}

463```464```

464 465 

465De forma predeterminada, el enmascaramiento reemplaza el valor completo. Para un valor con estructura, como una cadena de conexión `DATABASE_URL` o un JWT, usa los [campos `extract`, `decode`, `maskClaims` y `onExtractNoMatch`](https://code.claude.com/docs/es/settings-reference#sandbox-credentials-envvars) para que las herramientas que analizan el valor sigan funcionando.466El enmascaramiento reemplaza el valor completo de forma predeterminada. Para un valor con estructura, como una cadena de conexión `DATABASE_URL` o un JWT, usa los [campos `extract`, `decode`, `maskClaims` y `onExtractNoMatch`](https://code.claude.com/docs/es/settings-reference#sandbox-credentials-envvars) para que las herramientas que analizan el valor sigan funcionando.

466 467 

467Para un destino IPv6, escribe la dirección de forma distinta en las dos listas:468Para un destino IPv6, escribe la dirección de forma diferente en las dos listas:

468 469 

469* **`network.allowedDomains`**: la forma entre corchetes, como `"[::1]"`470* **`network.allowedDomains`**: la forma entre corchetes, como `"[::1]"`

470* **`injectHosts`**: la dirección sin corchetes en su forma canónica comprimida, como `"::1"`471* **`injectHosts`**: la dirección sin corchetes en su forma comprimida canónica, como `"::1"`

471 472 

472El proxy compara cada entrada de `injectHosts` con la dirección de destino sin corchetes de la conexión, ignorando los puertos, por lo que una forma entre corchetes, con ID de zona o comprimida de otra manera nunca coincide. `claude doctor` marca las entradas que nunca pueden coincidir con la advertencia `Sandbox credential injectHosts entries can never match their destination`. Esta comprobación requiere Claude Code v2.1.229 o posterior.473El proxy compara cada entrada de `injectHosts` con la dirección de destino sin corchetes de la conexión, ignorando los puertos, así que una escritura entre corchetes, con ID de zona o comprimida de otra forma nunca coincide. `claude doctor` marca las entradas que nunca pueden coincidir con la advertencia `Sandbox credential injectHosts entries can never match their destination`. Esta comprobación requiere Claude Code v2.1.229 o posterior.

473 474 

474#### Volver a firmar solicitudes de AWS475#### Volver a firmar solicitudes de AWS

475 476 

476Las solicitudes de AWS llevan firmas SigV4 sobre el contenido de la solicitud, así que enmascara `AWS_ACCESS_KEY_ID` y `AWS_SECRET_ACCESS_KEY` juntas. El proxy detecta una solicitud SigV4 por el [centinela](#mask-credentials) de la clave de acceso y vuelve a firmar la solicitud con los valores reales, lo que requiere Claude Code v2.1.221 o posterior. Si enmascaras solo el secreto, las solicitudes se firman con un marcador que el proxy no puede detectar, por lo que fallan en AWS.477Las solicitudes de AWS llevan firmas SigV4 sobre el contenido de la solicitud, así que enmascara `AWS_ACCESS_KEY_ID` y `AWS_SECRET_ACCESS_KEY` juntas. El proxy detecta una solicitud SigV4 por el [centinela](#mask-credentials) de la clave de acceso y vuelve a firmar la solicitud con los valores reales, lo que requiere Claude Code v2.1.221 o posterior. Si enmascaras solo el secreto, las solicitudes se firman con un marcador de posición que el proxy no puede detectar, así que fallan en AWS.

477 478 

478Claude Code vincula automáticamente las variables convencionales `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` y `AWS_SESSION_TOKEN` en una sola credencial cuando enmascaras sus valores completos. Si tu credencial de AWS está en variables con otros nombres, agrúpalas con [`credentials.awsPairs`](https://code.claude.com/docs/es/settings-reference#sandbox-credentials-awspairs), que requiere Claude Code v2.1.224 o posterior.479Claude Code vincula automáticamente las variables convencionales `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` y `AWS_SESSION_TOKEN` en una sola credencial cuando enmascaras sus valores completos. Si tu credencial de AWS está en variables con otros nombres, agrúpalas con [`credentials.awsPairs`](https://code.claude.com/docs/es/settings-reference#sandbox-credentials-awspairs), lo que requiere Claude Code v2.1.224 o posterior.

479 480 

480Las cargas en streaming, las URL prefirmadas y las solicitudes SigV4A llevan firmas que el proxy no puede recalcular. Cuando una de estas solicitudes está firmada con el marcador de un par enmascarado, el proxy la hace fallar en lugar de reenviar una firma rota. Las solicitudes firmadas con credenciales sin enmascarar no se ven afectadas. Usa [`credentials.sigv4`](https://code.claude.com/docs/es/settings-reference#sandbox-credentials-sigv4), que requiere Claude Code v2.1.224 o posterior, para reenviar en su lugar una de estas formas de solicitud. AWS sigue rechazando la solicitud, de modo que la herramienta que llama recibe la respuesta de rechazo propia de AWS en lugar de un error del proxy.481Las cargas en streaming, las URL prefirmadas y las solicitudes SigV4A llevan firmas que el proxy no puede recalcular. Cuando una de estas solicitudes está firmada con el marcador de posición de un par enmascarado, el proxy la hace fallar en lugar de reenviar una firma rota. Las solicitudes firmadas con credenciales no enmascaradas no se ven afectadas. Usa [`credentials.sigv4`](https://code.claude.com/docs/es/settings-reference#sandbox-credentials-sigv4), que requiere Claude Code v2.1.224 o posterior, para reenviar en su lugar una de estas formas de solicitud. AWS sigue rechazando la solicitud, así que la herramienta que hace la llamada recibe la propia respuesta de rechazo de AWS en lugar de un error del proxy.

481 482 

482#### Enmascarar archivos de credenciales483#### Enmascarar archivos de credenciales

483 484 

484Para enmascarar un archivo de credenciales, establece `"mode": "mask"` en su entrada de `credentials.files`. Enmascarar archivos requiere Claude Code v2.1.221 o posterior. Lo que ve un comando aislado en el sandbox depende de la plataforma:485Para enmascarar un archivo de credenciales, establece `"mode": "mask"` en su entrada de `credentials.files`. Enmascarar archivos requiere Claude Code v2.1.221 o posterior. Lo que ve un comando en el sandbox depende de la plataforma:

485 486 

486* **Linux y WSL2**: los comandos aislados en el sandbox leen una copia [centinela](#mask-credentials) del archivo, y el proxy sustituye el valor real en las solicitudes salientes.487* **Linux y WSL2**: los comandos en el sandbox leen una copia [centinela](#mask-credentials) del archivo, y el proxy sustituye el valor real en las solicitudes salientes.

487* **macOS**: los comandos aislados en el sandbox no pueden leer el archivo en absoluto. Claude Code no crea ninguna copia centinela, por lo que las herramientas que se autentican con el archivo no funcionan dentro del sandbox, el mismo efecto que `deny`. El bloqueo de lectura se mantiene incluso cuando [desactivas el aislamiento del sistema de archivos](#disable-filesystem-isolation).488* **macOS**: los comandos en el sandbox no pueden leer el archivo en absoluto. Claude Code no crea ninguna copia centinela, así que las herramientas que se autentican con el archivo no funcionan dentro del sandbox, con el mismo efecto que `deny`. El bloqueo de lectura se mantiene incluso cuando [desactivas el aislamiento del sistema de archivos](#disable-filesystem-isolation).

488 489 

489El siguiente ejemplo enmascara un token de GitHub almacenado en `~/.config/gh/hosts.yml`. El patrón `extract` marca qué parte del archivo es el secreto, de modo que en Linux y WSL2 `gh` sigue analizando el resto de su configuración:490Este ejemplo enmascara un token de GitHub almacenado en `~/.config/gh/hosts.yml`. El patrón `extract` marca qué parte del archivo es el secreto, así que en Linux y WSL2 `gh` sigue analizando el resto de su configuración:

490 491 

491```json theme={null}492```json theme={null}

492{493{


510}511}

511```512```

512 513 

513Para confirmar que la máscara está activa, pídele a Claude que ejecute `cat ~/.config/gh/hosts.yml` en un comando aislado en el sandbox. En Linux y WSL2 la salida muestra un centinela en lugar del token, y en macOS la lectura falla.514Para confirmar que la máscara está activa, pídele a Claude que ejecute `cat ~/.config/gh/hosts.yml` en un comando en el sandbox. En Linux y WSL2, la salida muestra un centinela en lugar del token, y en macOS la lectura falla.

514 515 

515Sin `extract` ni `decode`, Claude Code reemplaza todo el archivo con un único centinela, lo que es adecuado para un archivo que contiene un único secreto simple. Usa los [campos `extract`, `decode`, `maskClaims`, `onExtractNoMatch` y `maskDuplicates`](https://code.claude.com/docs/es/settings-reference#sandbox-credentials-files) para controlar el enmascaramiento parcial y qué ocurre cuando el patrón no coincide con nada.516Sin `extract` ni `decode`, Claude Code reemplaza el archivo completo con un solo centinela, lo que es adecuado para un archivo que contiene un único secreto sin más. Usa los [campos `extract`, `decode`, `maskClaims`, `onExtractNoMatch` y `maskDuplicates`](https://code.claude.com/docs/es/settings-reference#sandbox-credentials-files) para controlar el enmascaramiento parcial y lo que ocurre cuando el patrón no coincide con nada.

516 517 

517> [!WARNING]518> [!WARNING]

518>519>

519> Cuando la búsqueda no encuentra nada que enmascarar, el valor predeterminado de `onExtractNoMatch`, `warn`, omite la entrada, de modo que los comandos aislados en el sandbox pueden leer el archivo real sin enmascarar. En macOS, Claude Code aplica las entradas `mask` como `deny` antes de que se ejecute el patrón siempre que el aislamiento del sistema de archivos esté activado, por lo que los resultados sin coincidencia solo tienen efecto allí cuando [el aislamiento del sistema de archivos está desactivado](#disable-filesystem-isolation). El valor predeterminado es adecuado para credenciales que pueden estar ausentes legítimamente. Si el secreto podría estar presente pero el patrón podría no detectarlo, usa [`deny`](https://code.claude.com/docs/es/settings-reference#mask-fields-for-files).520> Cuando la búsqueda no encuentra nada que enmascarar, el valor predeterminado de `onExtractNoMatch`, `warn`, omite la entrada, así que los comandos en el sandbox pueden leer el archivo real sin enmascarar. En macOS, Claude Code aplica las entradas `mask` como `deny` antes de que se ejecute el patrón siempre que el aislamiento del sistema de archivos esté activado, así que los resultados sin coincidencia solo tienen efecto allí cuando [el aislamiento del sistema de archivos está desactivado](#disable-filesystem-isolation). El valor predeterminado es adecuado para credenciales que pueden estar ausentes legítimamente. Si el secreto podría estar presente pero el patrón podría no detectarlo, usa [`deny`](https://code.claude.com/docs/es/settings-reference#mask-fields-for-files).

520 521 

521`mask` se aplica a un único archivo, así que indica cada archivo de credenciales por separado. Claude Code recurre a `deny` para una entrada `mask` que no puede enmascarar de forma segura: una ruta de directorio, un patrón glob, un archivo de más de 8 MiB o un archivo que no es texto UTF-8.522`mask` se aplica a un solo archivo, así que enumera cada archivo de credenciales por separado. Claude Code recurre a `deny` para una entrada `mask` que no puede enmascarar de forma segura: una ruta de directorio, un patrón glob, un archivo de más de 8 MiB o un archivo que no es texto UTF-8.

522 523 

523## Cómo funciona el sandboxing524## Cómo funciona el sandboxing

524 525 

Details

301| Variable | Descripción |301| Variable | Descripción |

302| :- | :- |302| :- | :- |

303| `CLAUDE_RUNNER_WORK_ORDER_FILE` | Ruta a un archivo temporal que contiene el JWT de orden de trabajo firmado que el nuevo ejecutor registra. Eliminado después de que el hook sale. No registre el contenido del archivo. |303| `CLAUDE_RUNNER_WORK_ORDER_FILE` | Ruta a un archivo temporal que contiene el JWT de orden de trabajo firmado que el nuevo ejecutor registra. Eliminado después de que el hook sale. No registre el contenido del archivo. |

304| `CLAUDE_RUNNER_ORDER_ID` | Clave de idempotencia opaca, única por solicitud de generación y segura para nombres de recursos de Kubernetes. Úsela como clave de deduplicación de su aprovisionador. |304| `CLAUDE_RUNNER_ORDER_ID` | Clave de idempotencia opaca, única por solicitud de generación y segura para nombres de recursos de Kubernetes. Usa solo el ID de orden como clave de deduplicación de tu aprovisionador. |

305| `CLAUDE_RUNNER_SESSION_ID` | La sesión para la que es esta solicitud, como el ID `session_...` en la URL de la sesión. Se repite en cada resolicitud de la sesión, por lo que úsala para registro y enrutamiento, no como clave de deduplicación. Vacía para solicitudes de precalentamiento, que arrancan un ejecutor en espera antes de cualquier sesión específica cuando [`--min-idle`](https://code.claude.com/docs/es/self-hosted-environments-reference#orchestrator-cli-flags) se establece, por lo que no asumas que la variable está establecida. |305| `CLAUDE_RUNNER_SESSION_ID` | La sesión para la que es esta solicitud, como el ID `session_...` en la URL de la sesión. Se repite en cada resolicitud de la sesión, por lo que úsala para registro y enrutamiento, no como clave de deduplicación. Vacía para solicitudes de precalentamiento, que arrancan un ejecutor en espera antes de cualquier sesión específica cuando [`--min-idle`](https://code.claude.com/docs/es/self-hosted-environments-reference#orchestrator-cli-flags) se establece, por lo que no asumas que la variable está establecida. |

306| `CLAUDE_RUNNER_SESSION_UUID` | El mismo ID de sesión en forma UUID canónica. Vacío para solicitudes de precalentamiento. |306| `CLAUDE_RUNNER_SESSION_UUID` | El mismo ID de sesión en forma UUID canónica. Vacío para solicitudes de precalentamiento. |

307| `CLAUDE_RUNNER_ATTEMPT` | Un contador por sesión para usar en el registro. No es un recuento de reintentos ni un recuento de solicitudes. `0` para solicitudes de precalentamiento, aunque una solicitud para una sesión también puede llevar `0`. |307| `CLAUDE_RUNNER_ATTEMPT` | Un contador por sesión para usar en el registro. No es un recuento de reintentos ni un recuento de solicitudes. `0` para solicitudes de precalentamiento, aunque una solicitud para una sesión también puede llevar `0`. |


381 381 

382| Flag, con un valor de ejemplo | A quién pasarlo | Qué hace |382| Flag, con un valor de ejemplo | A quién pasarlo | Qué hace |

383| :- | :- | :- |383| :- | :- | :- |

384| `--release-idle-session-min 30` | Cada ejecutor que inicia tu hook | El ejecutor libera su sesión después de esa cantidad de minutos de inactividad y luego sale con 0. La sesión se reanuda cuando su usuario envía su siguiente mensaje, pero [el trabajo que no había enviado con push se pierde](https://code.claude.com/docs/es/self-hosted-environments-deploy.md#additional-limitations). |384| `--release-idle-session-min 30` | Cada ejecutor que inicia tu hook | El ejecutor libera su sesión después de esa cantidad de minutos de inactividad y luego sale con 0. La sesión se reanuda cuando su usuario envía su siguiente mensaje, pero [el trabajo que no había enviado con push se pierde](https://code.claude.com/docs/es/self-hosted-environments-deploy.md#additional-limitations). [Retén una sesión](https://code.claude.com/docs/es/self-hosted-environments-deploy.md#keep-an-idle-session-while-its-processes-run) para los procesos que dejó en ejecución. |

385| `--kill-session-after-min 480` | Cada ejecutor que inicia tu hook | Limita cada sesión a esa cantidad de minutos, como respaldo para las [sesiones que no cuentan como inactivas](https://code.claude.com/docs/es/self-hosted-environments-deploy.md#some-sessions-don’t-count-as-idle), así que establécelo por encima de tu sesión más larga esperada |385| `--kill-session-after-min 480` | Cada ejecutor que inicia tu hook | Limita cada sesión a esa cantidad de minutos, como respaldo para las [sesiones que no cuentan como inactivas](https://code.claude.com/docs/es/self-hosted-environments-deploy.md#some-sessions-don’t-count-as-idle), así que establécelo por encima de tu sesión más larga esperada |

386| `--exit-if-unused-min 60` | Ejecutores en espera, que tu hook inicia para solicitudes de precalentamiento | Un ejecutor en espera que nunca toma una sesión sale después de esa cantidad de minutos. Si estableces [`--min-idle`](https://code.claude.com/docs/es/self-hosted-environments-reference#orchestrator-cli-flags), obtienes un reemplazo a menos que el ejecutor en espera fuera excedente, así que usa un valor muy superior a tu tiempo de arranque. |386| `--exit-if-unused-min 60` | Ejecutores en espera, que tu hook inicia para solicitudes de precalentamiento | Un ejecutor en espera que nunca toma una sesión sale después de esa cantidad de minutos. Si estableces [`--min-idle`](https://code.claude.com/docs/es/self-hosted-environments-reference#orchestrator-cli-flags), obtienes un reemplazo a menos que el ejecutor en espera fuera excedente, así que usa un valor muy superior a tu tiempo de arranque. |

387 387 

Details

68| `code.claude.com` y `claude.com` | 443 | Búsquedas de documentación por el agente integrado claude-code-guide y solicitudes de WebFetch preaprobadas durante sesiones. Bloquear estos hosts solo afecta las búsquedas de documentación. |68| `code.claude.com` y `claude.com` | 443 | Búsquedas de documentación por el agente integrado claude-code-guide y solicitudes de WebFetch preaprobadas durante sesiones. Bloquear estos hosts solo afecta las búsquedas de documentación. |

69| `*.frame.claudeusercontent.com` | 443 | Solo cuando la [herramienta Artifact](https://code.claude.com/docs/es/artifacts.md#availability) está disponible para sesiones en su organización; los valores predeterminados varían según el plan, según la tabla de disponibilidad allí. Establezca `CLAUDE_CODE_DISABLE_ARTIFACT=1` en el runner para mantener la herramienta deshabilitada independientemente de la configuración de la organización. |69| `*.frame.claudeusercontent.com` | 443 | Solo cuando la [herramienta Artifact](https://code.claude.com/docs/es/artifacts.md#availability) está disponible para sesiones en su organización; los valores predeterminados varían según el plan, según la tabla de disponibilidad allí. Establezca `CLAUDE_CODE_DISABLE_ARTIFACT=1` en el runner para mantener la herramienta deshabilitada independientemente de la configuración de la organización. |

70| `registry.npmjs.org` | 443 | Cuando una sesión instala un plugin, tanto para obtener paquetes de plugins de origen npm como para instalar las dependencias de Node.js de un plugin, o cuando se ejecuta un servidor MCP lanzado por `npx` |70| `registry.npmjs.org` | 443 | Cuando una sesión instala un plugin, tanto para obtener paquetes de plugins de origen npm como para instalar las dependencias de Node.js de un plugin, o cuando se ejecuta un servidor MCP lanzado por `npx` |

71| Un mirror interno de los registros de paquetes que usan tus compilaciones, o los propios registros | 443, o el puerto de tu mirror | Cuando las sesiones instalan dependencias para compilar o probar tus repositorios |

71| `http-intake.logs.us5.datadoghq.com` | 443 | Métricas operacionales de Anthropic. Solo cuando se establece `CLAUDE_CODE_BYOC_ENABLE_DATADOG=1`; desactivado por defecto en entornos autohospedados. |72| `http-intake.logs.us5.datadoghq.com` | 443 | Métricas operacionales de Anthropic. Solo cuando se establece `CLAUDE_CODE_BYOC_ENABLE_DATADOG=1`; desactivado por defecto en entornos autohospedados. |

72| `browser-intake-us5-datadoghq.com` | 443 | Cargas de informes de errores de Anthropic, enviadas solo cuando [informe de errores](https://code.claude.com/docs/es/data-usage.md#telemetry-services) está habilitado para la cuenta de la sesión. Suprimido por `DISABLE_ERROR_REPORTING=1` o `DISABLE_TELEMETRY=1`. |73| `browser-intake-us5-datadoghq.com` | 443 | Cargas de informes de errores de Anthropic, enviadas solo cuando [informe de errores](https://code.claude.com/docs/es/data-usage.md#telemetry-services) está habilitado para la cuenta de la sesión. Suprimido por `DISABLE_ERROR_REPORTING=1` o `DISABLE_TELEMETRY=1`. |

73| Los endpoints de tu proveedor de nube para solicitudes de modelo, búsquedas de modelos y renovación de credenciales, como `bedrock-runtime.us-east-1.amazonaws.com` o `aiplatform.googleapis.com` | 443 | Solo cuando el runner [envía solicitudes de modelo a Amazon Bedrock o a Agent Platform de Google Cloud](https://code.claude.com/docs/es/self-hosted-environments-configuration.md#send-model-requests-to-bedrock-or-agent-platform) |74| Los endpoints de tu proveedor de nube para solicitudes de modelo, búsquedas de modelos y renovación de credenciales, como `bedrock-runtime.us-east-1.amazonaws.com` o `aiplatform.googleapis.com` | 443 | Solo cuando el runner [envía solicitudes de modelo a Amazon Bedrock o a Agent Platform de Google Cloud](https://code.claude.com/docs/es/self-hosted-environments-configuration.md#send-model-requests-to-bedrock-or-agent-platform) |


631 632 

632En las primeras dos etapas que siguen a la señal, el runner libera sesiones, y una sesión liberada se reanuda en un runner nuevo cuando su usuario envía su siguiente mensaje. Contando desde la primera señal, el runner se mueve a través de tres etapas:633En las primeras dos etapas que siguen a la señal, el runner libera sesiones, y una sesión liberada se reanuda en un runner nuevo cuando su usuario envía su siguiente mensaje. Contando desde la primera señal, el runner se mueve a través de tres etapas:

633 634 

634* **Durante los primeros `n` minutos**: el runner sirve sus sesiones normalmente y sigue aplicando `--startup-timeout-min` y `--kill-session-after-min`. Si también establece [`--release-idle-session-min`](https://code.claude.com/docs/es/self-hosted-environments-reference#runner-cli-flags), el runner libera cualquier sesión cuyo usuario ha estado inactivo ese tiempo; sin ella, las sesiones inactivas permanecen en el runner.635* **Durante los primeros `n` minutos**: el runner sirve sus sesiones normalmente y sigue aplicando `--startup-timeout-min` y `--kill-session-after-min`. Si también estableces [`--release-idle-session-min`](https://code.claude.com/docs/es/self-hosted-environments-reference#runner-cli-flags), el runner libera cualquier sesión cuyo usuario haya estado inactivo ese tiempo, a menos que [retengas esa sesión](#keep-an-idle-session-while-its-processes-run). Sin el flag, las sesiones inactivas permanecen en el runner.

635* **Cuando los `n` minutos se agotan**: el runner libera cada sesión que aún mantiene, inactiva o no. El runner espera a que la sesión de mitad de turno termine su turno, y hasta 60 segundos más para las tareas de fondo de un turno, antes de liberar esa sesión.636* **Cuando los `n` minutos se agotan**: el runner libera cada sesión que aún mantiene, inactiva o no. El runner espera a que la sesión de mitad de turno termine su turno, y hasta 60 segundos más para las tareas de fondo de un turno, antes de liberar esa sesión.

636* **Cuando la gracia posterior a la liberación se agota**: el runner drena cualquier sesión que aún mantiene, y el plano de control reencola cada sesión drenada a otro runner de inmediato. La gracia posterior a la liberación comienza cuando los `n` minutos se agotan y es 75 segundos en valores predeterminados. Si establece `--drain-wait-sec` por encima de 60 segundos, la gracia posterior a la liberación es `--drain-wait-sec` más 15 segundos en su lugar.637* **Cuando la gracia posterior a la liberación se agota**: el runner drena cualquier sesión que aún mantiene, y el plano de control reencola cada sesión drenada a otro runner de inmediato. La gracia posterior a la liberación comienza cuando los `n` minutos se agotan y es 75 segundos en valores predeterminados. Si establece `--drain-wait-sec` por encima de 60 segundos, la gracia posterior a la liberación es `--drain-wait-sec` más 15 segundos en su lugar.

637 638 


716 717 

717### Libera las sesiones inactivas en una flota fija718### Libera las sesiones inactivas en una flota fija

718 719 

719Si las sesiones permanecen en cola en una flota fija mientras todos los runners están en línea, la causa pueden ser las sesiones inactivas. De forma predeterminada, una sesión conserva su espacio después de que termina su turno, y su runner permanece bloqueado para el [propietario](https://code.claude.com/docs/es/self-hosted-environments#key-concepts) de esa sesión. Si la [tarea programada en la nube](https://code.claude.com/docs/es/routines.md) de tu equipo inicia una nueva sesión en cada ejecución, sus sesiones inactivas pueden llenar todos los espacios.720Si las sesiones permanecen en cola en una flota fija mientras todos los runners están en línea, la causa pueden ser las sesiones inactivas. De forma predeterminada, una sesión conserva su espacio después de que termina su turno, y su runner permanece bloqueado para el [propietario](https://code.claude.com/docs/es/self-hosted-environments#key-concepts) de esa sesión. Las sesiones de otros propietarios no pueden usar los espacios libres de ese runner. Si la [tarea programada en la nube](https://code.claude.com/docs/es/routines.md) de tu equipo inicia una nueva sesión en cada ejecución, sus sesiones inactivas pueden llenar todos los espacios.

720 721 

721Para comprobarlo, lee `claude_code_self_hosted_runner_session_idle_seconds` en las [métricas de Prometheus](https://code.claude.com/docs/es/self-hosted-environments-reference.md#prometheus-metrics) de cada runner. Cada sesión que mantiene un runner tiene su propia serie: `0` mientras la sesión está ocupada; de lo contrario, los segundos transcurridos desde que quedó inactiva. Elige el tiempo de inactividad que permitirías: más largo que las pausas que las personas hacen a mitad de una tarea, y lo bastante corto como para que cada ejecución se libere antes de que comience la siguiente de la tarea programada. Compara las series con ese valor.722Para comprobarlo, lee `claude_code_self_hosted_runner_session_idle_seconds` en las [métricas de Prometheus](https://code.claude.com/docs/es/self-hosted-environments-reference.md#prometheus-metrics) de cada runner. Cada sesión que mantiene un runner tiene su propia serie: `0` mientras la sesión está ocupada; de lo contrario, los segundos transcurridos desde que quedó inactiva. Elige el tiempo de inactividad que permitirías: más largo que las pausas que las personas hacen a mitad de una tarea, y lo bastante corto como para que cada ejecución se libere antes de que comience la siguiente de la tarea programada. Compara las series con ese valor.

722 723 


725* **Un runner sin series**: ninguna sesión lo ocupa. Consulta **Sessions stay queued** en [Solución de problemas](#troubleshooting).726* **Un runner sin series**: ninguna sesión lo ocupa. Consulta **Sessions stay queued** en [Solución de problemas](#troubleshooting).

726* **Un runner cuyas métricas no responden**: es posible que su proceso haya terminado. Consulta **An environment that looks healthy** en [Cuando el runner termina](#when-the-runner-exits).727* **Un runner cuyas métricas no responden**: es posible que su proceso haya terminado. Consulta **An environment that looks healthy** en [Cuando el runner termina](#when-the-runner-exits).

727 728 

728Para liberar las sesiones inactivas, inicia cada runner con [`--release-idle-session-min`](https://code.claude.com/docs/es/self-hosted-environments-reference#runner-cli-flags) y ese tiempo en minutos, como `--release-idle-session-min 30`. El runner libera entonces cualquier sesión que permanezca inactiva ese tiempo, ya sea que la haya iniciado una tarea programada o una persona.729Para liberar las sesiones inactivas, inicia cada runner con [`--release-idle-session-min`](https://code.claude.com/docs/es/self-hosted-environments-reference#runner-cli-flags) y ese tiempo en minutos, como `--release-idle-session-min 30`. El runner libera entonces cualquier sesión que permanezca inactiva ese tiempo, ya sea que la haya iniciado una tarea programada o una persona, a menos que [la retengas por los procesos que dejó en ejecución](#keep-an-idle-session-while-its-processes-run).

729 730 

730* **Trabajo sin enviar**: una sesión liberada se reanuda con su siguiente mensaje, sin el trabajo que no había enviado con push. Para conservar sus commits, consulta [Las sesiones reanudadas pierden el trabajo sin enviar](#additional-limitations).731* **Trabajo sin enviar**: una sesión liberada se reanuda con su siguiente mensaje, sin el trabajo que no había enviado con push. Para conservar sus commits, consulta [Las sesiones reanudadas pierden el trabajo sin enviar](#additional-limitations).

731* **El runner termina**: un runner que libera su última sesión inicia una [salida normal](#when-the-runner-exits). Haz que tu supervisor lo reinicie en un sistema de archivos limpio, como se describe en [Refuerza tu despliegue](#harden-your-deployment).732* **El runner termina**: un runner que libera su última sesión inicia una [salida normal](#when-the-runner-exits). Haz que tu supervisor lo reinicie en un sistema de archivos limpio, como se describe en [Refuerza tu despliegue](#harden-your-deployment).

732* **Sesiones que nunca quedan inactivas**: establece también [`--kill-session-after-min`](https://code.claude.com/docs/es/self-hosted-environments-reference#runner-cli-flags), porque [algunas sesiones no cuentan como inactivas](#some-sessions-don’t-count-as-idle)733* **Sesiones que nunca quedan inactivas**: establece también [`--kill-session-after-min`](https://code.claude.com/docs/es/self-hosted-environments-reference#runner-cli-flags), porque [algunas sesiones no cuentan como inactivas](#some-sessions-don’t-count-as-idle)

733 734 

735### Conserva una sesión inactiva mientras se ejecutan sus procesos

736 

737Para conservar una sesión inactiva hasta que terminen los procesos que dejó en tu host, como trabajos de `nohup`, inicia el runner con [`--hold-idle-file`](https://code.claude.com/docs/es/self-hosted-environments-reference#runner-cli-flags) y sigue actualizando ese archivo con touch desde el host. Requiere Claude Code v2.1.311 o posterior.

738 

739Estos pasos suponen un runner sin privilegios de root en un host. Si tu runner se ejecuta como `root`, sus sesiones pueden actualizar el archivo por sí mismas, así que primero ejecútalo como un usuario dedicado.

740 

741**1. Elige una ruta para el archivo**

742 

743Elige un archivo regular local, como `/var/lib/claude-hold/hold-idle`, en un directorio en el que las sesiones no puedan escribir, incluidos los directorios superiores, para que una sesión no pueda escribir en él. El runner y sus sesiones comparten un mismo usuario del sistema operativo, así que primero crea ese directorio, cuyo propietario sea otro usuario como `root`, con el modo `755`.

744 

745**2. Inicia el runner**

746 

747Desde tu shell, inicia el runner con `--hold-idle-file`, `--release-idle-session-min` y [`--max-hold-min`](https://code.claude.com/docs/es/self-hosted-environments-reference#runner-cli-flags), el límite de una retención, contado desde que una sesión queda inactiva. Sin este último, el límite es de un día. Establécelo por encima de `--release-idle-session-min`, o no se retendrá nada. Este ejemplo libera las sesiones inactivas después de 30 minutos y libera una sesión retenida como máximo 4 horas después de que quedó inactiva:

748 

749```bash theme={null}

750claude self-hosted-runner \

751 --environment-secret-file /etc/claude/environment-secret \

752 --release-idle-session-min 30 \

753 --hold-idle-file /var/lib/claude-hold/hold-idle \

754 --max-hold-min 240

755```

756 

757**3. Actualiza el archivo mientras se ejecutan los procesos**

758 

759Mientras se ejecutan los procesos, ejecuta `touch` sobre el archivo desde el host como propietario del directorio, con una frecuencia mayor que cada tres minutos. El primer `touch` crea el archivo. Por ejemplo, agrega esta línea al crontab de `root`:

760 

761```text theme={null}

762* * * * * pgrep -x nightly-build > /dev/null && touch /var/lib/claude-hold/hold-idle

763```

764 

765La línea se ejecuta una vez por minuto y actualiza el archivo mientras se ejecute cualquier proceso llamado `nightly-build`, de modo que una sesión que inicie uno permanece retenida hasta el límite. Reemplaza la comprobación con `pgrep` por la forma en que tu host detecte lo que las sesiones dejaron en ejecución.

766 

767La comprobación debe dejar de coincidir cuando terminen, o cada sesión inactiva en ese runner permanecerá retenida hasta el límite.

768 

769**4. Confirma la retención**

770 

771Mientras se ejecutan los procesos, comprueba que la hora de modificación del archivo se mantenga por debajo de tres minutos de antigüedad. Cuando se agote el tiempo de inactividad de una sesión, busca `idle release held` en el registro del runner. Si no aparece esa línea, lee `leftover-hold=` en la línea `watchdog config` que el runner registra al iniciarse, que muestra el archivo y el límite, o el motivo por el que no se retiene nada.

772 

773Tres minutos después del último `touch`, la retención termina. En aproximadamente un minuto más, el registro muestra `idle release no longer held` y el runner libera la sesión.

774 

775Incluso mientras el archivo sigue cambiando, una retención puede terminar, en casos como estos:

776 

777* **Se supera el límite**: se agota `--max-hold-min`. Para retener durante más tiempo, auméntalo

778* **Liberaciones forzadas**: estableciste [`--retire-at`](https://code.claude.com/docs/es/self-hosted-environments-reference#runner-cli-flags), [`--defer-shutdown-max-min`](https://code.claude.com/docs/es/self-hosted-environments-reference#runner-cli-flags) o [`--kill-session-after-min`](https://code.claude.com/docs/es/self-hosted-environments-reference#runner-cli-flags), y se alcanza ese límite. Para retener durante más tiempo, establece un límite posterior

779 

734## Problemas conocidos y limitaciones780## Problemas conocidos y limitaciones

735 781 

736Las siguientes son las limitaciones en esta versión, con soluciones alternativas donde exista una.782Las siguientes son las limitaciones en esta versión, con soluciones alternativas donde exista una.


828* **Claude Tag a veces no publica su respuesta en Slack**: el recordatorio de respuesta es un [hook que proporciona el plano de control](https://code.claude.com/docs/es/self-hosted-environments-configuration.md#how-each-session’s-config-is-assembled). Confirma con `claude --version` que el runner sea Claude Code v2.1.229 o posterior, ya que los runners más antiguos ignoran los hooks proporcionados; confirma que `python3 --version` funcione dentro de la imagen del runner, ya que los hooks ejecutan `python3`; y confirma que ningún archivo de configuración desactive los hooks, ya sea `disableAllHooks` en `managed-settings.json`, en el `~/.claude/settings.json` del usuario del runner o en el `.claude/settings.json` o `.claude/settings.local.json` del repositorio, o bien `allowManagedHooksOnly` o un [`strictPluginOnlyCustomization`](https://code.claude.com/docs/es/settings-reference#strictpluginonlycustomization) que cubra los hooks en la configuración administrada.874* **Claude Tag a veces no publica su respuesta en Slack**: el recordatorio de respuesta es un [hook que proporciona el plano de control](https://code.claude.com/docs/es/self-hosted-environments-configuration.md#how-each-session’s-config-is-assembled). Confirma con `claude --version` que el runner sea Claude Code v2.1.229 o posterior, ya que los runners más antiguos ignoran los hooks proporcionados; confirma que `python3 --version` funcione dentro de la imagen del runner, ya que los hooks ejecutan `python3`; y confirma que ningún archivo de configuración desactive los hooks, ya sea `disableAllHooks` en `managed-settings.json`, en el `~/.claude/settings.json` del usuario del runner o en el `.claude/settings.json` o `.claude/settings.local.json` del repositorio, o bien `allowManagedHooksOnly` o un [`strictPluginOnlyCustomization`](https://code.claude.com/docs/es/settings-reference#strictpluginonlycustomization) que cubra los hooks en la configuración administrada.

829* **Una sesión comienza sin uno de sus repositorios**: en un runner sin un [hook `checkout`](https://code.claude.com/docs/es/self-hosted-environments-configuration#checkout), el host de git puede rechazar la verificación de acceso del runner para un repositorio que la sesión solo lee. El runner entonces omite ese repositorio, registra una línea `[runner:warn] could not access context source` que nombra el rechazo, e inicia la sesión en los restantes.875* **Una sesión comienza sin uno de sus repositorios**: en un runner sin un [hook `checkout`](https://code.claude.com/docs/es/self-hosted-environments-configuration#checkout), el host de git puede rechazar la verificación de acceso del runner para un repositorio que la sesión solo lee. El runner entonces omite ese repositorio, registra una línea `[runner:warn] could not access context source` que nombra el rechazo, e inicia la sesión en los restantes.

830 876 

831 El runner omite solo un rechazo claro: el host responde que el repositorio no fue encontrado, git no encuentra credenciales para el host, o la autenticación falla. Una falla de red, un tiempo de espera agotado, o un HTTP `403` aún falla el inicio de sesión, al igual que un rechazo para un repositorio al que la sesión envía resultados. El runner aún falla una sesión que omitir dejaría sin repositorio en absoluto. Con [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), el runner omite solo un repositorio que el proxy de git mismo deniega.877 Con sus propias credenciales de git, el runner puede omitir un repositorio cuando el host responde que el repositorio no se encontró, git no encuentra credenciales para el host o la autenticación falla.

878 

879 Con [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), cuando el proxy de git rechaza un repositorio con `access denied by the git proxy`, el runner lo omite. La línea de registro dice entonces `blocked by the git proxy`. Para conocer las causas que debes revisar, consulta el caso `remote: access denied by the git proxy` en [Cuando las sesiones no se inician en un runner con el proxy de git](#when-anthropic-doesnt-serve-a-session).

880 

881 Una falla de red, un tiempo de espera agotado o cualquier otro HTTP `403` sigue haciendo fallar el inicio de la sesión, al igual que un rechazo para un repositorio al que la sesión envía resultados. El runner sigue haciendo fallar una sesión que, al omitir el repositorio, quedaría sin ningún repositorio.

832 882 

833 La verificación de acceso se ejecuta nuevamente cada vez que la sesión comienza en un runner, así que una vez que la identidad de git del runner tiene acceso de lectura, el siguiente inicio clona el repositorio. Antes de v2.1.274, cada uno de estos rechazos fallaba el inicio de sesión.883 La verificación de acceso se ejecuta nuevamente cada vez que la sesión comienza en un runner, así que una vez que la identidad de git del runner tiene acceso de lectura, el siguiente inicio clona el repositorio. Antes de v2.1.274, cada uno de estos rechazos fallaba el inicio de sesión.

884* **El registro muestra `could not read context source`**: esta línea, a diferencia de `could not access context source`, significa que el host de git siguió respondiendo HTTP `429`, o que un wrapper que instalaste como `git` siguió terminando con el código `75`. El runner omitió ese repositorio. Para reintentar, inicia una nueva sesión. El runner también vuelve a intentar con el repositorio cada vez que esta sesión se inicia en un runner.

885 

886 Sin hook `checkout`, el runner puede omitir un repositorio que la sesión solo lee, a menos que sea el primero entre los repositorios de la sesión. Antes de v2.1.311, el inicio de la sesión fallaba.

834* **Una sesión no se inicia con `This runner couldn't read`**: el runner le pidió al host de git un repositorio con sus [credenciales de git](#configure-git) y obtuvo una respuesta de no encontrado. El repositorio no existe, o esas credenciales no pueden acceder al repositorio.887* **Una sesión no se inicia con `This runner couldn't read`**: el runner le pidió al host de git un repositorio con sus [credenciales de git](#configure-git) y obtuvo una respuesta de no encontrado. El repositorio no existe, o esas credenciales no pueden acceder al repositorio.

835 * **Si administras el runner**: otorga a sus credenciales de git acceso de lectura al repositorio y luego inicia una nueva sesión.888 * **Si administras el runner**: otorga a sus credenciales de git acceso de lectura al repositorio y luego inicia una nueva sesión.

836 * **Si iniciaste la sesión**: si el repositorio no existe, inicia una nueva sesión con el repositorio correcto. Si el runner no puede acceder al repositorio, pide al administrador del runner que otorgue acceso y luego inicia una nueva sesión.889 * **Si iniciaste la sesión**: si el repositorio no existe, inicia una nueva sesión con el repositorio correcto. Si el runner no puede acceder al repositorio, pide al administrador del runner que otorgue acceso y luego inicia una nueva sesión.


843 896 

844 Cuando una obtención falla, el runner registra una línea `inference_token refresh failed` que dice cuándo reintentará, y continúa reintentando mientras la sesión se ejecute.897 Cuando una obtención falla, el runner registra una línea `inference_token refresh failed` que dice cuándo reintentará, y continúa reintentando mientras la sesión se ejecute.

845 898 

846 Si cada llamada comienza a fallar aproximadamente 30 minutos en una sesión, un script contenedor probablemente ha cortado stdin de la sesión, por lo que las rotaciones de token no pueden alcanzarlo; consulte [Keep stdin and file descriptor 3 attached](https://code.claude.com/docs/es/self-hosted-environments-configuration.md#keep-stdin-and-file-descriptor-3-attached).899 Si cada llamada comienza a fallar aproximadamente 30 minutos en una sesión, un script contenedor probablemente ha cortado stdin de la sesión, por lo que las rotaciones de token no pueden alcanzarlo; consulte [Mantener stdin y descriptor de archivo 3 adjuntos](https://code.claude.com/docs/es/self-hosted-environments-configuration.md#keep-stdin-and-file-descriptor-3-attached).

847 900 

848 Antes de v2.1.274, el runner dejaba de reintentar una obtención fallida después de algunos intentos y esperaba la siguiente programada. Un turno fallido no desencadenaba una obtención, por lo que cada turno fallaba con un 401 hasta la siguiente obtención programada.901 Antes de v2.1.274, el runner dejaba de reintentar una obtención fallida después de algunos intentos y esperaba la siguiente programada. Un turno fallido no desencadenaba una obtención, por lo que cada turno fallaba con un 401 hasta la siguiente obtención programada.

849* **Un turno falla en claude.ai/code con `This model needs a newer version of Claude Code`**: la versión de Claude Code con la que tus runners inician sesiones es más antigua que la que requiere el modelo de la sesión, así que la API [rechaza la solicitud](https://code.claude.com/docs/es/errors.md#claude-code-does-not-support-this-model). Actualiza los runners a la versión que pide el mensaje, o a una posterior, como se describe en [Fijar la versión](#pin-the-version). Mientras tanto, las personas pueden elegir otro modelo en la sesión.902* **Un turno falla en claude.ai/code con `This model needs a newer version of Claude Code`**: la versión de Claude Code con la que tus runners inician sesiones es más antigua que la que requiere el modelo de la sesión, así que la API [rechaza la solicitud](https://code.claude.com/docs/es/errors.md#claude-code-does-not-support-this-model). Actualiza los runners a la versión que pide el mensaje, o a una posterior, como se describe en [Fijar la versión](#pin-the-version). Mientras tanto, las personas pueden elegir otro modelo en la sesión.

Details

89(umask 077 && cat > /etc/claude/environment-secret)89(umask 077 && cat > /etc/claude/environment-secret)

90```90```

91 91 

92Elija un directorio base, reemplazando `<writable-dir>` en el comando runner a continuación con una ruta absoluta que el runner pueda escribir o crear. El runner crea el directorio al inicio, luego verifica repositorios y crea directorios por sesión bajo él. Sin `--base-dir` usa `/workspace`, que solo funciona si ese directorio ya existe y es escribible o inicia el runner como root.92Elija un directorio base, reemplazando `<writable-dir>` en el comando runner a continuación con una ruta absoluta que el runner pueda escribir o crear. El runner crea el directorio al inicio, luego hace checkout de los repositorios y crea directorios por sesión bajo él. Sin `--base-dir` usa `/workspace`, que solo funciona si ese directorio ya existe y es escribible o inicia el runner como root.

93 93 

94> [!WARNING]94> [!WARNING]

95>95>

Details

37| `--git-host-rewrite <from>=<to>` | none | unset | Reescriba las URLs de origen `https://<from>/...` a `https://<to>/...` antes de clonar, para DNS de horizonte dividido. Repetible; solo flag. |37| `--git-host-rewrite <from>=<to>` | none | unset | Reescriba las URLs de origen `https://<from>/...` a `https://<to>/...` antes de clonar, para DNS de horizonte dividido. Repetible; solo flag. |

38| `--git-ssh-rewrite <host>` | none | unset | Reescriba las URLs de origen `https://<host>/...` a `git@<host>:...` antes de clonar, para hosts git solo SSH. Repetible; solo flag. |38| `--git-ssh-rewrite <host>` | none | unset | Reescriba las URLs de origen `https://<host>/...` a `git@<host>:...` antes de clonar, para hosts git solo SSH. Repetible; solo flag. |

39| `--health-port <port>` | `SELF_HOSTED_RUNNER_HEALTH_PORT` | `8080` | Puerto para el listener `/healthz` y `/metrics`. Establezca `0` para desactivar. |39| `--health-port <port>` | `SELF_HOSTED_RUNNER_HEALTH_PORT` | `8080` | Puerto para el listener `/healthz` y `/metrics`. Establezca `0` para desactivar. |

40| `--hold-idle-file <path>` | `SELF_HOSTED_RUNNER_HOLD_IDLE_FILE` | unset | Archivo que tu host sigue modificando para retener una sesión inactiva en el runner. Consulta [Conserva una sesión inactiva mientras se ejecutan sus procesos](https://code.claude.com/docs/es/self-hosted-environments-deploy.md#keep-an-idle-session-while-its-processes-run). Requiere Claude Code v2.1.311 o posterior. |

40| `--hooks-dir <path>` | `SELF_HOSTED_RUNNER_HOOKS_DIR` | unset | Directorio de scripts de hook de ciclo de vida. Consulte [Lifecycle hooks](https://code.claude.com/docs/es/self-hosted-environments-configuration.md#lifecycle-hooks). |41| `--hooks-dir <path>` | `SELF_HOSTED_RUNNER_HOOKS_DIR` | unset | Directorio de scripts de hook de ciclo de vida. Consulte [Lifecycle hooks](https://code.claude.com/docs/es/self-hosted-environments-configuration.md#lifecycle-hooks). |

41| `--host-config-snapshot <mode>` | `SELF_HOSTED_RUNNER_HOST_CONFIG_SNAPSHOT` | `disk` | Dónde el runner mantiene la instantánea de inicio del [directorio de configuración del host](#environment-variable-only-settings) que siembra cada sesión desde. `disk` copia la instantánea en un directorio propiedad del runner bajo `--base-dir` y, en cada inicio de sesión, verifica cada archivo contra un resumen en memoria. Si un archivo en la copia ha sido modificado, la sesión falla y el runner rechaza sesiones hasta que lo reinicie. `memory` mantiene toda la instantánea en el heap, limitada a 64 MiB; sobre el límite, las sesiones comienzan sin configuración de host y muestran un aviso diciendo así. Cuando el runner no puede escribir la instantánea de disco, registra el fallo y usa `memory` para esa ejecución. Requiere Claude Code v2.1.271 o posterior. |42| `--host-config-snapshot <mode>` | `SELF_HOSTED_RUNNER_HOST_CONFIG_SNAPSHOT` | `disk` | Dónde el runner mantiene la instantánea de inicio del [directorio de configuración del host](#environment-variable-only-settings) que siembra cada sesión desde. `disk` copia la instantánea en un directorio propiedad del runner bajo `--base-dir` y, en cada inicio de sesión, verifica cada archivo contra un resumen en memoria. Si un archivo en la copia ha sido modificado, la sesión falla y el runner rechaza sesiones hasta que lo reinicie. `memory` mantiene toda la instantánea en el heap, limitada a 64 MiB; sobre el límite, las sesiones comienzan sin configuración de host y muestran un aviso diciendo así. Cuando el runner no puede escribir la instantánea de disco, registra el fallo y usa `memory` para esa ejecución. Requiere Claude Code v2.1.271 o posterior. |

42| `--kill-session-after-min <n>` | `SELF_HOSTED_RUNNER_MAX_LIFETIME_MS` | `0` | Limite una sesión a N minutos de reloj de pared, como límite de seguridad para sesiones atascadas. En v2.1.260 o posterior, el runner libera una sesión que alcanza el límite para que pueda reanudarse en el siguiente mensaje de su usuario, y la termina solo si aún está en el runner cuando termina la ventana de gracia [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](#environment-variable-only-settings). Antes de v2.1.260, el runner terminaba la sesión en el límite. Consulte [Some sessions don't count as idle](https://code.claude.com/docs/es/self-hosted-environments-deploy.md#some-sessions-don%E2%80%99t-count-as-idle) para los detalles y cómo elegir un valor. `0` desactiva. |43| `--kill-session-after-min <n>` | `SELF_HOSTED_RUNNER_MAX_LIFETIME_MS` | `0` | Limite una sesión a N minutos de reloj de pared, como límite de seguridad para sesiones atascadas. En v2.1.260 o posterior, el runner libera una sesión que alcanza el límite para que pueda reanudarse en el siguiente mensaje de su usuario, y la termina solo si aún está en el runner cuando termina la ventana de gracia [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](#environment-variable-only-settings). Antes de v2.1.260, el runner terminaba la sesión en el límite. Consulte [Some sessions don't count as idle](https://code.claude.com/docs/es/self-hosted-environments-deploy.md#some-sessions-don%E2%80%99t-count-as-idle) para los detalles y cómo elegir un valor. `0` desactiva. |

43| `--lock-to-account <id>` | `SELF_HOSTED_RUNNER_LOCK_TO_ACCOUNT` | unset | Pre-bloquee el runner a una cuenta específica al iniciar en lugar de bloquear en la primera sesión. Acepta una dirección de correo electrónico o un ID `user_...` en la organización del entorno. Un runner pre-bloqueado nunca recoge sesiones del canal Claude Tag, que no tienen cuenta. |44| `--lock-to-account <id>` | `SELF_HOSTED_RUNNER_LOCK_TO_ACCOUNT` | unset | Pre-bloquee el runner a una cuenta específica al iniciar en lugar de bloquear en la primera sesión. Acepta una dirección de correo electrónico o un ID `user_...` en la organización del entorno. Un runner pre-bloqueado nunca recoge sesiones del canal Claude Tag, que no tienen cuenta. |

44| `--log-file <path>` | `SELF_HOSTED_RUNNER_LOG_FILE` | unset | Espeje los logs del runner a un archivo además de stdout y stderr, creado con permisos `0600`. Requerido para que `self-hosted-runner doctor` rastree logs localmente. |45| `--log-file <path>` | `SELF_HOSTED_RUNNER_LOG_FILE` | unset | Espeje los logs del runner a un archivo además de stdout y stderr, creado con permisos `0600`. Requerido para que `self-hosted-runner doctor` rastree logs localmente. |

45| `--log-level <level>` | none | `info` | `info` o `debug` |46| `--log-level <level>` | none | `info` | `info` o `debug` |

47| `--max-hold-min <n>` | `SELF_HOSTED_RUNNER_MAX_HOLD_MS` | `1440` | Con `--hold-idle-file`, libera de todos modos una sesión retenida N minutos después de que quedó inactiva. Un valor igual o inferior a `--release-idle-session-min` no retiene nada. `0` desactiva la retención. Requiere Claude Code v2.1.311 o posterior. |

46| `--post-session-hook-timeout-sec <n>` | `SELF_HOSTED_RUNNER_POST_SESSION_HOOK_TIMEOUT_MS` | `60` | Presupuesto para el hook [`post-session`](https://code.claude.com/docs/es/self-hosted-environments-configuration#post-session) en cada final de sesión, incluido el apagado del runner |48| `--post-session-hook-timeout-sec <n>` | `SELF_HOSTED_RUNNER_POST_SESSION_HOOK_TIMEOUT_MS` | `60` | Presupuesto para el hook [`post-session`](https://code.claude.com/docs/es/self-hosted-environments-configuration#post-session) en cada final de sesión, incluido el apagado del runner |

47| `--proxy-authorization-command <command>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_COMMAND` | unset | Comando de shell que el runner ejecuta para cada conexión a su proxy de salida, usando su stdout recortado como el valor del encabezado `Proxy-Authorization`. Requiere `HTTPS_PROXY` o `HTTP_PROXY`, y no se puede combinar con `--proxy-authorization-file`. Consulte [Authenticate to an egress proxy](https://code.claude.com/docs/es/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy). Requiere Claude Code v2.1.238 o posterior. |49| `--proxy-authorization-command <command>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_COMMAND` | unset | Comando de shell que el runner ejecuta para cada conexión a su proxy de salida, usando su stdout recortado como el valor del encabezado `Proxy-Authorization`. Requiere `HTTPS_PROXY` o `HTTP_PROXY`, y no se puede combinar con `--proxy-authorization-file`. Consulte [Authenticate to an egress proxy](https://code.claude.com/docs/es/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy). Requiere Claude Code v2.1.238 o posterior. |

48| `--proxy-authorization-file <path>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_FILE` | unset | Archivo que el runner lee para cada conexión a su proxy de salida, usando su contenido recortado como el valor del encabezado `Proxy-Authorization`. Use este flag para un token que otro proceso rota en su lugar. Lleva los mismos requisitos que `--proxy-authorization-command`, y no se puede combinar con él. Consulte [Authenticate to an egress proxy](https://code.claude.com/docs/es/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy). Requiere Claude Code v2.1.238 o posterior. |50| `--proxy-authorization-file <path>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_FILE` | unset | Archivo que el runner lee para cada conexión a su proxy de salida, usando su contenido recortado como el valor del encabezado `Proxy-Authorization`. Use este flag para un token que otro proceso rota en su lugar. Lleva los mismos requisitos que `--proxy-authorization-command`, y no se puede combinar con él. Consulte [Authenticate to an egress proxy](https://code.claude.com/docs/es/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy). Requiere Claude Code v2.1.238 o posterior. |

49| `--push-outcome-on-release` | `SELF_HOSTED_RUNNER_PUSH_OUTCOME_ON_RELEASE` | off | En un final de sesión iniciado por el runner como un drenaje o liberación por inactividad, empuje las ramas de resultado rastreadas a `origin` antes de eliminar el workspace, para que los commits en vuelo sobrevivan a un reinicio. Mejor esfuerzo; agrega 30 segundos al presupuesto de apagado, y requiere git 2.29 o más nuevo para reanudar desde la rama empujada. Restrinja el acceso de push a refs `claude/*` antes de habilitar; consulte [Resumed sessions lose unpushed work](https://code.claude.com/docs/es/self-hosted-environments-deploy.md#additional-limitations). Los repositorios verificados a través de un hook de ciclo de vida `checkout` no se empujan; tome una instantánea de esos desde el hook [`post-session`](https://code.claude.com/docs/es/self-hosted-environments-configuration#post-session) en su lugar. |51| `--push-outcome-on-release` | `SELF_HOSTED_RUNNER_PUSH_OUTCOME_ON_RELEASE` | off | En un final de sesión iniciado por el runner como un drenaje o liberación por inactividad, empuje las ramas de resultado rastreadas a `origin` antes de eliminar el workspace, para que los commits en vuelo sobrevivan a un reinicio. Mejor esfuerzo; agrega 30 segundos al presupuesto de apagado, y requiere git 2.29 o más nuevo para reanudar desde la rama empujada. Restrinja el acceso de push a refs `claude/*` antes de habilitar; consulte [Resumed sessions lose unpushed work](https://code.claude.com/docs/es/self-hosted-environments-deploy.md#additional-limitations). Los repositorios verificados a través de un hook de ciclo de vida `checkout` no se empujan; tome una instantánea de esos desde el hook [`post-session`](https://code.claude.com/docs/es/self-hosted-environments-configuration#post-session) en su lugar. |

50| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | Libere un slot de sesión después de N minutos de inactividad una vez que un turno termina o la sesión espera la acción del usuario. Una sesión que aún está a mitad de turno, incluida una que sostiene una tarea de fondo que nunca termina o una aprobación solicitada desde dentro de una llamada de herramienta en ejecución, no cuenta como inactiva; empareje con `--kill-session-after-min` como el tope duro. Después de que la tarea de fondo de una sesión termina, el runner considera la sesión ocupada hasta que comienza el turno de seguimiento que lee el resultado, durante como máximo la ventana [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). Hasta que el runner reciba una señal de apagado o alcance su tiempo de retiro, una liberación que deja el runner sin sesiones activas inicia la misma ruta de salida que un drenaje normal, gobernado por `--drain-grace-sec`. Después de una primera señal que difirió con [`--defer-shutdown-max-min`](https://code.claude.com/docs/es/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), el runner sale tan pronto como una liberación lo deja sin sesiones. `0` desactiva. |52| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | Libera el slot de una sesión después de N minutos de inactividad una vez que termina un turno o la sesión espera la acción del usuario. [Algunas sesiones no cuentan como inactivas](https://code.claude.com/docs/es/self-hosted-environments-deploy.md#some-sessions-don’t-count-as-idle), así que combínalo con `--kill-session-after-min`. Una tarea en segundo plano terminada mantiene la sesión ocupada durante como máximo la ventana [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). Para retrasar una liberación, establece [`--hold-idle-file`](https://code.claude.com/docs/es/self-hosted-environments-deploy#keep-an-idle-session-while-its-processes-run). `0` lo desactiva. |

51| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | off | Elimine los directorios por sesión de una sesión bajo `<base-dir>/_sessions/` cuando la sesión termina en este runner, sin importar el resultado. [Reuse a pre-warmed checkout](https://code.claude.com/docs/es/self-hosted-environments-deploy.md#reuse-a-pre-warmed-checkout) describe lo que contienen y quién puede leerlos cuando permanecen. La eliminación es mejor esfuerzo: los directorios por sesión permanecen en su lugar cuando el runner es asesinado o alcanza su plazo de drenaje antes de que se ejecute la limpieza. Con el flag activado, el log de depuración de una sesión fallida o interrumpida no se mantiene en disco. Requiere Claude Code v2.1.268 o posterior. |53| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | off | Elimine los directorios por sesión de una sesión bajo `<base-dir>/_sessions/` cuando la sesión termina en este runner, sin importar el resultado. [Reuse a pre-warmed checkout](https://code.claude.com/docs/es/self-hosted-environments-deploy.md#reuse-a-pre-warmed-checkout) describe lo que contienen y quién puede leerlos cuando permanecen. La eliminación es mejor esfuerzo: los directorios por sesión permanecen en su lugar cuando el runner es asesinado o alcanza su plazo de drenaje antes de que se ejecute la limpieza. Con el flag activado, el log de depuración de una sesión fallida o interrumpida no se mantiene en disco. Requiere Claude Code v2.1.268 o posterior. |

52| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | unset | Retire el runner en una marca de tiempo Unix absoluta en segundos, para infraestructura que mata el runner en un tiempo conocido; [Runner lifecycle](https://code.claude.com/docs/es/self-hosted-environments#runner-lifecycle) describe la secuencia de liberación y cómo dimensionar el margen. Los valores antes de 2001 o después del año 5138 son rechazados por el flag e ignorados por la variable de entorno. |54| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | unset | Retire el runner en una marca de tiempo Unix absoluta en segundos, para infraestructura que mata el runner en un tiempo conocido; [Runner lifecycle](https://code.claude.com/docs/es/self-hosted-environments#runner-lifecycle) describe la secuencia de liberación y cómo dimensionar el margen. Los valores antes de 2001 o después del año 5138 son rechazados por el flag e ignorados por la variable de entorno. |

53| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Cuáles de las listas de reglas del clasificador del [modo automático](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) que el plano de control envía con una sesión pueden llegar a esa sesión: `all`, `no-allow` o `none`. Consulta [Listas de reglas del modo automático](#auto-mode-rule-lists) para ver qué aplica cada valor. Un valor no válido detiene el runner al iniciar. Requiere Claude Code v2.1.295 o posterior. |55| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Cuáles de las listas de reglas del clasificador del [modo automático](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) que el plano de control envía con una sesión pueden llegar a esa sesión: `all`, `no-allow` o `none`. Consulta [Listas de reglas del modo automático](#auto-mode-rule-lists) para ver qué aplica cada valor. Un valor no válido detiene el runner al iniciar. Requiere Claude Code v2.1.295 o posterior. |


314 316 

315### Alertar sobre runners perdidos y sesiones en espera317### Alertar sobre runners perdidos y sesiones en espera

316 318 

317En una [flota fija](https://code.claude.com/docs/es/self-hosted-environments-deploy.md#scale-the-fleet), carga `ClaudeRunnersBelowFloor`. Con [runners bajo demanda](https://code.claude.com/docs/es/self-hosted-environments-configuration.md#on-demand-runners), carga `ClaudeOrchestratorSessionsWaiting` y `ClaudeOrchestratorQueueWaitHigh` en su lugar.319Para recibir alertas cuando se pierden runners, las sesiones esperan o el orquestador está caído, carga estas reglas de alerta de Prometheus junto a las [reglas de alerta de ejemplo](#sample-alert-rules):

320 

321* **[Flota fija](https://code.claude.com/docs/es/self-hosted-environments-deploy.md#scale-the-fleet)**: `ClaudeRunnersBelowFloor`

322* **[Runners bajo demanda](https://code.claude.com/docs/es/self-hosted-environments-configuration.md#on-demand-runners)**: `ClaudeOrchestratorSessionsWaiting`, `ClaudeOrchestratorQueueWaitHigh` y `ClaudeOrchestratorAbsent`

318 323 

319#### Alertar cuando una flota fija pierde runners324#### Alertar cuando una flota fija pierde runners

320 325 


372* **Umbral**: si siempre hay alguna sesión esperando, sube el `> 0` en `ClaudeOrchestratorSessionsWaiting` por encima del número que sueles ver377* **Umbral**: si siempre hay alguna sesión esperando, sube el `> 0` en `ClaudeOrchestratorSessionsWaiting` por encima del número que sueles ver

373* **`ClaudeOrchestratorDisconnected`**: mantenla cargada desde las [reglas de alerta de ejemplo](#sample-alert-rules), porque `ClaudeOrchestratorSessionsWaiting` deja de dispararse unos 2 minutos después de que se desconecta el último orquestador del espacio de nombres378* **`ClaudeOrchestratorDisconnected`**: mantenla cargada desde las [reglas de alerta de ejemplo](#sample-alert-rules), porque `ClaudeOrchestratorSessionsWaiting` deja de dispararse unos 2 minutos después de que se desconecta el último orquestador del espacio de nombres

374 379 

380#### Alertar cuando el orquestador está caído

381 

382Para saber que el propio [orquestador](https://code.claude.com/docs/es/self-hosted-environments-configuration.md#on-demand-runners) está caído, carga `ClaudeOrchestratorAbsent`. Se dispara cuando ningún orquestador del espacio de nombres ha sido raspado durante 5 minutos:

383 

384```yaml theme={null}

385groups:

386 # On-demand runners only. Replace claude-runners with the orchestrator's namespace.

387 - name: claude-code-self-hosted-on-demand-orchestrator

388 rules:

389 - alert: ClaudeOrchestratorAbsent

390 expr: absent(claude_code_self_hosted_orchestrator_connected{namespace="claude-runners"})

391 for: 5m

392 labels: {severity: critical}

393 annotations:

394 summary: "No orchestrator has been scraped for 5 minutes. If it's down, no on-demand runner starts, and sessions wait. Check the orchestrator workload first, then its scrape target if it's running."

395```

396 

397* **Espacio de nombres**: reemplaza `claude-runners` por el espacio de nombres del orquestador, y copia la alerta para cada espacio de nombres adicional que ejecute un orquestador. Si tus destinos no tienen una etiqueta `namespace`, elimina el matcher, o la alerta se dispara después de 5 minutos y permanece activa.

398* **Servidores de Prometheus que no raspan el orquestador**: deja la alerta fuera de sus archivos de reglas, porque en un servidor así se dispara después de 5 minutos y permanece activa

399* **No confíes en las demás alertas del orquestador**: leen métricas que sirve el propio orquestador. `ClaudeOrchestratorSessionsWaiting`, `ClaudeOrchestratorQueueWaitHigh` y las [reglas de alerta de ejemplo](#sample-alert-rules) del orquestador dejan de dispararse unos 10 minutos después de que el orquestador se cae.

400 

375### Pasar a través de métricas de hijo de sesión401### Pasar a través de métricas de hijo de sesión

376 402 

377Cada sesión se ejecuta en su propio proceso hijo con sus propias métricas de OpenTelemetry; en `--capacity` superior a uno, el runner reescribe cómo se exponen esas métricas del hijo. Establecer `OTEL_METRICS_EXPORTER=prometheus` en el host del runner y `CLAUDE_CODE_ENABLE_TELEMETRY=1` en el entorno de la sesión, por ejemplo desde su [script de envoltura](https://code.claude.com/docs/es/self-hosted-environments-configuration.md#wrapper-scripts) o el entorno propio del runner, que las sesiones heredan, re-expone los instrumentos de contador y indicador de cada hijo en el punto final `/metrics` propio del runner, junto con la serie del runner. El runner reescribe el exportador del hijo para empujar sobre OTLP a un receptor solo de loopback en el puerto de salud, etiqueta cada serie con etiquetas `session_id` y `client_platform`, y desaloja la serie de una sesión cuando esa sesión termina. Los histogramas no pasan, y una métrica del hijo cuyo nombre entraría en conflicto con el prefijo propio del runner se descarta.403Cada sesión se ejecuta en su propio proceso hijo con sus propias métricas de OpenTelemetry; en `--capacity` superior a uno, el runner reescribe cómo se exponen esas métricas del hijo. Establecer `OTEL_METRICS_EXPORTER=prometheus` en el host del runner y `CLAUDE_CODE_ENABLE_TELEMETRY=1` en el entorno de la sesión, por ejemplo desde su [script de envoltura](https://code.claude.com/docs/es/self-hosted-environments-configuration.md#wrapper-scripts) o el entorno propio del runner, que las sesiones heredan, re-expone los instrumentos de contador y indicador de cada hijo en el punto final `/metrics` propio del runner, junto con la serie del runner. El runner reescribe el exportador del hijo para empujar sobre OTLP a un receptor solo de loopback en el puerto de salud, etiqueta cada serie con etiquetas `session_id` y `client_platform`, y desaloja la serie de una sesión cuando esa sesión termina. Los histogramas no pasan, y una métrica del hijo cuyo nombre entraría en conflicto con el prefijo propio del runner se descarta.

Details

288 288 

289 El comando no puede leer del teclado cuando canalizas o rediriges su entrada y, en macOS y Linux, tampoco puede abrir `/dev/tty`. Si también canalizas o rediriges su salida, la ejecución es no interactiva, y la configuración entregada se aplica solo para esa ejecución.289 El comando no puede leer del teclado cuando canalizas o rediriges su entrada y, en macOS y Linux, tampoco puede abrir `/dev/tty`. Si también canalizas o rediriges su salida, la ejecución es no interactiva, y la configuración entregada se aplica solo para esa ejecución.

290* **Un error cierra el diálogo antes de que responda**: Claude Code no aplica la configuración entregada y mantiene la última configuración aprobada. Lo muestra nuevamente en la siguiente sesión que puede mostrarlo.290* **Un error cierra el diálogo antes de que responda**: Claude Code no aplica la configuración entregada y mantiene la última configuración aprobada. Lo muestra nuevamente en la siguiente sesión que puede mostrarlo.

291* **Una ejecución no interactiva**, como `claude -p`, una sesión del SDK del Agente, o una sesión en el panel de chat de la extensión VS Code o la pestaña Code de la aplicación de escritorio: Claude Code no puede mostrar el diálogo, por lo que cuando la configuración entregada requeriría aprobación, la aplica solo para esa ejecución. No la registra como aprobada ni la escribe en el [caché local](#fetch-and-caching-behavior), y la siguiente sesión interactiva muestra el diálogo. Hasta que un usuario apruebe en una sesión interactiva, cada ejecución no interactiva obtiene la configuración nuevamente al inicio. Antes de v2.1.207, una ejecución no interactiva guardaba la configuración como aprobada, por lo que las sesiones interactivas posteriores nunca mostraban el diálogo para ellas.291* **Una ejecución no interactiva**, como `claude -p`, una sesión del Agent SDK, o una sesión en el panel de chat de la extensión de VS Code o la pestaña Code de la aplicación de escritorio: Claude Code no puede mostrar el diálogo. Cuando la configuración entregada requeriría aprobación, se aplica solo para esa ejecución.

292 

293 Claude Code no registra la configuración como aprobada ni la escribe en la [caché local](#fetch-and-caching-behavior), y la siguiente sesión interactiva muestra el diálogo. Hasta que un usuario apruebe en una sesión interactiva, cada ejecución no interactiva obtiene la configuración nuevamente al inicio.

292 294 

293#### Variables de entorno y el diálogo de aprobación295#### Variables de entorno y el diálogo de aprobación

294 296 


306* `OTEL_EXPORTER_OTLP_ENDPOINT`308* `OTEL_EXPORTER_OTLP_ENDPOINT`

307* `CLAUDE_CODE_DISABLE_1M_CONTEXT`309* `CLAUDE_CODE_DISABLE_1M_CONTEXT`

308 310 

309Cuando una variable entregada necesita aprobación, el diálogo la nombra, por lo que el usuario ve exactamente qué es lo que la política le pide establecer. Antes de v2.1.218, Claude Code aplicaba menos variables sin preguntar al usuario, por lo que ajustes como `DISABLE_AUTO_COMPACT` activaban el diálogo con cualquier valor no vacío.311Cuando una variable entregada necesita aprobación, el diálogo la nombra, por lo que el usuario ve exactamente qué es lo que la política le pide establecer.

310 312 

311Claude Code decide si cuatro conmutadores de privacidad necesitan aprobación por el valor entregado en lugar de por el nombre de la variable: `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_ERROR_REPORTING`, `DISABLE_TELEMETRY` y `DO_NOT_TRACK`. Un valor verdadero como `1` o `true` solo desactiva el seguimiento, la notificación de errores u otro tráfico no esencial, por lo que Claude Code lo aplica sin preguntar al usuario. Para cualquier otro valor no vacío, Claude Code muestra el diálogo. Antes de v2.1.218, todos excepto `DO_NOT_TRACK` se aplicaban sin aprobación en cualquier valor, y `DO_NOT_TRACK` activaba el diálogo en cualquier valor no vacío.313Claude Code decide si cuatro conmutadores de privacidad necesitan aprobación por el valor entregado en lugar de por el nombre de la variable: `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_ERROR_REPORTING`, `DISABLE_TELEMETRY` y `DO_NOT_TRACK`. Un valor verdadero como `1` o `true` solo desactiva el seguimiento, la notificación de errores u otro tráfico no esencial, por lo que Claude Code lo aplica sin preguntar al usuario. Para cualquier otro valor no vacío, Claude Code muestra el diálogo.

312 314 

313Claude Code también decide si [`API_FORCE_IDLE_TIMEOUT`](https://code.claude.com/docs/es/env-vars) necesita aprobación por el valor entregado: un valor verdadero solo activa el [tiempo de espera de inactividad del cuerpo](https://code.claude.com/docs/es/network-config.md#streaming-idle-watchdogs), por lo que Claude Code lo aplica sin preguntar al usuario. Para cualquier otro valor no vacío, Claude Code muestra el diálogo. Antes de v2.1.248, cualquier valor no vacío activaba el diálogo.315Claude Code también decide si [`API_FORCE_IDLE_TIMEOUT`](https://code.claude.com/docs/es/env-vars) necesita aprobación por el valor entregado: un valor verdadero solo activa el [tiempo de espera de inactividad del cuerpo](https://code.claude.com/docs/es/network-config.md#streaming-idle-watchdogs), por lo que Claude Code lo aplica sin preguntar al usuario. Para cualquier otro valor no vacío, Claude Code muestra el diálogo. Antes de v2.1.248, cualquier valor no vacío activaba el diálogo.

314 316 

sessions.md +2 −2

Details

46Cuando Claude Code carga una conversación desde su transcripción, la sesión reanudada restaura la conversación junto con el estado guardado en ella:46Cuando Claude Code carga una conversación desde su transcripción, la sesión reanudada restaura la conversación junto con el estado guardado en ella:

47 47 

48* Historial de conversación: los mensajes, las llamadas a herramientas y los resultados. Si la sesión fue [compactada](https://code.claude.com/docs/es/context-window.md#what-survives-compaction), la conversación se abre en una fila `Conversation compacted`. Claude continúa con el resumen de la última compactación, los mensajes que esa compactación dejó sin resumir y todos los mensajes desde entonces. Los mensajes que resumió la última compactación no se cargan de nuevo.48* Historial de conversación: los mensajes, las llamadas a herramientas y los resultados. Si la sesión fue [compactada](https://code.claude.com/docs/es/context-window.md#what-survives-compaction), la conversación se abre en una fila `Conversation compacted`. Claude continúa con el resumen de la última compactación, los mensajes que esa compactación dejó sin resumir y todos los mensajes desde entonces. Los mensajes que resumió la última compactación no se cargan de nuevo.

49* Llamadas a herramientas interrumpidas: una herramienta que aún se estaba ejecutando cuando terminó el proceso anterior, por ejemplo en un bloqueo, no termina ni se ejecuta de nuevo cuando reanudas. Claude ve la llamada marcada como cortada antes de que se registrara su resultado y se le indica que verifique si tuvo efecto antes de ejecutarla de nuevo, a menos que [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](https://code.claude.com/docs/es/env-vars#variables) esté configurado.49* Llamadas a herramientas interrumpidas: una herramienta que aún se estaba ejecutando cuando terminó el proceso anterior, por ejemplo en un bloqueo, no se ejecuta de nuevo cuando reanudas.

50* Modelo: la sesión continúa en el modelo que estaba usando, excepto en los casos descritos en [Configurar tu modelo](https://code.claude.com/docs/es/model-config.md#setting-your-model).50* Modelo: la sesión continúa en el modelo que estaba usando, excepto en los casos descritos en [Configurar tu modelo](https://code.claude.com/docs/es/model-config.md#setting-your-model).

51* Agente: una sesión iniciada con [`--agent`](https://code.claude.com/docs/es/sub-agents#invoke-subagents-explicitly) o el ajuste `agent` continúa como ese agente, manteniendo sus restricciones de herramientas y modelo. Pasa `--agent` al reanudar para elegir uno diferente; para el prompt del sistema en cualquier caso, consulta [Flags del prompt del sistema en conversaciones reanudadas](https://code.claude.com/docs/es/cli-reference.md#system-prompt-flags-in-resumed-conversations). Claude Code busca el agente en dos lugares: el directorio original de la sesión, siempre que hayas [confiado en ese espacio de trabajo](https://code.claude.com/docs/es/permissions.md#project-allow-rules-and-workspace-trust), y luego el directorio desde el que reanudas, por lo que un agente con alcance de proyecto aún se carga cuando reanudas desde otro directorio. Si Claude Code no encuentra el agente en ninguno de los dos lugares, la sesión se reanuda con las herramientas predeterminadas y muestra una [advertencia que nombra el agente](https://code.claude.com/docs/es/errors.md#session-agent-no-longer-available).51* Agente: una sesión iniciada con [`--agent`](https://code.claude.com/docs/es/sub-agents#invoke-subagents-explicitly) o el ajuste `agent` continúa como ese agente, manteniendo sus restricciones de herramientas y modelo. Pasa `--agent` al reanudar para elegir uno diferente; para el prompt del sistema en cualquier caso, consulta [Flags del prompt del sistema en conversaciones reanudadas](https://code.claude.com/docs/es/cli-reference.md#system-prompt-flags-in-resumed-conversations). Claude Code busca el agente en dos lugares: el directorio original de la sesión, siempre que hayas [confiado en ese espacio de trabajo](https://code.claude.com/docs/es/permissions.md#project-allow-rules-and-workspace-trust), y luego el directorio desde el que reanudas, por lo que un agente con alcance de proyecto aún se carga cuando reanudas desde otro directorio. Si Claude Code no encuentra el agente en ninguno de los dos lugares, la sesión se reanuda con las herramientas predeterminadas y muestra una [advertencia que nombra el agente](https://code.claude.com/docs/es/errors.md#session-agent-no-longer-available).

52* Modo de permisos: si reanudas desde una terminal con `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 en [modo de permisos al reanudar](#permission-mode-on-resume), que también cubre el selector de sesiones, `/resume` y reanudar con `claude -p`. Pasa `--permission-mode` o `--dangerously-skip-permissions` para sobrescribir el modo restaurado.52* Modo de permisos: si reanudas desde una terminal con `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 en [modo de permisos al reanudar](#permission-mode-on-resume), que también cubre el selector de sesiones, `/resume` y reanudar con `claude -p`. Pasa `--permission-mode` o `--dangerously-skip-permissions` para sobrescribir el modo restaurado.


224* **`/compact [instructions]`**: reemplace el historial con un resumen, opcionalmente enfocado en lo que especifique224* **`/compact [instructions]`**: reemplace el historial con un resumen, opcionalmente enfocado en lo que especifique

225* **`/context`**: muestre qué está consumiendo actualmente el contexto225* **`/context`**: muestre qué está consumiendo actualmente el contexto

226 226 

227Para saber cómo la compactación interactúa con CLAUDE.md, skills y reglas, vea la [guía de ventana de contexto](https://code.claude.com/docs/es/context-window.md). Para estrategias sobre cuándo limpiar versus compactar, vea [Mejores prácticas](https://code.claude.com/docs/es/best-practices.md#manage-your-session).227Para saber cómo la compactación interactúa con CLAUDE.md, skills y reglas, consulta la [guía de ventana de contexto](https://code.claude.com/docs/es/context-window.md). Para estrategias sobre cuándo limpiar versus compactar, consulta [Buenas prácticas](https://code.claude.com/docs/es/best-practices.md#keep-cost-and-context-down).

228 228 

229## Exporte y localice datos de sesión229## Exporte y localice datos de sesión

230 230 

settings.md +1 −1

Details

326* **Configuraciones compartidas de proyecto con varios repositorios**: en un entorno alojado por Anthropic, una sesión con varios repositorios comienza por encima de los clones y lee solo las claves `enabledPlugins` y `extraKnownMarketplaces` del `.claude/settings.json` de cada repositorio, no reglas de permisos, hooks, `env` u otras claves. Los marketplaces y plugins que esas dos claves declaran aún [no se cargan en una sesión en la nube](https://code.claude.com/docs/es/cloud-environments.md#what-carries-over-from-your-setup). Para un entorno autohospedado, consulta [qué configuración del repositorio se aplica](https://code.claude.com/docs/es/self-hosted-environments-configuration.md#repository-settings-in-sessions-with-several-repositories).326* **Configuraciones compartidas de proyecto con varios repositorios**: en un entorno alojado por Anthropic, una sesión con varios repositorios comienza por encima de los clones y lee solo las claves `enabledPlugins` y `extraKnownMarketplaces` del `.claude/settings.json` de cada repositorio, no reglas de permisos, hooks, `env` u otras claves. Los marketplaces y plugins que esas dos claves declaran aún [no se cargan en una sesión en la nube](https://code.claude.com/docs/es/cloud-environments.md#what-carries-over-from-your-setup). Para un entorno autohospedado, consulta [qué configuración del repositorio se aplica](https://code.claude.com/docs/es/self-hosted-environments-configuration.md#repository-settings-in-sessions-with-several-repositories).

327* **Configuraciones de usuario y proyecto local** (`~/.claude/settings.json` y `.claude/settings.local.json`): no se leen. Ambas permanecen en su máquina, y el archivo local no está en el clon.327* **Configuraciones de usuario y proyecto local** (`~/.claude/settings.json` y `.claude/settings.local.json`): no se leen. Ambas permanecen en su máquina, y el archivo local no está en el clon.

328* **Configuraciones administradas**: un archivo `managed-settings.json` o perfil MDM en su dispositivo no alcanza una sesión en la nube. Las [configuraciones administradas por servidor](https://code.claude.com/docs/es/server-managed-settings.md) de su organización sí; [cobertura de superficie](https://code.claude.com/docs/es/model-config.md#surface-coverage) enumera qué sesiones en la nube las reciben. Un [entorno autohospedado](https://code.claude.com/docs/es/self-hosted-environments) también lee el archivo de configuraciones administradas en su imagen de ejecutor. [Cómo Claude Code combina fuentes administradas](https://code.claude.com/docs/es/managed-settings.md#how-claude-code-combines-managed-sources) dice cuándo se aplica ese archivo.328* **Configuraciones administradas**: un archivo `managed-settings.json` o perfil MDM en su dispositivo no alcanza una sesión en la nube. Las [configuraciones administradas por servidor](https://code.claude.com/docs/es/server-managed-settings.md) de su organización sí; [cobertura de superficie](https://code.claude.com/docs/es/model-config.md#surface-coverage) enumera qué sesiones en la nube las reciben. Un [entorno autohospedado](https://code.claude.com/docs/es/self-hosted-environments) también lee el archivo de configuraciones administradas en su imagen de ejecutor. [Cómo Claude Code combina fuentes administradas](https://code.claude.com/docs/es/managed-settings.md#how-claude-code-combines-managed-sources) dice cuándo se aplica ese archivo.

329* **`/config`**: en tu navegador en claude.ai/code, abre la sección Claude Code de tu configuración de claude.ai en lugar de cambiar un valor. Para cambiar un ajuste para una sesión en la nube, establece una [variable de entorno](https://code.claude.com/docs/es/cloud-environments.md#set-environment-variables) en el entorno. En una sesión con un repositorio fuera de los hilos de un proyecto, en su lugar puedes hacer commit de la clave en el `.claude/settings.json` de ese repositorio.329* **`/config`**: en tu navegador en claude.ai/code, abre tu página de configuración **Code** o **Claude Code** de claude.ai en lugar de cambiar un valor. Para cambiar un ajuste para una sesión en la nube, establece una [variable de entorno](https://code.claude.com/docs/es/cloud-environments.md#set-environment-variables) en el entorno. En una sesión con un repositorio fuera de los hilos de un proyecto, en su lugar puedes hacer commit de la clave en el `.claude/settings.json` de ese repositorio.

330 330 

331[Lo que se transfiere de su configuración](https://code.claude.com/docs/es/cloud-environments.md#what-carries-over-from-your-setup) enumera el resto: `CLAUDE.md`, skills, servidores MCP, plugins y credenciales.331[Lo que se transfiere de su configuración](https://code.claude.com/docs/es/cloud-environments.md#what-carries-over-from-your-setup) enumera el resto: `CLAUDE.md`, skills, servidores MCP, plugins y credenciales.

332 332 

settings-reference.md +283 −284

Details

1293* Un comando que comienza con `sudo`, `eval` o `xargs`1293* Un comando que comienza con `sudo`, `eval` o `xargs`

1294* Un `cd`, `pushd` o `popd`, dondequiera que aparezca en la llamada1294* Un `cd`, `pushd` o `popd`, dondequiera que aparezca en la llamada

1295* Una sustitución de comando, un subshell o un bloque de flujo de control como `if` o `for`1295* Una sustitución de comando, un subshell o un bloque de flujo de control como `if` o `for`

1296* Una redirección, como `docker build . > build.log`, salvo una que solo duplique un descriptor de archivo, como hace `2>&1`1296* Una redirección, como `docker build . > build.log` o un heredoc `<<EOF`, salvo una que solo duplique un descriptor de archivo, como hace `2>&1`

1297* Un nombre de comando que proviene de una variable1297* Un nombre de comando que proviene de una variable

1298* Un `git clone`, `git init`, `git worktree add`, `git worktree move` o `git bundle create` con un argumento de ruta que es absoluto, comienza con `~` o contiene un segmento `..`1298* Un `git clone`, `git init`, `git worktree add`, `git worktree move` o `git bundle create` con un argumento de ruta que es absoluto, comienza con `~` o contiene un segmento `..`

1299 1299 


1521 1521 

1522### `sandbox.filesystem.disabled`1522### `sandbox.filesystem.disabled`

1523 1523 

1524Omite el aislamiento del sistema de archivos y mantén el aislamiento de red. Los comandos en sandbox obtienen acceso de lectura y escritura sin restricciones al sistema de archivos del host, y su tráfico de red saliente permanece limitado a [`network.allowedDomains`](#sandbox-network-alloweddomains). Úsalo cuando uses el sandbox para controlar adónde se conectan los comandos y no lo que escriben. Requiere Claude Code v2.1.216 o posterior.1524Omite el aislamiento del sistema de archivos y mantiene el aislamiento de red. Los comandos en el sandbox obtienen acceso ilimitado de lectura y escritura al sistema de archivos del host, y su tráfico de red saliente sigue limitado a [`network.allowedDomains`](#sandbox-network-alloweddomains). Úsalo cuando usas el sandbox para controlar adónde se conectan los comandos y no lo que escriben.

1525 1525 

1526* **Scope**: [`User or managed`](#scopes). Cuando la configuración administrada configura `sandbox.filesystem` de cualquier forma, o incluye una entrada de `sandbox.credentials.files` con `"mode": "deny"`, solo la configuración administrada puede establecerlo.1526* **Scope**: [`User or managed`](#scopes). Cuando la configuración administrada configura `sandbox.filesystem` de cualquier forma, o incluye una entrada de `sandbox.credentials.files` con `"mode": "deny"`, solo la configuración administrada puede establecerlo.

1527* **Type**: Boolean1527* **Type**: Boolean


1545}1545}

1546```1546```

1547 1547 

1548Con la capa desactivada, Claude Code no aplica las entradas `denyRead` ni las entradas `deny` de `credentials.files`, mientras que las entradas de `credentials.envVars` y las entradas `mask` aplicadas siguen funcionando. [`autoAllowBashIfSandboxed`](#sandbox-autoallowbashifsandboxed) sigue teniendo el valor predeterminado `true`, así que establécelo en `false` para seguir recibiendo solicitudes. Consulta [Desactivar el aislamiento del sistema de archivos](https://code.claude.com/docs/es/sandboxing.md#disable-filesystem-isolation) para ver la lista completa de fuentes que pueden establecerlo y qué cambia cuando el aislamiento está desactivado. Requiere Claude Code v2.1.216 o posterior.1548Con la capa desactivada, Claude Code no aplica las entradas de `denyRead` ni las entradas `deny` de `credentials.files`, mientras que las entradas de `credentials.envVars` y las entradas `mask` aplicadas siguen funcionando. [`autoAllowBashIfSandboxed`](#sandbox-autoallowbashifsandboxed) sigue siendo `true` de forma predeterminada, así que defínelo como `false` para seguir recibiendo solicitudes de permiso. Consulta [Desactivar el aislamiento del sistema de archivos](https://code.claude.com/docs/es/sandboxing.md#disable-filesystem-isolation) para ver la lista completa de fuentes que pueden definirlo y qué cambia cuando el aislamiento está desactivado.

1549 1549 

1550### `sandbox.ignoreViolations`1550### `sandbox.ignoreViolations`

1551 1551 


2392* [`CLAUDE_CODE_RESTRICTED`](https://code.claude.com/docs/es/env-vars#variables), que Claude Code lee solo del entorno de lanzamiento, se ignora de cada archivo.2392* [`CLAUDE_CODE_RESTRICTED`](https://code.claude.com/docs/es/env-vars#variables), que Claude Code lee solo del entorno de lanzamiento, se ignora de cada archivo.

2393* [`CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY`](https://code.claude.com/docs/es/env-vars#variables), que Claude Code lee solo del entorno de lanzamiento, se ignora de cada archivo. La variable requiere Claude Code v2.1.283 o posterior.2393* [`CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY`](https://code.claude.com/docs/es/env-vars#variables), que Claude Code lee solo del entorno de lanzamiento, se ignora de cada archivo. La variable requiere Claude Code v2.1.283 o posterior.

2394* [`CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT`, `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT`, `CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT` y `CLAUDE_CODE_DISABLE_MOUNTED_DRIVE_RM_PROMPT`](https://code.claude.com/docs/es/env-vars#variables), que Claude Code lee solo del entorno de lanzamiento, se ignoran en todos los archivos.2394* [`CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT`, `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT`, `CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT` y `CLAUDE_CODE_DISABLE_MOUNTED_DRIVE_RM_PROMPT`](https://code.claude.com/docs/es/env-vars#variables), que Claude Code lee solo del entorno de lanzamiento, se ignoran en todos los archivos.

2395* [`CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS`](https://code.claude.com/docs/es/env-vars#variables), que Claude Code lee solo del entorno de lanzamiento, se ignora en todos los archivos.

2395* [`CLAUDE_CODE_WARN_DISK_FREE_GIB` y `CLAUDE_CODE_WARN_MEMORY_FREE_GIB`](https://code.claude.com/docs/es/env-vars#variables), que Claude Code lee solo del entorno de lanzamiento, se ignoran en todos los archivos. Las variables requieren Claude Code v2.1.304 o posterior.2396* [`CLAUDE_CODE_WARN_DISK_FREE_GIB` y `CLAUDE_CODE_WARN_MEMORY_FREE_GIB`](https://code.claude.com/docs/es/env-vars#variables), que Claude Code lee solo del entorno de lanzamiento, se ignoran en todos los archivos. Las variables requieren Claude Code v2.1.304 o posterior.

2396 2397 

2397### `fileCheckpointingEnabled`2398### `fileCheckpointingEnabled`


2539 2540 

2540## Interfaz y terminal2541## Interfaz y terminal

2541 2542 

2542Cambia cómo se ve y se comporta Claude Code en tu terminal: tema, modo de editor, línea de estado, spinner, notificaciones dentro de la sesión y accesibilidad. Consulta [Configuración de terminal](https://code.claude.com/docs/es/terminal-config.md).2543Cambia cómo se ve y se comporta Claude Code en tu terminal: tema, modo de editor, línea de estado, spinner, notificaciones dentro de la sesión y accesibilidad. Consulta [Configuración de la terminal](https://code.claude.com/docs/es/terminal-config.md).

2543 2544 

2544### `askUserQuestionTimeout`2545### `askUserQuestionTimeout`

2545 2546 

2546Permite que un diálogo [`AskUserQuestion`](https://code.claude.com/docs/es/tools-reference) sin respuesta continúe automáticamente después de un período de tiempo inactivo, enviando cualquier opción que ya hayas seleccionado. Establécelo cuando te alejes y quieras que Claude continúe sin ti. Con el valor predeterminado, las preguntas esperan hasta que las respondas. Para saber cuándo el temporizador se pausa o nunca comienza, consulta [Tiempo de espera de continuación automática de preguntas](https://code.claude.com/docs/es/tools-reference.md#question-auto-continue-timeout).2547Permite que un diálogo de [`AskUserQuestion`](https://code.claude.com/docs/es/tools-reference) sin responder continúe automáticamente tras un periodo de inactividad, enviando las opciones que ya hubieras seleccionado. Establécelo cuando te alejes y quieras que Claude continúe sin ti. Con el valor predeterminado, las preguntas esperan hasta que las respondas. Para saber cuándo el temporizador se pausa o nunca se inicia, consulta [Tiempo de espera de continuación automática de preguntas](https://code.claude.com/docs/es/tools-reference.md#question-auto-continue-timeout).

2547 2548 

2548* **Scope**: [`User or managed`](#scopes)2549* **Alcance**: [`User or managed`](#scopes)

2549* **Type**: string, uno de `"60s"`, `"5m"`, `"10m"`, o `"never"`2550* **Tipo**: string, uno de `"60s"`, `"5m"`, `"10m"` o `"never"`

2550* **Default**: `"never"`2551* **Predeterminado**: `"never"`

2551 2552 

2552```json settings.json theme={null}2553```json settings.json theme={null}

2553{2554{


2555}2556}

2556```2557```

2557 2558 

2558Aparece en `/config` como **Question auto-continue timeout**, que escribe esta clave en la configuración del usuario; Claude Code oculta la fila mientras la configuración administrada o la bandera `--settings` establezcan la clave.2559Aparece en `/config` como **Question auto-continue timeout**, que escribe esta clave en la configuración de usuario; Claude Code oculta la fila mientras la configuración administrada o el flag `--settings` establezcan la clave.

2559 2560 

2560### `autoContinueAtUsageLimit`2561### `autoContinueAtUsageLimit`

2561 2562 

2562Después de que un límite de uso de claude.ai detenga tu sesión, espera en la sesión abierta y continúa la tarea automáticamente después del reinicio. Consulta [Desactiva la continuación automática](https://code.claude.com/docs/es/interactive-mode.md#turn-automatic-continue-off). Requiere Claude Code v2.1.234 o posterior.2563Después de que un límite de uso de claude.ai detenga tu sesión, espera en la sesión abierta y continúa la tarea automáticamente tras el restablecimiento. Consulta [Desactivar la continuación automática](https://code.claude.com/docs/es/interactive-mode.md#turn-automatic-continue-off). Requiere Claude Code v2.1.234 o posterior.

2563 2564 

2564* **Scope**: [`User or managed`](#scopes). Se lee desde la configuración del usuario, `--settings` y la configuración administrada solamente. Cuando ninguno de esos establece la clave, un archivo de configuración de proyecto o local que la establece desactiva la función en lugar de ser ignorado.2565* **Alcance**: [`User or managed`](#scopes). Se lee solo de la configuración de usuario, `--settings` y la configuración administrada. Cuando ninguna de ellas establece la clave, un archivo de configuración de proyecto o local que la establezca desactiva la función en lugar de ignorarse.

2565* **Type**: Boolean2566* **Tipo**: Boolean

2566 * `true`: después de que un límite de uso de claude.ai detenga tu sesión, Claude Code espera en la sesión abierta y continúa la tarea automáticamente después del reinicio2567 * `true`: después de que un límite de uso de claude.ai detenga tu sesión, Claude Code espera en la sesión abierta y continúa la tarea automáticamente tras el restablecimiento

2567 * `false`: Claude Code no inicia la espera por su cuenta. Aún puedes [iniciar una espera tú mismo](https://code.claude.com/docs/es/interactive-mode.md#start-a-wait-yourself) desde el menú de opciones de límite de uso2568 * `false`: Claude Code no inicia la espera por sí solo. Aún puedes [iniciar una espera tú mismo](https://code.claude.com/docs/es/interactive-mode.md#start-a-wait-yourself) desde el menú de opciones del límite de uso

2568* **Default**: `true`2569* **Predeterminado**: `true`

2569 2570 

2570```json settings.json theme={null}2571```json settings.json theme={null}

2571{2572{


2573}2574}

2574```2575```

2575 2576 

2576Aparece en `/config` como **Continue automatically at usage limit**, que escribe esta clave en la configuración del usuario; Claude Code oculta la fila mientras la configuración administrada o la bandera `--settings` establezcan la clave.2577Aparece en `/config` como **Continue automatically at usage limit**, que escribe esta clave en la configuración de usuario; Claude Code oculta la fila mientras la configuración administrada o el flag `--settings` establezcan la clave.

2577 2578 

2578### `autoScrollEnabled`2579### `autoScrollEnabled`

2579 2580 

2580Sigue la nueva salida hasta el final de la conversación en [renderizado de pantalla completa](https://code.claude.com/docs/es/fullscreen.md). Desactívalo para permanecer donde desplazaste mientras Claude sigue trabajando; los avisos de permiso aún se desplazan a la vista.2581Sigue la nueva salida hasta el final de la conversación en el [renderizado de pantalla completa](https://code.claude.com/docs/es/fullscreen.md). Desactívalo para quedarte donde te desplazaste mientras Claude sigue trabajando; las solicitudes de permiso siguen desplazándose a la vista.

2581 2582 

2582* **Scope**: [`Any file`](#scopes)2583* **Alcance**: [`Any file`](#scopes)

2583* **Type**: Boolean2584* **Tipo**: Boolean

2584 * `true`: la conversación sigue la nueva salida hasta el final2585 * `true`: la conversación sigue la nueva salida hasta el final

2585 * `false`: permaneces donde desplazaste mientras Claude sigue trabajando; los avisos de permiso aún aparecen debajo de la transcripción2586 * `false`: te quedas donde te desplazaste mientras Claude sigue trabajando; las solicitudes de permiso siguen apareciendo debajo de la transcripción

2586* **Default**: `true`2587* **Predeterminado**: `true`

2587 2588 

2588```json settings.json theme={null}2589```json settings.json theme={null}

2589{2590{


2591}2592}

2592```2593```

2593 2594 

2594Aparece en `/config` como **Auto-scroll** cuando el renderizado de pantalla completa está activado, que escribe esta clave en la configuración del usuario.2595Aparece en `/config` como **Auto-scroll** cuando el renderizado de pantalla completa está activado, y escribe esta clave en la configuración de usuario.

2595 2596 

2596### `axScreenReader`2597### `axScreenReader`

2597 2598 

2598Renderiza salida compatible con lectores de pantalla: texto plano sin bordes decorativos ni animaciones. El modo lector de pantalla utiliza el renderizador clásico, por lo que la configuración `tui` no tiene efecto mientras está activo; las [sesiones en segundo plano](https://code.claude.com/docs/es/agent-view.md) adjuntas aún se renderizan en pantalla completa.2599Renderiza una salida adecuada para lectores de pantalla: texto plano sin bordes decorativos ni animaciones. El modo de lector de pantalla usa el renderizador clásico, por lo que el ajuste `tui` no tiene efecto mientras está activo; las [sesiones en segundo plano](https://code.claude.com/docs/es/agent-view.md) adjuntas siguen renderizándose en pantalla completa.

2599 2600 

2600* **Scope**: [`User or managed`](#scopes). También puedes establecer la clave en un archivo que pases con `--settings`. Claude Code ignora la clave en la configuración de proyecto y local, por lo que ni un repositorio ni tu propio `.claude/settings.local.json` pueden activar o desactivar el modo lector de pantalla.2601* **Alcance**: [`User or managed`](#scopes). También puedes establecer la clave en un archivo que pases con `--settings`. Claude Code ignora la clave en la configuración de proyecto y local, por lo que ni un repositorio ni tu propio `.claude/settings.local.json` pueden activar o desactivar el modo de lector de pantalla.

2601* **Type**: Boolean2602* **Tipo**: Boolean

2602 * `true`: Claude Code renderiza texto plano sin bordes decorativos ni animaciones, utilizando el renderizador clásico2603 * `true`: Claude Code renderiza texto plano sin bordes decorativos ni animaciones, usando el renderizador clásico

2603 * `false`: Claude Code se renderiza normalmente2604 * `false`: Claude Code renderiza con normalidad

2604* **Default**: unset, por lo que el modo lector de pantalla está desactivado2605* **Predeterminado**: sin establecer, por lo que el modo de lector de pantalla está desactivado

2605* **Per-session overrides**: [`--ax-screen-reader`](https://code.claude.com/docs/es/cli-reference#cli-flags) tiene precedencia sobre [`CLAUDE_AX_SCREEN_READER`](https://code.claude.com/docs/es/env-vars), y ambos tienen precedencia sobre esta clave para una sesión2606* **Sobrescrituras por sesión**: [`--ax-screen-reader`](https://code.claude.com/docs/es/cli-reference#cli-flags) tiene precedencia sobre [`CLAUDE_AX_SCREEN_READER`](https://code.claude.com/docs/es/env-vars), y ambos tienen precedencia sobre esta clave durante una sesión

2606 2607 

2607```json settings.json theme={null}2608```json settings.json theme={null}

2608{2609{


2612 2613 

2613### `bashEditDiffEnabled`2614### `bashEditDiffEnabled`

2614 2615 

2615Elige si Claude Code registra qué archivos cambiaron en un repositorio Git mientras se ejecuta un comando Bash. Cuando los registra, ves su diff en la terminal después del comando, y tus [hooks PostToolUse Bash](https://code.claude.com/docs/es/hooks.md#bash) reciben la lista de archivos cambiados.2616Elige si Claude Code registra qué archivos cambiaron en un repositorio Git mientras se ejecuta un comando de Bash. Cuando los registra, ves su diff en la terminal después del comando, y tus [hooks PostToolUse de Bash](https://code.claude.com/docs/es/hooks.md#bash) reciben la lista de archivos modificados.

2616 2617 

2617Un archivo listado no siempre es uno que el comando cambió. Un cambio que otro programa u otra llamada Bash hizo mientras el comando se ejecutaba también puede aparecer allí.2618Un archivo listado no siempre es uno que el comando haya cambiado. Un cambio que otro programa u otra llamada a Bash hizo mientras se ejecutaba el comando también puede aparecer ahí.

2618 2619 

2619Establece la clave a `true` para registrarlos en cada modo de permiso. Requiere Claude Code v2.1.269 o posterior.2620Establece la clave en `true` para registrarlos en todos los modos de permisos. Requiere Claude Code v2.1.269 o posterior.

2620 2621 

2621* **Scope**: [`User or managed`](#scopes). Un `true` cuenta solo desde tu configuración de usuario, JSON pasado con `--settings`, o [configuración administrada](https://code.claude.com/docs/es/managed-settings.md), por lo que un `true` en el `.claude/settings.json` o `.claude/settings.local.json` de un repositorio no puede activar el registro. Un `false` en cualquier archivo de repositorio aún lo desactiva a menos que un archivo de [precedencia más alta](https://code.claude.com/docs/es/settings.md#settings-precedence) establezca `true`.2622* **Alcance**: [`User or managed`](#scopes). Un `true` solo cuenta desde tu configuración de usuario, el JSON pasado con `--settings` o la [configuración administrada](https://code.claude.com/docs/es/managed-settings.md), por lo que un `true` en el `.claude/settings.json` o `.claude/settings.local.json` de un repositorio no puede activar el registro. Un `false` en cualquiera de esos archivos del repositorio sigue desactivándolo, a menos que un archivo de [mayor precedencia](https://code.claude.com/docs/es/settings.md#settings-precedence) establezca `true`.

2622* **Type**: Boolean2623* **Tipo**: Boolean

2623* **Default**: unset, por lo que Claude Code registra cambios en modo auto y modo `bypassPermissions` cuando dirige a Claude a editar archivos a través de Bash2624* **Predeterminado**: sin establecer, por lo que Claude Code registra los cambios en modo automático y en modo `bypassPermissions` cuando indica a Claude que edite archivos mediante Bash

2624* **Per-session overrides**: [`CLAUDE_CODE_BASH_EDIT_DIFF`](https://code.claude.com/docs/es/env-vars) tiene precedencia sobre esta clave para una sesión2625* **Sobrescrituras por sesión**: [`CLAUDE_CODE_BASH_EDIT_DIFF`](https://code.claude.com/docs/es/env-vars) tiene precedencia sobre esta clave durante una sesión

2625 2626 

2626```json settings.json theme={null}2627```json settings.json theme={null}

2627{2628{


2631 2632 

2632### `companyAnnouncements`2633### `companyAnnouncements`

2633 2634 

2634Muestra los anuncios de tu organización a los usuarios al iniciar. Cuando enumeras más de uno, Claude Code elige uno al azar para cada sesión; en el primer lanzamiento de una persona muestra la primera entrada.2635Muestra los anuncios de tu organización a los usuarios al iniciar. Cuando incluyes más de uno, Claude Code elige uno al azar para cada sesión; en el primer inicio de una persona muestra la primera entrada.

2635 2636 

2636* **Scope**: [`Any file`](#scopes)2637* **Alcance**: [`Any file`](#scopes)

2637* **Type**: array de strings2638* **Tipo**: array de strings

2638* **Default**: unset, por lo que no se muestra ningún anuncio2639* **Predeterminado**: sin establecer, por lo que no se muestra ningún anuncio

2639 2640 

2640```json settings.json theme={null}2641```json settings.json theme={null}

2641{2642{


2647 2648 

2648### `defaultShell`2649### `defaultShell`

2649 2650 

2650Elige si Bash o PowerShell ejecutan los comandos de shell que escribes con el prefijo [`!`](https://code.claude.com/docs/es/interactive-mode#shell-mode-with-prefix) en el cuadro de entrada, los que Claude Code ejecuta directamente y agrega a la sesión.2651Elige si Bash o PowerShell ejecuta los comandos de shell que escribes con el [prefijo `!`](https://code.claude.com/docs/es/interactive-mode#shell-mode-with-prefix) en el cuadro de entrada, los que Claude Code ejecuta directamente y añade a la sesión.

2651 2652 

2652`"powershell"` funciona solo mientras la [herramienta PowerShell](https://code.claude.com/docs/es/tools-reference.md#powershell-tool) está activada. La herramienta está activada de forma predeterminada en Windows sin Git Bash, y en Windows con Git Bash para cuentas de claude.ai y Console. En sesiones de Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry, y en macOS, Linux y WSL, establece `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` para activar la herramienta. Establece esa variable a `0` para desactivar la herramienta.2653`"powershell"` solo funciona mientras la [herramienta PowerShell](https://code.claude.com/docs/es/tools-reference.md#powershell-tool) está activada. La herramienta está activada de forma predeterminada en Windows sin Git Bash, y en Windows con Git Bash para cuentas de claude.ai y Console. En sesiones de Amazon Bedrock, Agent Platform de Google Cloud y Microsoft Foundry, y en macOS, Linux y WSL, establece `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` para activar la herramienta. Establece esa variable en `0` para desactivarla.

2653 2654 

2654* **Scope**: [`Any file`](#scopes)2655* **Alcance**: [`Any file`](#scopes)

2655* **Type**: string, uno de:2656* **Tipo**: string, uno de:

2656 * `"bash"`: Claude Code ejecuta tus comandos `!` en Bash2657 * `"bash"`: Claude Code ejecuta tus comandos `!` en Bash

2657 * `"powershell"`: Claude Code ejecuta tus comandos `!` en PowerShell2658 * `"powershell"`: Claude Code ejecuta tus comandos `!` en PowerShell

2658* **Default**: `"bash"`, o `"powershell"` en Windows cuando Bash no está disponible2659* **Predeterminado**: `"bash"`, o `"powershell"` en Windows cuando Bash no está disponible

2659 2660 

2660```json settings.json theme={null}2661```json settings.json theme={null}

2661{2662{


2663}2664}

2664```2665```

2665 2666 

2666Si el shell que nombras no está disponible, Claude Code usa el otro: `"powershell"` vuelve a Bash cuando la herramienta PowerShell está desactivada, y `"bash"` vuelve a PowerShell cuando Bash no está instalado.2667Si el shell que indicas no está disponible, Claude Code usa el otro: `"powershell"` recurre a Bash cuando la herramienta PowerShell está desactivada, y `"bash"` recurre a PowerShell cuando Bash no está instalado.

2667 2668 

2668### `dialogExpiry`2669### `dialogExpiry`

2669 2670 

2670Establece el plazo para diálogos que Claude Code [reenvía a un cliente remoto](https://code.claude.com/docs/es/remote-control.md#limitations), como un host de Remote Control o SDK, y para el diálogo de aprobación de un [mensaje de sesión cruzada retenido](https://code.claude.com/docs/es/cross-session-messaging.md#control-inbound-messages). En Claude Code v2.1.236 o posterior, el mismo plazo limita el [aviso de consentimiento de créditos de uso de Fable a mitad de sesión](https://code.claude.com/docs/es/model-config.md#fable-and-usage-credits) en una sesión que puede no tener a nadie en la terminal. Cuando no llega respuesta antes del plazo, Claude Code cancela el diálogo y continúa con su valor predeterminado sin acción. Requiere Claude Code v2.1.224 o posterior.2671Establece el plazo para los diálogos que Claude Code [reenvía a un cliente remoto](https://code.claude.com/docs/es/remote-control.md#limitations), como un host de Remote Control o del SDK, y para el diálogo de aprobación de un [mensaje entre sesiones retenido](https://code.claude.com/docs/es/cross-session-messaging.md#control-inbound-messages). En Claude Code v2.1.236 o posterior, el mismo plazo limita la solicitud de consentimiento de [créditos de uso de Fable](https://code.claude.com/docs/es/model-config.md#fable-and-usage-credits) a mitad de sesión en una sesión que puede no tener a nadie en la terminal. Cuando no llega ninguna respuesta antes del plazo, Claude Code cancela el diálogo y continúa con su opción predeterminada de no realizar ninguna acción. Requiere Claude Code v2.1.224 o posterior.

2671 2672 

2672* **Scope**: [`User or managed`](#scopes)2673* **Alcance**: [`User or managed`](#scopes)

2673* **Type**: string, uno de `"60s"`, `"5m"`, `"10m"`, o `"never"`, que desactiva el plazo2674* **Tipo**: string, uno de `"60s"`, `"5m"`, `"10m"` o `"never"`, que desactiva el plazo

2674* **Default**: `"5m"`2675* **Predeterminado**: `"5m"`

2675* **Per-session overrides**: [`CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS`](https://code.claude.com/docs/es/env-vars) tiene precedencia sobre esta clave para una sesión2676* **Sobrescrituras por sesión**: [`CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS`](https://code.claude.com/docs/es/env-vars) tiene precedencia sobre esta clave durante una sesión

2676 2677 

2677```json settings.json theme={null}2678```json settings.json theme={null}

2678{2679{


2680}2681}

2681```2682```

2682 2683 

2683Los avisos de permiso y las preguntas [`AskUserQuestion`](https://code.claude.com/docs/es/tools-reference#askuserquestion-tool-behavior) utilizan sus propios flujos y no se rigen por este plazo. Aparece en `/config` como **Dialog expiry**, que escribe esta clave en la configuración del usuario; la fila requiere Claude Code v2.1.232 o posterior, y Claude Code la oculta mientras la configuración administrada o la bandera `--settings` establezcan la clave.2684Las solicitudes de permiso y las preguntas de [`AskUserQuestion`](https://code.claude.com/docs/es/tools-reference#askuserquestion-tool-behavior) usan sus propios flujos y no se rigen por este plazo. Aparece en `/config` como **Dialog expiry**, que escribe esta clave en la configuración de usuario; la fila requiere Claude Code v2.1.232 o posterior, y Claude Code la oculta mientras la configuración administrada o el flag `--settings` establezcan la clave.

2684 2685 

2685### `editorMode`2686### `editorMode`

2686 2687 

2687Elige el modo de atajos de teclado para el aviso de entrada.2688Elige el modo de combinaciones de teclas para el prompt de entrada.

2688 2689 

2689* **Scope**: [`Any file`](#scopes)2690* **Alcance**: [`Any file`](#scopes)

2690* **Type**: string, uno de:2691* **Tipo**: string, uno de:

2691 * `"normal"`: atajos de teclado estándar en la entrada del aviso2692 * `"normal"`: combinaciones de teclas estándar en la entrada del prompt

2692 * `"vim"`: edición de estilo vim con modos NORMAL, INSERT y VISUAL2693 * `"vim"`: edición al estilo vim con los modos NORMAL, INSERT y VISUAL

2693* **Default**: `"normal"`2694* **Predeterminado**: `"normal"`

2694 2695 

2695```json settings.json theme={null}2696```json settings.json theme={null}

2696{2697{


2698}2699}

2699```2700```

2700 2701 

2701Aparece en `/config` como **Editor mode**, que escribe esta clave en la configuración del usuario.2702Aparece en `/config` como **Editor mode**, que escribe esta clave en la configuración de usuario.

2702 2703 

2703### `emojiCompletionEnabled`2704### `emojiCompletionEnabled`

2704 2705 

2705Muestra sugerencias de emoji cuando escribes `:` más un código corto en la entrada del aviso, y reemplaza un código corto completado como `:heart:` con su emoji. Establécelo a `false` para desactivar ambos.2706Muestra sugerencias de emoji cuando escribes `:` más un shortcode en la entrada del prompt, y reemplaza un shortcode completado como `:heart:` por su emoji. Establécelo en `false` para desactivar ambas cosas.

2706 2707 

2707* **Scope**: [`Any file`](#scopes)2708* **Alcance**: [`Any file`](#scopes)

2708* **Type**: Boolean2709* **Tipo**: Boolean

2709 * `true`: Claude Code muestra sugerencias de emoji después de `:` y reemplaza un código corto completado con su emoji2710 * `true`: Claude Code muestra sugerencias de emoji después de `:` y reemplaza un shortcode completado por su emoji

2710 * `false`: Claude Code ni sugiere emoji ni reemplaza códigos cortos2711 * `false`: Claude Code no sugiere emoji ni reemplaza shortcodes

2711* **Default**: `true`2712* **Predeterminado**: `true`

2712 2713 

2713```json settings.json theme={null}2714```json settings.json theme={null}

2714{2715{


2716}2717}

2717```2718```

2718 2719 

2719Consulta [Códigos cortos de emoji](https://code.claude.com/docs/es/interactive-mode.md#emoji-shortcodes). Requiere Claude Code v2.1.217 o posterior.2720Consulta [Shortcodes de emoji](https://code.claude.com/docs/es/interactive-mode.md#emoji-shortcodes).

2720 2721 

2721### `fileSuggestion`2722### `fileSuggestion`

2722 2723 

2723Ejecuta tu propio comando para proporcionar autocompletado de ruta de archivo `@` en lugar de la sugerencia de archivo integrada. La sugerencia integrada utiliza recorrido rápido del sistema de archivos; un monorepo grande puede funcionar mejor con indexación específica del proyecto, como un índice de archivo precompilado.2724Ejecuta tu propio comando para proporcionar el autocompletado de rutas de archivo con `@` en lugar de la sugerencia de archivos integrada. La sugerencia integrada usa un recorrido rápido del sistema de archivos; un monorepo grande puede funcionar mejor con una indexación específica del proyecto, como un índice de archivos precompilado.

2724 2725 

2725* **Scope**: [`Any file`](#scopes). Bajo las [puertas de línea de estado y sugerencia de archivo](#status-line-and-file-suggestion-gates), Claude Code desactiva el comando o ejecuta solo un valor administrado, y omite el tuyo sin advertencia.2726* **Alcance**: [`Any file`](#scopes). Bajo las [restricciones de la línea de estado y la sugerencia de archivos](#status-line-and-file-suggestion-gates), Claude Code desactiva el comando o ejecuta solo un valor administrado, y omite el tuyo sin avisar.

2726* **Type**: objeto con `type`, siempre `"command"`, y `command`, el comando de shell a ejecutar2727* **Tipo**: objeto con `type`, siempre `"command"`, y `command`, el comando de shell que se ejecuta

2727* **Default**: unset, por lo que Claude Code usa la sugerencia de archivo integrada2728* **Predeterminado**: sin establecer, por lo que Claude Code usa la sugerencia de archivos integrada

2728 2729 

2729```json settings.json theme={null}2730```json settings.json theme={null}

2730{2731{


2735}2736}

2736```2737```

2737 2738 

2738Después de guardar esto, escribe `@` seguido de parte de una ruta en el aviso: las sugerencias provienen de la salida de tu comando.2739Después de guardarlo, escribe `@` seguido de parte de una ruta en el prompt: las sugerencias provienen de la salida de tu comando.

2739 2740 

2740#### Entrada y salida del comando2741#### Entrada y salida del comando

2741 2742 

2742Claude Code ejecuta el comando con las mismas variables de entorno que los [hooks](https://code.claude.com/docs/es/hooks.md), incluyendo `CLAUDE_PROJECT_DIR`, y deja de esperar después de cinco segundos. El comando recibe JSON en stdin con un campo `query` que contiene lo que has escrito hasta ahora:2743Claude Code ejecuta el comando con las mismas variables de entorno que los [hooks](https://code.claude.com/docs/es/hooks.md), incluida `CLAUDE_PROJECT_DIR`, y deja de esperar después de cinco segundos. El comando recibe JSON en stdin con un campo `query` que contiene lo que has escrito hasta el momento:

2743 2744 

2744```json theme={null}2745```json theme={null}

2745{"query": "src/comp"}2746{"query": "src/comp"}


2753src/components/Form.tsx2754src/components/Form.tsx

2754```2755```

2755 2756 

2756El siguiente script lee la consulta y la entrega a un índice de archivo de repositorio:2757El siguiente script lee la consulta y la pasa a un índice de archivos del repositorio:

2757 2758 

2758```bash theme={null}2759```bash theme={null}

2759#!/bin/bash2760#!/bin/bash


2764 2765 

2765### `footerLinksRegexes`2766### `footerLinksRegexes`

2766 2767 

2767Renderiza insignias clickeables adicionales en el pie de página debajo del cuadro de entrada cuando una regex coincide con la salida de turno: resultados de herramientas, incluyendo contenidos de archivo y páginas obtenidas, y respuestas propias de Claude. Úsalo para convertir IDs impresos por CLI de proyecto, como herramientas de revisión y rastreadores de problemas, en enlaces de sesión.2768Renderiza insignias adicionales en las que se puede hacer clic en el pie, debajo del cuadro de entrada, cuando una regex coincide con la salida del turno: resultados de herramientas, incluidos contenidos de archivos y páginas obtenidas, y las propias respuestas de Claude. Úsalo para convertir los ID que imprimen las CLI del proyecto, como herramientas de revisión y gestores de incidencias, en enlaces de la sesión.

2768 2769 

2769* **Scope**: [`User or managed`](#scopes)2770* **Alcance**: [`User or managed`](#scopes)

2770* **Type**: array de objetos, cada uno con `type` establecido a `"regex"`, una regex `pattern`, una plantilla `url`, y una `label` opcional; los marcadores de posición `{name}` en `url` y `label` se rellenan desde grupos de captura nombrados en `pattern`2771* **Tipo**: array de objetos, cada uno con `type` establecido en `"regex"`, una regex `pattern`, una plantilla `url` y un `label` opcional; los marcadores `{name}` en `url` y `label` se rellenan con los grupos de captura con nombre de `pattern`

2771* **Default**: unset, por lo que no se renderizan insignias2772* **Predeterminado**: sin establecer, por lo que no se renderiza ninguna insignia

2772 2773 

2773Este ejemplo coincide con claves de problema como `PROJ-1234` y construye cada enlace a partir de la clave capturada:2774Este ejemplo coincide con claves de incidencia como `PROJ-1234` y construye cada enlace a partir de la clave capturada:

2774 2775 

2775```json settings.json theme={null}2776```json settings.json theme={null}

2776{2777{


2785}2786}

2786```2787```

2787 2788 

2788Con esto configurado, cuando `PROJ-1234` aparece en un resultado de herramienta o en la respuesta de Claude, una insignia `PROJ-1234` aparece en el pie de página vinculando a `https://issues.example.com/browse/PROJ-1234`.2789Con esto configurado, cuando `PROJ-1234` aparece en un resultado de herramienta o en la respuesta de Claude, aparece en el pie una insignia `PROJ-1234` que enlaza a `https://issues.example.com/browse/PROJ-1234`.

2789 2790 

2790#### Restricciones de insignia2791#### Restricciones de las insignias

2791 2792 

2792El URL, la etiqueta y el recuento de insignias de cada entrada están limitados de la siguiente manera:2793La URL, la etiqueta y el número de insignias de cada entrada están limitados de la siguiente manera:

2793 2794 

2794| Restricción | Comportamiento |2795| Restricción | Comportamiento |

2795| :- | :- |2796| :- | :- |

2796| Origen de URL | Los valores capturados se codifican en URL y el URL construido debe compartir el origen literal de la plantilla. Una captura puede rellenar un segmento de ruta o valor de consulta pero no puede cambiar a dónde apunta el enlace |2797| Origen de la URL | Los valores capturados se codifican para URL y la URL construida debe compartir el origen literal de la plantilla. Una captura puede rellenar un segmento de ruta o un valor de consulta, pero no puede cambiar adónde apunta el enlace |

2797| Longitud de URL | Los URLs construidos más largos que 2048 caracteres se descartan |2798| Longitud de la URL | Las URL construidas de más de 2048 caracteres se descartan |

2798| Esquema de URL | Debe ser `https`, `http`, o un esquema de enlace profundo de editor o espacio de trabajo reconocido: `vscode`, `vscode-insiders`, `cursor`, `windsurf`, `zed`, `jetbrains`, `idea`, `slack`, `linear`, `notion`, `figma` |2799| Esquema de la URL | Debe ser `https`, `http` o un esquema de enlace profundo de editor o espacio de trabajo reconocido: `vscode`, `vscode-insiders`, `cursor`, `windsurf`, `zed`, `jetbrains`, `idea`, `slack`, `linear`, `notion`, `figma` |

2799| Etiqueta | Por defecto es el texto coincidente y se trunca a 28 columnas de visualización |2800| Etiqueta | De forma predeterminada es el texto coincidente y se trunca a 28 columnas de visualización |

2800| Recuento de insignias | Como máximo 5 insignias se renderizan. La más antigua es desplazada por coincidencias más nuevas y `/clear` las elimina |2801| Número de insignias | Se renderizan como máximo 5 insignias. Las coincidencias más nuevas desplazan a la más antigua y `/clear` las elimina |

2801 2802 

2802Cuando un turno se completa, Claude Code coincide con la regex `pattern` de cada entrada contra la salida de turno en el hilo principal, por lo que una regex lenta bloquea la interfaz hasta que termina. Los cuantificadores anidados como `(a+)+$` pueden tomar exponencialmente tiempo contra ciertas entradas y congelar la sesión, así que mantén cada `pattern` lineal y evita anidar `+` o `*`.2803Cuando un turno termina, Claude Code compara la regex `pattern` de cada entrada con la salida del turno en el hilo principal, por lo que una regex lenta bloquea la UI hasta que termina. Los cuantificadores anidados como `(a+)+$` pueden tardar un tiempo exponencial con ciertas entradas y congelar la sesión, así que mantén cada `pattern` lineal y evita anidar `+` o `*`.

2803 2804 

2804Las insignias de pie de página se renderizan junto a una [línea de estado personalizada](https://code.claude.com/docs/es/statusline.md) cuando una está configurada; ninguna reemplaza a la otra. Usa una línea de estado para una fila impulsada por script que calcula su propio contenido a partir de datos de sesión, e insignias de pie de página para convertir IDs de la conversación en enlaces sin un script.2805Las insignias del pie se renderizan junto a una [línea de estado personalizada](https://code.claude.com/docs/es/statusline.md) cuando hay una configurada; ninguna reemplaza a la otra. Usa una línea de estado para una fila controlada por un script que calcula su propio contenido a partir de los datos de la sesión, y las insignias del pie para convertir los ID de la conversación en enlaces sin un script.

2805 2806 

2806### `keybindingFlavor`2807### `keybindingFlavor`

2807 2808 

2808> [!WARNING]2809> [!WARNING]

2809>2810>

2810> Deprecado desde v2.1.261 y no tiene efecto. Las teclas de edición de palabras del aviso siempre [siguen convenciones readline](https://code.claude.com/docs/es/interactive-mode.md#make-ctrl-w-delete-back-to-whitespace), como en Bash. Claude Code aún acepta `keybindingFlavor`, por lo que un archivo de configuración que lo establece sigue siendo válido.2811> Obsoleto desde v2.1.261 y no tiene efecto. Las teclas de edición de palabras del prompt siempre [siguen las convenciones de readline](https://code.claude.com/docs/es/interactive-mode.md#make-ctrl-w-delete-back-to-whitespace), como en Bash. Claude Code sigue aceptando `keybindingFlavor`, por lo que un archivo de configuración que lo establezca sigue siendo válido.

2811 2812 

2812En v2.1.238 a v2.1.260, establecerlo a `"readline"` hizo que `Ctrl+W` eliminara hacia el espacio en blanco anterior en lugar de solo la palabra anterior.2813De v2.1.238 a v2.1.260, establecerlo en `"readline"` hacía que `Ctrl+W` borrara hasta el espacio en blanco anterior en lugar de solo la palabra anterior.

2813 2814 

2814* **Scope**: [`Any file`](#scopes)2815* **Alcance**: [`Any file`](#scopes)

2815* **Type**: string, `"classic"` o `"readline"`2816* **Tipo**: string, `"classic"` o `"readline"`

2816* **Default**: unset2817* **Predeterminado**: sin establecer

2817 2818 

2818### `maxProseWidth`2819### `maxProseWidth`

2819 2820 

2820Limita el ancho de la prosa en las respuestas de Claude para que las líneas permanezcan legibles en una terminal ancha. Los párrafos, encabezados, listas y citas se ajustan dentro de este número de columnas, mientras que las tablas y bloques de código mantienen el ancho completo de la terminal. Requiere Claude Code v2.1.282 o posterior.2821Limita el ancho de la prosa en las respuestas de Claude para que las líneas sigan siendo legibles en una terminal ancha. Los párrafos, encabezados, listas y citas se ajustan dentro de este número de columnas, mientras que las tablas y los bloques de código mantienen el ancho completo de la terminal. Requiere Claude Code v2.1.282 o posterior.

2821 2822 

2822* **Scope**: [`Any file`](#scopes)2823* **Alcance**: [`Any file`](#scopes)

2823* **Type**: número de columnas de terminal, un número entero, mínimo `40`. Claude Code ignora cualquier otro valor2824* **Tipo**: número de columnas de la terminal, un número entero, mínimo `40`. Claude Code ignora cualquier otro valor

2824* **Default**: unset, por lo que la prosa se ajusta al borde de la terminal2825* **Predeterminado**: sin establecer, por lo que la prosa se ajusta en el borde de la terminal

2825 2826 

2826```json settings.json theme={null}2827```json settings.json theme={null}

2827{2828{


2831 2832 

2832### `prefersReducedMotion`2833### `prefersReducedMotion`

2833 2834 

2834Reduce o desactiva animaciones de interfaz como el spinner, shimmer y efectos de destello. Aparece en `/config` como **Reduce motion**.2835Reduce o desactiva las animaciones de la interfaz, como el spinner y los efectos de brillo y destello. Aparece en `/config` como **Reduce motion**.

2835 2836 

2836* **Scope**: [`Any file`](#scopes)2837* **Alcance**: [`Any file`](#scopes)

2837* **Type**: Boolean2838* **Tipo**: Boolean

2838 * `true`: Claude Code reduce o desactiva animaciones de interfaz como el spinner, shimmer y efectos de destello2839 * `true`: Claude Code reduce o desactiva las animaciones de la interfaz, como el spinner y los efectos de brillo y destello

2839 * `false`: lo mismo que unset; Claude Code muestra sus animaciones2840 * `false`: igual que sin establecer; Claude Code muestra sus animaciones

2840* **Default**: `false`2841* **Predeterminado**: `false`

2841 2842 

2842```json settings.json theme={null}2843```json settings.json theme={null}

2843{2844{


2847 2848 

2848### `promptSuggestionEnabled`2849### `promptSuggestionEnabled`

2849 2850 

2850Muestra u oculta [sugerencias de aviso](https://code.claude.com/docs/es/interactive-mode.md#prompt-suggestions), las predicciones atenuadas que aparecen en tu entrada de aviso. Establécelo a `false`, o desactiva **Prompt suggestions** en `/config`, para ocultarlas.2851Muestra u oculta las [sugerencias de prompt](https://code.claude.com/docs/es/interactive-mode.md#prompt-suggestions), las predicciones en gris que aparecen en la entrada del prompt. Establécelo en `false`, o desactiva **Prompt suggestions** en `/config`, para ocultarlas.

2851 2852 

2852* **Scope**: [`Any file`](#scopes)2853* **Alcance**: [`Any file`](#scopes)

2853* **Type**: Boolean2854* **Tipo**: Boolean

2854 * `true`: ves sugerencias de aviso en tu entrada de aviso2855 * `true`: ves sugerencias de prompt en la entrada del prompt

2855 * `false`: Claude Code oculta sugerencias de aviso2856 * `false`: Claude Code oculta las sugerencias de prompt

2856* **Default**: `true`2857* **Predeterminado**: `true`

2857* **Per-session overrides**: [`CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION`](https://code.claude.com/docs/es/env-vars) tiene precedencia sobre esta clave para una sesión2858* **Sobrescrituras por sesión**: [`CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION`](https://code.claude.com/docs/es/env-vars) tiene precedencia sobre esta clave durante una sesión

2858 2859 

2859```json settings.json theme={null}2860```json settings.json theme={null}

2860{2861{


2862}2863}

2863```2864```

2864 2865 

2865Las sugerencias de aviso necesitan una cuenta de claude.ai o Console con telemetría activada. En Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry, o con telemetría desactivada, como por [`DISABLE_TELEMETRY`](https://code.claude.com/docs/es/env-vars), esta clave no tiene efecto y solo `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=1` las activa.2866Las sugerencias de prompt necesitan una cuenta de claude.ai o Console con la telemetría activada. En Amazon Bedrock, Agent Platform de Google Cloud y Microsoft Foundry, o con la telemetría desactivada, por ejemplo mediante [`DISABLE_TELEMETRY`](https://code.claude.com/docs/es/env-vars), esta clave no tiene efecto y solo `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=1` las activa.

2866 2867 

2867### `respectGitignore`2868### `respectGitignore`

2868 2869 

2869Controla si el selector de archivo `@` deja fuera archivos que coinciden con patrones `.gitignore`. Aparece en `/config` como **Respect .gitignore in file picker**.2870Controla si el selector de archivos `@` excluye los archivos que coinciden con patrones de `.gitignore`. Aparece en `/config` como **Respect .gitignore in file picker**.

2870 2871 

2871* **Scope**: [`Any file`](#scopes). Cuando ningún archivo de configuración lo establece, Claude Code vuelve a `respectGitignore` en `~/.claude.json`, que el toggle `/config` escribe.2872* **Alcance**: [`Any file`](#scopes). Cuando ningún archivo de configuración lo establece, Claude Code recurre a `respectGitignore` en `~/.claude.json`, que es lo que escribe el interruptor de `/config`.

2872* **Type**: Boolean2873* **Tipo**: Boolean

2873 * `true`: el selector de archivo `@` deja fuera archivos que coinciden con patrones `.gitignore`2874 * `true`: el selector de archivos `@` excluye los archivos que coinciden con patrones de `.gitignore`

2874 * `false`: el selector de archivo `@` incluye archivos que coinciden con patrones `.gitignore`2875 * `false`: el selector de archivos `@` incluye los archivos que coinciden con patrones de `.gitignore`

2875* **Default**: `true`2876* **Predeterminado**: `true`

2876 2877 

2877```json settings.json theme={null}2878```json settings.json theme={null}

2878{2879{


2882 2883 

2883### `respondToBashCommands`2884### `respondToBashCommands`

2884 2885 

2885Elige si Claude responde después de que ejecutes un comando de shell con el prefijo [`!`](https://code.claude.com/docs/es/interactive-mode#shell-mode-with-prefix) en el cuadro de entrada. De forma predeterminada, Claude Code agrega la salida del comando a la conversación y Claude responde a ella. Establece esta clave a `false` para agregar la salida al contexto sin una respuesta, para que puedas ejecutar varios comandos y preguntar sobre ellos juntos.2886Elige si Claude responde después de que ejecutas un comando de shell con el [prefijo `!`](https://code.claude.com/docs/es/interactive-mode#shell-mode-with-prefix) en el cuadro de entrada. De forma predeterminada, Claude Code añade la salida del comando a la conversación y Claude responde a ella. Establece esta clave en `false` para añadir la salida al contexto sin respuesta, de modo que puedas ejecutar varios comandos y preguntar sobre ellos a la vez.

2886 2887 

2887* **Scope**: [`Any file`](#scopes)2888* **Alcance**: [`Any file`](#scopes)

2888* **Type**: Boolean2889* **Tipo**: Boolean

2889 * `true`: Claude Code agrega la salida del comando a la conversación y Claude responde a ella2890 * `true`: Claude Code añade la salida del comando a la conversación y Claude responde a ella

2890 * `false`: Claude Code agrega la salida al contexto sin una respuesta2891 * `false`: Claude Code añade la salida al contexto sin respuesta

2891* **Default**: `true`2892* **Predeterminado**: `true`

2892 2893 

2893```json settings.json theme={null}2894```json settings.json theme={null}

2894{2895{


2896}2897}

2897```2898```

2898 2899 

2899Consulta [Modo de shell con prefijo `!`](https://code.claude.com/docs/es/interactive-mode#shell-mode-with-prefix).2900Consulta [Modo shell con el prefijo `!`](https://code.claude.com/docs/es/interactive-mode#shell-mode-with-prefix).

2900 2901 

2901### `showClearContextOnPlanAccept`2902### `showClearContextOnPlanAccept`

2902 2903 

2903Cuando Claude termina un plan en [modo plan](https://code.claude.com/docs/es/permission-modes.md#review-and-approve-a-plan), muestra un menú de aprobación. La planificación puede usar mucho contexto, por lo que esta clave agrega una primera opción a ese menú, **Yes, clear context and …**, que aprueba el plan, borra el contexto de conversación e inicia la implementación solo desde el plan. El resto de la etiqueta nombra el modo de permiso en el que continúa la sesión, y muestra cuánto de tu contexto usó la planificación.2904Cuando Claude termina un plan en [modo plan](https://code.claude.com/docs/es/permission-modes.md#review-and-approve-a-plan), muestra un menú de aprobación. La planificación puede usar mucho contexto, por lo que esta clave añade una primera opción a ese menú, **Yes, clear context and …**, que aprueba el plan, borra el contexto de la conversación y empieza a implementar solo a partir del plan. El resto de la etiqueta indica el modo de permisos en el que continúa la sesión y muestra cuánto de tu contexto usó la planificación.

2904 2905 

2905* **Scope**: [`Any file`](#scopes)2906* **Alcance**: [`Any file`](#scopes)

2906* **Type**: Boolean2907* **Tipo**: Boolean

2907 * `true`: el menú de aprobación del plan obtiene una primera opción, **Yes, clear context and …**, que aprueba el plan y borra el contexto de conversación2908 * `true`: el menú de aprobación del plan obtiene una primera opción, **Yes, clear context and …**, que aprueba el plan y borra el contexto de la conversación

2908 * `false`: el menú de aprobación del plan no muestra opción de borrar contexto2909 * `false`: el menú de aprobación del plan no muestra ninguna opción para borrar el contexto

2909* **Default**: `false`2910* **Predeterminado**: `false`

2910 2911 

2911```json settings.json theme={null}2912```json settings.json theme={null}

2912{2913{


2916 2917 

2917### `showTurnDuration`2918### `showTurnDuration`

2918 2919 

2919Muestra u oculta el mensaje de duración de turno después de cada respuesta, como "Cooked for 1m 6s · done 6:05 PM". El reloj después de "done" muestra cuándo terminó el turno; [`timeFormat`](#timeformat) y [`timeZone`](#timezone) controlan su formato y zona. Aparece en `/config` como **Show turn duration**.2920Muestra u oculta el mensaje de duración del turno después de cada respuesta, como "Cooked for 1m 6s · done 6:05 PM". La hora después de "done" muestra cuándo terminó el turno; [`timeFormat`](#timeformat) y [`timeZone`](#timezone) controlan su formato y su zona horaria. Aparece en `/config` como **Show turn duration**.

2920 2921 

2921* **Scope**: [`Any file`](#scopes). Un valor en `~/.claude.json` de una versión anterior se aplica cuando ningún archivo de configuración lo establece.2922* **Alcance**: [`Any file`](#scopes). Un valor en `~/.claude.json` de una versión anterior se aplica cuando ningún archivo de configuración lo establece.

2922* **Type**: Boolean2923* **Tipo**: Boolean

2923 * `true`: ves el mensaje de duración de turno después de cada respuesta2924 * `true`: ves el mensaje de duración del turno después de cada respuesta

2924 * `false`: Claude Code oculta el mensaje de duración de turno2925 * `false`: Claude Code oculta el mensaje de duración del turno

2925* **Default**: `true`2926* **Predeterminado**: `true`

2926 2927 

2927```json settings.json theme={null}2928```json settings.json theme={null}

2928{2929{


2932 2933 

2933### `spellcheck`2934### `spellcheck`

2934 2935 

2935Subraya palabras mal escritas en la entrada del aviso mientras escribes, usando un corrector ortográfico que instales. Claude Code verifica solo el texto en el cuadro de entrada. [Verifica la ortografía mientras escribes](https://code.claude.com/docs/es/interactive-mode.md#check-spelling-as-you-type) cubre la instalación de aspell, hunspell o ispell y qué cubre el verificador. Requiere Claude Code v2.1.235 o posterior.2936Subraya las palabras mal escritas en la entrada del prompt mientras escribes, usando un corrector ortográfico que instales. Claude Code solo revisa el texto del cuadro de entrada. [Revisar la ortografía mientras escribes](https://code.claude.com/docs/es/interactive-mode.md#check-spelling-as-you-type) explica cómo instalar aspell, hunspell o ispell y qué abarca el corrector. Requiere Claude Code v2.1.235 o posterior.

2936 2937 

2937* **Scope**: [`User or managed`](#scopes). El bloque del nivel más alto que lo establece se aplica como un todo.2938* **Alcance**: [`User or managed`](#scopes). El bloque del nivel más alto que lo establezca se aplica en su totalidad.

2938* **Type**: objeto con `enabled` (Boolean), `checker` (`"aspell"`, `"hunspell"`, `"ispell"`, o `"auto"`), `language` (string, pasado al verificador como su nombre de diccionario), y `color` (string, un nombre de color de terminal, `#rrggbb`, `rgb(r,g,b)`, `ansi256(n)`, o `ansi:<name>`)2939* **Tipo**: objeto con `enabled` (Boolean), `checker` (`"aspell"`, `"hunspell"`, `"ispell"` o `"auto"`), `language` (string, que se pasa al corrector como nombre de su diccionario) y `color` (string, un nombre de color de terminal, `#rrggbb`, `rgb(r,g,b)`, `ansi256(n)` o `ansi:<name>`)

2939* **Default**: unset, por lo que la verificación ortográfica está desactivada; `checker` por defecto es `"auto"`, el primero de los tres encontrados en `PATH`; `language` por defecto es el propio diccionario del verificador; `color` por defecto es el color de error del tema2940* **Predeterminado**: sin establecer, por lo que la revisión ortográfica está desactivada; `checker` es `"auto"` de forma predeterminada, el primero de los tres que se encuentre en `PATH`; `language` es de forma predeterminada el diccionario propio del corrector; `color` es de forma predeterminada el color de error del tema

2940 2941 

2941```json settings.json theme={null}2942```json settings.json theme={null}

2942{2943{


2946 2947 

2947### `spinnerTipsEnabled`2948### `spinnerTipsEnabled`

2948 2949 

2949Mientras Claude trabaja, la línea del spinner rota a través de consejos cortos sobre características de Claude Code, como "Use Plan Mode to prepare for a complex request before making changes. Press Shift+Tab twice to enable." Establece esta clave a `false` para ocultarlos. Aparece en `/config` como **Show tips**.2950Mientras Claude trabaja, la línea del spinner va rotando consejos breves sobre las funciones de Claude Code, como "Use Plan Mode to prepare for a complex request before making changes. Press Shift+Tab twice to enable." Establece esta clave en `false` para ocultarlos. Aparece en `/config` como **Show tips**.

2950 2951 

2951* **Scope**: [`Any file`](#scopes)2952* **Alcance**: [`Any file`](#scopes)

2952* **Type**: Boolean2953* **Tipo**: Boolean

2953 * `true`: ves consejos en el spinner mientras Claude está trabajando2954 * `true`: ves consejos en el spinner mientras Claude trabaja

2954 * `false`: Claude Code oculta consejos del spinner2955 * `false`: Claude Code oculta los consejos del spinner

2955* **Default**: `true`2956* **Predeterminado**: `true`

2956 2957 

2957```json settings.json theme={null}2958```json settings.json theme={null}

2958{2959{


2962 2963 

2963### `spinnerTipsOverride`2964### `spinnerTipsOverride`

2964 2965 

2965Agrega tus propios consejos a los [consejos del spinner](#spinnertipsenabled) que Claude Code muestra mientras Claude trabaja, o reemplaza los consejos integrados con los tuyos. Claude Code pone tus consejos en la misma rotación que los integrados.2966Añade tus propios consejos a los [consejos del spinner](#spinnertipsenabled) que Claude Code muestra mientras Claude trabaja, o reemplaza los consejos integrados por los tuyos. Claude Code pone tus consejos en la misma rotación que los integrados.

2966 2967 

2967Si estableces [`spinnerTipsEnabled`](#spinnertipsenabled) a `false`, Claude Code oculta todos los consejos, incluyendo los tuyos.2968Si estableces [`spinnerTipsEnabled`](#spinnertipsenabled) en `false`, Claude Code oculta todos los consejos, incluidos los tuyos.

2968 2969 

2969* **Scope**: [`Any file`](#scopes). Claude Code honra objetos de consejo, `tipsFile`, `label`, y `excludeDefault` desde la configuración del usuario, la bandera `--settings`, y la configuración administrada; desde la configuración de proyecto y local lee solo consejos de string plano.2970* **Alcance**: [`Any file`](#scopes). Claude Code respeta los objetos de consejo, `tipsFile`, `label` y `excludeDefault` de la configuración de usuario, el flag `--settings` y la configuración administrada; de la configuración de proyecto y local solo lee consejos en forma de strings simples.

2970* **Type**: objeto con campos `tips`, `tipsFile`, `label`, y `excludeDefault`, cada uno opcional2971* **Tipo**: objeto con los campos `tips`, `tipsFile`, `label` y `excludeDefault`, todos opcionales

2971* **Default**: unset, por lo que Claude Code muestra solo los consejos integrados2972* **Predeterminado**: sin establecer, por lo que Claude Code solo muestra los consejos integrados

2972 2973 

2973Objetos de consejo, `tipsFile`, `label`, y la regla de la línea Scope que la configuración de proyecto y local contribuyen solo strings planos requieren Claude Code v2.1.247 o posterior.2974Los objetos de consejo, `tipsFile`, `label` y la regla de la línea de Alcance según la cual la configuración de proyecto y local solo aporta strings simples requieren Claude Code v2.1.247 o posterior.

2974 2975 

2975Cada entrada `tips` es un string plano u objeto con estos campos:2976Cada entrada de `tips` es un string simple o un objeto con estos campos:

2976 2977 

2977| Campo | Requerido | Descripción |2978| Campo | Obligatorio | Descripción |

2978| :- | :- | :- |2979| :- | :- | :- |

2979| `id` | Sí | Hasta 64 letras, dígitos, `.`, `_`, o `-`. Claude Code clave el historial de visualización del consejo en él, por lo que el enfriamiento del consejo sobrevive a la reordenación de la lista. De dos entradas con el mismo id, Claude Code usa la primera |2980| `id` | Sí | Hasta 64 letras, dígitos, `.`, `_` o `-`. Claude Code asocia a él el historial de visualización del consejo, por lo que el periodo de espera del consejo se mantiene aunque reordenes la lista. De dos entradas con el mismo id, Claude Code usa la primera |

2980| `text` | Sí | El consejo, una línea de hasta 500 caracteres. Claude Code elimina escapes ANSI y caracteres de control y colapsa espacios en blanco |2981| `text` | Sí | El consejo, una línea de hasta 500 caracteres. Claude Code elimina los escapes ANSI y los caracteres de control y contrae los espacios en blanco |

2981| `cooldownSessions` | No | Sesiones que Claude Code espera antes de mostrar el consejo nuevamente, `0` a `1000`, por defecto `0` |2982| `cooldownSessions` | No | Sesiones que Claude Code espera antes de volver a mostrar el consejo, de `0` a `1000`, predeterminado `0` |

2982| `priority` | No | Orden entre consejos que han estado sin mostrarse igualmente tiempo, más alto primero, `-10` a `10`, por defecto `0` |2983| `priority` | No | Orden entre los consejos que llevan el mismo tiempo sin mostrarse, primero el más alto, de `-10` a `10`, predeterminado `0` |

2983 2984 

2984Claude Code lee un string plano como un consejo con esos valores predeterminados y un id basado en posición, por lo que su historial de visualización se reinicia cuando reordenas la lista. Dale a un consejo un `id` para mantener su historial a través de ediciones.2985Claude Code lee un string simple como un consejo con esos valores predeterminados y un id basado en su posición, por lo que su historial de visualización se restablece cuando reordenas la lista. Dale a un consejo un `id` para conservar su historial entre ediciones.

2985 2986 

2986Claude Code lee como máximo 200 consejos en `tips` y `tipsFile`, y descarta una entrada inválida con una advertencia de depuración en lugar de rechazar el archivo de configuración.2987Claude Code lee como máximo 200 consejos entre `tips` y `tipsFile`, y descarta una entrada no válida con una advertencia de depuración en lugar de rechazar el archivo de configuración.

2987 2988 

2988Usa los campos restantes para nombrar un archivo de consejos, establecer el prefijo y ocultar los consejos integrados:2989Usa los campos restantes para indicar un archivo de consejos, establecer el prefijo y ocultar los consejos integrados:

2989 2990 

2990* `tipsFile`: una ruta absoluta o `~/` a un archivo JSON local que contiene un array de las mismas entradas, u objeto con un array `tips`, hasta 256 KB. Claude Code lee el archivo una vez por proceso, por lo que carga tus ediciones en el próximo inicio. No puedes establecerlo a través de [configuración administrada por servidor](https://code.claude.com/docs/es/server-managed-settings.md); despliega `tips` en línea allí, o despliega la ruta en un `managed-settings.json` en disco.2991* `tipsFile`: una ruta absoluta o con `~/` a un archivo JSON local que contiene un array con las mismas entradas, o un objeto con un array `tips`, de hasta 256 KB. Claude Code lee el archivo una vez por proceso, por lo que carga tus ediciones en el siguiente inicio. No puedes establecerlo mediante la [configuración administrada por servidor](https://code.claude.com/docs/es/server-managed-settings.md); implementa ahí `tips` en línea, o implementa la ruta en un `managed-settings.json` en disco.

2991* `label`: el prefijo que Claude Code muestra antes de consejos desde la configuración del usuario, `--settings`, y la configuración administrada, hasta 40 caracteres. El valor predeterminado es `Tip`, el mismo prefijo que los consejos integrados, y los consejos de la configuración de proyecto y local siempre lo usan.2992* `label`: el prefijo que Claude Code muestra antes de los consejos de la configuración de usuario, `--settings` y la configuración administrada, de hasta 40 caracteres. El valor predeterminado es `Tip`, el mismo prefijo que el de los consejos integrados, y los consejos de la configuración de proyecto y local siempre lo usan.

2992* `excludeDefault`: establécelo a `true` para ocultar los consejos integrados y mostrar solo los tuyos. Cuando Claude Code no puede cargar ninguno de tus consejos, por ejemplo porque `tipsFile` no existe o cada entrada es inválida, mantiene la rotación integrada en lugar de un spinner vacío.2993* `excludeDefault`: establécelo en `true` para ocultar los consejos integrados y mostrar solo los tuyos. Cuando Claude Code no puede cargar ninguno de tus consejos, por ejemplo porque `tipsFile` no existe o todas las entradas son no válidas, mantiene la rotación integrada en lugar de dejar el spinner vacío.

2993 2994 

2994Cuando más de un archivo de configuración establece la clave, Claude Code muestra consejos de todos ellos y toma `tipsFile`, `label`, y `excludeDefault` de cualquiera de la configuración administrada, la bandera `--settings`, y la configuración del usuario que sea el más alto precedente que establezca cada uno.2995Cuando más de un archivo de configuración establece la clave, Claude Code muestra los consejos de todos ellos y toma `tipsFile`, `label` y `excludeDefault` de la que tenga mayor precedencia entre la configuración administrada, el flag `--settings` y la configuración de usuario que establezca cada uno.

2995 2996 

2996Este ejemplo, en tu configuración del usuario, agrega un consejo de string plano y un consejo de objeto a la rotación bajo el prefijo `Acme tip`:2997Este ejemplo, en tu configuración de usuario, añade a la rotación un consejo de string simple y un consejo de objeto bajo el prefijo `Acme tip`:

2997 2998 

2998```json settings.json theme={null}2999```json settings.json theme={null}

2999{3000{


3012}3013}

3013```3014```

3014 3015 

3015Cada campo en el ejemplo cambia una cosa sobre cómo Claude Code muestra los consejos:3016Cada campo del ejemplo cambia un aspecto de cómo Claude Code muestra los consejos:

3016 3017 

3017* `label`: Claude Code muestra ambos consejos como `Acme tip: ...` en lugar de `Tip: ...`.3018* `label`: Claude Code muestra ambos consejos como `Acme tip: ...` en lugar de `Tip: ...`.

3018* El string plano: Claude Code le da los valores predeterminados, por lo que puede aparecer nuevamente en la sesión siguiente.3019* El string simple: Claude Code le asigna los valores predeterminados, por lo que puede volver a aparecer en la siguiente sesión.

3019* `id`: Claude Code clave el historial de visualización del segundo consejo en `gateway-errors`, por lo que su enfriamiento aún se aplica después de agregar o reordenar consejos.3020* `id`: Claude Code asocia el historial de visualización del segundo consejo a `gateway-errors`, por lo que su periodo de espera sigue aplicándose después de que añadas o reordenes consejos.

3020* `cooldownSessions`: después de que Claude Code muestre el consejo `gateway-errors`, no muestra ese consejo nuevamente hasta cinco sesiones después.3021* `cooldownSessions`: después de que Claude Code muestre el consejo `gateway-errors`, no vuelve a mostrarlo hasta cinco sesiones después.

3021* `priority`: cuando el consejo `gateway-errors` y otro consejo han estado sin mostrarse durante el mismo número de sesiones, por ejemplo cuando ninguno ha sido mostrado aún, Claude Code muestra `gateway-errors` primero. El string plano tiene la prioridad predeterminada, `0`.3022* `priority`: cuando el consejo `gateway-errors` y otro consejo llevan el mismo número de sesiones sin mostrarse, por ejemplo cuando ninguno se ha mostrado todavía, Claude Code muestra primero `gateway-errors`. El string simple tiene la prioridad predeterminada, `0`.

3022 3023 

3023Mientras Claude trabaja, Claude Code muestra tus consejos en el spinner con tu prefijo, como `Acme tip: Run /review before opening a PR`.3024Mientras Claude trabaja, Claude Code muestra tus consejos en el spinner con tu prefijo, como `Acme tip: Run /review before opening a PR`.

3024 3025 

3025### `spinnerVerbs`3026### `spinnerVerbs`

3026 3027 

3027Mientras un turno está en progreso, el spinner muestra un verbo rotativo como "Accomplishing", "Architecting", o "Baking". Usa esta clave para agregar tus propios verbos a esa rotación o reemplazar la lista integrada con la tuya.3028Mientras un turno está en curso, el spinner muestra un verbo rotativo como "Accomplishing", "Architecting" o "Baking". Usa esta clave para añadir tus propios verbos a esa rotación o reemplazar la lista integrada por la tuya.

3028 3029 

3029* **Scope**: [`Any file`](#scopes)3030* **Alcance**: [`Any file`](#scopes)

3030* **Type**: objeto con un array `verbs` de strings y `mode`, uno de:3031* **Tipo**: objeto con un array `verbs` de strings y `mode`, uno de:

3031 * `"append"`: Claude Code agrega tus verbos al conjunto integrado3032 * `"append"`: Claude Code añade tus verbos al conjunto integrado

3032 * `"replace"`: Claude Code muestra solo tus verbos3033 * `"replace"`: Claude Code muestra solo tus verbos

3033* **Default**: unset, por lo que Claude Code usa los verbos integrados3034* **Predeterminado**: sin establecer, por lo que Claude Code usa los verbos integrados

3034 3035 

3035Este ejemplo agrega dos verbos al conjunto integrado:3036Este ejemplo añade dos verbos al conjunto integrado:

3036 3037 

3037```json settings.json theme={null}3038```json settings.json theme={null}

3038{3039{


3043}3044}

3044```3045```

3045 3046 

3046En modo `"replace"` con un array `verbs` vacío, Claude Code mantiene los verbos integrados.3047En el modo `"replace"` con un array `verbs` vacío, Claude Code mantiene los verbos integrados.

3047 3048 

3048### `statusLine`3049### `statusLine`

3049 3050 

3050Ejecuta tu propio comando para renderizar una [línea de estado](https://code.claude.com/docs/es/statusline.md) debajo del aviso con contexto como el modelo, costo o rama de git. Los campos opcionales ajustan espaciado, agregan re-ejecuciones periódicas y ocultan el indicador de modo vim integrado cuando tu script renderiza `vim.mode` a sí mismo.3051Ejecuta tu propio comando para renderizar una [línea de estado](https://code.claude.com/docs/es/statusline.md) debajo del prompt con contexto como el modelo, el costo o la rama de git. Los campos opcionales ajustan el espaciado, añaden reejecuciones periódicas y ocultan el indicador integrado del modo vim cuando tu script renderiza `vim.mode` por sí mismo.

3051 3052 

3052* **Scope**: [`Any file`](#scopes). Cuando [`allowManagedHooksOnly`](#allowmanagedhooksonly) está activado, o [`disableAllHooks`](#disableallhooks) se establece fuera de la configuración administrada, solo se ejecuta el valor de configuración administrada.3053* **Alcance**: [`Any file`](#scopes). Cuando [`allowManagedHooksOnly`](#allowmanagedhooksonly) está activado, o [`disableAllHooks`](#disableallhooks) está establecido fuera de la configuración administrada, solo se ejecuta el valor de la configuración administrada.

3053* **Type**: objeto con `type` establecido a `"command"` y una string `command`, más `padding` opcional como número de caracteres, `refreshInterval` como número de segundos, mínimo `1`, e `hideVimModeIndicator` como Boolean3054* **Tipo**: objeto con `type` establecido en `"command"` y un string `command`, además de `padding` opcional como número de caracteres, `refreshInterval` como número de segundos, mínimo `1`, y `hideVimModeIndicator` como Boolean

3054* **Default**: unset, por lo que no hay línea de estado3055* **Predeterminado**: sin establecer, por lo que no hay línea de estado

3055 3056 

3056Este ejemplo imprime el nombre del modelo y el uso de contexto, y agrega dos caracteres de espaciado horizontal:3057Este ejemplo imprime el nombre del modelo y el uso del contexto, y añade dos caracteres de espaciado horizontal:

3057 3058 

3058```json settings.json theme={null}3059```json settings.json theme={null}

3059{3060{


3065}3066}

3066```3067```

3067 3068 

3068El ejemplo necesita [`jq`](https://jqlang.org/) instalado y se ejecuta en un shell. Para equivalentes de PowerShell y Git Bash, consulta [Configuración de Windows](https://code.claude.com/docs/es/statusline.md#windows-configuration); para la configuración completa, consulta [Configura manualmente una línea de estado](https://code.claude.com/docs/es/statusline.md#manually-configure-a-status-line).3069El ejemplo necesita tener [`jq`](https://jqlang.org/) instalado y se ejecuta en un shell. Para equivalentes en PowerShell y Git Bash, consulta [Configuración en Windows](https://code.claude.com/docs/es/statusline.md#windows-configuration); para la configuración completa, consulta [Configurar manualmente una línea de estado](https://code.claude.com/docs/es/statusline.md#manually-configure-a-status-line).

3069 3070 

3070### `subagentStatusLine`3071### `subagentStatusLine`

3071 3072 

3072Cuando Claude ejecuta [subagentes](https://code.claude.com/docs/es/sub-agents.md), Claude Code los enumera en una pantalla de tarea debajo del aviso, una fila por subagente mostrando `name · description · token count`. Esta clave te permite ejecutar tu propio comando para reescribir esas filas, por ejemplo para mostrar el uso de contexto de cada subagente como porcentaje. En cada actualización, Claude Code envía las filas visibles como un objeto JSON en stdin, con un array `tasks` llevando `id`, `name`, `status`, `model`, `tokenCount` de cada subagente, y más, y reemplaza la fila para cada `id` que escribas de vuelta como una línea `{"id", "content"}`. Las filas que no escribas de vuelta mantienen el renderizado predeterminado.3073Cuando Claude ejecuta [subagentes](https://code.claude.com/docs/es/sub-agents.md), Claude Code los lista en una vista de tareas debajo del prompt, una fila por subagente que muestra `name · description · token count`. Esta clave te permite ejecutar tu propio comando para reescribir esas filas, por ejemplo para mostrar el uso de contexto de cada subagente como porcentaje. En cada actualización, Claude Code envía las filas visibles como un único objeto JSON por stdin, con un array `tasks` que contiene el `id`, `name`, `status`, `model`, `tokenCount` y más datos de cada subagente, y reemplaza la fila de cada `id` que devuelvas como una línea `{"id", "content"}`. Las filas que no devuelvas mantienen el renderizado predeterminado.

3073 3074 

3074* **Scope**: [`Any file`](#scopes). Cuando [`allowManagedHooksOnly`](#allowmanagedhooksonly) está activado, o [`disableAllHooks`](#disableallhooks) se establece fuera de la configuración administrada, solo se ejecuta el valor de configuración administrada.3075* **Alcance**: [`Any file`](#scopes). Cuando [`allowManagedHooksOnly`](#allowmanagedhooksonly) está activado, o [`disableAllHooks`](#disableallhooks) está establecido fuera de la configuración administrada, solo se ejecuta el valor de la configuración administrada.

3075* **Type**: objeto con `type` establecido a `"command"` y una string `command`3076* **Tipo**: objeto con `type` establecido en `"command"` y un string `command`

3076* **Default**: unset, por lo que Claude Code renderiza las filas predeterminadas3077* **Predeterminado**: sin establecer, por lo que Claude Code renderiza las filas predeterminadas

3077 3078 

3078```json settings.json theme={null}3079```json settings.json theme={null}

3079{3080{


3084}3085}

3085```3086```

3086 3087 

3087Consulta [Líneas de estado de subagente](https://code.claude.com/docs/es/statusline.md#subagent-status-lines).3088Consulta [Líneas de estado de subagentes](https://code.claude.com/docs/es/statusline.md#subagent-status-lines).

3088 3089 

3089### `syntaxHighlightingDisabled`3090### `syntaxHighlightingDisabled`

3090 3091 

3091Claude Code colorea código por lenguaje en los diffs, bloques de código y vistas previas de archivo que muestra en la terminal, con su resaltador integrado; no hay plugin o servidor de lenguaje involucrado. Establece esta clave a `true` para mostrarlos como texto plano en su lugar, por ejemplo si los colores chocan con tu tema de terminal o ralentizan un lector de pantalla.3092Claude Code colorea el código según el lenguaje en los diffs, bloques de código y vistas previas de archivos que muestra en la terminal, con su resaltador integrado; no interviene ningún plugin ni servidor de lenguaje. Establece esta clave en `true` para mostrarlos como texto plano, por ejemplo si los colores chocan con el tema de tu terminal o ralentizan un lector de pantalla.

3092 3093 

3093* **Scope**: [`Any file`](#scopes)3094* **Alcance**: [`Any file`](#scopes)

3094* **Type**: Boolean3095* **Tipo**: Boolean

3095 * `true`: Claude Code desactiva el resaltado de sintaxis en diffs, bloques de código y vistas previas de archivo3096 * `true`: Claude Code desactiva el resaltado de sintaxis en diffs, bloques de código y vistas previas de archivos

3096 * `false`: Claude Code resalta la sintaxis3097 * `false`: Claude Code resalta la sintaxis

3097* **Default**: `false`3098* **Predeterminado**: `false`

3098 3099 

3099```json settings.json theme={null}3100```json settings.json theme={null}

3100{3101{


3104 3105 

3105### `terminalProgressBarEnabled`3106### `terminalProgressBarEnabled`

3106 3107 

3107Algunos terminales pueden mostrar un indicador de progreso en la pestaña o en la barra de tareas del programa que se ejecuta en ellos. Mientras Claude está trabajando, Claude Code reporta un estado en progreso al terminal, para que puedas ver desde otra pestaña o ventana si la sesión aún está ocupada. El indicador permanece visible después de que el turno termina mientras [subagentes en segundo plano](https://code.claude.com/docs/es/sub-agents.md#run-subagents-in-foreground-or-background) o [flujos de trabajo dinámicos](https://code.claude.com/docs/es/workflows.md) aún se están ejecutando, y se borra una vez que la sesión está inactiva.3108Algunas terminales pueden mostrar un indicador de progreso en la pestaña o en la barra de tareas para el programa que se ejecuta en ellas. Mientras Claude trabaja, Claude Code informa a la terminal de un estado en curso, para que puedas ver desde otra pestaña o ventana si la sesión sigue ocupada. El indicador permanece visible después de que termina el turno mientras sigan ejecutándose [subagentes en segundo plano](https://code.claude.com/docs/es/sub-agents.md#run-subagents-in-foreground-or-background) o [flujos de trabajo dinámicos](https://code.claude.com/docs/es/workflows.md), y desaparece cuando la sesión queda inactiva.

3108 3109 

3109Claude Code lo reporta solo en terminales que soportan el indicador: ConEmu, Ghostty 1.2.0 o posterior, e iTerm2 3.6.6 o posterior. Establece esta clave a `false` para detener a Claude Code de reportarlo. Aparece en `/config` como **Terminal progress bar**.3110Claude Code lo informa solo en terminales que admiten el indicador: ConEmu, Ghostty 1.2.0 o posterior, e iTerm2 3.6.6 o posterior. Establece esta clave en `false` para que Claude Code deje de informarlo. Aparece en `/config` como **Terminal progress bar**.

3110 3111 

3111* **Scope**: [`Any file`](#scopes). Un valor en `~/.claude.json` de una versión anterior se aplica cuando ningún archivo de configuración lo establece.3112* **Alcance**: [`Any file`](#scopes). Un valor en `~/.claude.json` de una versión anterior se aplica cuando ningún archivo de configuración lo establece.

3112* **Type**: Boolean3113* **Tipo**: Boolean

3113 * `true`: ves la barra de progreso del terminal en terminales que la soportan3114 * `true`: ves la barra de progreso de la terminal en las terminales que la admiten

3114 * `false`: Claude Code oculta la barra de progreso del terminal3115 * `false`: Claude Code oculta la barra de progreso de la terminal

3115* **Default**: `true`3116* **Predeterminado**: `true`

3116 3117 

3117```json settings.json theme={null}3118```json settings.json theme={null}

3118{3119{


3122 3123 

3123### `terminalTitleFromRename`3124### `terminalTitleFromRename`

3124 3125 

3125Claude Code establece el título de la pestaña de tu terminal. De forma predeterminada usa un título que genera a partir de la conversación, y una vez que le das a la sesión un [nombre](https://code.claude.com/docs/es/sessions.md#name-your-sessions) con `/rename` o `--name`, la pestaña muestra ese nombre en su lugar. Establece esta clave a `false` para mantener el título generado en la pestaña incluso después de nombrar la sesión. El nombre en sí aún se aplica, por lo que `/resume <name>` y el selector de sesión lo encuentran.3126Claude Code establece el título de la pestaña de tu terminal. De forma predeterminada usa un título que genera a partir de la conversación, y una vez que le das a la sesión un [nombre](https://code.claude.com/docs/es/sessions.md#name-your-sessions) con `/rename` o `--name`, la pestaña muestra ese nombre en su lugar. Establece esta clave en `false` para mantener el título generado en la pestaña incluso después de nombrar la sesión. El nombre en sí sigue aplicándose, por lo que `/resume <name>` y el selector de sesiones la encuentran.

3126 3127 

3127* **Scope**: [`Any file`](#scopes)3128* **Alcance**: [`Any file`](#scopes)

3128* **Type**: Boolean3129* **Tipo**: Boolean

3129 * `true`: el título de la pestaña del terminal muestra el nombre de sesión que estableciste3130 * `true`: el título de la pestaña de la terminal muestra el nombre de sesión que estableciste

3130 * `false`: la pestaña mantiene el título que Claude Code genera a partir de tu conversación3131 * `false`: la pestaña mantiene el título que Claude Code genera a partir de tu conversación

3131* **Default**: `true`3132* **Predeterminado**: `true`

3132 3133 

3133```json settings.json theme={null}3134```json settings.json theme={null}

3134{3135{


3136}3137}

3137```3138```

3138 3139 

3139Para detener a Claude Code de actualizar el título del terminal en absoluto, establece [`CLAUDE_CODE_DISABLE_TERMINAL_TITLE`](https://code.claude.com/docs/es/env-vars) a `1` en su lugar.3140Para que Claude Code deje de actualizar por completo el título de la terminal, establece [`CLAUDE_CODE_DISABLE_TERMINAL_TITLE`](https://code.claude.com/docs/es/env-vars) en `1`.

3140 3141 

3141### `theme`3142### `theme`

3142 3143 

3143Elige el tema de color para la interfaz. Aparece en `/config` como **Theme**.3144Elige el tema de color de la interfaz. Aparece en `/config` como **Theme**.

3144 3145 

3145* **Scope**: [`Any file`](#scopes). Un valor en `~/.claude.json` de una versión anterior se aplica cuando ningún archivo de configuración lo establece.3146* **Alcance**: [`Any file`](#scopes). Un valor en `~/.claude.json` de una versión anterior se aplica cuando ningún archivo de configuración lo establece.

3146* **Type**: string, uno de:3147* **Tipo**: string, uno de:

3147 * `"auto"`: coincide con el fondo claro u oscuro de tu terminal3148 * `"auto"`: se adapta al fondo claro u oscuro de tu terminal

3148 * `"dark"`: el tema oscuro3149 * `"dark"`: el tema oscuro

3149 * `"light"`: el tema claro3150 * `"light"`: el tema claro

3150 * `"dark-daltonized"`: el tema oscuro con colores amigables para daltónicos3151 * `"dark-daltonized"`: el tema oscuro con colores aptos para daltónicos

3151 * `"light-daltonized"`: el tema claro con colores amigables para daltónicos3152 * `"light-daltonized"`: el tema claro con colores aptos para daltónicos

3152 * `"dark-ansi"`: el tema oscuro usando solo la paleta de color ANSI de tu terminal3153 * `"dark-ansi"`: el tema oscuro que usa solo la paleta de colores ANSI de tu terminal

3153 * `"light-ansi"`: el tema claro usando solo la paleta de color ANSI de tu terminal3154 * `"light-ansi"`: el tema claro que usa solo la paleta de colores ANSI de tu terminal

3154 * `"custom:<slug>"` o `"custom:<plugin-name>:<slug>"`: un tema personalizado de `~/.claude/themes/` o un plugin3155 * `"custom:<slug>"` o `"custom:<plugin-name>:<slug>"`: un tema personalizado de `~/.claude/themes/` o de un plugin

3155* **Default**: `"dark"`3156* **Predeterminado**: `"dark"`

3156 3157 

3157```json settings.json theme={null}3158```json settings.json theme={null}

3158{3159{


3160}3161}

3161```3162```

3162 3163 

3163Consulta [Crea un tema personalizado](https://code.claude.com/docs/es/terminal-config.md#create-a-custom-theme).3164Consulta [Crear un tema personalizado](https://code.claude.com/docs/es/terminal-config.md#create-a-custom-theme).

3164 3165 

3165### `timeFormat`3166### `timeFormat`

3166 3167 

3167Elige cómo Claude Code escribe los tiempos que muestra en la interfaz, como el `done 6:05 PM` al final de cada mensaje de duración de turno y las marcas de tiempo en el [visor de transcripción](https://code.claude.com/docs/es/interactive-mode.md#transcript-viewer). Para elegir un preajuste, ejecuta `/config` y establece **Time format**. Requiere Claude Code v2.1.257 o posterior.3168Elige cómo escribe Claude Code las horas que muestra en la interfaz, como el `done 6:05 PM` al final de cada mensaje de duración del turno y las marcas de tiempo del [visor de transcripciones](https://code.claude.com/docs/es/interactive-mode.md#transcript-viewer). Para elegir un valor predefinido, ejecuta `/config` y establece **Time format**. Requiere Claude Code v2.1.257 o posterior.

3168 3169 

3169* **Scope**: [`Any file`](#scopes)3170* **Alcance**: [`Any file`](#scopes)

3170* **Type**: string, uno de:3171* **Tipo**: string, uno de:

3171 * `"auto"`: lo mismo que unset; cada tiempo mantiene su formato integrado, que sigue tu configuración regional en el mensaje de duración de turno3172 * `"auto"`: igual que sin establecer; cada hora mantiene su formato integrado, que sigue tu configuración regional en el mensaje de duración del turno

3172 * `"12-hour"`: un reloj de 12 horas3173 * `"12-hour"`: un reloj de 12 horas

3173 * `"24-hour"`: un reloj de 24 horas3174 * `"24-hour"`: un reloj de 24 horas

3174 * `"24-hour-utc"`: un reloj de 24 horas en UTC con `Z` después de los minutos, como `18:05Z`; Claude Code ignora [`timeZone`](#timezone) para este preajuste3175 * `"24-hour-utc"`: un reloj de 24 horas en UTC con `Z` después de los minutos, como `18:05Z`; Claude Code ignora [`timeZone`](#timezone) con este valor predefinido

3175 * Un patrón strftime como `"%H:%M"`: Claude Code escribe cada tiempo con el patrón. Cualquier valor que contenga un `%` es un patrón, y cualquier otro valor fuera de los preajustes cuenta como `"auto"`3176 * Un patrón strftime como `"%H:%M"`: Claude Code escribe cada hora con el patrón. Cualquier valor que contenga un `%` es un patrón, y cualquier otro valor fuera de los predefinidos cuenta como `"auto"`

3176* **Default**: `"auto"`3177* **Predeterminado**: `"auto"`

3177 3178 

3178```json settings.json theme={null}3179```json settings.json theme={null}

3179{3180{


3181}3182}

3182```3183```

3183 3184 

3184`/config` ofrece solo los preajustes, por lo que para usar un patrón strftime, agrega la clave a un archivo de configuración. Este ejemplo muestra cada tiempo como un reloj de 24 horas de dos dígitos:3185`/config` solo ofrece los valores predefinidos, así que para usar un patrón strftime, añade la clave a un archivo de configuración. Este ejemplo muestra cada hora como un reloj de 24 horas con dos dígitos:

3185 3186 

3186```json settings.json theme={null}3187```json settings.json theme={null}

3187{3188{


3189}3190}

3190```3191```

3191 3192 

3192El mensaje de duración de turno y el visor de transcripción entonces muestran tiempos como `18:05`. En el visor de transcripción, el patrón es la marca de tiempo completa, así que agrega directivas de fecha cuando quieras la fecha allí. Este ejemplo pone la fecha frente al reloj:3193El mensaje de duración del turno y el visor de transcripciones muestran entonces horas como `18:05`. En el visor de transcripciones, el patrón es la marca de tiempo completa, así que añade directivas de fecha cuando quieras que aparezca la fecha. Este ejemplo pone la fecha delante de la hora:

3193 3194 

3194```json settings.json theme={null}3195```json settings.json theme={null}

3195{3196{


3197}3198}

3198```3199```

3199 3200 

3200Las mismas superficies entonces muestran tiempos como `2026-09-01 18:05`.3201Las mismas superficies muestran entonces horas como `2026-09-01 18:05`.

3201 3202 

3202### `timeZone`3203### `timeZone`

3203 3204 

3204Muestra los tiempos en la interfaz en una zona horaria diferente a la de tu sistema. Establécelo a un [nombre de zona horaria IANA](https://www.iana.org/time-zones), como `"UTC"` o `"Europe/Dublin"`. Los tiempos que [`timeFormat`](#timeformat) controla entonces se muestran en esta zona. Si `timeFormat` es `"24-hour-utc"`, los tiempos permanecen en UTC y Claude Code ignora esta clave. `/config` no tiene fila para esta clave, así que establécela en un archivo de configuración. Requiere Claude Code v2.1.257 o posterior.3205Muestra las horas de la interfaz en una zona horaria distinta de la de tu sistema. Establécelo en un [nombre de zona horaria IANA](https://www.iana.org/time-zones), como `"UTC"` o `"Europe/Dublin"`. Las horas que controla [`timeFormat`](#timeformat) se muestran entonces en esta zona. Si `timeFormat` es `"24-hour-utc"`, las horas se mantienen en UTC y Claude Code ignora esta clave. `/config` no tiene ninguna fila para esta clave, así que establécela en un archivo de configuración. Requiere Claude Code v2.1.257 o posterior.

3205 3206 

3206* **Scope**: [`Any file`](#scopes)3207* **Alcance**: [`Any file`](#scopes)

3207* **Type**: string, un nombre de zona horaria IANA. Cuando Claude Code no reconoce el nombre, usa tu zona horaria del sistema3208* **Tipo**: string, un nombre de zona horaria IANA. Cuando Claude Code no reconoce el nombre, usa la zona horaria de tu sistema

3208* **Default**: unset, por lo que los tiempos se muestran en tu zona horaria del sistema3209* **Predeterminado**: sin establecer, por lo que las horas se muestran en la zona horaria de tu sistema

3209 3210 

3210```json settings.json theme={null}3211```json settings.json theme={null}

3211{3212{


3215 3216 

3216### `tui`3217### `tui`

3217 3218 

3218Elige el renderizador de interfaz de usuario de terminal. Usa `"fullscreen"` para el renderizador [alt-screen](https://code.claude.com/docs/es/fullscreen.md) sin parpadeos con scrollback virtualizado, o `"default"` para el renderizador clásico de pantalla principal. Ejecutar `/tui fullscreen` o `/tui default` escribe esta clave para ti.3219Elige el renderizador de la UI de la terminal. Usa `"fullscreen"` para el [renderizador de pantalla alternativa](https://code.claude.com/docs/es/fullscreen.md) sin parpadeo con historial de desplazamiento virtualizado, o `"default"` para el renderizador clásico de pantalla principal. Ejecutar `/tui fullscreen` o `/tui default` escribe esta clave por ti.

3219 3220 

3220* **Scope**: [`Any file`](#scopes)3221* **Alcance**: [`Any file`](#scopes)

3221* **Type**: string, uno de:3222* **Tipo**: string, uno de:

3222 * `"default"`: el renderizador clásico de pantalla principal3223 * `"default"`: el renderizador clásico de pantalla principal

3223 * `"fullscreen"`: el renderizador alt-screen sin parpadeos con scrollback virtualizado3224 * `"fullscreen"`: el renderizador de pantalla alternativa sin parpadeo con historial de desplazamiento virtualizado

3224* **Default**: unset, por lo que Claude Code [elige el renderizador para ti](https://code.claude.com/docs/es/fullscreen.md#fullscreen-by-default)3225* **Predeterminado**: sin establecer, por lo que Claude Code [elige el renderizador por ti](https://code.claude.com/docs/es/fullscreen.md#fullscreen-by-default)

3225* **Per-session overrides**: [`CLAUDE_CODE_NO_FLICKER`](https://code.claude.com/docs/es/env-vars) y [`CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN`](https://code.claude.com/docs/es/env-vars) tienen precedencia sobre esta clave para una sesión: `CLAUDE_CODE_NO_FLICKER=1` activa pantalla completa, y `CLAUDE_CODE_NO_FLICKER=0` o `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1` la desactiva; cuando ambos se establecen, Claude Code la desactiva3226* **Sobrescrituras por sesión**: [`CLAUDE_CODE_NO_FLICKER`](https://code.claude.com/docs/es/env-vars) y [`CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN`](https://code.claude.com/docs/es/env-vars) tienen precedencia sobre esta clave durante una sesión: `CLAUDE_CODE_NO_FLICKER=1` activa la pantalla completa, y `CLAUDE_CODE_NO_FLICKER=0` o `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1` la desactiva; cuando ambas están establecidas, Claude Code la desactiva

3226 3227 

3227```json settings.json theme={null}3228```json settings.json theme={null}

3228{3229{


3230}3231}

3231```3232```

3232 3233 

3233Bajo tmux `-CC` o sobre SSH a Windows, Claude Code mantiene el renderizador clásico a menos que establezas `CLAUDE_CODE_NO_FLICKER=1`. Las sesiones en segundo plano abiertas desde [vista de agente](https://code.claude.com/docs/es/agent-view.md) siempre usan el renderizador de pantalla completa independientemente de esta configuración.3234Bajo tmux `-CC` o por SSH a Windows, Claude Code mantiene el renderizador clásico a menos que establezcas `CLAUDE_CODE_NO_FLICKER=1`. Las sesiones en segundo plano abiertas desde la [vista de agentes](https://code.claude.com/docs/es/agent-view.md) siempre usan el renderizador de pantalla completa, independientemente de este ajuste.

3234 3235 

3235### `verbose`3236### `verbose`

3236 3237 

3237De forma predeterminada, la transcripción colapsa cada llamada de herramienta a un resumen corto, como el comando que Claude ejecutó y un recuento de líneas de su salida, y presionas `Ctrl+O` para cambiar toda la transcripción a la vista expandida cuando quieres los detalles. Establece esta clave a `true` para mostrar la entrada y salida completa de cada llamada de herramienta en línea mientras sucede, lo cual es útil cuando estás depurando un hook, un servidor MCP o un comando de shell largo. Aparece en `/config` como **Verbose output**.3238De forma predeterminada, la transcripción contrae cada llamada a herramienta en un resumen breve, como el comando que ejecutó Claude y el número de líneas de su salida, y presionas `Ctrl+O` para cambiar toda la transcripción a la vista expandida cuando quieras ver los detalles. Establece esta clave en `true` para mostrar en línea la entrada y salida completas de cada llamada a herramienta a medida que ocurren, lo cual es útil cuando depuras un hook, un servidor MCP o un comando de shell largo. Aparece en `/config` como **Verbose output**.

3238 3239 

3239* **Scope**: [`Any file`](#scopes). Un valor en `~/.claude.json` de una versión anterior se aplica cuando ningún archivo de configuración lo establece.3240* **Alcance**: [`Any file`](#scopes). Un valor en `~/.claude.json` de una versión anterior se aplica cuando ningún archivo de configuración lo establece.

3240* **Type**: Boolean3241* **Tipo**: Boolean

3241 * `true`: ves salida de herramienta completa3242 * `true`: ves la salida completa de las herramientas

3242 * `false`: ves resúmenes truncados de salida de herramienta3243 * `false`: ves resúmenes truncados de la salida de las herramientas

3243* **Default**: `false`3244* **Predeterminado**: `false`

3244* **Per-session overrides**: [`--verbose`](https://code.claude.com/docs/es/cli-reference#cli-flags) tiene precedencia sobre esta clave para una sesión3245* **Sobrescrituras por sesión**: [`--verbose`](https://code.claude.com/docs/es/cli-reference#cli-flags) tiene precedencia sobre esta clave durante una sesión

3245 3246 

3246```json settings.json theme={null}3247```json settings.json theme={null}

3247{3248{


3249}3250}

3250```3251```

3251 3252 

3252Un valor [`viewMode`](#viewmode) o una selección pegajosa `/focus` anula esta clave cada sesión.3253Un valor de [`viewMode`](#viewmode) o una selección persistente de `/focus` sobrescribe esta clave en todas las sesiones.

3253 3254 

3254### `viewMode`3255### `viewMode`

3255 3256 

3256Establece la vista de transcripción en la que Claude Code comienza: `"default"`, `"verbose"`, o `"focus"`. Cuando se establece, anula tanto la selección pegajosa `/focus` como la configuración [`verbose`](#verbose).3257Establece la vista de transcripción con la que inicia Claude Code: `"default"`, `"verbose"` o `"focus"`. Cuando está establecida, sobrescribe tanto la selección persistente de `/focus` como el ajuste [`verbose`](#verbose).

3257 3258 

3258* **Scope**: [`Any file`](#scopes)3259* **Alcance**: [`Any file`](#scopes)

3259* **Type**: string, uno de:3260* **Tipo**: string, uno de:

3260 * `"default"`: la transcripción normal con salida de herramienta truncada3261 * `"default"`: la transcripción normal con la salida de las herramientas truncada

3261 * `"verbose"`: la transcripción con salida de herramienta completa3262 * `"verbose"`: la transcripción con la salida completa de las herramientas

3262 * `"focus"`: solo tu último aviso, un resumen de una línea de llamadas de herramientas con estadísticas de diff de edición, y la respuesta final. La vista de enfoque necesita el [renderizador de pantalla completa](#tui)3263 * `"focus"`: solo tu último prompt, un resumen de una línea de las llamadas a herramientas con estadísticas de diff de las ediciones, y la respuesta final. La vista de enfoque necesita el [renderizador de pantalla completa](#tui)

3263* **Default**: unset, por lo que la configuración `verbose` y tu última opción `/focus` se aplican3264* **Predeterminado**: sin establecer, por lo que se aplican el ajuste `verbose` y tu última elección de `/focus`

3264* **Per-session overrides**: [`--verbose`](https://code.claude.com/docs/es/cli-reference#cli-flags) tiene precedencia sobre esta clave para una sesión3265* **Sobrescrituras por sesión**: [`--verbose`](https://code.claude.com/docs/es/cli-reference#cli-flags) tiene precedencia sobre esta clave durante una sesión

3265 3266 

3266```json settings.json theme={null}3267```json settings.json theme={null}

3267{3268{


3271 3272 

3272### `vimInsertModeRemaps`3273### `vimInsertModeRemaps`

3273 3274 

3274Mapea secuencias de modo INSERT de dos teclas a Escape en [modo editor vim](https://code.claude.com/docs/es/interactive-mode.md#vim-editor-mode). Cada clave es exactamente dos caracteres imprimibles escritos en secuencia, y `"<Esc>"` es el único objetivo soportado; Claude Code ignora otras entradas.3275Asigna secuencias de dos teclas del modo INSERT a Escape en el [modo de editor vim](https://code.claude.com/docs/es/interactive-mode.md#vim-editor-mode). Cada clave son exactamente dos caracteres imprimibles escritos en secuencia, y `"<Esc>"` es el único destino admitido; Claude Code ignora las demás entradas.

3275 3276 

3276* **Scope**: [`User or managed`](#scopes). Un repositorio no puede remapear tus pulsaciones de tecla.3277* **Alcance**: [`User or managed`](#scopes). Un repositorio no puede reasignar tus pulsaciones de teclas.

3277* **Type**: objeto mapeando una secuencia de dos caracteres a `"<Esc>"`3278* **Tipo**: objeto que asigna una secuencia de dos caracteres a `"<Esc>"`

3278* **Default**: unset3279* **Predeterminado**: sin establecer

3279 3280 

3280```json settings.json theme={null}3281```json settings.json theme={null}

3281{3282{


3285}3286}

3286```3287```

3287 3288 

3288No tiene efecto a menos que `editorMode` sea `"vim"`. Consulta [Remapea secuencias de tecla de modo INSERT](https://code.claude.com/docs/es/interactive-mode.md#remap-insert-mode-key-sequences).3289No tiene efecto a menos que `editorMode` sea `"vim"`. Consulta [Reasignar secuencias de teclas del modo INSERT](https://code.claude.com/docs/es/interactive-mode.md#remap-insert-mode-key-sequences).

3289 3290 

3290### `voice`3291### `voice`

3291 3292 

3292Activa [dictado de voz](https://code.claude.com/docs/es/voice-dictation.md) y elige cómo se comporta la tecla de dictado. Claude Code escribe este objeto para ti cuando ejecutas `/voice`.3293Activa el [dictado por voz](https://code.claude.com/docs/es/voice-dictation.md) y elige cómo se comporta la tecla de dictado. Claude Code escribe este objeto por ti cuando ejecutas `/voice`.

3293 3294 

3294* **Scope**: [`Any file`](#scopes)3295* **Alcance**: [`Any file`](#scopes)

3295* **Type**: objeto con `enabled` como Boolean, `autoSubmit` como Boolean que se aplica solo en modo de espera, y `mode`, uno de:3296* **Tipo**: objeto con `enabled` como Boolean, `autoSubmit` como Boolean que solo se aplica en el modo `hold` (mantener pulsada la tecla), y `mode`, uno de:

3296 * `"hold"`: mantienes presionada la tecla de dictado mientras hablas y la sueltas para detener3297 * `"hold"`: mantienes pulsada la tecla de dictado mientras hablas y la sueltas para detenerte

3297 * `"tap"`: tocas la tecla una vez para comenzar a grabar y nuevamente para enviar3298 * `"tap"`: pulsas la tecla una vez para empezar a grabar y otra vez para enviar

3298* **Default**: unset, por lo que el dictado está desactivado; cuando `enabled` es `true` y `mode` es unset, Claude Code usa `"hold"`3299* **Predeterminado**: sin establecer, por lo que el dictado está desactivado; cuando `enabled` es `true` y `mode` no está establecido, Claude Code usa `"hold"`

3299 3300 

3300Este ejemplo activa el dictado y hace que la tecla toque una vez para comenzar a grabar y nuevamente para enviar:3301Este ejemplo activa el dictado y hace que la tecla se pulse una vez para empezar a grabar y otra vez para enviar:

3301 3302 

3302```json settings.json theme={null}3303```json settings.json theme={null}

3303{3304{


3308}3309}

3309```3310```

3310 3311 

3311`autoSubmit` envía el aviso cuando sueltas la tecla en modo de espera. El dictado de voz requiere una cuenta de claude.ai.3312`autoSubmit` envía el prompt cuando sueltas la tecla en el modo `hold` (mantener pulsada la tecla). El dictado por voz requiere una cuenta de claude.ai.

3312 3313 

3313### `voiceEnabled`3314### `voiceEnabled`

3314 3315 

3315> [!WARNING]3316> [!WARNING]

3316>3317>

3317> Deprecado desde v2.1.92, cuando el objeto [`voice`](#voice) lo reemplazó. Claude Code aún lo lee para que los archivos de configuración más antiguos sigan funcionando, pero las nuevas configuraciones deben establecer `voice.enabled`.3318> Obsoleto desde v2.1.92, cuando el objeto [`voice`](#voice) lo reemplazó. Claude Code aún lo lee para que los archivos de configuración antiguos sigan funcionando, pero las configuraciones nuevas deberían establecer `voice.enabled`.

3318 3319 

3319Activa el dictado de voz con la forma Boolean única que precede al objeto `voice`. Cuando ambos se establecen, `voice.enabled` se aplica.3320Activa el dictado por voz con la forma de un único Boolean anterior al objeto `voice`. Cuando ambos están establecidos, se aplica `voice.enabled`.

3320 3321 

3321* **Scope**: [`Any file`](#scopes)3322* **Alcance**: [`Any file`](#scopes)

3322* **Type**: Boolean3323* **Tipo**: Boolean

3323 * `true`: el dictado de voz está activado cuando estás conectado con una cuenta de claude.ai y la política de tu organización permite voz, a menos que `voice.enabled` se establezca3324 * `true`: el dictado por voz está activado cuando has iniciado sesión con una cuenta de claude.ai y la política de tu organización permite la voz, a menos que `voice.enabled` esté establecido

3324 * `false`: el dictado de voz está desactivado, a menos que `voice.enabled` se establezca3325 * `false`: el dictado por voz está desactivado, a menos que `voice.enabled` esté establecido

3325* **Default**: unset3326* **Predeterminado**: sin establecer

3326 3327 

3327```json settings.json theme={null}3328```json settings.json theme={null}

3328{3329{


3332 3333 

3333### `wheelScrollAccelerationEnabled`3334### `wheelScrollAccelerationEnabled`

3334 3335 

3335Acelera la velocidad de desplazamiento de rueda del ratón durante desplazamientos rápidos en [renderizado de pantalla completa](https://code.claude.com/docs/es/fullscreen.md#mouse-wheel-scrolling). Establécelo a `false` para una velocidad de desplazamiento constante por muesca de rueda.3336Acelera la velocidad de desplazamiento de la rueda del mouse durante los desplazamientos rápidos en el [renderizado de pantalla completa](https://code.claude.com/docs/es/fullscreen.md#mouse-wheel-scrolling). Establécelo en `false` para una velocidad de desplazamiento constante por cada muesca de la rueda.

3336 3337 

3337* **Scope**: [`Any file`](#scopes)3338* **Alcance**: [`Any file`](#scopes)

3338* **Type**: Boolean3339* **Tipo**: Boolean

3339 * `true`: Claude Code acelera la velocidad de desplazamiento de rueda del ratón durante desplazamientos rápidos3340 * `true`: Claude Code acelera la velocidad de desplazamiento de la rueda del mouse durante los desplazamientos rápidos

3340 * `false`: Claude Code se desplaza a una velocidad constante por muesca de rueda3341 * `false`: Claude Code se desplaza a una velocidad constante por cada muesca de la rueda

3341* **Default**: `true`3342* **Predeterminado**: `true`

3342 3343 

3343```json settings.json theme={null}3344```json settings.json theme={null}

3344{3345{


3691 3692 

3692### `workflowSizeGuideline`3693### `workflowSizeGuideline`

3693 3694 

3694Establece el [recuento de agentes al que Claude apunta](https://code.claude.com/docs/es/workflows.md#set-a-size-guideline) en los flujos de trabajo dinámicos que escribe. Claude Code envía el valor a Claude como consejo, no como un límite impuesto: `"small"` solicita menos de 5 agentes, `"medium"` menos de 10 y `"large"` menos de 50. Elige `"small"` cuando desees limitar lo que gasta un flujo de trabajo. Requiere Claude Code v2.1.219 o posterior.3695Establece el [recuento de agentes al que Claude apunta](https://code.claude.com/docs/es/workflows.md#set-a-size-guideline) en los flujos de trabajo dinámicos que escribe. Claude Code envía el valor a Claude como consejo, no como un límite impuesto: `"small"` solicita menos de 5 agentes, `"medium"` menos de 10 y `"large"` menos de 50. Elige `"small"` cuando desees limitar lo que gasta un flujo de trabajo.

3695 3696 

3696* **Alcance**: [`Any file`](#scopes). Un valor allí tiene precedencia sobre la opción **Dynamic workflow size** en `/config`, que Claude Code almacena en `~/.claude.json`, y Claude Code oculta esa fila mientras un archivo de configuración establece la clave.3697* **Alcance**: [`Any file`](#scopes). Un valor allí tiene precedencia sobre la opción **Dynamic workflow size** en `/config`, que Claude Code almacena en `~/.claude.json`, y Claude Code oculta esa fila mientras un archivo de configuración establece la clave.

3697* **Tipo**: cadena, una de:3698* **Tipo**: cadena, una de:


3707}3708}

3708```3709```

3709 3710 

3710Requiere Claude Code v2.1.219 o posterior; en v2.1.202 a v2.1.218, establece la directriz en `/config` en su lugar.

3711 

3712## Plugins y skills3711## Plugins y skills

3713 3712 

3714Habilite plugins, registre mercados, restrinja qué fuentes de plugins permite una organización y controle qué skills se cargan. Para instalar y crear plugins, consulte [Plugins](https://code.claude.com/docs/es/plugins/overview.md).3713Habilite plugins, registre mercados, restrinja qué fuentes de plugins permite una organización y controle qué skills se cargan. Para instalar y crear plugins, consulte [Plugins](https://code.claude.com/docs/es/plugins/overview.md).

skills.md +5 −7

Details

83| Subcomando | Lo que hace | Versión mínima |83| Subcomando | Lo que hace | Versión mínima |

84| :- | :- | :- |84| :- | :- | :- |

85| `migrate` | Actualice su código existente de Claude API a un modelo más nuevo | Anterior a v2.1.221 |85| `migrate` | Actualice su código existente de Claude API a un modelo más nuevo | Anterior a v2.1.221 |

86| `upgrade` | Mueva la dependencia del SDK de Anthropic de su proyecto a través de una versión principal, actualmente el paquete `anthropic` de Python de 0.x a 1.x | v2.1.236 o posterior |86| `upgrade` | Actualiza el SDK de Anthropic de tu proyecto a una nueva versión principal y adapta tu código a sus cambios incompatibles | v2.1.236 o posterior |

87| `api-version` | Actualiza tu código de Claude API para una [versión de la API](https://platform.claude.com/docs/en/api/versioning) más nueva y luego cambia tus solicitudes a esa versión | v2.1.307 o posterior |87| `api-version` | Actualiza tu código de Claude API para una [versión de la API](https://platform.claude.com/docs/en/api/versioning) más nueva y luego cambia tus solicitudes a esa versión | v2.1.307 o posterior |

88| `managed-agents-onboard` | Recorra la creación de un nuevo Managed Agent | Anterior a v2.1.221 |88| `managed-agents-onboard` | Recorra la creación de un nuevo Managed Agent | Anterior a v2.1.221 |

89| `managed-agents-onboard <url>` | Crea el Managed Agent que describe la página en la URL, como una página de la [documentación de Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) | v2.1.290 o posterior |89| `managed-agents-onboard <url>` | Crea el Managed Agent que describe la página en la URL, como una página de la [documentación de Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) | v2.1.290 o posterior |


3713. Push to the deployment target3713. Push to the deployment target

372```372```

373 373 

374Mantén el cuerpo en sí conciso. Una vez que se carga un skill, su contenido [permanece en contexto entre turnos](#skill-content-lifecycle), por lo que cada línea es un costo de token recurrente. Indica qué hacer en lugar de narrar cómo o por qué, y aplica la misma prueba de concisión que harías para [contenido de CLAUDE.md](https://code.claude.com/docs/es/best-practices.md#write-an-effective-claude-md).374Mantén el cuerpo en sí conciso. Una vez que se carga un skill, su contenido [permanece en contexto entre turnos](#skill-content-lifecycle), por lo que cada línea es un costo de token recurrente. Indica qué hacer en lugar de narrar cómo o por qué, y aplica la misma prueba de concisión que harías para [contenido de CLAUDE.md](https://code.claude.com/docs/es/best-practices.md#keep-claude-md-short).

375 375 

376### Referencia de frontmatter376### Referencia de frontmatter

377 377 


388Your skill instructions here...388Your skill instructions here...

389```389```

390 390 

391Todos los campos son opcionales. Solo se recomienda `description` para que Claude sepa cuándo usar el skill. Un nombre de campo debe coincidir exactamente con la tabla, guiones incluidos: Claude Code ignora un campo que no reconoce sin reportar un error.391Todos los campos son opcionales. Solo se recomienda `description` para que Claude sepa cuándo usar el skill. Un nombre de campo debe coincidir exactamente con la tabla, guiones incluidos: Claude Code ignora un campo que no reconoce sin reportar un error. Los campos booleanos aceptan `yes`, `no`, `on`, `off`, `1` y `0` en cualquier combinación de mayúsculas y minúsculas, además de `true` y `false`.

392 392 

393Claude Code lee el frontmatter solo cuando la apertura `---` es la primera línea del archivo. De lo contrario, trata todo el archivo, incluidos los marcadores `---`, como contenido de skill. Si el YAML entre los marcadores no se analiza, el skill aún se carga sin campos establecidos; consulta [Skill no se activa](#skill-not-triggering) para encontrar y corregir el error.393Claude Code lee el frontmatter solo cuando la apertura `---` es la primera línea del archivo. De lo contrario, trata todo el archivo, incluidos los marcadores `---`, como contenido de skill. Si el YAML entre los marcadores no se analiza, el skill aún se carga sin campos establecidos; consulta [Skill no se activa](#skill-not-triggering) para encontrar y corregir el error.

394 394 

395Los campos booleanos aceptan `yes`, `no`, `on`, `off`, `1` y `0` en cualquier caso de letra, además de `true` y `false`. Antes de v2.1.218, Claude Code reconocía solo `true` y `false`.

396 

397| Campo | Requerido | Descripción |395| Campo | Requerido | Descripción |

398| :- | :- | :- |396| :- | :- | :- |

399| `name` | No | Nombre del comando mostrado en el menú `/`. Por defecto es el nombre del directorio. Consulta [Cómo un skill obtiene su nombre de comando](#how-a-skill-gets-its-command-name) para ver cómo el campo interactúa con el nombre que escribes para invocar el skill. |397| `name` | No | Nombre del comando mostrado en el menú `/`. Por defecto es el nombre del directorio. Consulta [Cómo un skill obtiene su nombre de comando](#how-a-skill-gets-its-command-name) para ver cómo el campo interactúa con el nombre que escribes para invocar el skill. |


409| `effort` | No | [Nivel de esfuerzo](https://code.claude.com/docs/es/model-config.md#adjust-effort-level) cuando este skill está activo. Sobrescribe el nivel de esfuerzo de la sesión. Cuando lo omites, el nivel proviene del [orden de resolución del esfuerzo](https://code.claude.com/docs/es/model-config.md#adjust-effort-level). Opciones: `low`, `medium`, `high`, `xhigh`, `max`; los niveles disponibles dependen del modelo. |407| `effort` | No | [Nivel de esfuerzo](https://code.claude.com/docs/es/model-config.md#adjust-effort-level) cuando este skill está activo. Sobrescribe el nivel de esfuerzo de la sesión. Cuando lo omites, el nivel proviene del [orden de resolución del esfuerzo](https://code.claude.com/docs/es/model-config.md#adjust-effort-level). Opciones: `low`, `medium`, `high`, `xhigh`, `max`; los niveles disponibles dependen del modelo. |

410| `context` | No | Establece en `fork` para ejecutar en un contexto de subagente bifurcado. Consulta [Ejecutar skills en un subagente](#run-skills-in-a-subagent). |408| `context` | No | Establece en `fork` para ejecutar en un contexto de subagente bifurcado. Consulta [Ejecutar skills en un subagente](#run-skills-in-a-subagent). |

411| `agent` | No | Qué tipo de subagente usar cuando `context: fork` está establecido. |409| `agent` | No | Qué tipo de subagente usar cuando `context: fork` está establecido. |

412| `background` | No | Solo se aplica con `context: fork`. Establece en `false` para esperar el resultado del subagente bifurcado en el turno que invocó el skill, en lugar de [ejecutarlo en segundo plano](#run-skills-in-a-subagent). Por defecto: `true`. Requiere Claude Code v2.1.218 o posterior. |410| `background` | No | Solo se aplica con `context: fork`. Establece en `false` para esperar el resultado del subagente bifurcado en el turno que invocó el skill, en lugar de [ejecutarlo en segundo plano](#run-skills-in-a-subagent). Por defecto: `true`. |

413| `hooks` | No | Hooks que Claude Code registra cuando se invoca el skill y mantiene ejecutándose por el resto de la sesión. Consulta [Hooks en skills y agentes](https://code.claude.com/docs/es/hooks.md#hooks-in-skills-and-agents) para el formato de configuración, la opción `once` y los [límites de los hooks de skills](https://code.claude.com/docs/es/hooks.md#limits-on-skill-hooks). |411| `hooks` | No | Hooks que Claude Code registra cuando se invoca el skill y mantiene ejecutándose por el resto de la sesión. Consulta [Hooks en skills y agentes](https://code.claude.com/docs/es/hooks.md#hooks-in-skills-and-agents) para el formato de configuración, la opción `once` y los [límites de los hooks de skills](https://code.claude.com/docs/es/hooks.md#limits-on-skill-hooks). |

414| `paths` | No | Patrones Glob que limitan cuándo se activa este skill. Acepta una cadena separada por comas o una lista YAML. Cuando se establece, Claude carga el skill automáticamente solo cuando trabaja con archivos que coinciden con los patrones. Los patrones son relativos al directorio de trabajo actual de Claude, y los archivos fuera de ese directorio no coinciden. Usa el mismo formato glob que [reglas específicas de ruta](https://code.claude.com/docs/es/memory.md#path-specific-rules). |412| `paths` | No | Patrones Glob que limitan cuándo se activa este skill. Acepta una cadena separada por comas o una lista YAML. Cuando se establece, Claude carga el skill automáticamente solo cuando trabaja con archivos que coinciden con los patrones. Los patrones son relativos al directorio de trabajo actual de Claude, y los archivos fuera de ese directorio no coinciden. Usa el mismo formato glob que [reglas específicas de ruta](https://code.claude.com/docs/es/memory.md#path-specific-rules). |

415| `shell` | No | Shell a usar para `` !`command` `` y bloques ` ```! ` en este skill. Acepta `bash` (por defecto) o `powershell`. Establecer `powershell` ejecuta comandos shell en línea a través de PowerShell cuando la [herramienta PowerShell](https://code.claude.com/docs/es/tools-reference.md#powershell-tool) está habilitada: está activada por defecto en Windows sin Git Bash, activada por defecto con Git Bash para cuentas de claude.ai y Console, y necesita `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` en sesiones de Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry y en macOS, Linux y WSL. Establécelo en `0` para desactivar la herramienta. |413| `shell` | No | Shell a usar para `` !`command` `` y bloques ` ```! ` en este skill. Acepta `bash` (por defecto) o `powershell`. Establecer `powershell` ejecuta comandos shell en línea a través de PowerShell cuando la [herramienta PowerShell](https://code.claude.com/docs/es/tools-reference.md#powershell-tool) está habilitada: está activada por defecto en Windows sin Git Bash, activada por defecto con Git Bash para cuentas de claude.ai y Console, y necesita `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` en sesiones de Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry y en macOS, Linux y WSL. Establécelo en `0` para desactivar la herramienta. |


800>798>

801> A pesar del nombre, una skill con `context: fork` no se ejecuta en un [fork de la conversación actual](https://code.claude.com/docs/es/sub-agents.md#fork-the-current-conversation), que entregaría al subagente todo lo que ha discutido hasta ahora. Cuando la tarea depende de ese historial, bifurque la conversación en lugar de usar `context: fork`.799> A pesar del nombre, una skill con `context: fork` no se ejecuta en un [fork de la conversación actual](https://code.claude.com/docs/es/sub-agents.md#fork-the-current-conversation), que entregaría al subagente todo lo que ha discutido hasta ahora. Cuando la tarea depende de ese historial, bifurque la conversación en lugar de usar `context: fork`.

802 800 

803El subagente bifurcado se ejecuta en [segundo plano](https://code.claude.com/docs/es/sub-agents.md#run-subagents-in-foreground-or-background): usted continúa trabajando mientras se ejecuta, y su resultado llega a su conversación cuando se completa. Establezca `background: false` en el frontmatter para esperar el resultado en el turno que invocó la skill. Antes de v2.1.218, las skills bifurcadas siempre bloqueaban el turno hasta que terminaban.801El subagente bifurcado se ejecuta en [segundo plano](https://code.claude.com/docs/es/sub-agents.md#run-subagents-in-foreground-or-background): sigues trabajando mientras se ejecuta, y su resultado llega a tu conversación cuando termina. Establece `background: false` en el frontmatter para, en cambio, esperar el resultado en el turno que invocó el skill.

804 802 

805Claude Code también espera el resultado, incluso cuando la skill no establece `background: false`, en casos como estos:803Claude Code también espera el resultado, incluso cuando la skill no establece `background: false`, en casos como estos:

806 804 

sub-agents.md +3 −10

Details

352* **ID de modelo completo**: use un ID de modelo completo como `claude-opus-5-5` o `claude-sonnet-5`. Acepta los mismos valores que la bandera `--model`352* **ID de modelo completo**: use un ID de modelo completo como `claude-opus-5-5` o `claude-sonnet-5`. Acepta los mismos valores que la bandera `--model`

353* **inherit**: use el mismo modelo que la conversación principal353* **inherit**: use el mismo modelo que la conversación principal

354 354 

355Cuando Claude invoca un subagente, también puede pasar un parámetro `model` para esa invocación específica. Claude Code resuelve el modelo del subagente en este orden:355Cuando Claude invoca un subagente, también puede pasar un parámetro `model` para esa invocación específica. En una llamada a la herramienta Agent, ese parámetro acepta un alias de modelo: `sonnet`, `opus`, `haiku` o `fable`. Claude no puede pasar un ID de modelo completo ni `inherit` en esa llamada. Claude Code resuelve el modelo del subagente en este orden:

356 356 

3571. El parámetro `model` por invocación3571. El parámetro `model` por invocación

3582. El frontmatter `model` de la definición del subagente, donde `inherit` selecciona el modelo de la conversación principal3582. El frontmatter `model` de la definición del subagente, donde `inherit` selecciona el modelo de la conversación principal


760>760>

761> Los hooks de frontmatter se disparan cuando el agente se genera como un subagente a través de la herramienta Agent o una @-mención, y cuando el agente se ejecuta como la sesión principal a través de [`--agent`](#invoke-subagents-explicitly) o la configuración `agent`. En el caso de sesión principal, se ejecutan junto con cualquier hook definido en [`settings.json`](https://code.claude.com/docs/es/hooks).761> Los hooks de frontmatter se disparan cuando el agente se genera como un subagente a través de la herramienta Agent o una @-mención, y cuando el agente se ejecuta como la sesión principal a través de [`--agent`](#invoke-subagents-explicitly) o la configuración `agent`. En el caso de sesión principal, se ejecutan junto con cualquier hook definido en [`settings.json`](https://code.claude.com/docs/es/hooks).

762 762 

763Para permitir que los hooks de frontmatter de un subagente a nivel de proyecto se ejecuten, acepte el [diálogo de confianza del espacio de trabajo](https://code.claude.com/docs/es/permissions.md#project-allow-rules-and-workspace-trust) para la carpeta que contiene el archivo del agente. Los hooks de subagentes a nivel de usuario en `~/.claude/agents/` y de definiciones que pasa con `--agents` se ejecutan sin este paso. Si agregó una carpeta con `--add-dir` desde fuera del repositorio del espacio de trabajo de confianza, confíe en esa carpeta por separado: sus hooks `.claude/agents/` no heredan la concesión del espacio de trabajo.763Para permitir que los hooks de frontmatter de un subagente a nivel de proyecto se ejecuten, acepta el [diálogo de confianza del espacio de trabajo](https://code.claude.com/docs/es/permissions.md#project-allow-rules-and-workspace-trust) para la carpeta que contiene el archivo del agente. Los hooks de subagentes a nivel de usuario en `~/.claude/agents/` y de definiciones que pasas con `--agents` se ejecutan sin este paso. Si agregaste una carpeta con `--add-dir` desde fuera del repositorio de tu espacio de trabajo de confianza, confía en esa carpeta por separado: sus hooks de `.claude/agents/` no heredan la concesión del espacio de trabajo.

764 764 

765Hasta que confíe en la carpeta, el subagente aún se ejecuta, pero Claude Code omite sus hooks de frontmatter y registra un error en el registro de depuración explicando cómo confiar en la carpeta. Esta es una regla más estricta que la de los hooks en archivos de configuración: confiar en una carpeta principal no es suficiente, y una sesión `-p` no cuenta como de confianza. [Lo que se ejecuta antes de confiar en una carpeta](https://code.claude.com/docs/es/permissions.md#what-runs-before-you-trust-a-folder) compara los dos. Antes de v2.1.218, los hooks de frontmatter podían ejecutarse desde carpetas que no había confiado, incluyendo en sesiones no interactivas.765Hasta que confíes en la carpeta, el subagente aún se ejecuta, pero Claude Code omite sus hooks de frontmatter y registra un error en el registro de depuración explicando cómo confiar en la carpeta. Esta es una regla más estricta que la de los hooks en archivos de configuración: confiar en una carpeta principal no es suficiente, y una sesión `-p` no cuenta como de confianza. [Lo que se ejecuta antes de confiar en una carpeta](https://code.claude.com/docs/es/permissions.md#what-runs-before-you-trust-a-folder) compara las dos.

766 766 

767Se soportan todos los [eventos de hook](https://code.claude.com/docs/es/hooks.md#hook-events). Los eventos más comunes para subagentes son:767Se soportan todos los [eventos de hook](https://code.claude.com/docs/es/hooks.md#hook-events). Los eventos más comunes para subagentes son:

768 768 


1075 1075 

1076En la terminal, Claude Code muestra subagentes anidados como un árbol en el panel de subagentes debajo de la entrada del prompt y marca cada fila que aún tiene descendientes en el panel con un conteo `(+N)` de ellos. Abre una fila para ver los hermanos y descendientes directos de ese subagente con una ruta de vuelta a `main`.1076En la terminal, Claude Code muestra subagentes anidados como un árbol en el panel de subagentes debajo de la entrada del prompt y marca cada fila que aún tiene descendientes en el panel con un conteo `(+N)` de ellos. Abre una fila para ver los hermanos y descendientes directos de ese subagente con una ruta de vuelta a `main`.

1077 1077 

1078> [!NOTE]

1079>

1080> Las versiones anteriores usaban diferentes valores predeterminados:

1081>

1082> * **v2.1.172 a v2.1.216**: los subagentes podían anidarse por defecto, hasta cinco capas de profundidad, y el límite no podía cambiarse.

1083> * **v2.1.217 a v2.1.218**: el límite predeterminado era uno, por lo que un subagente no podía generar el suyo a menos que lo aumentaras; v2.1.219 aumentó el predeterminado a tres.

1084 

1085### Límite de subagentes concurrentes1078### Límite de subagentes concurrentes

1086 1079 

1087Dos límites controlan el uso de subagentes, cada uno con su propia variable: este impide que Claude genere más subagentes mientras demasiados se están ejecutando, y el [límite de profundidad](#let-subagents-spawn-their-own-subagents) limita cuán profundamente se anidan los subagentes. No hay límite en el número total de subagentes que Claude puede generar durante una sesión.1080Dos límites controlan el uso de subagentes, cada uno con su propia variable: este impide que Claude genere más subagentes mientras demasiados se están ejecutando, y el [límite de profundidad](#let-subagents-spawn-their-own-subagents) limita cuán profundamente se anidan los subagentes. No hay límite en el número total de subagentes que Claude puede generar durante una sesión.

Details

290>290>

291> Cada [subagente](https://code.claude.com/docs/es/sub-agents.md) y tarea paralela se muestra en uno de ocho colores nombrados para que pueda distinguirlos en la transcripción. Los nombres de tokens siguen el patrón `<color>_FOR_SUBAGENTS_ONLY`, donde `<color>` es `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, o `cyan`. Anule estos para cambiar el aspecto de cada color nombrado. Por ejemplo, un subagente con `color: blue` en su definición se dibuja usando el valor `blue_FOR_SUBAGENTS_ONLY`.291> Cada [subagente](https://code.claude.com/docs/es/sub-agents.md) y tarea paralela se muestra en uno de ocho colores nombrados para que pueda distinguirlos en la transcripción. Los nombres de tokens siguen el patrón `<color>_FOR_SUBAGENTS_ONLY`, donde `<color>` es `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, o `cyan`. Anule estos para cambiar el aspecto de cada color nombrado. Por ejemplo, un subagente con `color: blue` en su definición se dibuja usando el valor `blue_FOR_SUBAGENTS_ONLY`.

292>292>

293> Claude Code representa la palabra clave [`ultrathink`](https://code.claude.com/docs/es/model-config#use-ultrathink-for-one-off-deep-reasoning) en la entrada del prompt con un gradiente arcoíris de siete colores. Los nombres de tokens siguen el patrón `rainbow_<color>` y `rainbow_<color>_shimmer`, donde `<color>` es `red`, `orange`, `yellow`, `green`, `blue`, `indigo`, o `violet`.293> Cuando [`ultrathink`](https://code.claude.com/docs/es/model-config#use-ultrathink-for-one-off-deep-reasoning) puede elevar el esfuerzo de un turno, Claude Code representa la palabra en la entrada del prompt con un gradiente arcoíris de siete colores. Los nombres de tokens siguen el patrón `rainbow_<color>` y `rainbow_<color>_shimmer`, donde `<color>` es `red`, `orange`, `yellow`, `green`, `blue`, `indigo`, o `violet`.

294 294 

295## Cambiar a renderizado a pantalla completa295## Cambiar a renderizado a pantalla completa

296 296 

ultrareview.md +4 −2

Details

85 85 

86### Pasa una solicitud en palabras simples86### Pasa una solicitud en palabras simples

87 87 

88En Claude Code v2.1.218 o posterior, también puede describir en qué está trabajando en palabras simples:88También puedes describir en qué estás trabajando en palabras simples:

89 89 

90```text theme={null}90```text theme={null}

91/code-review ultra check my auth changes91/code-review ultra check my auth changes


159 159 

160Das tu consentimiento al respaldo de repositorio completo y a la solicitud de facturación y términos cuando ejecutas el subcomando, por lo que la ejecución no se detiene a confirmarlos. Ejecutarlo tú mismo es lo que cuenta como consentimiento. Cuando Claude ejecuta el subcomando por ti, por ejemplo a través de la herramienta Bash, Claude Code rechaza la revisión de repositorio completo.160Das tu consentimiento al respaldo de repositorio completo y a la solicitud de facturación y términos cuando ejecutas el subcomando, por lo que la ejecución no se detiene a confirmarlos. Ejecutarlo tú mismo es lo que cuenta como consentimiento. Cuando Claude ejecuta el subcomando por ti, por ejemplo a través de la herramienta Bash, Claude Code rechaza la revisión de repositorio completo.

161 161 

162`claude -p '/code-review ultra'` no te entrega los hallazgos, así que usa `claude ultrareview` en scripts. La ejecución con `-p` inicia la revisión en la nube y sale sin esperarla. Cuando la revisión facturaría créditos de uso, la ejecución con `-p` se detiene sin iniciarla. Antes de v2.1.218, `/code-review ultra` en una sesión no interactiva ejecutaba una revisión local.162> [!NOTE]

163>

164> `claude -p '/code-review ultra'` no te entrega los hallazgos, así que usa `claude ultrareview` en scripts. La ejecución con `-p` inicia la revisión en la nube y sale sin esperarla. Cuando la revisión facturaría créditos de uso, la ejecución con `-p` se detiene sin iniciarla.

163 165 

164| Bandera | Descripción |166| Bandera | Descripción |

165| - | - |167| - | - |

Details

182* También puedes hacer clic en **Cambios** en la barra de título de la sesión, o en el menú **⋮** de la barra.182* También puedes hacer clic en **Cambios** en la barra de título de la sesión, o en el menú **⋮** de la barra.

183* Para mostrar el panel cuando está oculto, haz clic en el ícono **Mostrar panel de la sesión** en la barra de título de la sesión, o en el menú **⋮** de la barra.183* Para mostrar el panel cuando está oculto, haz clic en el ícono **Mostrar panel de la sesión** en la barra de título de la sesión, o en el menú **⋮** de la barra.

184 184 

185El diff compara los cambios de la sesión contra su rama base de forma predeterminada. Para comparar contra una rama diferente, selecciona **Comparar contra** y elige una.185El diff compara los cambios de la sesión contra su rama base de forma predeterminada. Para comparar contra una rama diferente, selecciona **Comparar contra** y elige una. Al compararlo contra la rama base, el diff puede [omitir cambios que aún no se han subido](https://code.claude.com/docs/es/claude-code-on-the-web.md#troubleshoot-a-missing-file-in-the-diff-view).

186 186 

187**2. Deja comentarios en línea**187**2. Deja comentarios en línea**

188 188 

189Selecciona cualquier línea en el diff, escribe tu comentario y presiona Enter. Los comentarios se ponen en cola hasta que envíes tu siguiente mensaje, luego se agrupan con él. Claude ve "en `src/auth.ts:47`, no captures el error aquí" junto a tu instrucción principal, por lo que no tienes que describir dónde está el problema.189Pasa el cursor sobre una línea en el diff y haz clic en el **+** que aparece junto a su número de línea para abrir un cuadro de comentario; luego escribe tu comentario y presiona Enter. Los comentarios se ponen en cola hasta que envíes tu siguiente mensaje, luego se agrupan con él. Claude ve "en `src/auth.ts:47`, no captures el error aquí" junto a tu instrucción principal, por lo que no tienes que describir dónde está el problema.

190 190 

191**3. Crea un pull request**191**3. Crea un pull request**

192 192 

workflows.md +5 −9

Details

155* El [límite de subagentes concurrentes](https://code.claude.com/docs/es/sub-agents.md#concurrent-subagent-limit) de la sesión no se aplica a los subagentes que Claude genera con la herramienta Agent155* El [límite de subagentes concurrentes](https://code.claude.com/docs/es/sub-agents.md#concurrent-subagent-limit) de la sesión no se aplica a los subagentes que Claude genera con la herramienta Agent

156* En modo de permiso automático, no se le pide que [apruebe el primer lanzamiento de workflow](#approve-the-plan-before-it-runs)156* En modo de permiso automático, no se le pide que [apruebe el primer lanzamiento de workflow](#approve-the-plan-before-it-runs)

157 157 

158`/effort ultracode` dura la sesión actual; para que cada sesión comience con él, establezca la configuración [`ultracode`](https://code.claude.com/docs/es/settings-reference#ultracode). Desactívelo con `/effort ultracode off` cuando regrese al trabajo rutinario. El control deslizante `/effort` ofrece el botón solo [cuando ultracode está disponible](https://code.claude.com/docs/es/model-config.md#when-ultracode-is-available).158`/effort ultracode` dura la sesión actual; para que cada sesión comience con él, establece el ajuste [`ultracode`](https://code.claude.com/docs/es/settings-reference#ultracode). Desactívalo con `/effort ultracode off` cuando vuelvas al trabajo habitual. El control deslizante de `/effort` ofrece el interruptor solo [cuando ultracode está disponible](https://code.claude.com/docs/es/model-config.md#when-ultracode-is-available). Antes de v2.1.284, `/effort ultracode` establecía la sesión en `xhigh`, y `/effort ultracode off` fallaba con `Invalid argument`.

159 159 

160### Aprobar el plan antes de que se ejecute160### Aprobar el plan antes de que se ejecute

161 161 


198* `.claude/workflows/` en su proyecto: compartido con todos los que clonan el repositorio198* `.claude/workflows/` en su proyecto: compartido con todos los que clonan el repositorio

199* `~/.claude/workflows/` en su directorio de inicio: disponible en cada proyecto, visible solo para usted. Si establece [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/es/env-vars), esta ubicación es el directorio `workflows/` bajo esa ruta.199* `~/.claude/workflows/` en su directorio de inicio: disponible en cada proyecto, visible solo para usted. Si establece [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/es/env-vars), esta ubicación es el directorio `workflows/` bajo esa ruta.

200 200 

201El diálogo de guardado muestra la ruta resuelta para la ubicación personal.201El diálogo de guardado muestra la ruta resuelta para la ubicación personal. Presiona Enter para guardar. El workflow se ejecuta como `/<name>` en futuras sesiones desde cualquiera de las dos ubicaciones.

202 202 

203Presione Enter para guardar. El workflow se ejecuta como `/<name>` en futuras sesiones desde cualquier ubicación.203Claude Code comprueba si hay enlaces simbólicos en la ubicación de guardado antes de escribir y muestra un error en lugar de escribir a través de uno:

204 

205Claude Code comprueba la ubicación de guardado para buscar enlaces simbólicos antes de escribir y muestra un error en lugar de escribir a través de uno. Lo que comprueba depende de dónde guarde:

206 204 

207* Ubicación del proyecto: Claude Code rechaza si `.claude`, `.claude/workflows` o el archivo de destino es un enlace simbólico.205* Ubicación del proyecto: Claude Code rechaza si `.claude`, `.claude/workflows` o el archivo de destino es un enlace simbólico.

208* Ubicación personal: Claude Code rechaza solo si el archivo de destino en sí es un enlace simbólico, por lo que un directorio `~/.claude` administrado por una herramienta de dotfiles aún funciona.206* Ubicación personal: Claude Code rechaza solo si el archivo de destino en sí es un enlace simbólico, por lo que un directorio `~/.claude` administrado por una herramienta de dotfiles aún funciona.

209 207 

210Antes de v2.1.216, Claude Code seguía el enlace, lo que podría colocar el archivo fuera de la ubicación que eligió.

211 

212En un monorepo con varios directorios `.claude/`, puede mantener workflows junto al paquete al que se aplican. Guardar en la ubicación del proyecto escribe en el directorio `.claude/workflows/` más cercano que ya existe entre su directorio de trabajo y la raíz del repositorio, o en la raíz del repositorio si aún no existe ninguno. Los workflows del proyecto también se cargan desde cada `.claude/workflows/` a lo largo de esa ruta, y cuando más de uno define el mismo nombre Claude Code ejecuta el más cercano al directorio de trabajo.208En un monorepo con varios directorios `.claude/`, puede mantener workflows junto al paquete al que se aplican. Guardar en la ubicación del proyecto escribe en el directorio `.claude/workflows/` más cercano que ya existe entre su directorio de trabajo y la raíz del repositorio, o en la raíz del repositorio si aún no existe ninguno. Los workflows del proyecto también se cargan desde cada `.claude/workflows/` a lo largo de esa ruta, y cuando más de uno define el mismo nombre Claude Code ejecuta el más cercano al directorio de trabajo.

213 209 

214Si un workflow de proyecto y un workflow personal comparten un nombre, se ejecuta el del proyecto.210Si un workflow de proyecto y un workflow personal comparten un nombre, se ejecuta el del proyecto.


469| `medium` | Menos de 10 agentes |465| `medium` | Menos de 10 agentes |

470| `large` | Menos de 50 agentes |466| `large` | Menos de 50 agentes |

471 467 

472El valor predeterminado es `medium`, o `small` cuando inicia sesión en un plan Pro con Claude Code v2.1.271 o posterior. Hasta que elija un valor, la fila `/config` marca el valor como predeterminado, y la línea `Running in background` del workflow nombra el tamaño en vigor. Requiere Claude Code v2.1.219 o posterior; las versiones anteriores tienen como valor predeterminado `unrestricted`.468El valor predeterminado es `medium`, o `small` cuando inicias sesión en un plan Pro con Claude Code v2.1.271 o posterior. Hasta que elijas un valor, la fila `/config` marca el valor como predeterminado, y la línea `Running in background` del workflow nombra el tamaño en vigor.

473 469 

474Para cambiar la directriz, elija un valor para la configuración Dynamic workflow size en `/config`, o ejecute `/config workflowSizeGuideline=small`. En v2.1.219 y posterior, también puede establecer la clave [`workflowSizeGuideline`](https://code.claude.com/docs/es/settings-reference#workflowsizeguideline) en cualquier archivo de configuración; ese valor tiene prioridad sobre `/config`, y Claude Code oculta la fila `/config` mientras un archivo de configuración proporciona uno.470Para cambiar la directriz, elige un valor para el ajuste Dynamic workflow size en `/config`, o ejecuta `/config workflowSizeGuideline=small`. También puedes establecer la [clave `workflowSizeGuideline`](https://code.claude.com/docs/es/settings-reference#workflowsizeguideline) en cualquier archivo de configuración; ese valor tiene prioridad sobre `/config`, y Claude Code oculta la fila `/config` mientras un archivo de configuración proporciona uno.

475 471 

476Los cambios surten efecto en el siguiente prompt. Los [límites de agente del runtime](#behavior-and-limits) aún se aplican independientemente de la configuración.472Los cambios surten efecto en el siguiente prompt. Los [límites de agente del runtime](#behavior-and-limits) aún se aplican independientemente de la configuración.

477 473 

worktrees.md +22 −10

Details

43 43 

44También puede pedirle a Claude que "trabaje en un worktree" durante una sesión, y creará uno con la herramienta [`EnterWorktree`](https://code.claude.com/docs/es/tools-reference). Una vez en un worktree, Claude puede cambiar directamente a otro bajo `.claude/worktrees/` llamando a `EnterWorktree` con la ruta de destino; el worktree anterior permanece en el disco sin cambios.44También puede pedirle a Claude que "trabaje en un worktree" durante una sesión, y creará uno con la herramienta [`EnterWorktree`](https://code.claude.com/docs/es/tools-reference). Una vez en un worktree, Claude puede cambiar directamente a otro bajo `.claude/worktrees/` llamando a `EnterWorktree` con la ruta de destino; el worktree anterior permanece en el disco sin cambios.

45 45 

46Cuando Claude entra en una ruta fuera del directorio `.claude/worktrees/` del repositorio, Claude Code solicita su aprobación primero, porque el movimiento toma el directorio de trabajo de la sesión, acceso de escritura, y configuración del proyecto como `CLAUDE.md` y configuración a esa ubicación. Una regla de [permiso](https://code.claude.com/docs/es/permissions.md) de `EnterWorktree` o elegir "no preguntar de nuevo" no suprime este aviso; solo el modo `bypassPermissions` lo omite. Antes de v2.1.206, Claude podía entrar en cualquier ruta de worktree existente sin preguntar.46Cuando Claude entra en una ruta fuera del directorio `.claude/worktrees/` del repositorio, Claude Code solicita tu aprobación primero. El cambio lleva a esa ubicación el directorio de trabajo de la sesión, el acceso de escritura y la configuración del proyecto, como `CLAUDE.md` y los ajustes. Una [regla de permisos](https://code.claude.com/docs/es/permissions.md) de `EnterWorktree` o elegir "no preguntar de nuevo" no suprime esta solicitud; solo el modo `bypassPermissions` la omite.

47 47 

48> [!NOTE]48> [!NOTE]

49>49>


63 63 

64Las ejecuciones no interactivas con `-p` no tienen solicitud de salida, por lo que Claude no limpia sus worktrees, y Claude Code deja el bloqueo que tomó en cada uno en la creación en su lugar hasta que una [limpieza de bloqueo obsoleto](#clean-up-subagent-and-background-session-worktrees) posterior lo libere. Para eliminar uno, ejecute `git worktree remove`; si git se niega porque el worktree está bloqueado, ejecute `git worktree unlock` en él primero.64Las ejecuciones no interactivas con `-p` no tienen solicitud de salida, por lo que Claude no limpia sus worktrees, y Claude Code deja el bloqueo que tomó en cada uno en la creación en su lugar hasta que una [limpieza de bloqueo obsoleto](#clean-up-subagent-and-background-session-worktrees) posterior lo libere. Para eliminar uno, ejecute `git worktree remove`; si git se niega porque el worktree está bloqueado, ejecute `git worktree unlock` en él primero.

65 65 

66En Windows, eliminar un worktree no elimina archivos fuera de él. Si una carpeta dentro del worktree es un enlace a otro lugar, como una unión NTFS o un enlace simbólico de directorio, Claude Code elimina solo el enlace y mantiene la carpeta a la que apunta. Antes de v2.1.205, eliminar un worktree con un enlace anidado en un subdirectorio podría eliminar la carpeta a la que apuntaba.66En Windows, eliminar un worktree no elimina archivos fuera de él. Si una carpeta dentro del worktree es un enlace a otro lugar, como una unión NTFS o un enlace simbólico de directorio, Claude Code elimina solo el enlace.

67 67 

68## Reanude una sesión de worktree68## Reanude una sesión de worktree

69 69 


81>81>

82> Antes de v2.1.212, una reanudación no interactiva permanecía en el directorio de inicio y `ExitWorktree` reportaba que no había una sesión de worktree activa para salir.82> Antes de v2.1.212, una reanudación no interactiva permanecía en el directorio de inicio y `ExitWorktree` reportaba que no había una sesión de worktree activa para salir.

83 83 

84Cuando Claude entra o sale de un worktree que Claude Code creó con git, la transcripción sigue: Claude Code registra la sesión bajo el nuevo directorio de trabajo de la sesión, de la misma manera que [`/cd`](https://code.claude.com/docs/es/commands) lo hace, por lo que `/desktop` y `--resume` la encuentran allí. Salir la mueve de la misma manera. Un worktree creado por un [hook `WorktreeCreate`](#non-git-version-control) mantiene su transcripción en el directorio de lanzamiento. Requiere Claude Code v2.1.198 o posterior.84Cuando Claude entra o sale de un worktree que Claude Code creó con git, la transcripción lo acompaña. Claude Code registra la sesión bajo el nuevo directorio de trabajo de la sesión, de la misma manera que lo hace [`/cd`](https://code.claude.com/docs/es/commands), por lo que `/desktop` y `--resume` la encuentran allí. Salir la mueve de vuelta de la misma manera. Un worktree creado por un [hook `WorktreeCreate`](#non-git-version-control) mantiene su transcripción en el directorio de lanzamiento.

85 85 

86## Cómo Claude Code aplica el aislamiento86## Cómo Claude Code aplica el aislamiento

87 87 


139 139 

140Claude Code escribe un marcador en los metadatos de git de cada worktree que crea con git, y el barrido mantiene cualquier worktree sin uno, incluido un worktree que un [hook `WorktreeCreate`](#non-git-version-control) creó.140Claude Code escribe un marcador en los metadatos de git de cada worktree que crea con git, y el barrido mantiene cualquier worktree sin uno, incluido un worktree que un [hook `WorktreeCreate`](#non-git-version-control) creó.

141 141 

142#### Bloqueos de worktree y eliminación manual

143 

142Mientras un agente se está ejecutando, Claude Code mantiene un `git worktree lock` en su worktree para que la limpieza concurrente no pueda eliminarlo, y libera el bloqueo cuando el agente termina. Claude Code mantiene el mismo bloqueo en el worktree que creó para una sesión enviada al fondo mientras la sesión se ejecuta, por lo que el barrido deja el worktree en su lugar y `git worktree remove` se niega a eliminarlo.144Mientras un agente se está ejecutando, Claude Code mantiene un `git worktree lock` en su worktree para que la limpieza concurrente no pueda eliminarlo, y libera el bloqueo cuando el agente termina. Claude Code mantiene el mismo bloqueo en el worktree que creó para una sesión enviada al fondo mientras la sesión se ejecuta, por lo que el barrido deja el worktree en su lugar y `git worktree remove` se niega a eliminarlo.

143 145 

144El barrido también libera un bloqueo que Claude Code estableció para una sesión cuyo proceso ha salido, por lo que una sesión en segundo plano eliminada no deja su worktree permanentemente bloqueado. El barrido nunca libera un bloqueo que estableció usted mismo con `git worktree lock`. Antes de v2.1.210, un bloqueo dejado por una sesión eliminada permanecía en su lugar hasta que ejecutaba `git worktree unlock`.146El barrido también libera un bloqueo que Claude Code estableció para una sesión cuyo proceso ha salido, por lo que una sesión en segundo plano eliminada no deja su worktree permanentemente bloqueado. El barrido nunca libera un bloqueo que estableciste tú mismo con `git worktree lock`.

145 147 

146Para limpiar un worktree que el barrido mantiene, ejecute `git worktree remove`, agregando `--force` si el worktree tiene cambios no confirmados o archivos sin seguimiento. Si git se niega porque el worktree está bloqueado, ejecute `git worktree unlock` en él primero.148Para limpiar un worktree que el barrido mantiene, ejecute `git worktree remove`, agregando `--force` si el worktree tiene cambios no confirmados o archivos sin seguimiento. Si git se niega porque el worktree está bloqueado, ejecute `git worktree unlock` en él primero.

147 149 


158 160 

159No puede establecer `worktree.baseRef` en un nombre de rama. Para iniciar un worktree desde una rama existente específica, [créelo con git directamente](#manage-worktrees-manually).161No puede establecer `worktree.baseRef` en un nombre de rama. Para iniciar un worktree desde una rama existente específica, [créelo con git directamente](#manage-worktrees-manually).

160 162 

161Para una base `"fresh"`, Claude Code mantiene `origin/HEAD` actualizado: cuando no se ha hecho fetch del repositorio en las últimas 24 horas, hace fetch de la rama predeterminada, con un límite de cinco segundos, y usa la ref almacenada localmente en caché si el fetch falla. El fetch nunca espera una entrada en tu terminal, por lo que también cuenta como fallido cuando git o ssh pedirían una contraseña, la frase de contraseña de una clave o la confirmación de un nuevo host SSH. Si no hay ningún remoto configurado, o `origin/HEAD` no está almacenado en caché localmente y no se puede obtener, el worktree recurre a tu `HEAD` local actual. Antes de v2.1.208, un worktree `"fresh"` usaba el `origin/HEAD` que ya estuviera almacenado en caché localmente.163Para una base `"fresh"`, Claude Code mantiene `origin/HEAD` actualizado:

164 

165* Cuando no se ha hecho fetch del repositorio en las últimas 24 horas, hace fetch de la rama predeterminada, con un límite de cinco segundos, y usa la ref almacenada localmente en caché si el fetch falla.

166* El fetch nunca espera una entrada en tu terminal. También cuenta como fallido cuando git o ssh pedirían una contraseña, la frase de contraseña de una clave o la confirmación de un nuevo host SSH.

167* Si no hay ningún remoto configurado, o `origin/HEAD` no está almacenado en caché localmente y no se puede obtener, el worktree recurre a tu `HEAD` local actual.

162 168 

163Este ejemplo hace que cada nuevo worktree se ramifique desde su trabajo actual:169Este ejemplo hace que cada nuevo worktree se ramifique desde su trabajo actual:

164 170 


210 216 

211Pasar `--worktree` un nombre cuyo directorio ya existe abre ese worktree existente en lugar de crear uno nuevo.217Pasar `--worktree` un nombre cuyo directorio ya existe abre ese worktree existente en lugar de crear uno nuevo.

212 218 

213Con la [base](#choose-the-base-branch) predeterminada `"fresh"`, un worktree reabierto se reinicia a la rama predeterminada del repositorio en lugar de continuar en su punta anterior cuando se cumplen todas las siguientes condiciones:219Con la [base](#choose-the-base-branch) predeterminada `"fresh"`, un worktree reabierto se restablece a la rama predeterminada del repositorio en lugar de continuar en su punta anterior cuando se cumplen todas las siguientes condiciones:

214 220 

215* No tiene cambios sin confirmar ni archivos sin seguimiento.221* No tiene cambios sin confirmar ni archivos sin seguimiento.

216* Todavía está en la rama que Claude Code creó para él.222* Todavía está en la rama que Claude Code creó para él.


225* `worktree.baseRef` es `"head"`.231* `worktree.baseRef` es `"head"`.

226* El nombre es una referencia de solicitud de extracción o solicitud de fusión.232* El nombre es una referencia de solicitud de extracción o solicitud de fusión.

227 233 

228Antes de v2.1.208, cuando reutilizaba un nombre, Claude Code siempre reabrió el worktree anterior en su punta anterior.

229 

230### Reemplace la creación de worktree con un hook234### Reemplace la creación de worktree con un hook

231 235 

232Configure un [hook `WorktreeCreate`](https://code.claude.com/docs/es/hooks#worktreecreate) para reemplazar completamente la lógica predeterminada de `git worktree`, incluida la colocación de worktrees en algún lugar que no sea `.claude/worktrees/`. Para un ejemplo completo, consulte [Control de versiones no-git](#non-git-version-control).236Configure un [hook `WorktreeCreate`](https://code.claude.com/docs/es/hooks#worktreecreate) para reemplazar completamente la lógica predeterminada de `git worktree`, incluida la colocación de worktrees en algún lugar que no sea `.claude/worktrees/`. Para un ejemplo completo, consulte [Control de versiones no-git](#non-git-version-control).


236Un worktree obtiene sus propios archivos y rama, pero comparte lo siguiente con el checkout principal:240Un worktree obtiene sus propios archivos y rama, pero comparte lo siguiente con el checkout principal:

237 241 

238* **El directorio `.git` del repositorio**: los comandos de git en un worktree escriben en el directorio `.git` compartido del repositorio principal, y el [sandboxing](https://code.claude.com/docs/es/sandboxing.md#filesystem-isolation) permite esas escrituras, por lo que comandos como `git commit` funcionan desde dentro de un worktree con el sandbox habilitado.242* **El directorio `.git` del repositorio**: los comandos de git en un worktree escriben en el directorio `.git` compartido del repositorio principal, y el [sandboxing](https://code.claude.com/docs/es/sandboxing.md#filesystem-isolation) permite esas escrituras, por lo que comandos como `git commit` funcionan desde dentro de un worktree con el sandbox habilitado.

239* **Plugins**: los plugins instalados en [ámbito de proyecto](https://code.claude.com/docs/es/plugins/loading.md#find-where-a-plugin-is-enabled) desde el checkout principal también se cargan en worktrees del mismo repositorio, por lo que no necesita reinstalarlos por worktree. Requiere Claude Code v2.1.200 o posterior.243* **Plugins**: los plugins instalados con [alcance de proyecto](https://code.claude.com/docs/es/plugins/loading.md#find-where-a-plugin-is-enabled) desde el checkout principal también se cargan en worktrees del mismo repositorio, por lo que no necesitas reinstalarlos por worktree.

240* **Aprobaciones de permisos**: elegir "Sí, y no preguntar de nuevo" para un comando Bash en una sesión de worktree guarda la regla en el `.claude/settings.local.json` del checkout principal, por lo que se aplica en el checkout principal y en cada otro worktree del repositorio, y sobrevive a la eliminación del worktree. En Windows y en los otros casos donde Claude Code [no usa la raíz del repositorio](https://code.claude.com/docs/es/settings.md#where-claude-code-looks-for-each-file), la regla permanece con ese worktree. Antes de v2.1.211, una aprobación otorgada en un worktree se guardaba dentro de ese worktree, no se aplicaba en otro lugar, y se perdía cuando se eliminaba el worktree. Consulte [dónde se guardan las aprobaciones](https://code.claude.com/docs/es/permissions.md#permission-system).244* **Aprobaciones de permisos**: elegir "Sí, y no preguntar de nuevo" para un comando Bash en una sesión de worktree guarda la regla en el `.claude/settings.local.json` del checkout principal. La regla se aplica en el checkout principal y en cada otro worktree del repositorio, y sobrevive a la eliminación del worktree.

245 

246 En Windows y en los otros casos donde Claude Code [no usa la raíz del repositorio](https://code.claude.com/docs/es/settings.md#where-claude-code-looks-for-each-file), la regla permanece con ese worktree. Consulta [dónde se guardan las aprobaciones](https://code.claude.com/docs/es/permissions.md#permission-system).

241* **Skills, agentes y comandos sin seguimiento**: cuando el checkout del worktree no tiene un directorio `.claude/skills` en su raíz, por ejemplo porque su `.claude/skills` está en gitignore, Claude Code carga los [skills de proyecto](https://code.claude.com/docs/es/skills.md#where-skills-live) del checkout principal en la sesión del worktree. En un worktree con su propio directorio `.claude/skills`, solo se carga esa copia.247* **Skills, agentes y comandos sin seguimiento**: cuando el checkout del worktree no tiene un directorio `.claude/skills` en su raíz, por ejemplo porque su `.claude/skills` está en gitignore, Claude Code carga los [skills de proyecto](https://code.claude.com/docs/es/skills.md#where-skills-live) del checkout principal en la sesión del worktree. En un worktree con su propio directorio `.claude/skills`, solo se carga esa copia.

242 248 

243 La misma lectura de paso cubre `.claude/agents` y `.claude/commands`. Para skills, la lectura de paso requiere Claude Code v2.1.277 o posterior.249 La misma lectura de paso cubre `.claude/agents` y `.claude/commands`. Para skills, la lectura de paso requiere Claude Code v2.1.277 o posterior.


322 328 

323Claude Code se niega a crear un worktree cuando `.claude`, `.claude/worktrees`, o el directorio del worktree en sí es un enlace simbólico, y el error nombra la ruta con enlace simbólico. Elimine el enlace simbólico e intente de nuevo. Antes de v2.1.212, si el repositorio ya contenía un enlace simbólico confirmado en una de esas rutas, la creación de worktree lo seguía y podría crear archivos fuera del repositorio.329Claude Code se niega a crear un worktree cuando `.claude`, `.claude/worktrees`, o el directorio del worktree en sí es un enlace simbólico, y el error nombra la ruta con enlace simbólico. Elimine el enlace simbólico e intente de nuevo. Antes de v2.1.212, si el repositorio ya contenía un enlace simbólico confirmado en una de esas rutas, la creación de worktree lo seguía y podría crear archivos fuera del repositorio.

324 330 

331### Un worktree que Claude Code creó tiene el contenido original de los objetos reemplazados

332 

333Si tu repositorio usa [`git replace`](https://git-scm.com/docs/git-replace), los archivos de un worktree que Claude Code crea contienen el contenido de los objetos originales en lugar de los reemplazos que nombran tus entradas de `refs/replace/`. Claude Code ejecuta los comandos de git que hacen checkout de los archivos del worktree con `GIT_NO_REPLACE_OBJECTS=1`, ignorando cualquier valor que hayas exportado para esa variable.

334 

335Para obtener el contenido reemplazado, [crea el worktree tú mismo](#manage-worktrees-manually) con `git worktree add` e inicia Claude Code dentro de él.

336 

325### Los archivos Git LFS son archivos de puntero en un worktree que Claude Code creó337### Los archivos Git LFS son archivos de puntero en un worktree que Claude Code creó

326 338 

327Si configura [Git LFS](https://git-lfs.com) con `git lfs install --local`, un worktree que Claude Code crea contiene archivos de puntero de LFS en lugar de los archivos reales. La bandera `--local` escribe el filtro de LFS en el `.git/config` del repositorio en lugar de su configuración de git global. Un `git lfs install` simple escribe en su configuración global y no se ve afectado. Lo mismo se aplica a cualquier otro [controlador de filtro](https://git-scm.com/docs/gitattributes) definido en la configuración del repositorio en sí.339Si configura [Git LFS](https://git-lfs.com) con `git lfs install --local`, un worktree que Claude Code crea contiene archivos de puntero de LFS en lugar de los archivos reales. La bandera `--local` escribe el filtro de LFS en el `.git/config` del repositorio en lugar de su configuración de git global. Un `git lfs install` simple escribe en su configuración global y no se ve afectado. Lo mismo se aplica a cualquier otro [controlador de filtro](https://git-scm.com/docs/gitattributes) definido en la configuración del repositorio en sí.