SpyBara
Go Premium

Documentation 2026-10-01 23:59 UTC to 2026-10-02 03:59 UTC

59 files changed +3,896 −2,786. View all changes and history on the product overview
2026
Fri 2 04:57 Thu 1 23:59

accessibility.md +11 −5

Details

44| [`CLAUDE_AX_SCREEN_READER`](/docs/es/env-vars#variables) | Variable de entorno | Modo lector de pantalla para sesiones iniciadas desde el shell donde la establece. |44| [`CLAUDE_AX_SCREEN_READER`](/docs/es/env-vars#variables) | Variable de entorno | Modo lector de pantalla para sesiones iniciadas desde el shell donde la establece. |

45| [`axScreenReader`](/docs/es/settings-reference#axscreenreader) | Configuración | Modo lector de pantalla para cada sesión cuando es `true`. |45| [`axScreenReader`](/docs/es/settings-reference#axscreenreader) | Configuración | Modo lector de pantalla para cada sesión cuando es `true`. |

46| [`CLAUDE_AX_STARTUP_QUIET_MS`](/docs/es/env-vars#variables) | Variable de entorno | Cuánto tiempo espera Claude Code después de la línea de confirmación antes de dibujar la primera solicitud en modo lector de pantalla. Requiere Claude Code v2.1.217 o posterior. |46| [`CLAUDE_AX_STARTUP_QUIET_MS`](/docs/es/env-vars#variables) | Variable de entorno | Cuánto tiempo espera Claude Code después de la línea de confirmación antes de dibujar la primera solicitud en modo lector de pantalla. Requiere Claude Code v2.1.217 o posterior. |

47| [`CLAUDE_AX_PREPARK_MS`](/docs/es/env-vars#variables) | Variable de entorno | Cuánto tiempo espera Claude Code, con el cursor al inicio de la línea, antes de escribir una línea nueva o modificada en modo lector de pantalla. Requiere Claude Code v2.1.233 o posterior. |47| [`CLAUDE_AX_PREPARK_MS`](/docs/es/env-vars#variables) | Variable de entorno | Cuando la estableces, cuántos milisegundos mantiene Claude Code el cursor de la terminal al inicio de la línea actual antes de escribir una línea nueva o modificada en modo lector de pantalla. Requiere Claude Code v2.1.233 o posterior. |

48| [`CLAUDE_CODE_ACCESSIBILITY`](/docs/es/env-vars#variables) | Variable de entorno | Un cursor de terminal que permanece visible para ampliadores de pantalla como macOS Zoom cuando lo establece en `1`. El cursor sigue el acento de entrada y, en Claude Code v2.1.218 o posterior, la fila resaltada en menús y paneles como `/config` y `/plugin`. |48| [`CLAUDE_CODE_ACCESSIBILITY`](/docs/es/env-vars#variables) | Variable de entorno | Un cursor de terminal que permanece visible para ampliadores de pantalla como macOS Zoom cuando lo establece en `1`. El cursor sigue el acento de entrada y, en Claude Code v2.1.218 o posterior, la fila resaltada en menús y paneles como `/config` y `/plugin`. |

49| [`prefersReducedMotion`](/docs/es/settings-reference#prefersreducedmotion) | Configuración | Spinners reducidos o sin spinners, shimmer y otras animaciones cuando es `true`. |49| [`prefersReducedMotion`](/docs/es/settings-reference#prefersreducedmotion) | Configuración | Spinners reducidos o sin spinners, shimmer y otras animaciones cuando es `true`. |

50| [`theme`](/docs/es/settings-reference#theme) | Configuración | Los colores de la interfaz, incluidos los temas amigables para daltónicos `dark-daltonized` y `light-daltonized`. También puede elegir uno con [`/theme`](/docs/es/commands#all-commands). |50| [`theme`](/docs/es/settings-reference#theme) | Configuración | Los colores de la interfaz, incluidos los temas amigables para daltónicos `dark-daltonized` y `light-daltonized`. También puede elegir uno con [`/theme`](/docs/es/commands#all-commands). |


60* Sin señales que dependan solo del color60* Sin señales que dependan solo del color

61* Sin redibujos de contenido que no ha cambiado. Los indicadores de progreso se renderizan como texto estático61* Sin redibujos de contenido que no ha cambiado. Los indicadores de progreso se renderizan como texto estático

62* Las tablas en las respuestas de Claude se leen como oraciones `Encabezado: valor` en lugar de una cuadrícula con caracteres de cuadro62* Las tablas en las respuestas de Claude se leen como oraciones `Encabezado: valor` en lugar de una cuadrícula con caracteres de cuadro

63* Los diffs se leen como texto plano, línea por línea, con `+` y `-` marcando las líneas agregadas y eliminadas, para que puedas escuchar el cambio propuesto en una solicitud de aprobación de edición de archivo antes de responderla

63 64 

64Claude Code deja todo lo que imprime en el historial de desplazamiento de su terminal, para que pueda releer turnos anteriores con los comandos de revisión de su lector de pantalla o la búsqueda de su terminal. Claude Code ignora la [configuración `tui`](/docs/es/settings-reference#tui) en modo lector de pantalla. Aparte de las sesiones de fondo adjuntas enumeradas en [Limitaciones conocidas](#known-limitations), imprime texto de desplazamiento en lugar de [renderizado a pantalla completa](/docs/es/fullscreen).65Claude Code deja todo lo que imprime en el historial de desplazamiento de su terminal, para que pueda releer turnos anteriores con los comandos de revisión de su lector de pantalla o la búsqueda de su terminal. Claude Code ignora la [configuración `tui`](/docs/es/settings-reference#tui) en modo lector de pantalla. Aparte de las sesiones de fondo adjuntas enumeradas en [Limitaciones conocidas](#known-limitations), imprime texto de desplazamiento en lugar de [renderizado a pantalla completa](/docs/es/fullscreen).

65 66 

66Claude Code también espera en dos puntos para que su lector de pantalla pueda mantenerse al día:67Después de que Claude Code imprime la [línea de confirmación](#turn-on-screen-reader-mode) al iniciar, espera 3 segundos antes de dibujar el prompt, para que tu lector de pantalla pueda terminar la línea. Presiona cualquier tecla para finalizar la espera. Para cambiar la duración de la espera, establece [`CLAUDE_AX_STARTUP_QUIET_MS`](/docs/es/env-vars#variables).

67 

68* Después de que Claude Code imprime la línea de confirmación, espera 3 segundos antes de dibujar el indicador, para que su lector de pantalla pueda terminar la línea. Presione cualquier tecla para finalizar la espera. Para cambiar la duración de la espera, establezca [`CLAUDE_AX_STARTUP_QUIET_MS`](/docs/es/env-vars#variables).

69* Antes de que Claude Code escriba una línea nueva o modificada, como una sugerencia o más de la respuesta de Claude, mueve el cursor al inicio de la línea y espera 50 milisegundos. Su lector de pantalla luego lee la línea desde su primer carácter. Los caracteres que escribe o elimina al final de la línea de entrada aparecen inmediatamente. Para cambiar la duración de la espera, establezca [`CLAUDE_AX_PREPARK_MS`](/docs/es/env-vars#variables).

70 68 

71Cada mensaje en la transcripción comienza con una etiqueta que su lector de pantalla anuncia, nombrando qué es: sus mensajes, las respuestas y el pensamiento de Claude, la actividad de herramientas, errores y advertencias, e indicadores. Las etiquetas también se pueden buscar, para que pueda saltar entre secciones de la transcripción buscando en el historial de desplazamiento de su terminal:69Cada mensaje en la transcripción comienza con una etiqueta que su lector de pantalla anuncia, nombrando qué es: sus mensajes, las respuestas y el pensamiento de Claude, la actividad de herramientas, errores y advertencias, e indicadores. Las etiquetas también se pueden buscar, para que pueda saltar entre secciones de la transcripción buscando en el historial de desplazamiento de su terminal:

72 70 


94 92 

95Cuando alterna [modos de permiso](/docs/es/permission-modes) con `Shift+Tab`, Claude Code anuncia el modo de permiso en el que aterriza, como `[plan mode on]` o `[accept edits on]`. Claude Code imprime el anuncio una vez y no lo repite en redibujos posteriores.93Cuando alterna [modos de permiso](/docs/es/permission-modes) con `Shift+Tab`, Claude Code anuncia el modo de permiso en el que aterriza, como `[plan mode on]` o `[accept edits on]`. Claude Code imprime el anuncio una vez y no lo repite en redibujos posteriores.

96 94 

95<h3 id="read-earlier-output-without-losing-your-place">

96 Leer la salida anterior sin perder tu lugar

97</h3>

98 

99Si tu lector de pantalla salta de vuelta al prompt mientras lees la salida anterior, está siguiendo el cursor de la terminal. Claude Code mueve el cursor de la terminal de vuelta al prompt cada vez que escribe texto nuevo.

100 

101Para mantener tu lugar mientras lees, evita que tu lector de pantalla siga el cursor de la terminal. En NVDA, presiona `NVDA+6` para que el cursor de revisión deje de seguir el cursor de la terminal. Presiona `NVDA+6` de nuevo para volver a activar el seguimiento.

102 

97<h3 id="jump-between-turns">103<h3 id="jump-between-turns">

98 Saltar entre turnos104 Saltar entre turnos

99</h3>105</h3>

admin-setup.md +22 −1

Details

123 123 

124Ninguno de estos controles llega a sesiones en Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, o [Claude Platform on AWS](/docs/es/claude-platform-on-aws). En esos proveedores, use configuración administrada en su lugar: `availableModels` para restricciones, `model` para un predeterminado, y [`maxEffortLevel`](/docs/es/settings-reference#maxeffortlevel) para un límite de esfuerzo.124Ninguno de estos controles llega a sesiones en Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, o [Claude Platform on AWS](/docs/es/claude-platform-on-aws). En esos proveedores, use configuración administrada en su lugar: `availableModels` para restricciones, `model` para un predeterminado, y [`maxEffortLevel`](/docs/es/settings-reference#maxeffortlevel) para un límite de esfuerzo.

125 125 

126[Cloud sessions](/docs/es/claude-code-on-the-web) tienen su propia superficie de administración: en la página de entornos en la nube en la configuración de administración, los Propietarios crean [entornos compartidos de organización](/docs/es/cloud-environments#organization-shared-environments) que establecen el [nivel de acceso de red](/docs/es/cloud-environments#network-access), variables de entorno y script de configuración para sesiones en la nube de los miembros. Los Propietarios eligen el entorno predeterminado de la organización por separado, en [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).126Las [sesiones en la nube](/docs/es/claude-code-on-the-web) tienen sus propias superficies de administración en claude.ai:

127 

128* **Página de entornos en la nube**: los Propietarios crean [entornos compartidos de organización](/docs/es/cloud-environments#organization-shared-environments) que establecen el [nivel de acceso de red](/docs/es/cloud-environments#network-access), las variables de entorno y el script de configuración para las sesiones en la nube de los miembros.

129* **Entorno predeterminado**: los Propietarios eligen el entorno predeterminado de la organización por separado, en [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

130* **Página de GitHub**: consulta [Cuentas de GitHub conectadas](#connected-github-accounts) para ver las cuentas de GitHub vinculadas a tu organización.

127 131 

128Las reglas de permisos y el sandboxing cubren diferentes capas. Denegar WebFetch bloquea la herramienta de búsqueda de Claude, pero si Bash está permitido, `curl` y `wget` aún pueden alcanzar cualquier URL. El sandboxing cierra esa brecha con una lista de permitidos de dominio de red aplicada a nivel del SO.132Las reglas de permisos y el sandboxing cubren diferentes capas. Denegar WebFetch bloquea la herramienta de búsqueda de Claude, pero si Bash está permitido, `curl` y `wget` aún pueden alcanzar cualquier URL. El sandboxing cierra esa brecha con una lista de permitidos de dominio de red aplicada a nivel del SO.

129 133 

130Para el modelo de amenaza que estos controles defienden, consulte [Security](/docs/es/security).134Para el modelo de amenaza que estos controles defienden, consulte [Security](/docs/es/security).

131 135 

136<h3 id="connected-github-accounts">

137 Cuentas de GitHub conectadas

138</h3>

139 

140En los planes Team y Enterprise, [**Admin settings > GitHub**](https://claude.ai/admin-settings/github) enumera las organizaciones de GitHub y las cuentas personales vinculadas a tu organización de Claude a través de la [Claude GitHub App](https://github.com/apps/claude). Claude Code, [Claude Tag](https://claude.com/docs/claude-tag/admins/configure-github) y Claude Security comparten la lista. Abrirla requiere un rol de administrador en tu organización de Claude.

141 

142Un administrador o un miembro puede vincular una cuenta:

143 

144* **Conexión de administrador**: un administrador hace clic en **Connect** en esa página e instala la Claude GitHub App en una organización de GitHub. Vincular una organización de esta manera requiere a alguien que sea a la vez propietario de la organización de GitHub y administrador de tu organización de Claude.

145* **Conexión de miembro**: cuando un miembro conecta su cuenta de GitHub a Claude, por ejemplo al [configurar sesiones en la nube](/docs/es/web-quickstart#connect-github), Claude vincula las cuentas de GitHub de las que ese miembro es propietario y en las que la Claude GitHub App ya está instalada. Eso puede incluir su cuenta personal y las organizaciones de GitHub de las que es propietario.

146 

147Una fila marcada como **Not linked** proviene de tu propio inicio de sesión en GitHub. Es una cuenta que puedes ver en GitHub en la que está instalada la Claude GitHub App.

148 

149Para desvincular una cuenta de tu organización de Claude, abre el menú de su fila y selecciona **Unlink from this workspace**. Desvincularla deja la Claude GitHub App instalada en GitHub, y la cuenta se vuelve a vincular la próxima vez que uno de sus propietarios conecte GitHub a Claude. Para evitar que se vuelva a vincular, desinstala la Claude GitHub App de esa cuenta en GitHub.

150 

151En los planes Enterprise, los tipos de actividad de la [Compliance API](https://platform.claude.com/docs/en/api/compliance/activities/list) para vincular y desvincular son `github_app_installation_linked` y `github_app_installation_unlinked`.

152 

132<h2 id="set-up-usage-visibility">153<h2 id="set-up-usage-visibility">

133 Configurar visibilidad de uso154 Configurar visibilidad de uso

134</h2>155</h2>

Details

325 325 

326Algunas estrategias para agentes de larga duración:326Algunas estrategias para agentes de larga duración:

327 327 

328* **Use subagentes para subtareas.** Cada subagente comienza con una conversación nueva (sin historial de mensajes anterior, aunque carga su propio prompt del sistema y contexto a nivel de proyecto como CLAUDE.md). No ve los turnos del padre, y solo su respuesta final regresa al padre como resultado de herramienta. El contexto del agente principal crece por ese resumen, no por la transcripción completa de subtarea. Vea [Qué heredan los subagentes](/docs/es/agent-sdk/subagents#what-subagents-inherit) para detalles.328* **Usa subagentes para subtareas.** Cada subagente comienza con una conversación nueva (sin historial de mensajes anterior, aunque carga su propio prompt del sistema y contexto a nivel de proyecto como CLAUDE.md). No ve los turnos del padre, y solo su respuesta final regresa al padre. El contexto del agente principal crece por ese resumen, no por la transcripción completa de la subtarea. Consulta [Qué heredan los subagentes](/docs/es/agent-sdk/subagents#what-subagents-inherit) para más detalles.

329* **Sea selectivo con herramientas.** Cada definición de herramienta toma espacio de contexto. Use el campo `tools` en [`AgentDefinition`](/docs/es/agent-sdk/subagents#agentdefinition-configuration) para limitar subagentes al conjunto mínimo que necesitan.329* **Sea selectivo con herramientas.** Cada definición de herramienta toma espacio de contexto. Use el campo `tools` en [`AgentDefinition`](/docs/es/agent-sdk/subagents#agentdefinition-configuration) para limitar subagentes al conjunto mínimo que necesitan.

330* **Observe costos de servidor MCP.** [Búsqueda de herramientas MCP](/docs/es/agent-sdk/mcp#mcp-tool-search) difiere esquemas de herramientas MCP por defecto y los carga bajo demanda. Cuando la búsqueda de herramientas está desactivada o ha retrocedido a carga anticipada, cada servidor MCP agrega todos sus esquemas de herramientas a cada solicitud, así que algunos servidores con muchas herramientas pueden consumir contexto significativo antes de que el agente haga ningún trabajo. Vea [Configurar búsqueda de herramientas](/docs/es/agent-sdk/tool-search#configure-tool-search) para las configuraciones donde se aplica el retroceso.330* **Observe costos de servidor MCP.** [Búsqueda de herramientas MCP](/docs/es/agent-sdk/mcp#mcp-tool-search) difiere esquemas de herramientas MCP por defecto y los carga bajo demanda. Cuando la búsqueda de herramientas está desactivada o ha retrocedido a carga anticipada, cada servidor MCP agrega todos sus esquemas de herramientas a cada solicitud, así que algunos servidores con muchas herramientas pueden consumir contexto significativo antes de que el agente haga ningún trabajo. Vea [Configurar búsqueda de herramientas](/docs/es/agent-sdk/tool-search#configure-tool-search) para las configuraciones donde se aplica el retroceso.

331* **Use esfuerzo más bajo para tareas rutinarias.** Establezca [esfuerzo](#effort-level) a `"low"` para agentes que solo necesitan leer archivos o listar directorios. Esto reduce el uso de tokens y el costo.331* **Use esfuerzo más bajo para tareas rutinarias.** Establezca [esfuerzo](#effort-level) a `"low"` para agentes que solo necesitan leer archivos o listar directorios. Esto reduce el uso de tokens y el costo.

Details

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

261 261 

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

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

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

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

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

267 267 

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

269 269 

Details

1488Utilice con el campo `betas` en `ClaudeAgentOptions` para habilitar características beta.1488Utilice con el campo `betas` en `ClaudeAgentOptions` para habilitar características beta.

1489 1489 

1490<Warning>1490<Warning>

1491 La beta `context-1m-2025-08-07` se retiró a partir del 30 de abril de 2026. Pasar este encabezado con Claude Sonnet 4.5 o Sonnet 4 no tiene efecto, y las solicitudes que exceden la ventana de contexto estándar de 200k tokens devuelven un error. Para usar una ventana de contexto de 1M tokens, migre a [Claude Opus 5.5, Claude Opus 5, Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7, o Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/overview), que incluyen contexto de 1M a precios estándar sin encabezado beta requerido.1491 En la Claude API, la beta `context-1m-2025-08-07` está retirada para Claude Sonnet 4.5 y Claude Sonnet 4. Si todavía la pasas con cualquiera de esos modelos, las solicitudes que superan la ventana de contexto estándar de 200K tokens devuelven un error, así que elimínala de `betas`. Para ejecutar una sesión con una ventana de contexto de 1M tokens, establece `model` en un modelo que [se ejecute con la ventana de 1M de forma predeterminada](/docs/es/model-config#extended-context), como `claude-sonnet-5-5` o `claude-opus-5-5`. Para un modelo que alcanza 1M solo mediante su variante `[1m]`, agrega el sufijo al ID del modelo, como en `claude-opus-4-6[1m]`.

1492</Warning>1492</Warning>

1493 1493 

1494<h3 id="mcpsdkserverconfig">1494<h3 id="mcpsdkserverconfig">

Details

92 Sandbox runtime92 Sandbox runtime

93</h3>93</h3>

94 94 

95Para aislamiento ligero sin contenedores, [sandbox-runtime](https://github.com/anthropic-experimental/sandbox-runtime) aplica restricciones de sistema de archivos y red a nivel del SO.95Para aislamiento ligero sin contenedores, [sandbox-runtime](https://github.com/anthropics/sandbox-runtime) aplica restricciones de sistema de archivos y red a nivel del SO.

96 96 

97La principal ventaja es la simplicidad: no se requiere configuración de Docker, imágenes de contenedor o configuración de red. El proxy y las restricciones del sistema de archivos están integrados.97La principal ventaja es la simplicidad: no se requiere configuración de Docker, imágenes de contenedor o configuración de red. El proxy y las restricciones del sistema de archivos están integrados.

98 98 


164 164 

165Con `--network none`, el contenedor no tiene interfaces de red en absoluto. La única forma para que el agente alcance el mundo exterior es a través del socket Unix montado, que se conecta a un proxy ejecutándose en el host. Este proxy puede aplicar listas de permitidos de dominios, inyectar credenciales y registrar todo el tráfico.165Con `--network none`, el contenedor no tiene interfaces de red en absoluto. La única forma para que el agente alcance el mundo exterior es a través del socket Unix montado, que se conecta a un proxy ejecutándose en el host. Este proxy puede aplicar listas de permitidos de dominios, inyectar credenciales y registrar todo el tráfico.

166 166 

167Esta es la misma arquitectura utilizada por [sandbox-runtime](https://github.com/anthropic-experimental/sandbox-runtime). Incluso si el agente se ve comprometido a través de inyección de indicaciones, no puede exfiltrar datos a servidores arbitrarios. Solo puede comunicarse a través del proxy, que controla qué dominios son alcanzables. Para más detalles, consulte la [publicación del blog de sandboxing de Claude Code](https://www.anthropic.com/engineering/claude-code-sandboxing).167Esta es la misma arquitectura utilizada por [sandbox-runtime](https://github.com/anthropics/sandbox-runtime). Incluso si el agente se ve comprometido a través de inyección de prompts, no puede exfiltrar datos a servidores arbitrarios. Solo puede comunicarse a través del proxy, que controla qué dominios son alcanzables. Para más detalles, consulta la [publicación del blog de sandboxing de Claude Code](https://www.anthropic.com/engineering/claude-code-sandboxing).

168 168 

169**Opciones de endurecimiento adicionales:**169**Opciones de endurecimiento adicionales:**

170 170 


385* [Documentación de seguridad de Claude Code](/docs/es/security)385* [Documentación de seguridad de Claude Code](/docs/es/security)

386* [Alojamiento del Agent SDK](/docs/es/agent-sdk/hosting)386* [Alojamiento del Agent SDK](/docs/es/agent-sdk/hosting)

387* [Manejo de permisos](/docs/es/agent-sdk/permissions)387* [Manejo de permisos](/docs/es/agent-sdk/permissions)

388* [Sandbox runtime](https://github.com/anthropic-experimental/sandbox-runtime)388* [Sandbox runtime](https://github.com/anthropics/sandbox-runtime)

389* [The Lethal Trifecta for AI Agents](https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/)389* [The Lethal Trifecta for AI Agents](https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/)

390* [OWASP Top 10 for LLM Applications](https://owasp.org/www-project-top-10-for-large-language-model-applications/)390* [OWASP Top 10 for LLM Applications](https://owasp.org/www-project-top-10-for-large-language-model-applications/)

391* [Docker Security Best Practices](https://docs.docker.com/engine/security/)391* [Docker Security Best Practices](https://docs.docker.com/engine/security/)

Details

378</h2>378</h2>

379 379 

380<Note>380<Note>

381 Para skills de proyecto y personales, Claude Code aplica el campo frontmatter [`allowed-tools`](/docs/es/skills#pre-approve-tools-for-a-skill) en sesiones del SDK. También puede preautorizar herramientas para estas skills a través de la opción `allowedTools` (`allowed_tools` en Python) en su configuración de consulta. Las skills [sincronizadas desde claude.ai](/docs/es/skills#how-claude-code-handles-the-frontmatter-of-a-synced-skill) siguen sus propias reglas de frontmatter.381 En sesiones del SDK, puedes preaprobar herramientas para un skill de proyecto o personal con el frontmatter [`allowed-tools`](/docs/es/skills#pre-approve-tools-for-a-skill) del skill o con la opción `allowedTools` (`allowed_tools` en Python) en tu configuración de consulta. Si tu organización establece [`allowManagedPermissionRulesOnly`](/docs/es/settings-reference#allowmanagedpermissionrulesonly) en la configuración administrada, Claude Code ignora ambos. Los skills [sincronizados desde claude.ai](/docs/es/skills#how-claude-code-handles-the-frontmatter-of-a-synced-skill) siguen sus propias reglas de frontmatter.

382</Note>382</Note>

383 383 

384Las skills se ejecutan con las herramientas de la sesión. El ejemplo a continuación preaprueba `Read`, `Grep` y `Glob` con `allowedTools` (`allowed_tools` en Python), así que Claude puede inspeccionar archivos mientras ejecuta la [skill security-check](#create-and-dispatch-your-first-skill) sin detenerse para aprobación:384Las skills se ejecutan con las herramientas de la sesión. El ejemplo a continuación preaprueba `Read`, `Grep` y `Glob` con `allowedTools` (`allowed_tools` en Python), así que Claude puede inspeccionar archivos mientras ejecuta la [skill security-check](#create-and-dispatch-your-first-skill) sin detenerse para aprobación:

Details

166 166 

167Cuando ejecuta el ejemplo, la versión de TypeScript imprime cada respuesta a medida que se completa. El bucle `receive_response()` de la versión de Python termina en el primer mensaje de resultado, por lo que imprime el análisis de seguridad; para leer ambas respuestas, use un par `query()` y `receive_response()` por mensaje como se muestra en el [ejemplo de referencia de Python sobre cómo continuar una conversación](/docs/es/agent-sdk/python#example-continuing-a-conversation).167Cuando ejecuta el ejemplo, la versión de TypeScript imprime cada respuesta a medida que se completa. El bucle `receive_response()` de la versión de Python termina en el primer mensaje de resultado, por lo que imprime el análisis de seguridad; para leer ambas respuestas, use un par `query()` y `receive_response()` por mensaje como se muestra en el [ejemplo de referencia de Python sobre cómo continuar una conversación](/docs/es/agent-sdk/python#example-continuing-a-conversation).

168 168 

169Si falta el `source` de un bloque de imagen o no es un objeto, el SDK no reporta un error. Claude Code envía a Claude una nota de texto en lugar de la imagen, como `[Image could not be processed: image block has no source object]`, y la sesión continúa.

170 

169<Note>171<Note>

170 En el SDK de TypeScript, si su generador de mensajes lanza una excepción, por ejemplo cuando falta un archivo que lee, la secuencia termina con un error que dice `Claude Code process aborted by user` en lugar del error original, así que verifique el código dentro de su generador primero cuando vea ese mensaje. El error también puede estar precedido por una línea minificada larga del código fuente del SDK agrupado, así que lea hasta el final de la salida para encontrar el texto del error.172 En el SDK de TypeScript, si su generador de mensajes lanza una excepción, por ejemplo cuando falta un archivo que lee, la secuencia termina con un error que dice `Claude Code process aborted by user` en lugar del error original, así que verifique el código dentro de su generador primero cuando vea ese mensaje. El error también puede estar precedido por una línea minificada larga del código fuente del SDK agrupado, así que lea hasta el final de la salida para encontrar el texto del error.

171 173 

Details

204| Definiciones de herramientas (heredadas del padre o el subconjunto en `tools`, [filtrado para ejecuciones en segundo plano](/docs/es/sub-agents#available-tools)) | El prompt del sistema del padre |204| Definiciones de herramientas (heredadas del padre o el subconjunto en `tools`, [filtrado para ejecuciones en segundo plano](/docs/es/sub-agents#available-tools)) | El prompt del sistema del padre |

205 205 

206<Note>206<Note>

207 El padre recibe el mensaje final del subagente como resultado de la herramienta Agent, pero puede resumirlo en su propia respuesta. Para preservar la salida del subagente textualmente en la respuesta visible para el usuario, incluya una instrucción para hacerlo en el prompt u opción `systemPrompt` que pase a la llamada principal `query()`.207 El padre recibe el informe final del subagente, pero puede resumirlo en su propia respuesta. Para preservar la salida del subagente textualmente en la respuesta visible para el usuario, incluye una instrucción para hacerlo en el prompt u opción `systemPrompt` que pases a la llamada principal `query()`.

208 208 

209 En v2.1.210 y posteriores, Claude Code [escanea el mensaje final en busca de patrones con forma de instrucción](/docs/es/sub-agents#subagent-output-scanning) antes de que el padre lo lea. El escaneo trata tres tipos de patrón de manera diferente:209 En v2.1.210 y posteriores, Claude Code [escanea el mensaje final en busca de patrones con forma de instrucción](/docs/es/sub-agents#subagent-output-scanning) antes de que el padre lo lea. El escaneo trata tres tipos de patrón de manera diferente:

210 210 

Details

1549 1549 

1550El campo `message` es un [`BetaMessage`](https://platform.claude.com/docs/en/api/messages/create) del SDK de Anthropic. Incluye campos como `id`, `content`, `model`, `stop_reason` y `usage`.1550El campo `message` es un [`BetaMessage`](https://platform.claude.com/docs/en/api/messages/create) del SDK de Anthropic. Incluye campos como `id`, `content`, `model`, `stop_reason` y `usage`.

1551 1551 

1552`SDKAssistantMessageError` es uno de: `'authentication_failed'`, `'oauth_org_not_allowed'`, `'account_on_hold'`, `'billing_error'`, `'rate_limit'`, `'overloaded'`, `'invalid_request'`, `'model_not_found'`, `'server_error'`, `'max_output_tokens'`, `'cloud_credential_error'`, o `'unknown'`. Cuatro de estos valores significan más de lo que sus nombres dicen:1552`SDKAssistantMessageError` es uno de: `'authentication_failed'`, `'oauth_org_not_allowed'`, `'account_on_hold'`, `'billing_error'`, `'rate_limit'`, `'overloaded'`, `'invalid_request'`, `'model_not_found'`, `'server_error'`, `'max_output_tokens'`, `'cloud_credential_error'` o `'unknown'`. Cuatro de estos valores significan más de lo que dicen sus nombres:

1553 1553 

1554* `'model_not_found'`: el modelo seleccionado no existe o no está disponible para su cuenta o implementación1554* `'model_not_found'`: el modelo seleccionado no existe o no está disponible para tu cuenta o despliegue

1555* `'overloaded'`: la API devolvió un 529 porque el servidor está a capacidad, a diferencia de `'rate_limit'`, que es un 429 contra su cuota1555* `'overloaded'`: la API devolvió un 529 porque el servidor está a plena capacidad, a diferencia de `'rate_limit'`, que es un 429 contra tu cuota

1556* `'account_on_hold'`: [su cuenta está en espera](/docs/es/errors#your-account-is-on-hold)1556* `'account_on_hold'`: [tu cuenta está en espera](/docs/es/errors#your-account-is-on-hold)

1557* `'cloud_credential_error'`: Claude Code no pudo obtener credenciales de AWS o Google Cloud utilizables en la máquina en la que se ejecuta, por lo que ninguna solicitud llegó al proveedor de nube. La causa habitual es un inicio de sesión en la nube que expiró o nunca se completó en esa máquina, aunque un servicio de credenciales brevemente inaccesible reporta el mismo valor. Consulte [No se pudieron cargar las credenciales de AWS o Google Cloud](/docs/es/errors#could-not-load-aws-or-google-cloud-credentials). Requiere TypeScript Agent SDK v0.3.267 o posterior, que incluye Claude Code v2.1.2671557* `'cloud_credential_error'`: Claude Code no pudo obtener credenciales de AWS o Google Cloud utilizables en la máquina en la que se ejecuta, por lo que ninguna solicitud llegó al proveedor de nube. La causa habitual es un inicio de sesión en la nube que expiró o que nunca se completó en esa máquina, aunque un servicio de credenciales brevemente inaccesible reporta el mismo valor. Consulta [No se pudieron cargar las credenciales de AWS o Google Cloud](/docs/es/errors#could-not-load-aws-or-google-cloud-credentials). Requiere TypeScript Agent SDK v0.3.267 o posterior, que incluye Claude Code v2.1.267

1558 1558 

1559`aborted` es `true` cuando una interrupción o cancelación truncó el mensaje del asistente antes de que la transmisión se completara: el mensaje no tiene `stop_reason` y el contenido puede terminar a mitad de palabra. El campo está ausente en los mensajes completados normalmente. Requiere Agent SDK v0.3.214 o posterior.1559`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.

1560 1560 

1561Claude Code establece `user_message_uuid` y `user_message_uuids` en el primer mensaje del asistente del turno, bajo las condiciones en [`user_message_uuid`](#user_message_uuid). Cuando Claude Code vuelve a ejecutar un turno que una reiniciación interrumpió, los mensajes del asistente de la re-ejecución que llevan esos campos también llevan [`resume_reason`](#resume_reason).1561Claude Code establece `user_message_uuid` y `user_message_uuids` en el primer mensaje del asistente del turno, bajo las condiciones descritas en [`user_message_uuid`](#user_message_uuid). Cuando Claude Code vuelve a ejecutar un turno que un reinicio interrumpió, los mensajes del asistente de la nueva ejecución que llevan esos campos también llevan [`resume_reason`](#resume_reason).

1562 1562 

1563`timestamp` es la hora ISO 8601 cuando el contenido del mensaje terminó de generarse en el proceso que lo produjo. El valor proviene del reloj de esa máquina, así que úselo solo para mostrar y no ordene los mensajes por él. Un turno de API puede producir varios mensajes del asistente que comparten un `message.id`, cada uno con su propio `timestamp`. Cuando el campo está ausente, recurra a la hora en que recibió el mensaje.1563`timestamp` es la hora ISO 8601 en que el contenido del mensaje terminó de generarse en el proceso que lo produjo. El valor proviene del reloj de esa máquina, así que úsalo solo para mostrarlo y no ordenes los mensajes según él. Un turno de API puede producir varios mensajes del asistente que comparten un `message.id`, cada uno con su propio `timestamp`. Cuando el campo está ausente, recurre a la hora en que recibiste el mensaje.

1564 1564 

1565`context_usage` es una copia estructurada del informe `/context`, escrita como [`SDKContextUsage`](#sdkcontextusage), y requiere Agent SDK v0.3.232 o posterior. Cuando envía `/context` como un prompt, Claude Code entrega el informe como un mensaje del asistente cuyo `message.content` contiene la tabla de markdown, y adjunta `context_usage` a ese mismo mensaje. Claude Code no establece el campo en ningún otro mensaje del asistente, y las versiones anteriores entregan la tabla `/context` sin él, así que lea el desglose del campo cuando esté presente y recurra al texto de markdown cuando no lo esté.1565`context_usage` es una copia estructurada del informe de `/context`, con el tipo [`SDKContextUsage`](#sdkcontextusage), y requiere Agent SDK v0.3.232 o posterior. Cuando envías `/context` como prompt, Claude Code entrega el informe como un mensaje del asistente cuyo `message.content` contiene la tabla en markdown, y adjunta `context_usage` a ese mismo mensaje. Claude Code no establece el campo en ningún otro mensaje del asistente, y las versiones anteriores entregan la tabla de `/context` sin él, así que lee el desglose del campo cuando esté presente y recurre al texto en markdown cuando no lo esté.

1566 1566 

1567<h3 id="sdkusermessage">1567<h3 id="sdkusermessage">

1568 `SDKUserMessage`1568 `SDKUserMessage`


1587};1587};

1588```1588```

1589 1589 

1590Establezca `pasted_content` para enviar contenido que el usuario pegó en su interfaz de prompt en lugar de escribir, una entrada por pegado, cada una una cadena o una matriz de bloques de contenido. Claude Code añade el texto de cada entrada después del texto escrito, en orden, y puede envolver cada pegado en etiquetas `<pasted_content>`. Los bloques que no sean texto se ignoran, así que envíe imágenes y documentos en `message.content`. Requiere Agent SDK v0.3.277 o posterior.1590Establece `pasted_content` para enviar contenido que el usuario pegó en tu interfaz de prompt en lugar de escribirlo, una entrada por pegado, cada una como una cadena o una matriz de bloques de contenido. Claude Code añade el texto de cada entrada después del texto escrito, en orden, y puede envolver cada pegado en etiquetas `<pasted_content>`. Los bloques que no son de texto se ignoran, así que envía imágenes y documentos en `message.content`. Requiere Agent SDK v0.3.277 o posterior.

1591 1591 

1592Establezca `shouldQuery` o `client_composed` para cambiar cómo Claude Code maneja un mensaje que envía:1592Establece `shouldQuery` o `client_composed` para cambiar cómo Claude Code maneja un mensaje que envías:

1593 1593 

1594* `shouldQuery`: establézcalo en `false` para añadir el mensaje a la transcripción sin activar un turno del asistente. El mensaje se retiene y se fusiona en el siguiente mensaje del usuario que sí activa un turno. Úselo para inyectar contexto, como la salida de un comando que ejecutó fuera de banda, sin gastar una llamada de modelo en él.1594* `shouldQuery`: establécelo en `false` para añadir el mensaje a la transcripción sin activar un turno del asistente. El mensaje se retiene y se fusiona con el siguiente mensaje del usuario que sí activa un turno. Úsalo para inyectar contexto, como la salida de un comando que ejecutaste fuera de banda, sin gastar una llamada al modelo en él.

1595* `client_composed`: establézcalo en `true` para que Claude Code entregue el texto del mensaje tal como está escrito. Claude Code entonces no expande menciones `@path` o [`@server:resource`](/docs/es/mcp#use-mcp-resources), y no ejecuta texto que comience con `/` como un comando. Mientras la opción [`verbatimPrompts`](#options) está activada, el SDK establece el campo en cada mensaje. Requiere TypeScript Agent SDK v0.3.280 o posterior y Claude Code v2.1.248 o posterior.1595* `client_composed`: establécelo en `true` para que Claude Code entregue el texto del mensaje tal como está escrito. Claude Code entonces no expande las menciones `@path` ni [`@server:resource`](/docs/es/mcp#use-mcp-resources), y no ejecuta como comando el texto que empieza con `/`. Mientras la opción [`verbatimPrompts`](#options) está activada, el SDK establece el campo en cada mensaje. Requiere TypeScript Agent SDK v0.3.280 o posterior y Claude Code v2.1.248 o posterior.

1596 1596 

1597En un mensaje que lleva un bloque `tool_result`, `tool_use_result` es el objeto de salida estructurado de la herramienta en lugar del texto enviado al modelo. Su forma depende de la herramienta nombrada por el bloque `tool_use` coincidente, así que el campo se escribe `unknown`; las formas integradas se enumeran en [Tipos de Salida de Herramientas](#tool-output-types).1597En un mensaje que lleva un bloque `tool_result`, `tool_use_result` es el objeto de salida estructurado de la herramienta en lugar del texto enviado al modelo. Su forma depende de la herramienta nombrada por el bloque `tool_use` correspondiente, así que el campo tiene el tipo `unknown`; las formas integradas se enumeran en [Tipos de Salida de Herramientas](#tool-output-types).

1598 1598 

1599Para la herramienta `Agent`, `tool_use_result` es [`AgentOutput`](#agent-2). En un resultado `completed`, `content` contiene el informe del subagente sin el ID del agente y el tráiler de uso que Claude Code añade al texto `tool_result`, así que renderice desde `tool_use_result` en lugar de analizar ese texto.1599Para la herramienta `Agent`, `tool_use_result` es [`AgentOutput`](#agent-2). Renderiza a partir de él en lugar de analizar el texto de `tool_result`. El `content` de un resultado `completed` contiene el informe del subagente o, para un subagente cuyo informe pasa por una llamada a la herramienta `SubagentHandback`, una nota breve sobre esa entrega en lugar del informe. En [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) en Claude Code v2.1.271 o posterior, todo subagente que produce un resultado `completed` informa de esa manera, a menos que sea una [bifurcación](/docs/es/sub-agents#fork-the-current-conversation), y Claude recibe el informe como un mensaje separado del subagente.

1600 1600 

1601Para una herramienta MCP cuyo resultado contiene bloques `resource_link`, `tool_use_result` es un objeto con una matriz `resourceLinks` de entradas [`SDKMcpResourceLink`](#sdkmcpresourcelink). Claude recibe cada enlace como una línea de texto en el bloque `tool_result`, así que lea `resourceLinks` para renderizar los archivos que el servidor devolvió en lugar de analizar ese texto. Claude Code omite `resourceLinks` cuando el resultado no tiene enlaces y en resultados de subagentes, mantiene como máximo 50 enlaces por resultado, y deja de añadir enlaces una vez que la matriz alcanza 64 KiB de JSON serializado. `resourceLinks` requiere Agent SDK v0.3.257 o posterior.1601Para una herramienta MCP cuyo resultado contiene bloques `resource_link`, `tool_use_result` es un objeto con una matriz `resourceLinks` de entradas [`SDKMcpResourceLink`](#sdkmcpresourcelink). Claude recibe cada enlace como una línea de texto en el bloque `tool_result`, así que lee `resourceLinks` para renderizar los archivos que devolvió el servidor en lugar de analizar ese texto. Claude Code omite `resourceLinks` cuando el resultado no tiene enlaces y en los resultados de subagentes, conserva como máximo 50 enlaces por resultado y deja de añadir enlaces una vez que la matriz alcanza 64 KiB de JSON serializado. `resourceLinks` requiere Agent SDK v0.3.257 o posterior.

1602 1602 

1603Establezca `inline_pastes` para indicar a Claude Code qué partes de `message.content` el usuario pegó en lugar de escribir, una cadena por pegado. El texto del prompt permanece donde el usuario lo puso. Claude Code puede envolver cada pegado listado en etiquetas `<pasted_content>` donde se encuentra, para que Claude pueda distinguir el material pegado de las propias palabras del usuario. Solo los pegados en el último bloque de texto del prompt se envuelven. Requiere TypeScript Agent SDK v0.3.280 o posterior.1603Establece `inline_pastes` para indicarle a Claude Code qué partes de `message.content` pegó el usuario en lugar de escribirlas, una cadena por pegado. El texto del prompt permanece donde el usuario lo puso. Claude Code puede envolver cada pegado listado en etiquetas `<pasted_content>` en el lugar donde se encuentra, para que Claude pueda distinguir el material pegado de las propias palabras del usuario. Solo se envuelven los pegados del último bloque de texto del prompt. Requiere TypeScript Agent SDK v0.3.280 o posterior.

1604 1604 

1605<h3 id="sdkusermessagereplay">1605<h3 id="sdkusermessagereplay">

1606 `SDKUserMessageReplay`1606 `SDKUserMessageReplay`

1607</h3>1607</h3>

1608 1608 

1609Mensaje de usuario reproducido con UUID requerido.1609Mensaje de usuario reproducido con UUID obligatorio.

1610 1610 

1611```typescript theme={null}1611```typescript theme={null}

1612type SDKUserMessageReplay = {1612type SDKUserMessageReplay = {


1623};1623};

1624```1624```

1625 1625 

1626Un turno de usuario inyectado desde fuera de la sesión, uno cuyo [`origin`](#sdkmessageorigin) es `peer` o `channel`, llega a la transmisión como una reproducción ya sea que se entregara durante un turno activo o iniciara un nuevo turno mientras la sesión estaba inactiva. Antes de v2.1.207, un turno inyectado entregado mientras la sesión estaba inactiva no producía ningún mensaje en la transmisión y solo aparecía cuando volvía a leer la transcripción.1626Un turno de usuario inyectado desde fuera de la sesión, es decir, uno cuyo tipo de [`origin`](#sdkmessageorigin) es `peer` o `channel`, llega al stream como una reproducción, tanto si se entregó durante un turno activo como si inició un nuevo turno mientras la sesión estaba inactiva. Antes de v2.1.207, un turno inyectado que se entregaba mientras la sesión estaba inactiva no producía ningún mensaje en el stream y solo aparecía cuando volvías a leer la transcripción.

1627 1627 

1628<h3 id="sdkresultmessage">1628<h3 id="sdkresultmessage">

1629 `SDKResultMessage`1629 `SDKResultMessage`


1701 };1701 };

1702```1702```

1703 1703 

1704Varios campos en el resultado llevan detalles de diagnóstico más allá de `subtype`:1704Varios campos del resultado llevan detalles de diagnóstico más allá de `subtype`:

1705 1705 

1706* `api_error_status`: el código de estado HTTP del error de API que terminó la conversación. Ausente o `null` cuando el turno terminó sin un error de API.1706* `api_error_status`: el código de estado HTTP del error de API que terminó la conversación. Ausente o `null` cuando el turno terminó sin un error de API.

1707* `ttft_ms`: tiempo hasta el primer token en milisegundos, medido cuando llega el primer mensaje del asistente completo. Presente solo en el brazo de éxito.1707* `ttft_ms`: tiempo hasta el primer token en milisegundos, medido cuando llega el primer mensaje completo del asistente. Presente solo en la rama de éxito.

1708* `ttft_stream_ms`: tiempo en milisegundos hasta el primer evento de transmisión `message_start`, cuando se abre la transmisión de respuesta. Menor que `ttft_ms`; la brecha entre los dos es el tiempo dedicado a transmitir el primer mensaje. Presente solo en el brazo de éxito.1708* `ttft_stream_ms`: tiempo en milisegundos hasta el primer evento de streaming `message_start`, cuando se abre el stream de respuesta. Es menor que `ttft_ms`; la diferencia entre ambos es el tiempo dedicado a transmitir en streaming el primer mensaje. Presente solo en la rama de éxito.

1709* `user_message_uuid`: el `uuid` del mensaje que envió que este turno respondió. Consulte [`user_message_uuid`](#user_message_uuid) para saber qué resultados lo llevan.1709* `user_message_uuid`: el `uuid` del mensaje que enviaste y que este turno respondió. Consulta [`user_message_uuid`](#user_message_uuid) para saber qué resultados lo llevan.

1710* `user_message_uuids`: los `uuid`s de cada mensaje que envió que Claude Code respondió en este turno. Consulte [`user_message_uuids`](#user_message_uuids).1710* `user_message_uuids`: los `uuid` de cada mensaje que enviaste y que Claude Code respondió en este turno. Consulta [`user_message_uuids`](#user_message_uuids).

1711* `resume_reason`: por qué Claude Code volvió a ejecutar este turno después de que una reiniciación lo interrumpió. Presente en ambos brazos, y solo en tal re-ejecución. Consulte [`resume_reason`](#resume_reason).1711* `resume_reason`: por qué Claude Code volvió a ejecutar este turno después de que un reinicio lo interrumpiera. Presente en ambas ramas, y solo en esa nueva ejecución. Consulta [`resume_reason`](#resume_reason).

1712*1712* `local_command`: el nombre del comando que despachó el turno, en el resultado de éxito de un turno que un comando completó sin entrar en el bucle del agente, como `/compact`. El nombre se convierte a letras minúsculas y guiones bajos, así que `/reload-plugins` reporta `reload_plugins`. Un comando que proporciona un servidor MCP, y el `/mcp` integrado, reportan `mcp`. Un comando que definiste tú mismo reporta `custom`. Los argumentos nunca se incluyen. Ausente en todo turno que entró en el bucle del agente y en los envíos que no ejecutaron ningún comando. Requiere Agent SDK v0.3.268 o posterior.

1713 1713* `request_sent_wall_ms`: milisegundos de época en los que Claude Code despachó la solicitud de API, para cruzarlos con marcas de tiempo del lado del servidor. Presente solo junto con [`user_message_uuid`](#user_message_uuid), en un resultado de éxito con `is_error` en false cuyo turno envió una solicitud de API.

1714`local_command`: el nombre del comando que el turno envió, en el resultado de éxito de un turno que un comando completó sin entrar en el bucle del agente, como `/compact`. El nombre se pliega a letras minúsculas y guiones bajos, así que `/reload-plugins` reporta `reload_plugins`. Un comando que un servidor MCP proporciona, y el `/mcp` integrado, reportan `mcp`. Un comando que definió usted mismo reporta `custom`. Los argumentos nunca se incluyen. Ausente en cada turno que entró en el bucle del agente y en envíos que no ejecutaron ningún comando. Requiere Agent SDK v0.3.268 o posterior.1714* `first_content_frame_ms`: tiempo en milisegundos hasta el primer evento de streaming `content_block_start` o `content_block_delta`, contando los bloques de pensamiento como contenido. Presente solo en la rama de éxito, cuando `is_error` es false. Requiere Agent SDK v0.3.260 o posterior.

1715 1715* `first_stream_post_ms`, `first_stream_post_ack_ms`, `first_stream_post_wall_ms`: tiempos de la carga del primer evento de streaming del turno. Claude Code los registra solo en las sesiones que transmite en streaming a claude.ai, como las [sesiones en la nube](/docs/es/claude-code-on-the-web), y los resultados que produce `query()` no los llevan. Requiere Agent SDK v0.3.260 o posterior.

1716* `request_sent_wall_ms`: milisegundos de época en los que Claude Code envió la solicitud de API, para uniones contra marcas de tiempo del lado del servidor. Presente solo junto con [`user_message_uuid`](#user_message_uuid), en un resultado de éxito con `is_error` false cuyo turno envió una solicitud de API.1716* `usage`: solo el bucle del agente principal. Excluye las llamadas de subagentes y de modelos auxiliares, y es por turno en las sesiones con entrada en streaming. Prefiere `modelUsage` para la contabilidad de tokens y costos.

1717*1717* `modelUsage`: totales por modelo de cada llamada al modelo realizada a través del pipeline de consultas durante esta llamada a `query()`, incluidos el bucle principal, los subagentes y las llamadas internas como la compactación y los agentes de Workflow. Se excluyen las llamadas auxiliares fuera de ese pipeline, como el clasificador de permisos y las solicitudes de conteo de tokens. Una llamada que reanuda una sesión también cuenta los [totales por modelo restaurados de las llamadas anteriores de la sesión](/docs/es/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). En las sesiones con entrada en streaming, los totales son acumulativos entre turnos, así que lee el resultado más reciente en lugar de sumar entre resultados. Consulta [Rastrear costos en modo de entrada en streaming](/docs/es/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode) para los reinicios y [Recuperar totales después de un fallo de la sesión](/docs/es/agent-sdk/cost-tracking#recover-totals-after-a-session-crash) para los resultados puestos a cero.

1718 1718* `total_cost_usd`: costo estimado acumulativo en USD, que cubre las mismas llamadas que `modelUsage` y se reinicia en los mismos puntos. Una llamada que reanuda una sesión también cuenta los [totales restaurados de las llamadas anteriores de la sesión](/docs/es/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). Es una estimación, no un estado de facturación. Consulta [Rastrear costo y uso](/docs/es/agent-sdk/cost-tracking) para conocer las salvedades sobre su precisión.

1719`first_content_frame_ms`: tiempo en milisegundos hasta el primer evento de transmisión `content_block_start` o `content_block_delta`, contando bloques de pensamiento como contenido. Presente solo en el brazo de éxito, cuando `is_error` es false. Requiere Agent SDK v0.3.260 o posterior.1719* `queued_turn_count`: el número de mensajes que enviaste con `origin: { kind: "human" }` que aún están esperando cuando Claude Code produjo el resultado. Consulta [`queued_turn_count`](#queued_turn_count) para saber qué te indican `0` y un campo ausente.

1720 1720* `result_index`: la posición de este resultado en el orden de entrega de la ejecución, contando desde 0 entre todos los resultados que escribe el proceso. Presente en ambas ramas. Un resultado cuya escritura falla igualmente consume su número, así que un hueco en la secuencia significa que se perdió un resultado. Requiere Agent SDK v0.3.268 o posterior.

1721*1721* `startup_failure_reason`: por qué Claude Code se negó a iniciar, en el resultado `error_during_execution` que escribe antes de salir ante un fallo de inicio conocido. Consulta [`startup_failure_reason`](#startup_failure_reason) para ver los valores y qué fallos lo llevan. Requiere Agent SDK v0.3.274 o posterior.

1722 1722* `terminal_reason`: por qué terminó el bucle. Uno de `"completed"`, `"max_turns"`, `"tool_deferred"`, `"aborted_streaming"`, `"aborted_tools"`, `"hook_stopped"`, `"stop_hook_prevented"`, `"background_requested"`, `"blocking_limit"`, `"rapid_refill_breaker"`, `"prompt_too_long"`, `"image_error"`, `"model_error"`, `"api_error"`, `"malformed_tool_use_exhausted"`, `"budget_exhausted"`, `"structured_output_retry_exhausted"`, `"tool_deferred_unavailable"` o `"turn_setup_failed"`.

1723`first_stream_post_ms`, `first_stream_post_ack_ms`, `first_stream_post_wall_ms`: tiempos para cargar el primer evento de transmisión del turno. Claude Code los registra solo en sesiones que transmite a claude.ai, como [sesiones en la nube](/docs/es/claude-code-on-the-web), y los resultados que `query()` produce no los llevan. Requiere Agent SDK v0.3.260 o posterior.1723* `fast_mode_state`: uno de `"on"`, `"off"` o `"cooldown"`.

1724 1724* `fast_mode_disabled_reason`: por qué el [modo rápido](/docs/es/fast-mode) no está disponible en este momento. Ausente cuando nada bloquea el modo rápido, aunque una solicitud igualmente puede ejecutarse a velocidad estándar. Durante el período de enfriamiento posterior a un rate limit del modo rápido, Claude Code reporta `fast_mode_state: "cooldown"` sin código de razón y vuelve a habilitar el modo rápido cuando expira el enfriamiento. Requiere Claude Code v2.1.219 o posterior.

1725* `usage`: solo bucle del agente principal. Excluye llamadas de subagente y modelo auxiliar, y es por turno en sesiones de entrada de transmisión. Prefiera `modelUsage` para contabilidad de tokens/costos.1725 

1726* `modelUsage`: totales por modelo para cada llamada de modelo realizada a través de la canalización de consultas durante esta llamada `query()`, incluido el bucle principal, subagentes y llamadas internas como compactación y agentes de Workflow. Las llamadas auxiliares fuera de esa canalización, como el clasificador de permisos y solicitudes de conteo de tokens, se excluyen. Una llamada que reanuda una sesión también cuenta los [totales por modelo restaurados de las llamadas anteriores de la sesión](/docs/es/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). En sesiones de entrada de transmisión los totales son acumulativos entre turnos, así que lea el resultado más reciente en lugar de sumar entre resultados. Consulte [Rastrear costos en modo de entrada de transmisión](/docs/es/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode) para reinicializaciones y [Recuperar totales después de un bloqueo de sesión](/docs/es/agent-sdk/cost-tracking#recover-totals-after-a-session-crash) para resultados puestos a cero.1726Usa el código de razón para explicar en tu propia interfaz por qué el modo rápido está desactivado, en lugar de volver a deducir la disponibilidad. Cada código nombra la verificación que bloqueó el modo rápido:

1727* `total_cost_usd`: costo estimado acumulativo en USD, cubriendo las mismas llamadas que `modelUsage` y reiniciado en los mismos puntos. Una llamada que reanuda una sesión también cuenta los [totales restaurados de las llamadas anteriores de la sesión](/docs/es/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). Es una estimación, no una declaración de facturación. Consulte [Rastrear costo y uso](/docs/es/agent-sdk/cost-tracking) para advertencias de precisión.

1728* `queued_turn_count`: el número de mensajes que envió con `origin: { kind: "human" }` que aún están esperando cuando Claude Code produjo el resultado. Consulte [`queued_turn_count`](#queued_turn_count) para saber qué significan `0` y un campo ausente.

1729*

1730 

1731`result_index`: dónde cae este resultado en el orden de entrega de la ejecución, contando desde 0 en cada resultado que el proceso escribe. Presente en ambos brazos. Un resultado cuya escritura falla aún consume su número, así que una brecha en la secuencia significa que se perdió un resultado. Requiere Agent SDK v0.3.268 o posterior.

1732 

1733*

1734 

1735`startup_failure_reason`: por qué Claude Code se negó a iniciar, en el resultado `error_during_execution` que escribe antes de salir en un fallo de inicio conocido. Consulte [`startup_failure_reason`](#startup_failure_reason) para los valores y qué fallos lo llevan. Requiere Agent SDK v0.3.274 o posterior.

1736 

1737* `terminal_reason`: por qué terminó el bucle. Uno de `"completed"`, `"max_turns"`, `"tool_deferred"`, `"aborted_streaming"`, `"aborted_tools"`, `"hook_stopped"`, `"stop_hook_prevented"`, `"background_requested"`, `"blocking_limit"`, `"rapid_refill_breaker"`, `"prompt_too_long"`, `"image_error"`, `"model_error"`, `"api_error"`, `"malformed_tool_use_exhausted"`, `"budget_exhausted"`, `"structured_output_retry_exhausted"`, `"tool_deferred_unavailable"`, o `"turn_setup_failed"`.

1738* `fast_mode_state`: uno de `"on"`, `"off"`, o `"cooldown"`.

1739* `fast_mode_disabled_reason`: por qué [el modo rápido](/docs/es/fast-mode) no está disponible ahora. Ausente cuando nada bloquea el modo rápido, aunque una solicitud aún puede ejecutarse a velocidad estándar. Durante el enfriamiento después de un límite de velocidad de modo rápido, Claude Code reporta `fast_mode_state: "cooldown"` sin código de razón y vuelve a habilitar el modo rápido cuando expira el enfriamiento. Requiere Claude Code v2.1.219 o posterior.

1740 

1741Use el código de razón para explicar por qué el modo rápido está desactivado en su propia interfaz en lugar de volver a derivar la disponibilidad. Cada código nombra la verificación que bloqueó el modo rápido:

1742 1727 

1743| Código de razón | Significado |1728| Código de razón | Significado |

1744| - | - |1729| - | - |

1745| `free` | La cuenta no tiene la suscripción pagada o créditos de uso que requiere el modo rápido |1730| `free` | La cuenta no tiene la suscripción de pago ni los créditos de uso que requiere el modo rápido |

1746| `preference` | La organización ha deshabilitado el modo rápido |1731| `preference` | La organización ha deshabilitado el modo rápido |

1747| `extra_usage_disabled` | Los créditos de uso están desactivados para la cuenta |1732| `extra_usage_disabled` | Los créditos de uso están desactivados para la cuenta |

1748| `network_error` | La [verificación de disponibilidad](/docs/es/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) no pudo alcanzar `api.anthropic.com` |1733| `network_error` | La [verificación de disponibilidad](/docs/es/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) no pudo conectarse con `api.anthropic.com` |

1749| `unknown` | Claude Code no pudo determinar la disponibilidad |1734| `unknown` | Claude Code no pudo determinar la disponibilidad |

1750| `not_first_party` | La sesión utiliza un proveedor que no es la API de Anthropic |1735| `not_first_party` | La sesión usa un proveedor distinto de la API de Anthropic |

1751| `disabled_by_env` | [`CLAUDE_CODE_DISABLE_FAST_MODE`](/docs/es/env-vars) está establecido |1736| `disabled_by_env` | [`CLAUDE_CODE_DISABLE_FAST_MODE`](/docs/es/env-vars) está establecida |

1752| `model_not_allowed` | El modelo Opus de modo rápido no está en la lista de permitidos [`availableModels`](/docs/es/model-config#restrict-model-selection) de la organización |1737| `model_not_allowed` | El modelo Opus del modo rápido no está en la lista de permitidos [`availableModels`](/docs/es/model-config#restrict-model-selection) de la organización |

1753| `sdk_opt_in_required` | La sesión no ha optado por el modo rápido: pase `fastMode: true` en la opción [`settings`](#options) o a través de [`applyFlagSettings()`](#applyflagsettings) |1738| `sdk_opt_in_required` | La sesión no ha optado por el modo rápido: pasa `fastMode: true` en la opción [`settings`](#options) o a través de [`applyFlagSettings()`](#applyflagsettings) |

1754| `pending` | La verificación de disponibilidad aún no se ha completado |1739| `pending` | La verificación de disponibilidad aún no ha terminado |

1755 1740 

1756El mismo par de campos aparece en [`SDKSystemMessage`](#sdksystemmessage) y en [`SDKControlInitializeResponse`](#sdkcontrolinitializeresponse), para que pueda leer el estado del modo rápido antes del primer turno.1741El mismo par de campos aparece en [`SDKSystemMessage`](#sdksystemmessage) y en [`SDKControlInitializeResponse`](#sdkcontrolinitializeresponse), para que puedas leer el estado del modo rápido antes del primer turno.

1757 1742 

1758El campo `origin` reenvía el [`SDKMessageOrigin`](#sdkmessageorigin) del mensaje del usuario que activó este resultado. Cuando el SDK inyecta un turno de seguimiento sintético, como para una tarea de fondo terminada, el `SDKResultMessage` resultante lleva `origin: { kind: "task-notification" }`. Las rutinas cuyo disparador se activó y los mensajes verificados por el servidor de sus otras sesiones llegan con este tipo también, cada uno con el `subkind` descrito en [Subtipos de notificación de tarea](#task-notification-subkinds). Verifique `kind` para distinguir los resultados que responden a su prompt de los seguimientos inyectados antes de enrutarlos o suprimirlos. Si su aplicación [declara ejecuciones programadas](#declare-a-scheduled-run), sus resultados también llevan `kind: "task-notification"`, así que no suprima solo en `kind`.1743El campo `origin` reenvía el [`SDKMessageOrigin`](#sdkmessageorigin) del mensaje del usuario que activó este resultado. Cuando el SDK inyecta un turno de seguimiento sintético, por ejemplo para una tarea en segundo plano terminada, el `SDKResultMessage` resultante lleva `origin: { kind: "task-notification" }`. Las rutinas cuyo disparador se activó y los mensajes verificados por el servidor provenientes de tus otras sesiones también llegan con este tipo, cada uno con el `subkind` descrito en [Subtipos de notificación de tarea](#task-notification-subkinds). Verifica `kind` para distinguir los resultados que responden a tu prompt de los seguimientos inyectados antes de enrutarlos o suprimirlos. Si tu aplicación [declara ejecuciones programadas](#declare-a-scheduled-run), sus resultados también llevan `kind: "task-notification"`, así que no suprimas basándote solo en `kind`.

1759 1744 

1760Cuando varias finalizaciones de tareas de fondo se ponen en cola juntas, Claude Code puede responderlas en un turno en lugar de uno cada una. Cada finalización aún produce su propio resultado con este origen. Todos excepto el último de los completados que Claude Code responde juntos producen resultados vacíos con `num_turns: 0`, en orden, y el resultado del último lleva el turno que responde a todos ellos.1745Cuando varias finalizaciones de tareas en segundo plano se encolan juntas, Claude Code puede responderlas en un solo turno en lugar de un turno por cada una. Cada finalización sigue produciendo su propio resultado con este origen. Todas las finalizaciones que Claude Code responde juntas, excepto la última, producen resultados vacíos con `num_turns: 0`, en orden, y el resultado de la última lleva el turno que las responde a todas.

1761 1746 

1762El campo está ausente para resultados emitidos antes de cualquier turno de usuario, como errores de inicio.1747El campo está ausente en los resultados emitidos antes de cualquier turno del usuario, como los errores de inicio.

1763 1748 

1764Cuando un hook `PreToolUse` devuelve `permissionDecision: "defer"`, el resultado tiene `stop_reason: "tool_deferred"` y `deferred_tool_use` lleva el `id`, `name` e `input` de la herramienta pendiente. Lea este campo para mostrar la solicitud en su propia interfaz, luego reanude con el mismo `session_id` para continuar. Consulte [Diferir una llamada de herramienta para más tarde](/docs/es/hooks#defer-a-tool-call-for-later) para el viaje completo.1749Cuando un hook `PreToolUse` devuelve `permissionDecision: "defer"`, el resultado tiene `stop_reason: "tool_deferred"` y `deferred_tool_use` lleva el `id`, el `name` y el `input` de la herramienta pendiente. Lee este campo para mostrar la solicitud en tu propia interfaz y luego reanuda con el mismo `session_id` para continuar. Consulta [Diferir una llamada a herramienta para más tarde](/docs/es/hooks#defer-a-tool-call-for-later) para ver el recorrido completo.

1765 1750 

1766<h4 id="user_message_uuid">1751<h4 id="user_message_uuid">

1767 `user_message_uuid`1752 `user_message_uuid`

1768</h4>1753</h4>

1769 1754 

1770El `uuid` del [`SDKUserMessage`](#sdkusermessage) que el turno está respondiendo, repetido para que pueda hacer coincidir la respuesta de Claude Code con el mensaje que envió. Claude Code repite un `uuid` solo si establece uno en el mensaje. El campo es opcional en `SDKUserMessage`, y un prompt de cadena pasado a `query()` no lleva ninguno.1755El `uuid` del [`SDKUserMessage`](#sdkusermessage) al que responde el turno, devuelto como eco para que puedas asociar la respuesta de Claude Code con el mensaje que enviaste. Claude Code devuelve un `uuid` solo si estableciste uno en el mensaje. El campo es opcional en `SDKUserMessage`, y un prompt de cadena pasado a `query()` no lleva ninguno.

1771 

1772Qué mensaje de los suyos responde un turno depende de cómo comenzó el turno:

1773 

1774* **Un mensaje regular que envió**, es decir, uno sin `isSynthetic: true`: el turno responde ese mensaje durante toda su ejecución. Cuando envía varios mensajes juntos, Claude Code puede fusionarlos en un turno, y el campo entonces lleva solo el `uuid` del último mensaje. Para hacer coincidir la respuesta con cualquiera de los mensajes fusionados, use [`user_message_uuids`](#user_message_uuids).

1775*

1776 

1777**Un mensaje que envió con `isSynthetic: true`**: el turno responde ese mensaje al principio. Si Claude Code recoge un mensaje regular suyo entre llamadas de herramientas, el turno responde el mensaje recogido a partir de entonces. Repetir el `uuid` de un mensaje sintético requiere Agent SDK v0.3.265 o posterior; las versiones anteriores no repiten nada en turnos sintéticos.

1778 

1779*

1780 

1781**El prompt que Claude Code genera para volver a ejecutar un turno interrumpido bajo [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/es/env-vars)**: cuando el último prompt del turno interrumpido es un mensaje regular que envió, ya sea que abriera el turno o Claude Code lo recogiera durante el turno, la re-ejecución responde ese mensaje al principio. [`resume_reason`](#resume_reason) indica los marcos de la re-ejecución del intento interrumpido. Cuando el último prompt no es un mensaje regular suyo, la re-ejecución no responde ningún mensaje suyo al principio. Si Claude Code recoge un mensaje regular suyo entre llamadas de herramientas, el turno responde el mensaje recogido a partir de entonces. Repetir el prompt del turno interrumpido requiere Agent SDK v0.3.268 o posterior.

1782 

1783*

1784 

1785**Cualquier otro prompt que Claude Code generó por sí mismo**: el turno no responde ningún mensaje suyo al principio y sus marcos no llevan ningún eco. Si Claude Code recoge un mensaje regular suyo entre llamadas de herramientas, el turno responde ese mensaje a partir de entonces. El eco de recogida requiere Agent SDK v0.3.265 o posterior; las versiones anteriores no repiten nada en estos turnos.

1786 1756 

1787Claude Code repite el `uuid` del mensaje respondido en tres tipos de marco:1757A cuál de tus mensajes responde un turno depende de cómo comenzó el turno:

1788 1758 

1789* **El resultado**: cada resultado de un turno que respondió un mensaje que envió. Cada tal resultado lo lleva en Agent SDK v0.3.265 o posterior. Antes de v0.3.265, el resultado de éxito de un turno que un mensaje regular inició carecía de él cuando el turno no envió ninguna solicitud de API o terminó con una llamada de herramienta diferida. Antes de v0.3.246, los resultados de error también carecían de él, y antes de v0.3.216 cada resultado lo hacía.1759* **Un mensaje normal que enviaste**, es decir, uno sin `isSynthetic: true`: el turno responde a ese mensaje durante toda su ejecución. Cuando envías varios mensajes en poco tiempo, Claude Code puede fusionarlos en un solo turno, y el campo entonces lleva solo el `uuid` del último mensaje. Para asociar la respuesta con cualquiera de los mensajes fusionados, usa [`user_message_uuids`](#user_message_uuids).

1790*1760* **Un mensaje que enviaste con `isSynthetic: true`**: el turno responde a ese mensaje al principio. Si Claude Code recoge un mensaje normal tuyo entre llamadas a herramientas, el turno responde al mensaje recogido a partir de ese momento. Devolver el `uuid` de un mensaje sintético requiere Agent SDK v0.3.265 o posterior; las versiones anteriores no devuelven nada en los turnos sintéticos.

1761* **El prompt que Claude Code genera para volver a ejecutar un turno interrumpido con [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/es/env-vars)**: cuando el último prompt del turno interrumpido es un mensaje normal que enviaste, ya sea que abriera el turno o que Claude Code lo recogiera durante el turno, la nueva ejecución responde a ese mensaje al principio. [`resume_reason`](#resume_reason) distingue los frames de la nueva ejecución de los del intento interrumpido. Cuando el último prompt no es un mensaje normal tuyo, la nueva ejecución no responde a ningún mensaje tuyo al principio. Si Claude Code recoge un mensaje normal tuyo entre llamadas a herramientas, el turno responde al mensaje recogido a partir de ese momento. Devolver el prompt del turno interrumpido requiere Agent SDK v0.3.268 o posterior.

1762* **Cualquier otro prompt que Claude Code haya generado por sí mismo**: el turno no responde a ningún mensaje tuyo al principio y sus frames no llevan eco. Si Claude Code recoge un mensaje normal tuyo entre llamadas a herramientas, el turno responde a ese mensaje a partir de ese momento. El eco de la recogida requiere Agent SDK v0.3.265 o posterior; las versiones anteriores no devuelven nada en estos turnos.

1791 1763 

1792**La primera respuesta del turno**: el primer [mensaje del asistente](#sdkassistantmessage), o con `includePartialMessages` el primer [evento de transmisión](#sdkpartialassistantmessage) cuyo `event.type` no es `ping`, para que pueda vincular la respuesta antes de que llegue el resultado. Cuando un turno no transmite nada, Claude Code lo establece en el primer mensaje del asistente en su lugar. El eco de primera respuesta requiere Agent SDK v0.3.246 o posterior. Cuando el mensaje que el turno está respondiendo cambia a mitad del turno, la primera respuesta después del cambio también lleva el campo, en Agent SDK v0.3.265 o posterior; las versiones anteriores lo establecen en un marco de respuesta por turno.1764Claude Code devuelve el `uuid` del mensaje respondido en tres tipos de frame:

1793 1765 

1794*1766* **El resultado**: todo resultado de un turno que respondió a un mensaje que enviaste. Todos esos resultados lo llevan en Agent SDK v0.3.265 o posterior. Antes de v0.3.265, el resultado de éxito de un turno iniciado por un mensaje normal no lo llevaba cuando el turno no enviaba ninguna solicitud de API o terminaba con una llamada a herramienta diferida. Antes de v0.3.246, los resultados de error tampoco lo llevaban, y antes de v0.3.216 ningún resultado lo llevaba.

1795 1767* **La primera respuesta del turno**: el primer [mensaje del asistente](#sdkassistantmessage) y, con `includePartialMessages`, también el primer [evento de streaming](#sdkpartialassistantmessage) cuyo `event.type` no es `ping`, para que puedas vincular la respuesta antes de que llegue el resultado. El eco en la primera respuesta requiere Agent SDK v0.3.246 o posterior. Antes de v0.3.269, con `includePartialMessages`, Claude Code lo establecía solo en ese primer evento de streaming, o en el primer mensaje del asistente cuando el turno no transmitía nada en streaming. Cuando el mensaje al que responde el turno cambia a mitad del turno, la primera respuesta después del cambio también lleva el campo, en Agent SDK v0.3.265 o posterior; las versiones anteriores lo establecen en un solo frame de respuesta por turno.

1796**Cada marco [`thinking_tokens`](#sdkthinkingtokensmessage) del turno**: para que pueda atribuir el progreso del pensamiento al mensaje que envió sin esperar la primera respuesta del turno. Requiere Agent SDK v0.3.260 o posterior.1768* **Cada frame [`thinking_tokens`](#sdkthinkingtokensmessage) del turno**: para que puedas atribuir el progreso del pensamiento al mensaje que enviaste sin esperar la primera respuesta del turno. Requiere Agent SDK v0.3.260 o posterior.

1797 1769 

1798Claude Code omite el campo en estos casos:1770Claude Code omite el campo en estos casos:

1799 1771 

1800* Marcos de respuesta que no sean esas primeras respuestas1772* Frames de respuesta distintos de esas primeras respuestas

1801* Marcos de subagente1773* Frames de subagentes

1802* Turnos que no responden ningún mensaje de los suyos, o responden un mensaje que envió sin un `uuid`1774* Turnos que no responden a ningún mensaje tuyo, o que responden a un mensaje que enviaste sin `uuid`

1803* Resultados que no responden ningún mensaje que envió, como el resultado puesto a cero después de un bloqueo de proceso de trabajo1775* Resultados que no responden a ningún mensaje que enviaste, como el resultado puesto a cero después de que falla un proceso worker

1804 1776 

1805<h4 id="user_message_uuids">1777<h4 id="user_message_uuids">

1806 `user_message_uuids`1778 `user_message_uuids`

1807</h4>1779</h4>

1808 1780 

1809Los `uuid`s de cada mensaje que envió que Claude Code respondió en este turno. Cuando envía varios mensajes juntos, Claude Code puede fusionarlos en un turno, y `user_message_uuid` entonces nombra solo el último de ellos. Para hacer coincidir la respuesta con cualquiera de los mensajes fusionados, busque el `uuid` de ese mensaje en cualquier lugar de esta lista. Requiere Agent SDK v0.3.259 o posterior.1781Los `uuid` de cada mensaje que enviaste y que Claude Code respondió en este turno. Cuando envías varios mensajes en poco tiempo, Claude Code puede fusionarlos en un solo turno, y `user_message_uuid` entonces nombra solo el último de ellos. Para asociar la respuesta con cualquiera de los mensajes fusionados, busca el `uuid` de ese mensaje en cualquier posición de esta lista. Requiere Agent SDK v0.3.259 o posterior.

1810 1782 

1811Claude Code establece la lista junto con `user_message_uuid` en cada marco de respuesta que lleva ese campo y en el resultado. Para el conjunto completo de marcos de turno que llevan `user_message_uuid`, y la versión que cada uno requiere, consulte [`user_message_uuid`](#user_message_uuid). La lista siempre contiene `user_message_uuid` y contiene como máximo 64 entradas.1783Claude Code establece la lista junto con `user_message_uuid` en cada frame de respuesta que lleva ese campo y en el resultado. Para ver el conjunto completo de frames del turno que devuelven el `uuid` del mensaje respondido, y la versión que requiere cada uno, consulta [`user_message_uuid`](#user_message_uuid). La lista siempre contiene `user_message_uuid` y tiene como máximo 64 entradas.

1812 1784 

1813Cuando Claude Code recoge un mensaje regular que envió mientras se ejecutaba un turno, añade el `uuid` de ese mensaje a la lista del resultado.1785Cuando Claude Code recoge un mensaje normal que enviaste mientras se ejecutaba un turno, añade el `uuid` de ese mensaje a la lista del resultado.

1814 1786 

1815Cuando una primera respuesta o resultado lleva `user_message_uuid` sin la lista, proviene de una versión anterior de Claude Code, así que recurra al campo único.1787Cuando una primera respuesta o un resultado lleva `user_message_uuid` sin la lista, proviene de una versión anterior de Claude Code, así que recurre al campo individual.

1816 1788 

1817<h4 id="resume_reason">1789<h4 id="resume_reason">

1818 `resume_reason`1790 `resume_reason`

1819</h4>1791</h4>

1820 1792 

1821Por qué Claude Code volvió a ejecutar este turno después de una reiniciación. Claude Code establece este campo en un turno que volvió a ejecutar bajo [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/es/env-vars), para que pueda distinguir la respuesta y el resultado de la re-ejecución del intento interrumpido. Requiere Agent SDK v0.3.268 o posterior.1793Por qué Claude Code volvió a ejecutar este turno después de un reinicio. Claude Code establece este campo en un turno que volvió a ejecutar con [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/es/env-vars), para que puedas distinguir la respuesta y el resultado de la nueva ejecución de los del intento interrumpido. Requiere Agent SDK v0.3.268 o posterior.

1822 1794 

1823Claude Code establece el campo en dos tipos de marco:1795Claude Code establece el campo en dos tipos de frame:

1824 1796 

1825* **El resultado de la re-ejecución**: en los brazos de éxito y error por igual, ya sea que el resultado lleve `user_message_uuid` o no.1797* **El resultado de la nueva ejecución**: tanto en la rama de éxito como en la de error, lleve o no el resultado `user_message_uuid`.

1826* **Los marcos de respuesta de la re-ejecución**: aquellos que llevan [`user_message_uuid`](#user_message_uuid).1798* **Los frames de respuesta de la nueva ejecución**: aquellos que llevan [`user_message_uuid`](#user_message_uuid).

1827 1799 

1828El valor es un token corto en minúsculas que nombra por qué se volvió a ejecutar el turno, como `interrupted_turn`. El campo está ausente en cada otro turno.1800El valor es un token breve en minúsculas que indica por qué se volvió a ejecutar el turno, como `interrupted_turn`. El campo está ausente en todos los demás turnos.

1829 1801 

1830<h4 id="queued_turn_count">1802<h4 id="queued_turn_count">

1831 `queued_turn_count`1803 `queued_turn_count`

1832</h4>1804</h4>

1833 1805 

1834El número de mensajes que envió con [`origin: { kind: "human" }`](#sdkmessageorigin) que aún están esperando en la cola de comandos cuando Claude Code produjo el resultado. Requiere Agent SDK v0.3.242 o posterior.1806El número de mensajes que enviaste con [`origin: { kind: "human" }`](#sdkmessageorigin) que aún están esperando en la cola de comandos cuando Claude Code produjo el resultado. Requiere Agent SDK v0.3.242 o posterior.

1835 1807 

1836Qué significan `0` y un campo ausente:1808Qué te indican `0` y un campo ausente:

1837 1809 

1838* **`0`**: Claude Code no cuenta los mensajes que envió sin ese `origin`, y no cuenta notificaciones de tareas, así que un turno aún puede seguir.1810* **`0`**: Claude Code no cuenta los mensajes que enviaste sin ese `origin`, ni cuenta las notificaciones de tareas, así que igualmente puede seguir un turno.

1839* **Ausente**: el resultado final que Claude Code emite después de un bloqueo o error de inicio fatal omite el campo, y [puede llevar totales puestos a cero](/docs/es/agent-sdk/cost-tracking#recover-totals-after-a-session-crash).1811* **Ausente**: el resultado final que Claude Code emite después de un fallo o de un error fatal de inicio omite el campo, y [puede llevar totales puestos a cero](/docs/es/agent-sdk/cost-tracking#recover-totals-after-a-session-crash).

1840 1812 

1841<h4 id="startup_failure_reason">1813<h4 id="startup_failure_reason">

1842 `startup_failure_reason`1814 `startup_failure_reason`

1843</h4>1815</h4>

1844 1816 

1845Por qué Claude Code se negó a iniciar, para que su aplicación pueda ofrecer la solución en lugar de un reintento. Claude Code lo establece en el resultado `error_during_execution` que escribe antes de salir en un fallo de inicio conocido. Ese resultado lleva totales puestos a cero, y su matriz `errors` lleva el mismo texto que stderr. El campo está ausente en cada otro resultado. Requiere Agent SDK v0.3.274 o posterior.1817Por qué Claude Code se negó a iniciar, para que tu aplicación pueda ofrecer la solución en lugar de un reintento. Claude Code lo establece en el resultado `error_during_execution` que escribe antes de salir ante un fallo de inicio conocido. Ese resultado lleva totales puestos a cero, y su matriz `errors` lleva el mismo texto que stderr. El campo está ausente en todos los demás resultados. Requiere Agent SDK v0.3.274 o posterior.

1846 1818 

1847Establezca `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` en `1` en [`env`](#options) para recibir este resultado para cada valor `SDKStartupFailureReason`. Sin esa variable, Claude Code escribe el resultado solo para estos fallos, y el resto termina con salida stderr, una salida distinta de cero, y ningún mensaje de resultado:1819Establece `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` en `1` en [`env`](#options) para recibir este resultado con cualquier valor de `SDKStartupFailureReason`. Sin esa variable, Claude Code escribe el resultado solo para estos fallos, y el resto termina con salida en stderr, un código de salida distinto de cero y ningún mensaje de resultado:

1848 1820 

1849* Una reanudación que Claude Code detiene porque no puede [devolver la sesión a su árbol de trabajo](/docs/es/worktrees#the-session-resumes-outside-its-worktree), con `worktree_unverified` o `worktree_resume_refused`. Esa sección dice qué error lleva qué valor.1821* Una reanudación que Claude Code detiene porque [no puede devolver la sesión a su worktree](/docs/es/worktrees#the-session-resumes-outside-its-worktree), con `worktree_unverified` o `worktree_resume_refused`. Esa sección indica qué error lleva cada valor.

1850* Una [`continue`](#options) rechazada de una conversación que una sesión de fondo mantiene, con `session_held_by_background`. Para una [`resume`](#options) rechazada de tal conversación, Claude Code escribe el resultado solo cuando la variable está establecida.1822* Un [`continue`](#options) rechazado de una conversación que retiene una sesión en segundo plano, con `session_held_by_background`. Para un [`resume`](#options) rechazado de esa conversación, Claude Code escribe el resultado solo cuando la variable está establecida.

1851 1823 

1852```typescript theme={null}1824```typescript theme={null}

1853type SDKStartupFailureReason =1825type SDKStartupFailureReason =


1874 1846 

1875| Valor | Qué detuvo la sesión |1847| Valor | Qué detuvo la sesión |

1876| :- | :- |1848| :- | :- |

1877| `org_pin_api_key_conflict` | La configuración administrada [requiere un inicio de sesión de puerta de enlace de primera parte o en la nube](/docs/es/authentication#restrict-login-to-your-organization), y se configura una clave de API de Anthropic, token de autenticación o `apiKeyHelper` en su lugar |1849| `org_pin_api_key_conflict` | La configuración administrada [exige un inicio de sesión de primera parte o mediante el gateway en la nube](/docs/es/authentication#restrict-login-to-your-organization), y en su lugar hay configurada una clave de API de Anthropic, un token de autenticación o un `apiKeyHelper` |

1878| `provider_not_allowed` | La configuración administrada [enumera los proveedores de API que esta máquina puede usar](/docs/es/settings-reference#allowedproviders), y la sesión está configurada para un proveedor que no está en la lista, o para un punto final que la configuración no fija. Requiere Claude Code v2.1.285 o posterior |1850| `provider_not_allowed` | La configuración administrada [enumera los proveedores de API que esta máquina puede usar](/docs/es/settings-reference#allowedproviders), y la sesión está configurada para un proveedor que no está en la lista, o para un endpoint que la configuración no fija. Requiere Claude Code v2.1.285 o posterior |

1879| `org_verify_failed` | La organización del inicio de sesión no pudo verificarse contra el pin, por ejemplo debido a un fallo de red o un token revocado |1851| `org_verify_failed` | No se pudo verificar la organización del inicio de sesión contra el pin, por ejemplo debido a un fallo de red o a un token revocado |

1880| `org_pin_mismatch` | El inicio de sesión pertenece a una organización que el pin no permite |1852| `org_pin_mismatch` | El inicio de sesión pertenece a una organización que el pin no permite |

1881| `managed_settings_invalid` | La configuración de política administrada no pudo leerse, el pin no nombra ninguna organización, o [restricciones de modelo administradas](/docs/es/errors#managed-settings-block-the-default-model) no dejan ningún modelo permitido para la opción Predeterminado |1853| `managed_settings_invalid` | No se pudo leer la configuración de políticas administrada, el pin no nombra ninguna organización, o las [restricciones de modelos administradas](/docs/es/errors#managed-settings-block-the-default-model) no dejan ningún modelo permitido para la opción Predeterminado |

1882| `remote_settings_required_unavailable` | La configuración administrada que la organización requiere no pudo cargarse |1854| `remote_settings_required_unavailable` | No se pudo cargar la configuración administrada que exige la organización |

1883| `gateway_signin_required` | La [puerta de enlace en la nube](/docs/es/claude-apps-gateway) terminó este inicio de sesión |1855| `gateway_signin_required` | El [gateway en la nube](/docs/es/claude-apps-gateway) cerró este inicio de sesión |

1884| `gateway_access_denied` | La solicitud de configuración administrada a la puerta de enlace en la nube volvió con un 403, que la [tabla de solución de problemas](/docs/es/claude-apps-gateway-deploy#troubleshooting) de la puerta de enlace cubre |1856| `gateway_access_denied` | La solicitud de configuración administrada al gateway en la nube devolvió un 403, que cubre la [tabla de solución de problemas](/docs/es/claude-apps-gateway-deploy#troubleshooting) del gateway |

1885| `proxy_invalid` | Una configuración de proxy no es una URL completa |1857| `proxy_invalid` | Un ajuste de proxy no es una URL completa |

1886| `temp_dir_unusable` | El directorio temporal por usuario no es seguro o no pudo crearse |1858| `temp_dir_unusable` | El directorio temporal por usuario no es seguro o no se pudo crear |

1887| `cwd_unavailable` | El directorio de trabajo fue eliminado, movido o no se puede leer |1859| `cwd_unavailable` | El directorio de trabajo se eliminó, se movió o no se puede leer |

1888| `shell_tool_missing` | En Windows, no hay herramienta de shell disponible: Git Bash falta, y PowerShell falta o está desactivado con `CLAUDE_CODE_USE_POWERSHELL_TOOL` |1860| `shell_tool_missing` | En Windows, no hay ninguna herramienta de shell disponible: falta Git Bash, y PowerShell falta o está desactivado con `CLAUDE_CODE_USE_POWERSHELL_TOOL` |

1889| `session_held_by_background` | La conversación a reanudar o continuar se ejecuta como una [sesión de fondo](/docs/es/agent-view) |1861| `session_held_by_background` | La conversación que se quiere reanudar o continuar se está ejecutando como una [sesión en segundo plano](/docs/es/agent-view) |

1890| `worktree_resume_refused` | El árbol de trabajo de la sesión falló sus verificaciones de seguridad, o la reanudación se lanzó desde dentro de él. `errors` dice si ejecutar la misma reanudación nuevamente continúa sin el árbol de trabajo |1862| `worktree_resume_refused` | El worktree de la sesión no superó sus verificaciones de seguridad, o la reanudación se lanzó desde dentro de él. `errors` indica si ejecutar de nuevo la misma reanudación continúa sin el worktree |

1891| `worktree_unverified` | El árbol de trabajo de la sesión no pudo verificarse ahora, y reintentar puede tener éxito |1863| `worktree_unverified` | No se pudo verificar el worktree de la sesión en este momento, y reintentar puede funcionar |

1892| `cli_version_too_old` | Esta versión de Claude Code está por debajo del mínimo que Anthropic requiere |1864| `cli_version_too_old` | Esta versión de Claude Code está por debajo del mínimo que exige Anthropic |

1893| `bypass_root` | Se solicitó el modo de permisos de derivación mientras se ejecutaba como root |1865| `bypass_root` | Se solicitó el modo de permisos bypass mientras se ejecutaba como root |

1894 1866 

1895<h3 id="sdksystemmessage">1867<h3 id="sdksystemmessage">

1896 `SDKSystemMessage`1868 `SDKSystemMessage`


1935};1907};

1936```1908```

1937 1909 

1938`fast_mode_state` reporta el estado del [modo rápido](/docs/es/fast-mode) de la sesión. Cuando algo bloquea el modo rápido, `fast_mode_disabled_reason` nombra la verificación que lo bloqueó; el campo requiere Claude Code v2.1.219 o posterior. Para los códigos de razón y sus significados, consulte [`fast_mode_disabled_reason`](#sdkresultmessage) en el mensaje de resultado.1910`fast_mode_state` reporta el estado del [modo rápido](/docs/es/fast-mode) de la sesión. Cuando algo bloquea el modo rápido, `fast_mode_disabled_reason` nombra la verificación que lo bloqueó; el campo requiere Claude Code v2.1.219 o posterior. Para ver los códigos de razón y sus significados, consulta [`fast_mode_disabled_reason`](#sdkresultmessage) en el mensaje de resultado.

1939 

1940`terminal_slash_commands` nombra las entradas en `slash_commands` cuya interfaz está vinculada a la terminal local, como `exit`. Puede enviarlas como cualquier otra entrada en `slash_commands`; el campo existe para que un cliente remoto o móvil pueda ocultarlas de sus menús de comandos. El campo está presente solo cuando no está vacío, y requiere Agent SDK v0.3.229 o posterior.

1941 

1942*

1943 1911 

1944`source` en cada entrada `mcp_servers`: de dónde proviene la definición del servidor, con los mismos valores que [`McpServerStatus`](#mcpserverstatus)'s `source`. Requiere Agent SDK v0.3.274 o posterior.1912`terminal_slash_commands` nombra las entradas de `slash_commands` cuya interfaz está vinculada a la terminal local, como `exit`. Puedes enviarlas como cualquier otra entrada de `slash_commands`; el campo existe para que un cliente remoto o móvil pueda ocultarlas de sus menús de comandos. El campo está presente solo cuando no está vacío, y requiere Agent SDK v0.3.229 o posterior.

1945 1913 

1946*1914* `source` en cada entrada de `mcp_servers`: de dónde proviene la definición del servidor, con los mismos valores que el `source` de [`McpServerStatus`](#mcpserverstatus). Requiere Agent SDK v0.3.274 o posterior.

1915* `effort`: el [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) que Claude Code envía en la siguiente solicitud de la sesión, o `null` cuando no envía ninguno. Claude Code establece el campo solo en el mensaje de inicialización que envía a los clientes de [Remote Control](/docs/es/remote-control), y lo omite del mensaje de inicialización que lee tu aplicación. Requiere Agent SDK v0.3.234 o posterior.

1947 1916 

1948`effort`: el [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) que Claude Code envía en la siguiente solicitud de la sesión, o `null` cuando no envía ninguno. Claude Code establece el campo solo en el mensaje de inicialización que envía a clientes de [Control Remoto](/docs/es/remote-control), y lo omite del mensaje de inicialización que su aplicación lee. Requiere Agent SDK v0.3.234 o posterior.1917La matriz `capabilities` nombra los comportamientos del protocolo que implementa esta CLI, para que puedas detectar funcionalidades en lugar de comparar cadenas de `claude_code_version`. Es un conjunto abierto: ignora los valores que no reconozcas y verifica la capacidad específica de cuyo comportamiento dependes. El campo requiere Claude Code v2.1.205 o posterior y está ausente en las CLI anteriores.

1949 

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

1951 1918 

1952| Capacidad | Significado |1919| Capacidad | Significado |

1953| - | - |1920| - | - |

1954| `interrupt_receipt_v1` | [`interrupt()`](#query-object) se resuelve con un recibo [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) que enumera los mensajes que estaban pendientes cuando llegó la interrupción |1921| `interrupt_receipt_v1` | [`interrupt()`](#query-object) se resuelve con un recibo [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) que enumera los mensajes que estaban pendientes cuando llegó la interrupción |

1955| `interrupt_cancel_queued_v1` | La solicitud de control `interrupt` honra `cancel_queued: true`, cancelando los mensajes que el recibo enumeraría bajo `still_queued` y enumerándolos bajo `cancelled` en su lugar. Consulte [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse). Requiere Claude Code v2.1.219 o posterior |1922| `interrupt_cancel_queued_v1` | La solicitud de control `interrupt` respeta `cancel_queued: true`: cancela los mensajes que el recibo enumeraría en `still_queued` y, en su lugar, los enumera en `cancelled`. Consulta [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse). Requiere Claude Code v2.1.219 o posterior |

1956 1923 

1957La matriz `plugin_errors` enumera fallos de carga de plugin. Una entrada describe un plugin que no se cargó y está ausente de `plugins`, o un plugin que se cargó sin una de sus partes, como su archivo de hooks. La clave se omite cuando nada falló. `SDKSystemMessage` declara `plugin_errors` en Agent SDK v0.3.283 o posterior.1924La matriz `plugin_errors` enumera los fallos de carga de plugins. Una entrada describe o bien un plugin que no se cargó y está ausente de `plugins`, o bien un plugin que se cargó sin una de sus partes, como su archivo de hooks. La clave se omite cuando nada falló. `SDKSystemMessage` declara `plugin_errors` en Agent SDK v0.3.283 o posterior.

1958 1925 

1959Cuando un directorio o archivo de su opción [`plugins`](#options) falla al cargarse, el campo `plugin` de la entrada contiene una etiqueta posicional como `inline[0]` en lugar de un nombre de plugin. Esto sucede, por ejemplo, cuando la ruta no existe o el manifiesto no es válido. Haga coincidir tal entrada con su opción por su campo `path`.1926Cuando un directorio o archivo comprimido de tu [opción `plugins`](#options) falla al cargarse por sí mismo, el campo `plugin` de la entrada contiene una etiqueta posicional como `inline[0]` en lugar de un nombre de plugin. Esto sucede, por ejemplo, cuando la ruta no existe o el manifiesto no es válido. Asocia esa entrada con tu opción mediante su campo `path`.

1960 1927 

1961La tabla siguiente enumera los campos de cada entrada `plugin_errors`.1928La tabla siguiente enumera los campos de cada entrada de `plugin_errors`.

1962 1929 

1963| Campo | Tipo | Descripción |1930| Campo | Tipo | Descripción |

1964| - | - | - |1931| - | - | - |

1965| `plugin` | `string` | El ID del plugin que falla, o una etiqueta posicional como `inline[0]` cuando el directorio o archivo del plugin en sí falló al cargarse |1932| `plugin` | `string` | El ID del plugin que falló, o una etiqueta posicional como `inline[0]` cuando el propio directorio o archivo comprimido del plugin falló al cargarse |

1966| `type` | `string` | Categoría de error de un conjunto abierto, como `path-not-found` o `manifest-validation-error`. Trate un valor que no reconozca como un fallo genérico |1933| `type` | `string` | Categoría de error de un conjunto abierto, como `path-not-found` o `manifest-validation-error`. Trata un valor que no reconozcas como un fallo genérico |

1967| `message` | `string` | Texto de visualización que describe el fallo |1934| `message` | `string` | Texto para mostrar que describe el fallo |

1968| `path` | `string` | Presente solo cuando el directorio o archivo del plugin en sí falló al cargarse. Su ruta absoluta, con una ruta relativa de su opción `plugins` resuelta contra la opción [`cwd`](#options) |1935| `path` | `string` | Presente solo cuando el propio directorio o archivo comprimido del plugin falló al cargarse. Su ruta absoluta; una ruta relativa de tu opción `plugins` se resuelve con respecto a la opción [`cwd`](#options) |

1969 1936 

1970<h3 id="sdkpartialassistantmessage">1937<h3 id="sdkpartialassistantmessage">

1971 `SDKPartialAssistantMessage`1938 `SDKPartialAssistantMessage`

1972</h3>1939</h3>

1973 1940 

1974Mensaje parcial de transmisión (solo cuando `includePartialMessages` es true). El campo `parent_tool_use_id` siempre es `null`: los eventos de transmisión se emiten solo para la sesión principal. Para atribución de subagente, use mensajes completos, que llevan `parent_tool_use_id`, o habilite [`forwardSubagentText`](#options) para recibir texto y pensamiento de subagente como mensajes completos.1941Mensaje parcial en streaming (solo cuando `includePartialMessages` es true). El campo `parent_tool_use_id` siempre es `null`: los eventos de streaming se emiten solo para la sesión principal. Para atribuir contenido a subagentes, usa los mensajes completos, que llevan `parent_tool_use_id`, o habilita [`forwardSubagentText`](#options) para recibir el texto y el pensamiento de los subagentes como mensajes completos.

1975 1942 

1976```typescript theme={null}1943```typescript theme={null}

1977type SDKPartialAssistantMessage = {1944type SDKPartialAssistantMessage = {


1987};1954};

1988```1955```

1989 1956 

1990Claude Code establece `user_message_uuid` y `user_message_uuids` en el primer evento de transmisión que no es ping del turno, y nuevamente cuando el mensaje que el turno está respondiendo cambia, bajo las condiciones en [`user_message_uuid`](#user_message_uuid). Cuando Claude Code vuelve a ejecutar un turno que una reiniciación interrumpió, los eventos de transmisión de la re-ejecución que llevan esos campos también llevan [`resume_reason`](#resume_reason).1957Claude Code establece `user_message_uuid` y `user_message_uuids` en el primer evento de streaming del turno que no es ping, y de nuevo cuando cambia el mensaje al que responde el turno, bajo las condiciones descritas en [`user_message_uuid`](#user_message_uuid). Cuando Claude Code vuelve a ejecutar un turno que un reinicio interrumpió, los eventos de streaming de la nueva ejecución que llevan esos campos también llevan [`resume_reason`](#resume_reason).

1991 1958 

1992<h3 id="sdkcompactboundarymessage">1959<h3 id="sdkcompactboundarymessage">

1993 `SDKCompactBoundaryMessage`1960 `SDKCompactBoundaryMessage`

1994</h3>1961</h3>

1995 1962 

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

1997 1964 

1998```typescript theme={null}1965```typescript theme={null}

1999type SDKCompactBoundaryMessage = {1966type SDKCompactBoundaryMessage = {


2012 `SDKInformationalMessage`1979 `SDKInformationalMessage`

2013</h3>1980</h3>

2014 1981 

2015Banner de texto genérico emitido por el bucle. Lleva advertencias, avisos y otras líneas de estado no erróneas que Claude Code genera, y retroalimentación de hooks como la razón de bloqueo de un hook `UserPromptSubmit`.1982Banner de texto genérico emitido por el bucle. Lleva advertencias, avisos y otras líneas de estado que no son errores y que genera Claude Code, así como retroalimentación de hooks, como el motivo de bloqueo de un hook `UserPromptSubmit`.

2016 1983 

2017En Claude Code v2.1.227 o posterior, el [`systemMessage`](/docs/es/hooks#json-output) de un hook puede llegar como este mensaje, con cada línea prefijada por el nombre del hook, como `PostToolUse:Bash says:`. Cada [sección de evento](/docs/es/hooks#hook-events) en la página de hooks dice cómo se muestra la salida.1984En Claude Code v2.1.227 o posterior, el [`systemMessage`](/docs/es/hooks#json-output) de un hook puede llegar como este mensaje, con cada línea precedida por el nombre del hook, como `PostToolUse:Bash says:`. La [sección de cada evento](/docs/es/hooks#hook-events) en la página de hooks indica cómo se muestra la salida.

2018 1985 

2019Renderice `content` como texto sin formato en el `level` dado.1986Renderiza `content` como texto sin formato con el `level` indicado.

2020 1987 

2021```typescript theme={null}1988```typescript theme={null}

2022type SDKInformationalMessage = {1989type SDKInformationalMessage = {


2035 `SDKWorkerShuttingDownMessage`2002 `SDKWorkerShuttingDownMessage`

2036</h3>2003</h3>

2037 2004 

2038Emitido en el desmontaje gracioso del trabajador para que los clientes remotos puedan mostrar por qué el trabajador salió en lugar de esperar el tiempo de espera del latido. La `reason` es una cadena corta en snake\_case establecida por el CLI del host, como `"host_exit"` o `"remote_control_disabled"`. Actúe sobre esto solo cuando transmita en vivo. Una sesión reanudada reproduce instancias pasadas de este mensaje, así que ignórelas en ese caso.2005Se emite cuando el worker se cierra de forma ordenada, para que los clientes remotos puedan mostrar por qué salió el worker en lugar de esperar a que se agote el tiempo de espera del heartbeat. `reason` es una cadena breve en snake\_case establecida por la CLI host, como `"host_exit"` o `"remote_control_disabled"`. Actúa en consecuencia solo cuando estés recibiendo el streaming en vivo. Una sesión reanudada reproduce instancias anteriores de este mensaje, así que ignóralas en ese caso.

2039 2006 

2040```typescript theme={null}2007```typescript theme={null}

2041type SDKWorkerShuttingDownMessage = {2008type SDKWorkerShuttingDownMessage = {


2051 `SDKPluginInstallMessage`2018 `SDKPluginInstallMessage`

2052</h3>2019</h3>

2053 2020 

2054Evento de progreso de instalación de plugin. Emitido cuando [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/es/env-vars) está establecido, para que su aplicación Agent SDK pueda rastrear la instalación de plugin del mercado antes del primer turno. Los estados `started` y `completed` cierran la instalación general. Los estados `installed` y `failed` reportan mercados individuales e incluyen `name`.2021Evento de progreso de la instalación de plugins. Se emite cuando [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/es/env-vars) está establecida, para que tu aplicación del Agent SDK pueda rastrear la instalación de plugins del marketplace antes del primer turno. Los estados `started` y `completed` delimitan la instalación completa. Los estados `installed` y `failed` reportan marketplaces individuales e incluyen `name`.

2055 2022 

2056```typescript theme={null}2023```typescript theme={null}

2057type SDKPluginInstallMessage = {2024type SDKPluginInstallMessage = {


2069 `SDKPermissionDeniedMessage`2036 `SDKPermissionDeniedMessage`

2070</h3>2037</h3>

2071 2038 

2072Evento de transmisión emitido cuando el sistema de permisos deniega una llamada de herramienta sin un prompt interactivo. Úselo para renderizar la denegación en su interfaz a medida que sucede, en lugar de solo observar el resultado de herramienta `is_error` que sigue. Qué denegaciones reporta depende de cómo la ejecución maneja los prompts de permiso:2039Evento de streaming que se emite cuando el sistema de permisos deniega una llamada a herramienta sin una solicitud de permiso interactiva. Úsalo para mostrar la denegación en tu interfaz en el momento en que ocurre, en lugar de solo observar el resultado de herramienta con `is_error` que viene después. Qué denegaciones reporta depende de cómo maneja la ejecución las solicitudes de permiso:

2073 

2074* **Con una devolución de llamada [`canUseTool`](#canusetool) y el [`permissionPrompts: 'host'`](#options) predeterminado**: los prompts de permiso van a su devolución de llamada, y este evento reporta las denegaciones que Claude Code decide por sí solo sin llamarla.

2075*

2076 2040 

2077**Sin ninguno**: una ejecución `-p` desnuda, o `query()` que no establece ni `canUseTool` ni `permissionPromptToolName`, deniega cualquier llamada de herramienta que habría solicitado, y este evento reporta esas denegaciones así como las que Claude Code decide por sí solo. Antes de v2.1.223, Claude Code no emitía este evento en ejecuciones sin una devolución de llamada.2041* **Con un callback [`canUseTool`](#canusetool)** y el valor predeterminado [`permissionPrompts: 'host'`](#options): las solicitudes de permiso van a tu callback, y este evento reporta las denegaciones que Claude Code decide por su cuenta sin llamarlo.

2042* **Sin ninguno de los dos**: una ejecución `-p` sin más, o un `query()` que no establece ni `canUseTool` ni `permissionPromptToolName`, deniega cualquier llamada a herramienta que habría requerido una solicitud de permiso, y este evento reporta esas denegaciones además de las que Claude Code decide por su cuenta. Antes de v2.1.223, Claude Code no emitía este evento en ejecuciones sin callback.

2043* **Con una herramienta de solicitud de permisos MCP**, establecida con `permissionPromptToolName` o con el flag [`--permission-prompt-tool`](/docs/es/cli-reference#cli-flags), y el valor predeterminado `permissionPrompts: 'host'`: Claude Code no emite este evento en absoluto, ni siquiera para las denegaciones por reglas que decide por su cuenta.

2044* **Con [`permissionPrompts: 'none'`](#options)**: Claude Code deniega las llamadas que habrían requerido una solicitud de permiso, incluso cuando también está establecido `canUseTool` o una herramienta de solicitud de permisos MCP, y este evento reporta esas denegaciones además de las que Claude Code decide por su cuenta. Requiere Claude Code v2.1.259 o posterior.

2078 2045 

2079* **Con una herramienta de prompt MCP**, establecida con `permissionPromptToolName` o la bandera [`--permission-prompt-tool`](/docs/es/cli-reference#cli-flags), y el `permissionPrompts: 'host'` predeterminado: Claude Code no emite este evento en absoluto, ni siquiera para las denegaciones de regla que decide por sí solo.2046En cualquier configuración, este evento omite toda denegación decidida en la ruta del hook `PreToolUse`, tanto si el propio hook denegó la llamada como si una regla de denegación anuló la decisión de permitir o preguntar del hook. Además, el evento funciona con el mejor esfuerzo posible: ocasionalmente Claude Code registra una denegación sin emitir este evento, así que `permission_denials` en el [mensaje de resultado](#sdkresultmessage) es el registro de referencia.

2080*

2081 

2082**Con [`permissionPrompts: 'none'`](#options)**: Claude Code deniega las llamadas que habrían solicitado, incluso cuando `canUseTool` o una herramienta de prompt MCP también está establecida, y este evento reporta esas denegaciones así como las que Claude Code decide por sí solo. Requiere Claude Code v2.1.259 o posterior.

2083 

2084En cada configuración, este evento omite cualquier denegación decidida en la ruta del hook `PreToolUse`, ya sea que el hook denegara la llamada por sí solo o una regla de denegación anulara la decisión de permitir o preguntar del hook. El evento también es de mejor esfuerzo: ocasionalmente Claude Code registra una denegación sin emitir este evento, así que `permission_denials` en el [mensaje de resultado](#sdkresultmessage) es el registro autorizado.

2085 2047 

2086```typescript theme={null}2048```typescript theme={null}

2087type SDKPermissionDeniedMessage = {2049type SDKPermissionDeniedMessage = {


2100 2062 

2101| Campo | Tipo | Descripción |2063| Campo | Tipo | Descripción |

2102| - | - | - |2064| - | - | - |

2103| `tool_name` | `string` | Nombre de la herramienta que fue denegada |2065| `tool_name` | `string` | Nombre de la herramienta denegada |

2104| `tool_use_id` | `string` | ID del bloque `tool_use` que esta denegación responde |2066| `tool_use_id` | `string` | ID del bloque `tool_use` al que responde esta denegación |

2105| `agent_id` | `string` | ID del subagente cuando la llamada denegada se originó dentro de un subagente. Refleja el campo en `can_use_tool` para enrutamiento del lado del host |2067| `agent_id` | `string` | ID del subagente cuando la llamada denegada se originó dentro de un subagente. Replica el campo de `can_use_tool` para el enrutamiento del lado del host |

2106| `decision_reason_type` | `string` | Discriminador para el componente que decidió, como `"rule"`, `"mode"`, `"classifier"`, o `"asyncAgent"` |2068| `decision_reason_type` | `string` | Discriminador del componente que decidió, como `"rule"`, `"mode"`, `"classifier"` o `"asyncAgent"` |

2107| `decision_reason` | `string` | Razón legible por humanos del componente que decidió, cuando está disponible |2069| `decision_reason` | `string` | Motivo legible por humanos del componente que decidió, cuando está disponible |

2108| `message` | `string` | Mensaje de rechazo devuelto al modelo en el `tool_result` |2070| `message` | `string` | Mensaje de rechazo devuelto al modelo en el `tool_result` |

2109 2071 

2110<h3 id="sdkpermissiondenial">2072<h3 id="sdkpermissiondenial">


2125 `SDKContextUsage`2087 `SDKContextUsage`

2126</h3>2088</h3>

2127 2089 

2128Forma estructurada del informe `/context`, llevada como `context_usage` en el [`SDKAssistantMessage`](#sdkassistantmessage) que entrega un resultado `/context`. Agent SDK v0.3.232 y posterior exportan el tipo. A diferencia de [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse), lleva solo los datos necesarios para renderizar el desglose de uso, sin campos de visualización como `color` y `gridRows`. Claude Code calcula el informe con solicitudes de API de conteo de tokens que no aparecen en la transmisión de mensajes; consulte [cómo se manejan estas solicitudes](#sdkcontrolgetcontextusageresponse).2090Forma estructurada del informe de `/context`, que llega como `context_usage` en el [`SDKAssistantMessage`](#sdkassistantmessage) que entrega un resultado de `/context`. Agent SDK v0.3.232 y posteriores exportan el tipo. A diferencia de [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse), lleva solo los datos necesarios para renderizar el desglose de uso, sin campos de visualización como `color` y `gridRows`. Claude Code calcula el informe con solicitudes de API de conteo de tokens que no aparecen en el stream de mensajes; consulta [cómo se manejan estas solicitudes](#sdkcontrolgetcontextusageresponse).

2129 2091 

2130```typescript theme={null}2092```typescript theme={null}

2131type SDKContextUsage = {2093type SDKContextUsage = {


2162};2124};

2163```2125```

2164 2126 

2165La tabla enumera lo que Claude Code pone en cada campo. Los campos de `model` a `over_limit` describen la sesión en su conjunto, y los campos de colección atribuyen tokens a elementos individuales.2127La tabla enumera lo que Claude Code pone en cada campo. Los campos desde `model` hasta `over_limit` describen la sesión en su conjunto, y los campos de colección atribuyen tokens a elementos individuales.

2166 2128 

2167| Campo | Tipo | Descripción |2129| Campo | Tipo | Descripción |

2168| - | - | - |2130| - | - | - |

2169| `model` | `string` | El modelo del bucle principal para el cual Claude Code calculó el uso, no el de un subagente |2131| `model` | `string` | El modelo del bucle principal para el que Claude Code calculó el uso, no el de un subagente |

2170| `total_tokens` | `number` | La estimación de Claude Code de los tokens en uso. No se fija a la ventana, por lo que puede exceder `raw_max_tokens` cuando la sesión está sobre el límite |2132| `total_tokens` | `number` | La estimación de Claude Code de los tokens en uso. No se limita a la ventana, así que puede superar `raw_max_tokens` cuando la sesión excede el límite |

2171| `raw_max_tokens` | `number` | La ventana de contexto del modelo, o la [ventana de auto-compactación](/docs/es/model-config#context-window-and-auto-compaction) más baja cuando se aplica una, como la que estableció o el límite de 200K que Claude Code aplica a algunos modelos con una ventana de 1M de tokens. Claude Code mide `total_tokens` contra esta ventana |2133| `raw_max_tokens` | `number` | La ventana de contexto del modelo, o la [ventana de compactación automática](/docs/es/model-config#context-window-and-auto-compaction) más baja cuando se aplica una, como una que hayas establecido o el límite de 200K que Claude Code aplica a algunos modelos con una ventana de 1M de tokens. Claude Code mide `total_tokens` con respecto a esta ventana |

2172| `percentage` | `number` | `total_tokens` como un porcentaje redondeado de `raw_max_tokens`, por lo que puede exceder 100 cuando la sesión está sobre el límite |2134| `percentage` | `number` | `total_tokens` como porcentaje redondeado de `raw_max_tokens`, así que puede superar 100 cuando la sesión excede el límite |

2173| `over_limit` | `object` | Presente solo cuando `total_tokens` excede `raw_max_tokens`. `tokens_over` es la cantidad sobre, y `kind` dice cómo Claude Code resolvió la ventana |2135| `over_limit` | `object` | Presente solo cuando `total_tokens` supera `raw_max_tokens`. `tokens_over` es la cantidad excedida, y `kind` indica cómo resolvió Claude Code la ventana |

2174| `categories` | [`SDKContextUsageCategory`](#sdkcontextusagecategory)`[]` | Una entrada por fila del desglose de uso por categoría |2136| `categories` | [`SDKContextUsageCategory`](#sdkcontextusagecategory)`[]` | Una entrada por cada fila del desglose de uso por categoría |

2175| `mcp_tools` | `object[]` | Tokens atribuidos a cada herramienta MCP, con su nombre de cable, como `mcp__linear__create_issue`, y su `server_name` |2137| `mcp_tools` | `object[]` | Tokens atribuidos a cada herramienta MCP, con su nombre de protocolo, como `mcp__linear__create_issue`, y su `server_name` |

2176| `memory_files` | `object[]` | Tokens atribuidos a cada archivo de memoria cargado, con su `path` y una etiqueta de fuente como `Project` o `User` en `type` |2138| `memory_files` | `object[]` | Tokens atribuidos a cada archivo de memoria cargado, con su `path` y una etiqueta de origen como `Project` o `User` en `type` |

2177| `agents` | `object[]` | Tokens atribuidos a cada definición de subagente personalizado, con un identificador de fuente como `projectSettings`, `userSettings`, o `plugin`. Los subagentes integrados no se enumeran |2139| `agents` | `object[]` | Tokens atribuidos a cada definición de subagente personalizado, con un identificador de origen como `projectSettings`, `userSettings` o `plugin`. Los subagentes integrados no se enumeran |

2178| `skills` | `object[]` | Tokens atribuidos a cada habilidad en la lista de habilidades, con un identificador de fuente y, para habilidades de plugin, el nombre del plugin en `plugin_name`. Ausente cuando ninguna habilidad contribuye tokens |2140| `skills` | `object[]` | Tokens atribuidos a cada skill de la lista de skills, con un identificador de origen y, para los skills de plugins, el nombre del plugin en `plugin_name`. Ausente cuando ningún skill aporta tokens |

2179 2141 

2180`over_limit.kind` registra cómo Claude Code resolvió la ventana, no si la API acepta la siguiente solicitud:2142`over_limit.kind` registra cómo resolvió Claude Code la ventana, no si la API acepta la siguiente solicitud:

2181 2143 

2182* `hard_limit`: la ventana es lo que Claude Code cree que es el límite propio del modelo, más allá del cual la API rechaza solicitudes2144* `hard_limit`: la ventana es lo que Claude Code cree que es el límite propio del modelo, a partir del cual la API rechaza las solicitudes

2183* `compaction_window`: la ventana es una ventana de política de compactación, que puede o no coincidir con el límite del modelo2145* `compaction_window`: la ventana es una ventana de la política de compactación, que puede coincidir o no con el límite del modelo

2184 2146 

2185Claude Code evoluciona el tipo de manera aditiva, añadiendo nuevos datos como campos opcionales en lugar de remodelar los existentes. Lea los campos que conoce e ignore cualquiera que no reconozca.2147Claude Code hace evolucionar el tipo de forma aditiva, añadiendo datos nuevos como campos opcionales en lugar de reestructurar los existentes. Lee los campos que conoces e ignora los que no reconozcas.

2186 2148 

2187<h3 id="sdkcontextusagecategory">2149<h3 id="sdkcontextusagecategory">

2188 `SDKContextUsageCategory`2150 `SDKContextUsageCategory`

2189</h3>2151</h3>

2190 2152 

2191Una fila del desglose de uso por categoría `/context`.2153Una fila del desglose de uso por categoría de `/context`.

2192 2154 

2193```typescript theme={null}2155```typescript theme={null}

2194type SDKContextUsageCategory = {2156type SDKContextUsageCategory = {


2202 2164 

2203| Campo | Tipo | Descripción |2165| Campo | Tipo | Descripción |

2204| - | - | - |2166| - | - | - |

2205| `name` | `string` | El nombre de visualización de la fila como `/context` lo imprime, como `Messages`. Clasifique las filas por `kind`, no por nombre |2167| `name` | `string` | El nombre para mostrar de la fila tal como lo imprime `/context`, como `Messages`. Clasifica las filas por `kind`, no por el nombre |

2206| `tokens` | `number` | El recuento de tokens de la fila. Las filas pueden llevar cero tokens |2168| `tokens` | `number` | El recuento de tokens de la fila. Las filas pueden tener cero tokens |

2207| `kind` | `string` | Lo que representa la fila: `used`, `free`, `buffer`, o `deferred` |2169| `kind` | `string` | Lo que representa la fila: `used`, `free`, `buffer` o `deferred` |

2208 2170 

2209Cada valor `kind` dice qué son los tokens de la fila:2171Cada valor de `kind` indica qué son los tokens de la fila:

2210 2172 

2211* `used`: contenido que ocupa la ventana de contexto2173* `used`: contenido que ocupa la ventana de contexto

2212* `free`: la ventana restante2174* `free`: la ventana restante

2213* `buffer`: la reserva de compactación2175* `buffer`: la reserva para la compactación

2214* `deferred`: esquemas de herramientas que Claude Code mantiene fuera de la ventana y excluye del cálculo de uso, enumerados para conciencia2176* `deferred`: esquemas de herramientas que Claude Code mantiene fuera de la ventana y excluye del cálculo de uso, enumerados a título informativo

2215 2177 

2216<h3 id="sdkmessageorigin">2178<h3 id="sdkmessageorigin">

2217 `SDKMessageOrigin`2179 `SDKMessageOrigin`

2218</h3>2180</h3>

2219 2181 

2220Procedencia de un mensaje de rol de usuario. Esto aparece como `origin` en [`SDKUserMessage`](#sdkusermessage) y se reenvía al [`SDKResultMessage`](#sdkresultmessage) correspondiente para que pueda saber qué activó un turno dado.2182Procedencia de un mensaje con rol de usuario. Aparece como `origin` en [`SDKUserMessage`](#sdkusermessage) y se reenvía al [`SDKResultMessage`](#sdkresultmessage) correspondiente para que puedas saber qué activó un turno determinado.

2221 2183 

2222```typescript theme={null}2184```typescript theme={null}

2223type SDKMessageOrigin =2185type SDKMessageOrigin =


2245 2207 

2246| `kind` | Significado |2208| `kind` | Significado |

2247| - | - |2209| - | - |

2248| `human` | Entrada directa del usuario final. Si su aplicación reenvía lo que el usuario escribió como un mensaje de usuario, establezca su `origin` en `{ kind: "human" }` explícitamente: Claude Code trata un mensaje de usuario sin `origin` como no atribuido, y verifica que requieren un prompt escrito por humanos, como la [palabra clave de flujo de trabajo `ultracode`](/docs/es/workflows#ask-for-a-workflow-in-your-prompt), no lo aceptan. Antes de v2.1.210, Claude Code trataba un `origin` ausente en un mensaje de usuario como entrada humana. |2210| `human` | Entrada directa del usuario final. Si tu aplicación reenvía lo que escribió el usuario como un mensaje de usuario, establece su `origin` en `{ kind: "human" }` de forma explícita: Claude Code trata un mensaje de usuario sin `origin` como no atribuido, y las verificaciones que exigen un prompt escrito por una persona, como la [palabra clave de flujo de trabajo `ultracode`](/docs/es/workflows#ask-for-a-workflow-in-your-prompt), no lo aceptan. Antes de v2.1.210, Claude Code trataba un `origin` ausente en un mensaje de usuario como entrada humana. |

2249| `channel` | Mensaje que llega en un [canal](/docs/es/channels). `server` es el nombre del servidor MCP de origen. |2211| `channel` | Mensaje que llega por un [canal](/docs/es/channels). `server` es el nombre del servidor MCP de origen. |

2250| `peer` | Mensaje de otro agente: un [compañero](/docs/es/agent-teams) en proceso enviando a `main` con `SendMessage`, o un [par entre sesiones](/docs/es/cross-session-messaging), otra de sus sesiones de Claude Code. Consulte [Campos de origen de par](#peer-origin-fields) para la semántica por campo y el modelo de confianza. |2212| `peer` | Mensaje de otro agente: un [compañero de equipo](/docs/es/agent-teams) dentro del proceso o un [par entre sesiones](/docs/es/cross-session-messaging), es decir, otra de tus sesiones de Claude Code. Consulta [Campos de origen de par](#peer-origin-fields) para ver la semántica de cada campo y el modelo de confianza. |

2251| `task-notification` | Turno sintético inyectado para una entrega que llega sin un prompt de usuario fresco, como una tarea de fondo terminada; consulte [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) para ese brazo. Un prompt que su aplicación [declara como una ejecución programada](#declare-a-scheduled-run) también lleva este tipo. El `subkind` opcional marca qué generó la notificación. Consulte [Subtipos de notificación de tarea](#task-notification-subkinds). |2213| `task-notification` | Turno sintético inyectado para una entrega que llega sin un prompt nuevo del usuario, como una tarea en segundo plano terminada; consulta [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) para esa rama. Un prompt que tu aplicación [declara como ejecución programada](#declare-a-scheduled-run) también lleva este tipo. El `subkind` opcional indica qué generó la notificación. Consulta [Subtipos de notificación de tarea](#task-notification-subkinds). |

2252| `coordinator` | Mensaje de un coordinador de equipo en un [equipo de agentes](/docs/es/agent-teams). |2214| `coordinator` | Mensaje de un coordinador de equipo en un [equipo de agentes](/docs/es/agent-teams). |

2253| `auto-continuation` | Turno sintético inyectado cuando la sesión continúa sin entrada de usuario fresca, como un resultado de comando que activa un prompt de seguimiento. |2215| `auto-continuation` | Turno sintético inyectado cuando la sesión continúa sin una entrada nueva del usuario, como un resultado de comando que activa un prompt de seguimiento. |

2254| `unclassified` | Turno inyectado cuyo origen no pudo determinarse. Requiere Claude Code v2.1.223 o posterior. Cuando Claude Code recibe un [`SDKUserMessage`](#sdkusermessage) con `isSynthetic: true` y no puede clasificarlo como ningún otro `kind`, establece este tipo a medida que llega el mensaje y enmarca el turno al modelo como una fuente no usuario en lugar de tratarlo como entrada humana. Su aplicación no debe establecer este valor. |2216| `unclassified` | Turno inyectado cuyo origen no se pudo determinar. Requiere Claude Code v2.1.223 o posterior. Cuando Claude Code recibe un [`SDKUserMessage`](#sdkusermessage) con `isSynthetic: true` y no puede clasificarlo como ningún otro `kind`, establece este tipo al llegar el mensaje y le presenta el turno al modelo como una fuente que no es el usuario, en lugar de tratarlo como entrada humana. Tu aplicación no debe establecer este valor. |

2255 2217 

2256<h3 id="task-notification-subkinds">2218<h3 id="task-notification-subkinds">

2257 Subtipos de notificación de tarea2219 Subtipos de notificación de tarea

2258</h3>2220</h3>

2259 2221 

2260Cuando Claude Code entrega una notificación de tarea en una sesión, establece `subkind` en el `origin` de la notificación si los servidores de Anthropic verificaron de dónde provino esa notificación. También establece `subkind` cuando su aplicación [declara el mensaje como una ejecución programada](#declare-a-scheduled-run) por sí misma, lo que requiere TypeScript Agent SDK v0.3.280 o posterior. `subkind` requiere Claude Code v2.1.213 o posterior, y toma uno de dos valores:2222Cuando Claude Code entrega una notificación de tarea en una sesión, establece `subkind` en el `origin` de la notificación si los servidores de Anthropic verificaron de dónde provino esa notificación. También establece `subkind` cuando tu propia aplicación [declara el mensaje como ejecución programada](#declare-a-scheduled-run), lo que requiere TypeScript Agent SDK v0.3.280 o posterior. `subkind` requiere Claude Code v2.1.213 o posterior y toma uno de dos valores:

2261 2223 

2262* `scheduled-trigger`: la notificación es un prompt almacenado de una [rutina](/docs/es/routines), entregado porque uno de los disparadores de la rutina se activó: su horario, su [disparador de API](/docs/es/routines#add-an-api-trigger), su [disparador de GitHub](/docs/es/routines#add-a-github-trigger), o **Ejecutar ahora**. Un prompt que su aplicación [declara como una ejecución programada](#declare-a-scheduled-run) también lleva este valor. Claude Code enmarca estos al modelo como la tarea asignada de la sesión, con un aviso diferente del [aviso que otras notificaciones de tarea llevan](#sdktasknotificationmessage).2224* `scheduled-trigger`: la notificación es el prompt almacenado de una [rutina](/docs/es/routines), entregado porque se activó uno de los disparadores de la rutina: su horario, su [disparador de API](/docs/es/routines#add-an-api-trigger), su [disparador de GitHub](/docs/es/routines#add-a-github-trigger) o **Ejecutar ahora**. Un prompt que tu aplicación [declara como ejecución programada](#declare-a-scheduled-run) también lleva este valor. Claude Code se los presenta al modelo como la tarea asignada de la sesión, con un aviso distinto del [aviso que llevan las demás notificaciones de tarea](#sdktasknotificationmessage).

2263*2225* `peer-send-message`: la notificación es un mensaje que otra de tus sesiones envió con la herramienta `send_message` del lado del servidor que usan las [sesiones en la nube](/docs/es/claude-code-on-the-web) para enviarse mensajes entre sí, no con la [herramienta `SendMessage` entre sesiones](/docs/es/cross-session-messaging), y los servidores de Anthropic verificaron que ambas sesiones pertenecen al mismo grupo privado de sesiones. Requiere Claude Code v2.1.224 o posterior. Una entrega de `send_message` que los servidores no verificaron de esa forma no recibe ningún subkind.

2264 2226 

2265`peer-send-message`: la notificación es un mensaje que otra de sus sesiones envió con la herramienta `send_message` del lado del servidor que [sesiones en la nube](/docs/es/claude-code-on-the-web) usan para mensajearse entre sí, no la [herramienta `SendMessage` entre sesiones](/docs/es/cross-session-messaging), y los servidores de Anthropic verificaron que ambas sesiones pertenecen al mismo grupo privado de sesiones. Requiere Claude Code v2.1.224 o posterior. Una entrega `send_message` que los servidores no verificaron de esa manera no obtiene ningún subkind.2227Todas las demás notificaciones de tarea no tienen `subkind`. Eso incluye la [actividad de PR](/docs/es/claude-code-on-the-web#how-claude-responds-to-pr-activity) entregada en una sesión y los eventos en segundo plano, como una tarea terminada. Los mensajes de la [herramienta `SendMessage` entre sesiones](/docs/es/cross-session-messaging) no son notificaciones de tarea en absoluto: tanto si provienen de una sesión en la misma máquina como si llegan a través de los servidores de Anthropic desde otra máquina, Claude Code les asigna `kind: "peer"` y los [campos de origen de par](#peer-origin-fields).

2266 2228 

2267Cada otra notificación de tarea no tiene `subkind`. Eso incluye [actividad de PR](/docs/es/claude-code-on-the-web#how-claude-responds-to-pr-activity) entregada en una sesión y eventos de fondo como una tarea terminada. Los mensajes de la [herramienta `SendMessage` entre sesiones](/docs/es/cross-session-messaging) no son notificaciones de tarea en absoluto: ya sea que provengan de una sesión en la misma máquina o a través de servidores de Anthropic desde otra máquina, Claude Code les da `kind: "peer"` y los [campos de origen de par](#peer-origin-fields).2229`fireReason` indica por qué se activó una notificación `scheduled-trigger`, como un token breve en minúsculas, por ejemplo `scheduled`, `manual`, `retry`, `catch_up` o `api`. Los servidores de Anthropic lo establecen en las entregas de una [rutina](/docs/es/routines), y tu aplicación lo establece cuando declara una ejecución programada. Está ausente cuando ninguno de los dos envió uno. Requiere TypeScript Agent SDK v0.3.280 o posterior.

2268 

2269`fireReason` dice por qué se activó una notificación `scheduled-trigger`, como un token en minúsculas corto como `scheduled`, `manual`, `retry`, `catch_up`, o `api`. Los servidores de Anthropic lo establecen en las entregas de una [rutina](/docs/es/routines), y su aplicación lo establece cuando declara una ejecución programada. Está ausente cuando ninguno envió uno. Requiere TypeScript Agent SDK v0.3.280 o posterior.

2270 2230 

2271<h4 id="declare-a-scheduled-run">2231<h4 id="declare-a-scheduled-run">

2272 Declarar una ejecución programada2232 Declarar una ejecución programada

2273</h4>2233</h4>

2274 2234 

2275Si su aplicación ejecuta prompts en su propio horario, declare cada ejecución para que Claude Code enmarque el turno al modelo como una tarea programada en lugar de como entrada en vivo del usuario. Inicie la sesión con `CLAUDE_CODE_HOST_SCHEDULED_RUN` establecido en `1` en [`env`](#options), luego envíe el [`SDKUserMessage`](#sdkusermessage) de la ejecución con `origin: { kind: "task-notification", subkind: "scheduled-trigger", fireReason: "scheduled" }` y sin `isSynthetic`. Claude Code ignora la declaración en un proceso iniciado sin esa variable. También la ignora en un proceso cuyo entorno lleva [`CLAUDECODE`](/docs/es/env-vars) o `CLAUDE_CODE_CHILD_SESSION`. Claude Code mantiene `fireReason` solo cuando el valor es 1 a 32 letras minúsculas o guiones bajos. Requiere TypeScript Agent SDK v0.3.280 o posterior.2235Si tu aplicación ejecuta prompts según su propio horario, declara cada ejecución para que Claude Code le presente el turno al modelo como una tarea programada en lugar de como entrada en vivo del usuario. Inicia la sesión con `CLAUDE_CODE_HOST_SCHEDULED_RUN` establecida en `1` en [`env`](#options) y luego envía el [`SDKUserMessage`](#sdkusermessage) de la ejecución con `origin: { kind: "task-notification", subkind: "scheduled-trigger", fireReason: "scheduled" }` y sin `isSynthetic`. Claude Code ignora la declaración en un proceso iniciado sin esa variable. También la ignora en un proceso cuyo entorno contiene [`CLAUDECODE`](/docs/es/env-vars) o `CLAUDE_CODE_CHILD_SESSION`. Claude Code conserva `fireReason` solo cuando el valor tiene de 1 a 32 letras minúsculas o guiones bajos. Requiere TypeScript Agent SDK v0.3.280 o posterior.

2276 2236 

2277<h3 id="peer-origin-fields">2237<h3 id="peer-origin-fields">

2278 Campos de origen de par2238 Campos de origen de par

2279</h3>2239</h3>

2280 2240 

2281Un origen `peer` identifica qué agente envió el mensaje: un [compañero](/docs/es/agent-teams) en proceso enviando a `main` con `SendMessage`, o un [par entre sesiones](/docs/es/cross-session-messaging), otra de sus sesiones de Claude Code. Los pares entre sesiones requieren Claude Code v2.1.224 o posterior en macOS y Linux; consulte [disponibilidad de mensajería entre sesiones](/docs/es/cross-session-messaging#availability) para el requisito de Windows nativo. Un par entre sesiones puede ejecutarse en la misma máquina, o en [otra de sus máquinas](/docs/es/cross-session-messaging#message-sessions-on-other-machines) o [en la nube](/docs/es/claude-code-on-the-web) cuando su mensaje llega a través de Control Remoto. Los dos tipos de remitente llenan los campos de manera diferente:2241Un origen `peer` identifica qué agente envió el mensaje: un [compañero de equipo](/docs/es/agent-teams) dentro del proceso que envía a `main` con `SendMessage`, o un [par entre sesiones](/docs/es/cross-session-messaging), es decir, otra de tus sesiones de Claude Code. Los pares entre sesiones requieren Claude Code v2.1.224 o posterior en macOS y Linux; consulta [disponibilidad de la mensajería entre sesiones](/docs/es/cross-session-messaging#availability) para ver el requisito en Windows nativo. Un par entre sesiones puede ejecutarse en la misma máquina, o en [otra de tus máquinas](/docs/es/cross-session-messaging#message-sessions-on-other-machines) o [en la nube](/docs/es/claude-code-on-the-web) cuando su mensaje llega a través de Remote Control. Los dos tipos de remitente rellenan los campos de forma distinta:

2282 

2283* `from`: el nombre del compañero, o la dirección del remitente para un par entre sesiones. Para un [mensaje unidireccional entre máquinas](/docs/es/cross-session-messaging#message-sessions-on-other-machines), el remitente no tiene dirección de respuesta y `from` es `"unknown"`. El valor es creado por el remitente; `verifiedPeerPid` es la identidad verificada.

2284*

2285 

2286`fromMode`: la clase de permiso de la sesión de envío, `bypass` o `prompting`, declarada por un host que retransmite un mensaje de par entre sus sesiones, como la [aplicación de escritorio](/docs/es/desktop#work-across-sessions). Claude Code lo lee en la sesión receptora cuando aplica los [controles de entrada](/docs/es/cross-session-messaging#control-inbound-messages). Requiere Agent SDK v0.3.234 o posterior.

2287 

2288* `senderTaskId`: el ID de tarea del compañero. Ausente para un par entre sesiones.

2289*

2290 

2291`name`: el nombre de visualización del remitente, normalizado por Claude Code: elimina puntos de código de control, formato, sustituto, y separador de línea o párrafo Unicode, luego recorta el resultado y lo limita a 64 puntos de código con puntos suspensivos. Requiere Claude Code v2.1.205 o posterior.

2292 

2293*

2294 

2295`body`: el cuerpo del mensaje decodificado con la envoltura de par eliminada, byte exacto con lo que el modelo ve. Siempre presente para un mensaje de compañero; para un par entre sesiones, presente solo cuando el turno es exactamente una envoltura de par formada por Claude Code. Renderice `name` y `body` en lugar de volver a analizar el texto del mensaje. Requiere Claude Code v2.1.205 o posterior.

2296 

2297*

2298 

2299`fromSession`: el ID de sesión abierto por host del remitente, establecido por el host del remitente para que su interfaz pueda vincular de nuevo a la sesión de envío. Como `from`, es afirmado por el remitente: úselo como destino de navegación solo, y no lo trate como prueba de la identidad del remitente. Requiere Claude Code v2.1.216 o posterior.

2300 

2301*

2302 2242 

2303`verifiedPeerPid`: el ID de proceso del proceso que se conectó al socket de mensajería entre sesiones de esta sesión, verificado por el kernel y leído de la conexión misma, nunca de la carga útil. Úselo, no `from`, para identificar al remitente: `from` es falsificable por cualquier proceso del mismo usuario. El campo está ausente cuando Claude Code no puede verificarlo, como en Windows o entrada que no es socket, así que un valor ausente significa que el remitente no está verificado. Para tráfico retransmitido identifica el relé en lugar del autor del mensaje, y los ID de proceso son reciclables, así que trátelo como procedencia en lugar de un token de autenticación. Requiere Claude Code v2.1.216 o posterior.2243* `from`: el nombre del compañero de equipo, o la dirección del remitente en el caso de un par entre sesiones. En un [mensaje unidireccional entre máquinas](/docs/es/cross-session-messaging#message-sessions-on-other-machines), el remitente no tiene dirección de respuesta y `from` es `"unknown"`. El valor lo escribe el remitente; `verifiedPeerPid` es la identidad verificada.

2244* `fromMode`: la clase de permisos de la sesión que envía, `bypass` o `prompting`, declarada por un host que retransmite un mensaje de par entre tus sesiones, como la [aplicación de escritorio](/docs/es/desktop#work-across-sessions). Claude Code lo lee en la sesión receptora cuando aplica los [controles de mensajes entrantes](/docs/es/cross-session-messaging#control-inbound-messages). Requiere Agent SDK v0.3.234 o posterior.

2245* `senderTaskId`: el ID de tarea del compañero de equipo. Ausente en el caso de un par entre sesiones.

2246* `name`: el nombre para mostrar del remitente, normalizado por Claude Code: elimina los puntos de código Unicode de control, de formato, sustitutos y separadores de línea o de párrafo, luego recorta el resultado y lo limita a 64 puntos de código con puntos suspensivos. Requiere Claude Code v2.1.205 o posterior.

2247* `body`: el cuerpo decodificado del mensaje sin el envoltorio de par, idéntico byte a byte a lo que ve el modelo. Siempre presente en un mensaje de un compañero de equipo; en el caso de un par entre sesiones, presente solo cuando el turno es exactamente un envoltorio de par formado por Claude Code. Renderiza `name` y `body` en lugar de volver a analizar el texto del mensaje. Requiere Claude Code v2.1.205 o posterior.

2248* `fromSession`: el ID de sesión del remitente que su host puede abrir, establecido por el host del remitente para que tu interfaz pueda enlazar de vuelta a la sesión que envió el mensaje. Al igual que `from`, lo afirma el remitente: úsalo solo como destino de navegación y no lo trates como prueba de la identidad del remitente. Requiere Claude Code v2.1.216 o posterior.

2249* `verifiedPeerPid`: el ID del proceso que se conectó al socket de mensajería entre sesiones de esta sesión, verificado por el kernel y leído de la propia conexión, nunca del payload. Úsalo, y no `from`, para identificar al remitente: cualquier proceso del mismo usuario puede falsificar `from`. El campo está ausente cuando Claude Code no puede verificarlo, como en Windows o en entradas que no llegan por socket, así que un valor ausente significa que el remitente no está verificado. En el tráfico retransmitido identifica al relay en lugar del autor del mensaje, y los ID de proceso se reutilizan, así que trátalo como procedencia y no como un token de autenticación. Requiere Claude Code v2.1.216 o posterior.

2304 2250 

2305<h2 id="hook-types">2251<h2 id="hook-types">

2306 Tipos de Hook2252 Tipos de Hook


5099```5045```

5100 5046 

5101<h2 id="other-types">5047<h2 id="other-types">

5102 Otros Tipos5048 Otros tipos

5103</h2>5049</h2>

5104 5050 

5105<h3 id="apikeysource">5051<h3 id="apikeysource">

5106 `ApiKeySource`5052 `ApiKeySource`

5107</h3>5053</h3>

5108 5054 

5109De dónde provino la clave API para las solicitudes de la sesión, reportada como `apiKeySource` en el mensaje de inicialización [`SDKSystemMessage`](#sdksystemmessage).5055De dónde provino la clave de API para las solicitudes de la sesión, reportada como `apiKeySource` en el mensaje de inicialización [`SDKSystemMessage`](#sdksystemmessage).

5110 5056 

5111```typescript theme={null}5057```typescript theme={null}

5112type ApiKeySource =5058type ApiKeySource =


5126| Valor | Clave en uso |5072| Valor | Clave en uso |

5127| - | - |5073| - | - |

5128| `ANTHROPIC_API_KEY` | La clave en la variable de entorno `ANTHROPIC_API_KEY` |5074| `ANTHROPIC_API_KEY` | La clave en la variable de entorno `ANTHROPIC_API_KEY` |

5129| `apiKeyHelper` | La clave devuelta por su comando [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) |5075| `apiKeyHelper` | La clave devuelta por tu comando [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) |

5130| `/login managed key` | La clave que Claude Code almacenó cuando inició sesión con una [cuenta de Claude Console](/docs/es/authentication#claude-console-authentication) |5076| `/login managed key` | La clave que Claude Code almacenó cuando iniciaste sesión con una [cuenta de Claude Console](/docs/es/authentication#claude-console-authentication) |

5131| `none` | Sin clave API. La sesión se autentica de otra manera, como un inicio de sesión en claude.ai, un token portador o un proveedor de nube |5077| `none` | Sin clave de API. La sesión se autentica de otra manera, como un inicio de sesión en claude.ai, un token portador o un proveedor de nube |

5132 5078 

5133Agent SDK v0.3.234 y posterior enumeran estos cuatro valores en el tipo. El tipo también mantiene `user`, `project`, `org`, `temporary` y `oauth` para que el código más antiguo siga compilándose, y Claude Code no los reporta.5079Agent SDK v0.3.234 y posterior enumeran estos cuatro valores en el tipo. El tipo también mantiene `user`, `project`, `org`, `temporary` y `oauth` para que el código más antiguo siga compilándose, y Claude Code no los reporta.

5134 5080 


5136 `SdkBeta`5082 `SdkBeta`

5137</h3>5083</h3>

5138 5084 

5139Características beta disponibles que se pueden habilitar a través de la opción `betas`. Vea [Encabezados Beta](https://platform.claude.com/docs/en/api/beta-headers) para más información.5085Características beta disponibles que se pueden habilitar a través de la opción `betas`. Consulta [Encabezados beta](https://platform.claude.com/docs/en/api/beta-headers) para más información.

5140 5086 

5141```typescript theme={null}5087```typescript theme={null}

5142type SdkBeta = "context-1m-2025-08-07";5088type SdkBeta = "context-1m-2025-08-07";

5143```5089```

5144 5090 

5145<Warning>5091<Warning>

5146 La beta `context-1m-2025-08-07` se retiró a partir del 30 de abril de 2026. Pasar este valor con Claude Sonnet 4.5 o Sonnet 4 no tiene efecto, y las solicitudes que excedan la ventana de contexto estándar de 200k tokens devuelven un error. Para usar una ventana de contexto de 1M tokens, migre a [Claude Opus 5.5, Claude Opus 5, Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7 u Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/overview), que incluyen contexto de 1M a precios estándar sin encabezado beta requerido.5092 En la Claude API, la beta `context-1m-2025-08-07` está retirada para Claude Sonnet 4.5 y Claude Sonnet 4. Si todavía la pasas con cualquiera de esos modelos, las solicitudes que excedan la ventana de contexto estándar de 200K tokens devuelven un error, así que quítala de `betas`. Para ejecutar una sesión con una ventana de contexto de 1M tokens, establece `model` en un modelo que [se ejecute con la ventana de 1M de forma predeterminada](/docs/es/model-config#extended-context), como `claude-sonnet-5-5` o `claude-opus-5-5`. Para un modelo que alcanza 1M solo a través de su variante `[1m]`, agrega el sufijo al ID del modelo, como en `claude-opus-4-6[1m]`.

5147</Warning>5093</Warning>

5148 5094 

5149<h3 id="slashcommand">5095<h3 id="slashcommand">


5162};5108};

5163```5109```

5164 5110 

5165`builtin` es `true` en una fila cuando el comando es propio de Claude Code y escribir `/name` lo ejecuta. Está ausente para un comando definido por un usuario, proyecto, plugin o servidor MCP, y para un comando agrupado que uno de esos [reemplaza por nombre](/docs/es/skills#resolve-skills-that-share-a-name). Requiere Agent SDK v0.3.277 o posterior.5111`builtin` es `true` en una fila cuando el comando es propio de Claude Code y escribir `/name` lo ejecuta. Está ausente para un comando definido por un usuario, proyecto, plugin o servidor MCP, y para un comando incluido que uno de esos [reemplaza por nombre](/docs/es/skills#resolve-skills-that-share-a-name). Requiere Agent SDK v0.3.277 o posterior.

5166 5112 

5167<h3 id="modelinfo">5113<h3 id="modelinfo">

5168 `ModelInfo`5114 `ModelInfo`


5186 5132 

5187| Campo | Tipo | Descripción |5133| Campo | Tipo | Descripción |

5188| :- | :- | :- |5134| :- | :- | :- |

5189| `value` | `string` | Identificador de modelo para pasar en llamadas API |5135| `value` | `string` | Identificador de modelo para pasar en llamadas a la API |

5190| `resolvedModel` | `string \| undefined` | ID de modelo canónico que el `value` de esta entrada se resuelve a. Una entrada de alias como `sonnet` se resuelve a un ID de modelo explícito como `claude-sonnet-5`, por lo que un host puede coincidir un ID de modelo explícito almacenado contra la entrada de alias que lo cubre. Requiere Claude Code v2.1.197 o posterior. |5136| `resolvedModel` | `string \| undefined` | El ID de modelo al que se resuelve el `value` de esta entrada, como `claude-sonnet-5-5` para la entrada del alias `sonnet`. Requiere Claude Code v2.1.197 o posterior. |

5191| `displayName` | `string` | Nombre de visualización legible para humanos |5137| `displayName` | `string` | Nombre de visualización legible para humanos |

5192| `description` | `string` | Descripción de las capacidades del modelo |5138| `description` | `string` | Descripción de las capacidades del modelo |

5193| `supportsEffort` | `boolean \| undefined` | Si este modelo admite niveles de esfuerzo |5139| `supportsEffort` | `boolean \| undefined` | Si este modelo admite niveles de esfuerzo |


5234| `name` | `string` | El nombre bajo el cual está registrado el servidor, el mismo valor que [`mcpServerStatus()`](#query-object) reporta para él |5180| `name` | `string` | El nombre bajo el cual está registrado el servidor, el mismo valor que [`mcpServerStatus()`](#query-object) reporta para él |

5235| `source` | `string` | De dónde provino la definición del servidor: `sdk`, `plugin` o un alcance de configuración |5181| `source` | `string` | De dónde provino la definición del servidor: `sdk`, `plugin` o un alcance de configuración |

5236 5182 

5237`source` toma uno de los siguientes valores. El conjunto está abierto, así que trate un valor que no reconozca como una fuente configurada, nunca como `sdk`:5183`source` toma uno de los siguientes valores. El conjunto está abierto, así que trata un valor que no reconozcas como una fuente configurada, nunca como `sdk`:

5238 5184 

5239* **`sdk`**: un servidor en proceso que su aplicación registró. Solo la aplicación host del SDK puede registrar uno, así que un servidor configurado nunca reporta `sdk`, sea cual sea su nombre.5185* **`sdk`**: un servidor en proceso que tu aplicación registró. Solo la aplicación host del SDK puede registrar uno, así que un servidor configurado nunca reporta `sdk`, sea cual sea su nombre.

5240* **`plugin`**: un servidor que proporciona un [plugin](/docs/es/agent-sdk/plugins). Su `name` es la forma con alcance `plugin:<plugin-name>:<server-name>` descrita bajo [servidores MCP proporcionados por plugins](/docs/es/mcp#plugin-provided-mcp-servers).5186* **`plugin`**: un servidor que proporciona un [plugin](/docs/es/agent-sdk/plugins). Su `name` es la forma con alcance `plugin:<plugin-name>:<server-name>` descrita en [servidores MCP proporcionados por plugins](/docs/es/mcp#plugin-provided-mcp-servers).

5241* **Un alcance de configuración**: `user`, `project`, `local`, `dynamic`, `managed`, `enterprise`, `claudeai` o `agent`. Un servidor `.mcp.json` reporta `project`, y [alcances de instalación MCP](/docs/es/mcp#mcp-installation-scopes) define `local`, `project` y `user`. Los servidores que su aplicación pasa en la opción [`mcpServers`](#options), que no sean servidores SDK en proceso, reportan `dynamic`.5187* **Un alcance de configuración**: `user`, `project`, `local`, `dynamic`, `managed`, `enterprise`, `claudeai` o `agent`. Un servidor de `.mcp.json` reporta `project`, y [alcances de instalación de MCP](/docs/es/mcp#mcp-installation-scopes) define `local`, `project` y `user`. Los servidores que tu aplicación pasa en la [opción `mcpServers`](#options), salvo los servidores SDK en proceso, reportan `dynamic`.

5242 5188 

5243Base las decisiones de confianza en `source`, no en `name` o el prefijo de nombre de herramienta `mcp__<server>__`. Para cualquier fuente que no sea `sdk`, `name` es texto no confiable: escápelo antes de mostrarlo.5189Basa las decisiones de confianza en `source`, no en `name` ni en el prefijo de nombre de herramienta `mcp__<server>__`. Para cualquier fuente que no sea `sdk`, `name` es texto no confiable: escápalo antes de mostrarlo.

5244 5190 

5245`McpServerProvenance` y los campos que la llevan requieren Agent SDK v0.3.274 o posterior.5191`McpServerProvenance` y los campos que la llevan requieren Agent SDK v0.3.274 o posterior.

5246 5192 


5275};5221};

5276```5222```

5277 5223 

5278`source` dice de dónde provino la definición del servidor, con los mismos valores y regla de confianza que el `source` de [`McpServerProvenance`](#mcpserverprovenance). El campo requiere Agent SDK v0.3.274 o posterior y está ausente en versiones anteriores.5224`source` indica de dónde provino la definición del servidor, con los mismos valores y regla de confianza que el `source` de [`McpServerProvenance`](#mcpserverprovenance). El campo requiere Agent SDK v0.3.274 o posterior y está ausente en versiones anteriores.

5279 5225 

5280`_meta` en una entrada `tools` lleva los miembros de MCP Apps de `_meta` de esa herramienta, por lo que su aplicación puede encontrar el recurso `ui://` para renderizar con [`readMcpResource()`](#query-object). Claude Code pasa el objeto `ui` y la cadena `ui/resourceUri` plana deprecada, y retiene todas las otras claves. Dentro de `ui`, `resourceUri` es una cadena `ui://` y `visibility` es una matriz de `"model"` y `"app"` cuando el servidor los establece, y cualquier otro miembro pasa sin cambios. Claude Code descarta cualquier clave cuando el valor está mal formado, y omite `_meta` de una herramienta que no declara ninguno. El campo está presente solo cuando las [`capabilities`](#sdksystemmessage) del mensaje de inicialización incluyen `mcp_tool_ui_meta_v1`, y requiere TypeScript Agent SDK v0.3.280 o posterior.5226`_meta` en una entrada de `tools` lleva los miembros de MCP Apps del `_meta` de esa herramienta, para que tu aplicación pueda encontrar el recurso `ui://` que debe renderizar con [`readMcpResource()`](#query-object). Claude Code transmite el objeto `ui` y la cadena plana obsoleta `ui/resourceUri`, y retiene todas las demás claves. Dentro de `ui`, `resourceUri` es una cadena `ui://` y `visibility` un array de `"model"` y `"app"` cuando el servidor los establece, y cualquier otro miembro pasa sin cambios. Claude Code descarta cualquiera de las dos claves cuando el valor está mal formado, y omite `_meta` de una herramienta que no declara ninguna. El campo está presente solo cuando las [`capabilities`](#sdksystemmessage) del mensaje de inicialización incluyen `mcp_tool_ui_meta_v1`, y requiere TypeScript Agent SDK v0.3.280 o posterior.

5281 5227 

5282<h3 id="mcpserverstatusconfig">5228<h3 id="mcpserverstatusconfig">

5283 `McpServerStatusConfig`5229 `McpServerStatusConfig`

5284</h3>5230</h3>

5285 5231 

5286La configuración de un servidor MCP como se reporta por `mcpServerStatus()`. Esta es la unión de todos los tipos de transporte de servidor MCP.5232La configuración de un servidor MCP tal como la reporta `mcpServerStatus()`. Esta es la unión de todos los tipos de transporte de servidor MCP.

5287 5233 

5288```typescript theme={null}5234```typescript theme={null}

5289type McpServerStatusConfig =5235type McpServerStatusConfig =


5294 | McpClaudeAIProxyServerConfig;5240 | McpClaudeAIProxyServerConfig;

5295```5241```

5296 5242 

5297Vea [`McpServerConfig`](#mcpserverconfig) para detalles sobre cada tipo de transporte.5243Consulta [`McpServerConfig`](#mcpserverconfig) para ver detalles sobre cada tipo de transporte.

5298 5244 

5299<h3 id="accountinfo">5245<h3 id="accountinfo">

5300 `AccountInfo`5246 `AccountInfo`

5301</h3>5247</h3>

5302 5248 

5303Información de cuenta para el usuario autenticado.5249Información de cuenta del usuario autenticado.

5304 5250 

5305```typescript theme={null}5251```typescript theme={null}

5306type AccountInfo = {5252type AccountInfo = {


5316 `ModelUsage`5262 `ModelUsage`

5317</h3>5263</h3>

5318 5264 

5319Estadísticas de uso por modelo devueltas en mensajes de resultado. El valor `costUSD` es una estimación del lado del cliente. Vea [Rastrear costo y uso](/docs/es/agent-sdk/cost-tracking) para advertencias de facturación.5265Estadísticas de uso por modelo devueltas en mensajes de resultado. El valor `costUSD` es una estimación del lado del cliente. Consulta [Rastrear costo y uso](/docs/es/agent-sdk/cost-tracking) para ver advertencias sobre facturación.

5320 5266 

5321```typescript theme={null}5267```typescript theme={null}

5322type ModelUsage = {5268type ModelUsage = {


5335};5281};

5336```5282```

5337 5283 

5338`thinkingTokens` cuenta los tokens de pensamiento que este modelo generó. `outputTokens` ya los incluye, así que no sume los dos juntos. El campo está ausente hasta que un turno se ejecuta en una versión de Claude Code que lo registra, por lo que una sesión reanudada que comenzó en una versión anterior reporta un recuento parcial. `thinkingTokens` requiere Agent SDK v0.3.257 o posterior.5284`thinkingTokens` cuenta los tokens de pensamiento que generó este modelo. `outputTokens` ya los incluye, así que no sumes los dos. El campo está ausente hasta que un turno se ejecuta en una versión de Claude Code que lo registra, por lo que una sesión reanudada que comenzó en una versión anterior reporta un recuento parcial. `thinkingTokens` requiere Agent SDK v0.3.257 o posterior.

5339 5285 

5340Los campos `canonicalModel` y `provider` requieren Claude Code v2.1.218 o posterior. `canonicalModel` es el ID de modelo canónico que la búsqueda de precios utiliza; puede diferir de la cadena de modelo sin procesar que clave la entrada, por ejemplo cuando esa cadena es un ID específico del proveedor o un alias.5286Los campos `canonicalModel` y `provider` requieren Claude Code v2.1.218 o posterior. `canonicalModel` es el ID de modelo canónico que usa la búsqueda de precios; puede diferir de la cadena de modelo sin procesar que sirve de clave a la entrada, por ejemplo cuando esa cadena es un ID específico del proveedor o un alias.

5341 5287 

5342`provider` nombra el backend de API que sirvió el modelo, como `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle` o `gateway`.5288`provider` nombra el backend de API que sirvió el modelo, como `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle` o `gateway`.

5343 5289 

5344`costBasis` nombra la tabla de precios que fijó el precio de la solicitud más reciente del modelo: `list` para precio de lista, `managed` para una tabla [`modelPricing`](/docs/es/settings-reference#modelpricing), o `unknown` cuando ninguno coincidió con el ID del modelo. El campo requiere Claude Code v2.1.246 o posterior.5290`costBasis` nombra la tabla de precios que fijó el precio de la solicitud más reciente del modelo: `list` para precio de lista, `managed` para una tabla [`modelPricing`](/docs/es/settings-reference#modelpricing), o `unknown` cuando ninguna coincidió con el ID del modelo. El campo requiere Claude Code v2.1.246 o posterior.

5345 5291 

5346<h3 id="configscope">5292<h3 id="configscope">

5347 `ConfigScope`5293 `ConfigScope`


5355 `NonNullableUsage`5301 `NonNullableUsage`

5356</h3>5302</h3>

5357 5303 

5358Una versión de [`Usage`](#usage) con todos los campos anulables hechos no anulables.5304Una versión de [`Usage`](#usage) con todos los campos anulables convertidos en no anulables.

5359 5305 

5360```typescript theme={null}5306```typescript theme={null}

5361type NonNullableUsage = {5307type NonNullableUsage = {


5390 5336 

5391`BetaServerToolUsage`, `BetaIterationsUsage` y `BetaOutputTokensDetails` se definen en `@anthropic-ai/sdk`.5337`BetaServerToolUsage`, `BetaIterationsUsage` y `BetaOutputTokensDetails` se definen en `@anthropic-ai/sdk`.

5392 5338 

5393`output_tokens_details` desglosa la salida facturada por categoría. Actualmente lleva un campo, `thinking_tokens: number`, contando los tokens de salida que el modelo generó como razonamiento interno, incluyendo los delimitadores de bloque de pensamiento. El campo `output_tokens_details` requiere TypeScript SDK v0.3.228 o posterior, que agrupa Claude Code v2.1.228.5339`output_tokens_details` desglosa la salida facturada por categoría. Actualmente lleva un campo, `thinking_tokens: number`, que cuenta los tokens de salida que el modelo generó como razonamiento interno, incluidos los delimitadores de bloque de pensamiento. El campo `output_tokens_details` requiere TypeScript SDK v0.3.228 o posterior, que incluye Claude Code v2.1.228.

5394 5340 

5395* **Facturación**: lea el desglose para observabilidad, no para facturación. `output_tokens` sigue siendo el total autorizado, y `output_tokens - thinking_tokens` aproxima la salida sin razonamiento.5341* **Facturación**: lee el desglose para observabilidad, no para facturación. `output_tokens` sigue siendo el total de referencia, y `output_tokens - thinking_tokens` aproxima la salida sin razonamiento.

5396* **Qué cubre el recuento**: el razonamiento sin procesar que el modelo produjo, que puede ser más largo que el texto de pensamiento devuelto en el cuerpo de la respuesta. La API lo calcula volviendo a tokenizar ese texto sin procesar, por lo que puede diferir del recuento de generación exacto del modelo en algunos tokens.5342* **Qué cubre el recuento**: el razonamiento sin procesar que produjo el modelo, que puede ser más largo que el texto de pensamiento devuelto en el cuerpo de la respuesta. La API lo calcula volviendo a tokenizar ese texto sin procesar, por lo que puede diferir en algunos tokens del recuento exacto de generación del modelo.

5397* **Streaming**: en mensajes de asistente transmitidos este desglose, como `output_tokens`, es un marcador de posición `message_start` y no lleva un recuento real, así que léalo del mensaje de resultado `usage` como [Leer tokens de salida del mensaje de resultado](/docs/es/agent-sdk/cost-tracking#read-output-tokens-from-the-result-message) describe. En el mensaje de resultado, `thinking_tokens` lee `0` cuando el modelo o proveedor no reporta desglose.5343* **Streaming**: en los mensajes de asistente enviados en streaming, este desglose, al igual que `output_tokens`, es un marcador de posición de `message_start` y no lleva un recuento real, así que léelo del `usage` del mensaje de resultado como se describe en [Leer tokens de salida del mensaje de resultado](/docs/es/agent-sdk/cost-tracking#read-output-tokens-from-the-result-message). En el mensaje de resultado, `thinking_tokens` vale `0` cuando el modelo o el proveedor no reporta desglose.

5398* **Casos `null`**: `output_tokens_details` en sí es `null` en mensajes de asistente que Claude Code sintetiza, como mensajes de error de API.5344* **Casos `null`**: `output_tokens_details` en sí es `null` en mensajes de asistente que Claude Code sintetiza, como los mensajes de error de la API.

5399 5345 

5400<h3 id="calltoolresult">5346<h3 id="calltoolresult">

5401 `CallToolResult`5347 `CallToolResult`

5402</h3>5348</h3>

5403 5349 

5404Tipo de resultado de herramienta MCP (desde `@modelcontextprotocol/sdk/types.js`). `structuredContent` es un objeto JSON que se puede devolver junto con `content`, incluyendo bloques de imagen. Vea [Devolver datos estructurados](/docs/es/agent-sdk/custom-tools#return-structured-data).5350Tipo de resultado de herramienta MCP (de `@modelcontextprotocol/sdk/types.js`). `structuredContent` es un objeto JSON que se puede devolver junto con `content`, incluidos bloques de imagen. Consulta [Devolver datos estructurados](/docs/es/agent-sdk/custom-tools#return-structured-data).

5405 5351 

5406```typescript theme={null}5352```typescript theme={null}

5407type CallToolResult = {5353type CallToolResult = {


5418 `SDKMcpResourceLink`5364 `SDKMcpResourceLink`

5419</h3>5365</h3>

5420 5366 

5421Un archivo que una herramienta MCP devolvió por referencia. Claude Code construye cada entrada desde un bloque `resource_link` en el resultado de la herramienta y entrega la lista como `resourceLinks` en [`SDKUserMessage.tool_use_result`](#sdkusermessage), o como `resource_links` en [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) cuando la llamada terminó en segundo plano. Requiere Agent SDK v0.3.257 o posterior.5367Un archivo que una herramienta MCP devolvió por referencia. Claude Code crea cada entrada a partir de un bloque `resource_link` en el resultado de la herramienta y entrega la lista como `resourceLinks` en [`SDKUserMessage.tool_use_result`](#sdkusermessage), o como `resource_links` en [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) cuando la llamada terminó en segundo plano. Requiere Agent SDK v0.3.257 o posterior.

5422 5368 

5423```typescript theme={null}5369```typescript theme={null}

5424type SDKMcpResourceLink = {5370type SDKMcpResourceLink = {


5432};5378};

5433```5379```

5434 5380 

5435Claude Code descarta un bloque cuyo `uri` o `name` no sea una cadena, y omite un campo opcional cuyo valor no sea del tipo listado.5381Claude Code descarta un bloque cuyo `uri` o `name` no sea una cadena, y omite un campo opcional cuyo valor no sea del tipo indicado.

5436 5382 

5437| Campo | Tipo | Descripción |5383| Campo | Tipo | Descripción |

5438| :- | :- | :- |5384| :- | :- | :- |

5439| `uri` | `string` | URI del recurso, como lo devolvió el servidor |5385| `uri` | `string` | URI del recurso, tal como lo devolvió el servidor |

5440| `name` | `string` | Nombre que el servidor le dio al recurso |5386| `name` | `string` | Nombre que el servidor le dio al recurso |

5441| `title` | `string \| undefined` | Título de visualización, cuando el servidor estableció uno |5387| `title` | `string \| undefined` | Título de visualización, cuando el servidor estableció uno |

5442| `description` | `string \| undefined` | Descripción, cuando el servidor estableció una |5388| `description` | `string \| undefined` | Descripción, cuando el servidor estableció una |


5448 `ThinkingConfig`5394 `ThinkingConfig`

5449</h3>5395</h3>

5450 5396 

5451Controla el comportamiento de pensamiento/razonamiento de Claude. Tiene precedencia sobre el `maxThinkingTokens` deprecado.5397Controla el comportamiento de pensamiento/razonamiento de Claude. Tiene precedencia sobre el obsoleto `maxThinkingTokens`.

5452 5398 

5453```typescript theme={null}5399```typescript theme={null}

5454type ThinkingDisplay = "summarized" | "omitted";5400type ThinkingDisplay = "summarized" | "omitted";

5455 5401 

5456type ThinkingConfig =5402type ThinkingConfig =

5457 | { type: "adaptive"; display?: ThinkingDisplay } // El modelo determina cuándo y cuánto razonar (Opus 4.6+)5403 | { type: "adaptive"; display?: ThinkingDisplay } // El modelo determina cuándo y cuánto razonar (Opus 4.6+)

5458 | { type: "enabled"; budgetTokens?: number; display?: ThinkingDisplay } // Presupuesto de token de pensamiento fijo5404 | { type: "enabled"; budgetTokens?: number; display?: ThinkingDisplay } // Presupuesto fijo de tokens de pensamiento

5459 | { type: "disabled" }; // Sin pensamiento extendido5405 | { type: "disabled" }; // Sin pensamiento extendido

5460```5406```

5461 5407 

5462El campo `display` opcional controla si el texto de pensamiento se devuelve `"summarized"` u `"omitted"`. En Claude Opus 4.7 y posterior, el valor predeterminado de la API es `"omitted"`, así que establezca `"summarized"` para recibir contenido de pensamiento en bloques `thinking`. Claude Code no envía `display` a Amazon Bedrock o a la Plataforma de Agentes de Google Cloud, por lo que en esos proveedores Opus 4.7 y posterior devuelven bloques `thinking` vacíos incluso cuando establece `display` en `"summarized"`.5408El campo opcional `display` controla si el texto de pensamiento se devuelve `"summarized"` u `"omitted"`. En Claude Opus 4.7 y posterior, el valor predeterminado de la API es `"omitted"`, así que establece `"summarized"` para recibir contenido de pensamiento en bloques `thinking`. Claude Code no envía `display` a Amazon Bedrock ni a Agent Platform de Google Cloud, por lo que en esos proveedores Opus 4.7 y posterior devuelven bloques `thinking` vacíos incluso cuando estableces `display` en `"summarized"`.

5463 5409 

5464<h3 id="spawnedprocess">5410<h3 id="spawnedprocess">

5465 `SpawnedProcess`5411 `SpawnedProcess`

5466</h3>5412</h3>

5467 5413 

5468Interfaz para generación de proceso personalizado (usada con la opción `spawnClaudeCodeProcess`). `ChildProcess` ya satisface esta interfaz.5414Interfaz para la creación personalizada de procesos (se usa con la opción `spawnClaudeCodeProcess`). `ChildProcess` ya satisface esta interfaz.

5469 5415 

5470```typescript theme={null}5416```typescript theme={null}

5471interface SpawnedProcess {5417interface SpawnedProcess {


5496 `SpawnOptions`5442 `SpawnOptions`

5497</h3>5443</h3>

5498 5444 

5499Opciones pasadas a la función de generación personalizada.5445Opciones que se pasan a la función de creación personalizada.

5500 5446 

5501```typescript theme={null}5447```typescript theme={null}

5502interface SpawnOptions {5448interface SpawnOptions {


5509```5455```

5510 5456 

5511<Note>5457<Note>

5512 El campo `signal` le indica a su función de generación cuándo desmantelar el proceso. Páselo como la opción `signal` al `spawn()` de Node, o páselo a su controlador de desmontaje de VM o contenedor.5458 El campo `signal` le indica a tu función de creación cuándo desmontar el proceso. Pásalo como la opción `signal` al `spawn()` de Node, o pásalo a tu controlador de desmontaje de VM o contenedor.

5513 5459 

5514 Esta señal no se activa en el instante en que [`Options.abortController`](#options) se aborta. El SDK primero cierra la entrada estándar del proceso y espera aproximadamente dos segundos para que la CLI se apague limpiamente, luego aborta esta señal. Para reaccionar en el momento en que la persona que llama aborta, en su lugar escuche en su propio `Options.abortController.signal`, que su función de generación puede referenciar desde su alcance envolvente.5460 Esta señal no se activa en el instante en que [`Options.abortController`](#options) aborta. El SDK primero cierra el stdin del proceso y espera unos dos segundos para que la CLI se cierre limpiamente, y luego aborta esta señal. Para reaccionar en cambio en el momento en que el llamador aborta, escucha tu propio `Options.abortController.signal`, al que tu función de creación puede hacer referencia desde su alcance envolvente.

5515</Note>5461</Note>

5516 5462 

5517<h3 id="mcpsetserversresult">5463<h3 id="mcpsetserversresult">


5528};5474};

5529```5475```

5530 5476 

5531Cuando llama a `setMcpServers()`, Claude Code aplica estas reglas:5477Cuando llamas a `setMcpServers()`, Claude Code aplica estas reglas:

5532 5478 

5533* **Servidores que la llamada no nombra**: Claude Code mantiene los servidores proporcionados por plugins en ejecución. Requiere Agent SDK v0.3.210 o posterior.5479* **Servidores que la llamada no nombra**: Claude Code mantiene en ejecución los servidores proporcionados por plugins. Requiere Agent SDK v0.3.210 o posterior.

5534* **Servidores que la llamada nombra**: excepto para servidores integrados que la CLI inició al inicio, Claude Code reemplaza un servidor en ejecución solo cuando su configuración difiere de la que pasó.5480* **Servidores que la llamada nombra**: salvo los servidores integrados que la CLI inició al arrancar, Claude Code reemplaza un servidor en ejecución solo cuando su configuración difiere de la que pasaste.

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

5536 5482 

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

5538 5484 

5539`added` enumera los servidores que Claude Code agregó o reemplazó, independientemente de si se conectaron. Un servidor que no se conectó aparece en `added` y `errors`, con el texto de falla bajo `errors` y una fila `failed` en [`mcpServerStatus()`](#methods). Antes de Claude Code v2.1.257, un servidor cuyo intento de conexión lanzó una excepción se reportaba solo bajo `errors`.5485`added` enumera los servidores que Claude Code agregó o reemplazó, se hayan conectado o no. Un servidor que no logró conectarse aparece tanto en `added` como en `errors`, con el texto del error en `errors` y una fila `failed` en [`mcpServerStatus()`](#methods). Antes de Claude Code v2.1.257, un servidor cuyo intento de conexión lanzó una excepción se reportaba solo en `errors`.

5540 5486 

5541<h3 id="rewindfilesresult">5487<h3 id="rewindfilesresult">

5542 `RewindFilesResult`5488 `RewindFilesResult`


5555};5501};

5556```5502```

5557 5503 

5558`skippedLinks` cuenta las rutas rastreadas que el rebobinado se negó a restaurar o eliminar por seguridad de enlace: un enlace simbólico, enlace duro u otro archivo no regular en la ruta rastreada, un directorio padre que ya no se resuelve a donde apuntaba cuando se tomó el punto de control, o una copia de seguridad que no se pudo leer de forma segura. El campo requiere Claude Code v2.1.216 o posterior. Una llamada de vista previa con `rewindFiles(userMessageId, { dryRun: true })` nunca lo establece.5504`skippedLinks` cuenta las rutas rastreadas que el rebobinado se negó a restaurar o eliminar por seguridad de enlaces: un enlace simbólico, un enlace duro u otro archivo no regular en la ruta rastreada, un directorio padre que ya no se resuelve a donde apuntaba cuando se tomó el checkpoint, o una copia de seguridad que no se pudo leer de forma segura. El campo requiere Claude Code v2.1.216 o posterior. Una llamada de vista previa con `rewindFiles(userMessageId, { dryRun: true })` nunca lo establece.

5559 5505 

5560<h3 id="sdkstatusmessage">5506<h3 id="sdkstatusmessage">

5561 `SDKStatusMessage`5507 `SDKStatusMessage`


5578 `SDKTaskNotificationMessage`5524 `SDKTaskNotificationMessage`

5579</h3>5525</h3>

5580 5526 

5581Notificación cuando una tarea de fondo se completa, falla o se detiene. Las tareas de fondo incluyen comandos Bash `run_in_background`, vigilancias [Monitor](#monitor) y subagentes de fondo. Para el campo `ambient`, vea [`SDKTaskStartedMessage`](#sdktaskstartedmessage), que lo define y su requisito de versión.5527Notificación cuando una tarea en segundo plano se completa, falla o se detiene. Las tareas en segundo plano incluyen comandos Bash con `run_in_background`, vigilancias de [Monitor](#monitor) y subagentes en segundo plano. Para el campo `ambient`, consulta [`SDKTaskStartedMessage`](#sdktaskstartedmessage), que lo define junto con su requisito de versión.

5582 5528 

5583```typescript theme={null}5529```typescript theme={null}

5584type SDKTaskNotificationMessage = {5530type SDKTaskNotificationMessage = {


5601};5547};

5602```5548```

5603 5549 

5604Cuando Claude Code [mueve una llamada de herramienta MCP larga al fondo](/docs/es/mcp#automatic-backgrounding-of-long-tool-calls), el bloque `tool_result` para esa llamada contiene solo un marcador de posición y el resultado real de la llamada llega en esta notificación. Haga coincidir la notificación con la llamada usando `tool_use_id`. En una notificación `completed`, `resource_links` enumera los archivos que la herramienta devolvió por referencia como entradas [`SDKMcpResourceLink`](#sdkmcpresourcelink), con los mismos límites de 50 enlaces y 64 KiB que [`tool_use_result.resourceLinks`](#sdkusermessage). Claude Code omite `resource_links` cuando el resultado no tenía enlaces y en notificaciones para tareas que no son llamadas de herramienta MCP. `resource_links` requiere Agent SDK v0.3.257 o posterior.5550Cuando Claude Code [mueve una llamada a herramienta MCP larga a segundo plano](/docs/es/mcp#automatic-backgrounding-of-long-tool-calls), el bloque `tool_result` de esa llamada contiene solo un marcador de posición y el resultado real de la llamada llega en esta notificación. Asocia la notificación con la llamada mediante `tool_use_id`. En una notificación `completed`, `resource_links` enumera los archivos que la herramienta devolvió por referencia como entradas [`SDKMcpResourceLink`](#sdkmcpresourcelink), con los mismos límites de 50 enlaces y 64 KiB que [`tool_use_result.resourceLinks`](#sdkusermessage). Claude Code omite `resource_links` cuando el resultado no tenía enlaces y en notificaciones de tareas que no son llamadas a herramientas MCP. `resource_links` requiere Agent SDK v0.3.257 o posterior.

5605 5551 

5606Claude Code antepone un aviso a cada notificación de tarea que envía al modelo, excepto entregas marcadas con la [subclase `scheduled-trigger`](#task-notification-subkinds), que llevan un marco de tarea asignada en su lugar. El aviso establece que no ha ocurrido entrada humana, por lo que el modelo no trata la notificación como una instrucción o aprobación del usuario.5552Claude Code antepone un aviso a cada notificación de tarea que envía al modelo, excepto en las entregas marcadas con el [subtipo `scheduled-trigger`](#task-notification-subkinds), que en su lugar llevan un encuadre de tarea asignada. El aviso indica que no ha habido ninguna entrada humana, para que el modelo no trate la notificación como una instrucción o aprobación del usuario.

5607 5553 

5608Para detectar un turno de notificación de tarea, verifique `origin.kind === "task-notification"` en [`SDKUserMessage`](#sdkusermessage) o [`SDKResultMessage`](#sdkresultmessage) en lugar de hacer coincidir el texto del aviso. Lea `subkind` del mismo campo si necesita saber qué lo generó. Antes de v2.1.205, Claude Code dejaba el aviso fuera de las notificaciones que llegaban mientras la sesión estaba inactiva.5554Para detectar un turno de notificación de tarea, comprueba `origin.kind === "task-notification"` en el [`SDKUserMessage`](#sdkusermessage) o el [`SDKResultMessage`](#sdkresultmessage) en lugar de buscar coincidencias con el texto del aviso. Lee `subkind` del mismo campo si necesitas saber qué lo originó. Antes de v2.1.205, Claude Code no incluía el aviso en las notificaciones que llegaban mientras la sesión estaba inactiva.

5609 5555 

5610<h3 id="sdktoolusesummarymessage">5556<h3 id="sdktoolusesummarymessage">

5611 `SDKToolUseSummaryMessage`5557 `SDKToolUseSummaryMessage`


5629 5575 

5630Se emite cuando un hook comienza a ejecutarse.5576Se emite cuando un hook comienza a ejecutarse.

5631 5577 

5632Claude Code entrega este mensaje, [`SDKHookProgressMessage`](#sdkhookprogressmessage) y [`SDKHookResponseMessage`](#sdkhookresponsemessage) al flujo de mensajes inmediatamente, incluso mientras un hook `SessionStart` o `Setup` aún se está ejecutando durante el inicio de sesión. Claude Code v2.1.169 a v2.1.203 entregó estos mensajes en un lote después de que un hook `SessionStart` o `Setup` se completó; v2.1.204 restauró la entrega en vivo.5578Claude 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.

5633 5579 

5634```typescript theme={null}5580```typescript theme={null}

5635type SDKHookStartedMessage = {5581type SDKHookStartedMessage = {


5647 `SDKHookProgressMessage`5593 `SDKHookProgressMessage`

5648</h3>5594</h3>

5649 5595 

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

5651 5597 

5652```typescript theme={null}5598```typescript theme={null}

5653type SDKHookProgressMessage = {5599type SDKHookProgressMessage = {


5691 `SDKToolProgressMessage`5637 `SDKToolProgressMessage`

5692</h3>5638</h3>

5693 5639 

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

5695 5641 

5696```typescript theme={null}5642```typescript theme={null}

5697type SDKToolProgressMessage = {5643type SDKToolProgressMessage = {


5716};5662};

5717```5663```

5718 5664 

5719Mientras una llamada de herramienta se ejecuta en la conversación principal, Claude Code emite un mensaje `tool_progress` cada 30 segundos con `heartbeat: true`. Cada latido lleva el nombre de la herramienta y segundos transcurridos, por lo que puede distinguir una llamada de larga duración de una sesión estancada. Claude Code no emite latidos para llamadas de herramienta dentro de un subagente. El campo `heartbeat` requiere Agent SDK v0.3.214 o posterior. Antes de v2.1.257, Claude Code tampoco emitía latidos para una llamada de herramienta Agent en primer plano.5665Mientras una llamada a herramienta se ejecuta en la conversación principal, Claude Code emite un mensaje `tool_progress` cada 30 segundos con `heartbeat: true`. Cada latido lleva el nombre de la herramienta y los segundos transcurridos, para que puedas distinguir una llamada de larga duración de una sesión estancada. Claude Code no emite latidos para llamadas a herramientas dentro de un subagente. El campo `heartbeat` requiere Agent SDK v0.3.214 o posterior. Antes de v2.1.257, Claude Code tampoco emitía latidos para una llamada a la herramienta Agent en primer plano.

5720 5666 

5721En mensajes `tool_progress` para la herramienta Agent que no sean latidos, `subagent_type` nombra el tipo de subagente en ejecución, como `general-purpose`. `subagent_retry` está presente mientras ese subagente espera un retroceso de error de API, como un límite de velocidad o sobrecarga, con un mensaje por intento de reintento. Ambos campos requieren Agent SDK v0.3.214 o posterior.5667En los mensajes `tool_progress` de la herramienta Agent que no son latidos, `subagent_type` nombra el tipo de subagente en ejecución, como `general-purpose`. `subagent_retry` está presente mientras ese subagente espera el retroceso tras un error de API, como un rate limit o una sobrecarga, con un mensaje por intento de reintento. Ambos campos requieren Agent SDK v0.3.214 o posterior.

5722 5668 

5723Para renderizar un indicador de reintento desde `subagent_retry`:5669Para renderizar un indicador de reintento a partir de `subagent_retry`:

5724 5670 

5725* Rastrear el indicador por `parent_tool_use_id`, que es único por subagente. `tool_use_id` se comparte entre subagentes paralelos de un turno de asistente, por lo que rastrear por él permitiría que la actualización de un subagente borre el indicador de otro.5671* Rastrea el indicador por `parent_tool_use_id`, que es único por subagente. `tool_use_id` lo comparten los subagentes paralelos de un mismo turno de asistente, así que rastrear por él permitiría que la actualización de un subagente borre el indicador de otro.

5726* Borrar el indicador cuando un `tool_progress` posterior para el mismo `parent_tool_use_id` llega sin `subagent_retry` ni `heartbeat: true`, o cuando llega el mensaje de resultado de la herramienta. Los fotogramas con `heartbeat: true` reportan solo vivacidad, así que mantenga el indicador cuando uno llega. `attempt` puede exceder `max_retries` bajo reintento persistente, así que no derive el borrado de los contadores.5672* Borra el indicador cuando llegue un `tool_progress` posterior para el mismo `parent_tool_use_id` sin `subagent_retry` ni `heartbeat: true`, o cuando llegue el mensaje de resultado de la herramienta. Los frames con `heartbeat: true` solo informan que el proceso sigue activo, así que conserva el indicador cuando llegue uno. `attempt` puede superar `max_retries` con reintento persistente, así que no determines el borrado a partir de los contadores.

5727* Tratar `error_category` como un token para elegir su propio texto de mensaje, no como texto de visualización. Los valores son `rate_limit`, `overloaded`, `authentication_failed`, `server_error`, `cloud_credential_error` e `unknown`. Maneje un valor que no reconozca de la manera que maneja `unknown`, porque versiones posteriores pueden agregar valores.5673* Trata `error_category` como un token para elegir tu propio texto de mensaje, no como texto para mostrar. Los valores son `rate_limit`, `overloaded`, `authentication_failed`, `server_error`, `cloud_credential_error` y `unknown`. Maneja un valor que no reconozcas igual que `unknown`, porque versiones posteriores pueden agregar valores.

5728 5674 

5729<h3 id="sdkauthstatusmessage">5675<h3 id="sdkauthstatusmessage">

5730 `SDKAuthStatusMessage`5676 `SDKAuthStatusMessage`

5731</h3>5677</h3>

5732 5678 

5733Se emite durante flujos de autenticación.5679Se emite durante los flujos de autenticación.

5734 5680 

5735```typescript theme={null}5681```typescript theme={null}

5736type SDKAuthStatusMessage = {5682type SDKAuthStatusMessage = {


5747 `SDKTaskStartedMessage`5693 `SDKTaskStartedMessage`

5748</h3>5694</h3>

5749 5695 

5750Se emite cuando comienza una tarea. El campo `task_type` es `"local_bash"` para comandos Bash y vigilancias [Monitor](#monitor), `"local_agent"` para subagentes, o `"remote_agent"`.5696Se emite cuando comienza una tarea. El campo `task_type` es `"local_bash"` para comandos Bash y vigilancias de [Monitor](#monitor), `"local_agent"` para subagentes, o `"remote_agent"`.

5751 5697 

5752```typescript theme={null}5698```typescript theme={null}

5753type SDKTaskStartedMessage = {5699type SDKTaskStartedMessage = {


5765};5711};

5766```5712```

5767 5713 

5768`ambient` es `true` para tareas que no son parte del trabajo de la sesión, como tareas que Claude Code ejecuta para su propia operación. Los vigilantes de actualización en vivo también son ambientes, incluyendo vigilantes que el usuario pidió. Excluya tareas ambientes de indicadores de actividad. El campo requiere Agent SDK v0.3.247 o posterior.5714`ambient` es `true` para tareas que no forman parte del trabajo de la sesión, como las tareas que Claude Code ejecuta para su propio funcionamiento. Los vigilantes de actualización en vivo también son ambientales, incluidos los que pidió el usuario. Excluye las tareas ambientales de los indicadores de actividad. El campo requiere Agent SDK v0.3.247 o posterior.

5769 5715 

5770`ambient` también aparece en [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) y en entradas [`SDKBackgroundTasksChangedMessage`](#sdkbackgroundtaskschangedmessage).5716`ambient` también aparece en [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) y en las entradas de [`SDKBackgroundTasksChangedMessage`](#sdkbackgroundtaskschangedmessage).

5771 5717 

5772`is_backgrounded` y `spawn_depth` describen cómo Claude Code inició la tarea. Ambos campos requieren Agent SDK v0.3.238 o posterior.5718`is_backgrounded` y `spawn_depth` describen cómo Claude Code inició la tarea. Ambos campos requieren Agent SDK v0.3.238 o posterior.

5773 5719 

5774* `is_backgrounded`: Claude Code lo establece en tareas `"local_agent"` y `"local_bash"`. `true` significa que la tarea se ejecuta en segundo plano. `false` significa que la tarea se ejecuta en primer plano, y la llamada de herramienta que la inició permanece bloqueada hasta que la tarea se complete o se mueva al fondo.5720* `is_backgrounded`: Claude Code lo establece en tareas `"local_agent"` y `"local_bash"`. `true` significa que la tarea se ejecuta en segundo plano. `false` significa que la tarea se ejecuta en primer plano, y la llamada a herramienta que la inició permanece bloqueada hasta que la tarea termine o pase a segundo plano.

5775* `spawn_depth`: Claude Code lo establece solo en tareas `"local_agent"`. Un subagente que el hilo principal generó tiene profundidad `1`. Un subagente que un subagente de profundidad `1` generó tiene profundidad `2`, y así sucesivamente.5721* `spawn_depth`: Claude Code lo establece solo en tareas `"local_agent"`. Un subagente creado por el hilo principal tiene profundidad `1`. Un subagente creado por un subagente de profundidad `1` tiene profundidad `2`, y así sucesivamente.

5776 5722 

5777Un [subagente reanudado](/docs/es/agent-sdk/subagents#resume-subagents) siempre reporta `is_backgrounded: true`, porque Claude Code ejecuta cada subagente reanudado en segundo plano. Cuando una tarea en primer plano se mueve al fondo más tarde, Claude Code reporta el nuevo valor `is_backgrounded` en un mensaje [`task_updated`](#sdktaskupdatedmessage) en lugar de enviar un segundo `task_started`.5723Un [subagente reanudado](/docs/es/agent-sdk/subagents#resume-subagents) siempre reporta `is_backgrounded: true`, porque Claude Code ejecuta todos los subagentes reanudados en segundo plano. Cuando una tarea en primer plano pasa más tarde a segundo plano, Claude Code reporta el nuevo valor de `is_backgrounded` en un mensaje [`task_updated`](#sdktaskupdatedmessage) en lugar de enviar un segundo `task_started`.

5778 5724 

5779<h3 id="sdktaskprogressmessage">5725<h3 id="sdktaskprogressmessage">

5780 `SDKTaskProgressMessage`5726 `SDKTaskProgressMessage`

5781</h3>5727</h3>

5782 5728 

5783Se emite periódicamente mientras se ejecuta un subagente o tarea de fondo.5729Se emite periódicamente mientras se ejecuta un subagente o una tarea en segundo plano.

5784 5730 

5785Para una tarea de subagente, el campo `summary` lleva un resumen de progreso generado por modelo y se completa solo cuando [`agentProgressSummaries`](#options) está habilitado. Para una [llamada de herramienta MCP en segundo plano](/docs/es/mcp#automatic-backgrounding-of-long-tool-calls), `summary` lleva el progreso más reciente reportado por el servidor MCP y no depende de esa opción.5731Para una tarea de subagente, el campo `summary` lleva un resumen de progreso generado por el modelo y solo se completa cuando [`agentProgressSummaries`](#options) está habilitado. Para una [llamada a herramienta MCP en segundo plano](/docs/es/mcp#automatic-backgrounding-of-long-tool-calls), `summary` lleva el progreso más reciente reportado por el servidor MCP y no depende de esa opción.

5786 5732 

5787```typescript theme={null}5733```typescript theme={null}

5788type SDKTaskProgressMessage = {5734type SDKTaskProgressMessage = {


5808 `SDKTaskUpdatedMessage`5754 `SDKTaskUpdatedMessage`

5809</h3>5755</h3>

5810 5756 

5811Se emite cuando el estado de una tarea de fondo cambia, como cuando transiciona de `running` a `completed`. Combine `patch` en su mapa de tareas local con clave `task_id`. El campo `end_time` es una marca de tiempo de época Unix en milisegundos, comparable con `Date.now()`.5757Se emite cuando cambia el estado de una tarea en segundo plano, por ejemplo cuando pasa de `running` a `completed`. Combina `patch` en tu mapa local de tareas indexado por `task_id`. El campo `end_time` es una marca de tiempo de época Unix en milisegundos, comparable con `Date.now()`.

5812 5758 

5813```typescript theme={null}5759```typescript theme={null}

5814type SDKTaskUpdatedMessage = {5760type SDKTaskUpdatedMessage = {


5832 `SDKBackgroundTasksChangedMessage`5778 `SDKBackgroundTasksChangedMessage`

5833</h3>5779</h3>

5834 5780 

5835Se emite siempre que el conjunto de tareas de fondo activas cambia: una tarea comienza, se completa, se mata, un agente en primer plano se pone en segundo plano, o el campo `description` o `ambient` de una tarea cambia.5781Se emite siempre que cambia el conjunto de tareas en segundo plano activas: una tarea comienza, se completa o se termina, un agente en primer plano pasa a segundo plano, o cambia el campo `description` o `ambient` de una tarea.

5836 5782 

5837El array `tasks` es el conjunto completo activo. Reemplace cualquier conjunto en caché con cada carga útil en lugar de emparejar eventos `task_started` y `task_notification`, para que el siguiente cambio de membresía corrija cualquier evento que haya perdido.5783El array `tasks` es el conjunto activo completo. Reemplaza cualquier conjunto en caché con cada payload en lugar de emparejar eventos `task_started` y `task_notification`, para que el siguiente cambio de membresía corrija cualquier evento que te hayas perdido.

5838 5784 

5839El orden relativo a esos eventos por tarea no está especificado, así que no correlacione los dos flujos.5785El orden relativo a esos eventos por tarea no está especificado, así que no correlaciones los dos flujos.

5840 5786 

5841Nada se emite al inicio. Reinicie a un conjunto vacío siempre que el proceso CLI de la sesión comience o se reinicie y deje que el siguiente cambio de membresía lo repuele.5787No se emite nada al inicio. Restablece a un conjunto vacío cada vez que el proceso de CLI de la sesión se inicie o reinicie, y deja que el siguiente cambio de membresía lo vuelva a llenar.

5842 5788 

5843Cuando envía una solicitud de control `initialize` repetida a una sesión en ejecución, como con [`reinitialize()`](#query-object) después de una brecha de transporte, Claude Code sigue la respuesta con una instantánea del conjunto activo actual, incluso cuando está vacío. Un host que se reconecta por lo tanto aprende qué se está ejecutando sin esperar al siguiente cambio de membresía. Antes de Agent SDK v0.3.239, Claude Code no envió instantánea después de un `initialize` repetido.5789Cuando envías una solicitud de control `initialize` repetida a una sesión en ejecución, como con [`reinitialize()`](#query-object) después de una interrupción del transporte, Claude Code envía tras la respuesta una instantánea del conjunto activo actual, incluso cuando está vacío. Así, un host que se reconecta sabe qué se está ejecutando sin esperar al siguiente cambio de membresía. Antes de Agent SDK v0.3.239, Claude Code no enviaba ninguna instantánea después de un `initialize` repetido.

5844 5790 

5845Requiere Claude Code v2.1.203 o posterior.5791Requiere Claude Code v2.1.203 o posterior.

5846 5792 


5863 `SDKThinkingTokensMessage`5809 `SDKThinkingTokensMessage`

5864</h3>5810</h3>

5865 5811 

5866Se emite mientras Claude está produciendo un bloque de pensamiento, incluyendo uno redactado. `estimated_tokens` es una estimación en ejecución de los tokens de pensamiento generados hasta ahora en el bloque actual, y `estimated_tokens_delta` es el incremento llevado por este fotograma. Use estas estimaciones para visualización de progreso.5812Se emite mientras Claude produce un bloque de pensamiento, incluido uno redactado. `estimated_tokens` es una estimación acumulada de los tokens de pensamiento generados hasta el momento en el bloque actual, y `estimated_tokens_delta` es el incremento que lleva este frame. Usa estas estimaciones para mostrar el progreso.

5867 5813 

5868Cuando el modelo o proveedor reporta un desglose, el recuento final para el bucle de agente de nivel superior es el [`usage.output_tokens_details.thinking_tokens`](#usage) del mensaje de resultado, que [no incluye tokens de subagente](/docs/es/agent-sdk/cost-tracking#get-the-total-cost-of-a-query).5814Cuando el modelo o el proveedor reporta un desglose, el recuento final del bucle de agente de nivel superior es el [`usage.output_tokens_details.thinking_tokens`](#usage) del mensaje de resultado, que [no incluye tokens de subagentes](/docs/es/agent-sdk/cost-tracking#get-the-total-cost-of-a-query).

5869 5815 

5870Requiere Claude Code v2.1.153 o posterior.5816Requiere Claude Code v2.1.153 o posterior.

5871 5817 


5885 `SDKFilesPersistedEvent`5831 `SDKFilesPersistedEvent`

5886</h3>5832</h3>

5887 5833 

5888Se emite cuando los puntos de control de archivo se persisten en el disco.5834Se emite cuando los checkpoints de archivos se guardan en el disco.

5889 5835 

5890```typescript theme={null}5836```typescript theme={null}

5891type SDKFilesPersistedEvent = {5837type SDKFilesPersistedEvent = {


5903 `SDKRateLimitEvent`5849 `SDKRateLimitEvent`

5904</h3>5850</h3>

5905 5851 

5906Se emite cuando la sesión encuentra un límite de velocidad.5852Se emite cuando la sesión encuentra un rate limit.

5907 5853 

5908```typescript theme={null}5854```typescript theme={null}

5909type SDKRateLimitEvent = {5855type SDKRateLimitEvent = {


5921};5867};

5922```5868```

5923 5869 

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

5925 5871 

5926<h3 id="sdklocalcommandoutputmessage">5872<h3 id="sdklocalcommandoutputmessage">

5927 `SDKLocalCommandOutputMessage`5873 `SDKLocalCommandOutputMessage`

5928</h3>5874</h3>

5929 5875 

5930Claude Code no emite este tipo de mensaje. Cuando envía un comando como `/context` o `/usage` como un mensaje, su salida llega como un [`SDKAssistantMessage`](#sdkassistantmessage).5876Claude Code no emite este tipo de mensaje. Cuando envías un comando como `/context` o `/usage` como prompt, su salida llega como un [`SDKAssistantMessage`](#sdkassistantmessage).

5931 5877 

5932```typescript theme={null}5878```typescript theme={null}

5933type SDKLocalCommandOutputMessage = {5879type SDKLocalCommandOutputMessage = {


5943 `SDKCommandsChangedMessage`5889 `SDKCommandsChangedMessage`

5944</h3>5890</h3>

5945 5891 

5946Se emite cuando el conjunto de comandos disponibles cambia a mitad de sesión, como cuando Claude Code descubre skills al entrar en un subdirectorio. El array `commands` es la lista completa actualizada, así que reemplace cualquier lista de comandos en caché con esta carga útil. Llamar a [`supportedCommands()`](#query-object) después de este mensaje devuelve la misma lista actualizada, porque el método rastrea el último push; esto requiere Agent SDK v0.3.216 o posterior. En versiones anteriores del SDK, `supportedCommands()` devuelve la instantánea capturada en la inicialización y nunca refleja cambios a mitad de sesión.5892Se emite cuando el conjunto de comandos disponibles cambia a mitad de la sesión, por ejemplo cuando Claude Code descubre skills a medida que el agente entra en un subdirectorio. El array `commands` es la lista completa actualizada, así que reemplaza cualquier lista de comandos en caché con este payload. Llamar a [`supportedCommands()`](#query-object) después de este mensaje devuelve la misma lista actualizada, porque el método sigue el envío más reciente; esto requiere Agent SDK v0.3.216 o posterior. En versiones anteriores del SDK, `supportedCommands()` devuelve la instantánea capturada en la inicialización y nunca refleja los cambios a mitad de la sesión.

5947 5893 

5948Claude Code también emite este mensaje cuando los [prompts](/docs/es/mcp#use-mcp-prompts-as-commands) de un servidor MCP se unen o salen de la lista, por ejemplo cuando un servidor termina de conectarse después de que la sesión comienza. Esto requiere Claude Code v2.1.281 o posterior.5894Claude Code también emite este mensaje cuando los [prompts](/docs/es/mcp#use-mcp-prompts-as-commands) de un servidor MCP entran o salen de la lista, por ejemplo cuando un servidor termina de conectarse después de que comienza la sesión. Esto requiere Claude Code v2.1.281 o posterior.

5949 5895 

5950```typescript theme={null}5896```typescript theme={null}

5951type SDKCommandsChangedMessage = {5897type SDKCommandsChangedMessage = {


5961 `SDKPromptSuggestionMessage`5907 `SDKPromptSuggestionMessage`

5962</h3>5908</h3>

5963 5909 

5964Se emite después de un turno cuando [`promptSuggestions`](#options) está habilitado y Claude Code generó una sugerencia para ese turno. Contiene el siguiente mensaje de usuario predicho. Para los turnos que no obtienen ninguno, vea [Cuándo Claude Code omite sugerencias](/docs/es/interactive-mode#when-claude-code-skips-suggestions).5910Se emite después de un turno cuando [`promptSuggestions`](#options) está habilitado y Claude Code generó una sugerencia para ese turno. Contiene el siguiente prompt del usuario previsto. Para los turnos que no reciben ninguna, consulta [Cuándo Claude Code omite sugerencias](/docs/es/interactive-mode#when-claude-code-skips-suggestions).

5965 5911 

5966```typescript theme={null}5912```typescript theme={null}

5967type SDKPromptSuggestionMessage = {5913type SDKPromptSuggestionMessage = {


5976 `SDKConversationResetMessage`5922 `SDKConversationResetMessage`

5977</h3>5923</h3>

5978 5924 

5979Se emite cuando la conversación de la sesión se reemplaza sin terminar la sesión. En una llamada `query()`, solo `/clear` y sus alias producen este mensaje. Monte una transcripción vacía bajo `new_conversation_id` y descarte cualquier título de sesión en caché.5925Se emite cuando la conversación de la sesión se reemplaza sin terminar la sesión. En una llamada a `query()`, solo `/clear` y sus alias producen este mensaje. Monta una transcripción vacía bajo `new_conversation_id` y descarta cualquier título de sesión en caché.

5980 5926 

5981```typescript theme={null}5927```typescript theme={null}

5982type SDKConversationResetMessage = {5928type SDKConversationResetMessage = {


5992 5938 

5993Los campos opcionales describen el reinicio:5939Los campos opcionales describen el reinicio:

5994 5940 

5995* `trigger`: qué descartó la conversación. Reinicie su transcripción en cada mensaje `conversation_reset`, incluyendo uno donde este campo está ausente o lleva un valor que no reconoce.5941* `trigger`: qué descartó la conversación. Reinicia tu transcripción en cada mensaje `conversation_reset`, incluido uno en el que este campo esté ausente o lleve un valor que no reconozcas.

5996* `user_message_uuid`: el `uuid` del mensaje de usuario que llevaba el `/clear`. Úselo para hacer coincidir el reinicio con ese mensaje.5942* `user_message_uuid`: el `uuid` del mensaje de usuario que llevaba el `/clear`. Úsalo para asociar el reinicio con ese mensaje.

5997* `timestamp`: cuándo sucedió el reinicio, como una cadena ISO 8601 en UTC. Úselo para visualización, no para ordenar mensajes.5943* `timestamp`: cuándo ocurrió el reinicio, como una cadena ISO 8601 en UTC. Úsalo para mostrarlo, no para ordenar mensajes.

5998 5944 

5999Los campos `trigger`, `user_message_uuid` y `timestamp` requieren Claude Code v2.1.281 o posterior.5945Los campos `trigger`, `user_message_uuid` y `timestamp` requieren Claude Code v2.1.281 o posterior.

6000 5946 

6001Las tipificaciones publicadas del SDK declaran `SDKConversationResetMessage` en Claude Code v2.1.203 y posterior. Antes de v2.1.203, `SDKMessage` hacía referencia al tipo sin declararlo, por lo que el estrechamiento en `type === "conversation_reset"` no pasaba la verificación de tipos cuando `skipLibCheck` estaba deshabilitado.5947Las definiciones de tipos publicadas del SDK declaran `SDKConversationResetMessage` en Claude Code v2.1.203 y posterior. Antes de v2.1.203, `SDKMessage` hacía referencia al tipo sin declararlo, por lo que el estrechamiento con `type === "conversation_reset"` no pasaba la verificación de tipos cuando `skipLibCheck` estaba deshabilitado.

6002 5948 

6003<h3 id="aborterror">5949<h3 id="aborterror">

6004 `AbortError`5950 `AbortError`

6005</h3>5951</h3>

6006 5952 

6007Clase de error personalizado para operaciones de aborto.5953Clase de error personalizada para operaciones de aborto.

6008 5954 

6009```typescript theme={null}5955```typescript theme={null}

6010class AbortError extends Error {}5956class AbortError extends Error {}

6011```5957```

6012 5958 

6013`AbortError` es la única clase de error en la API tipificada del SDK. Otros fallos, como el proceso de Claude Code saliendo o no pudiendo iniciarse, rechazan la iteración de mensajes con errores que no llevan clase SDK para hacer coincidir. [Troubleshooting](/docs/es/agent-sdk/troubleshooting) clave esos errores por mensaje, con la causa y solución para cada uno.5959`AbortError` es la única clase de error en la API tipada del SDK. Otros fallos, como que el proceso de Claude Code termine o no logre iniciarse, rechazan la iteración de mensajes con errores que no tienen ninguna clase del SDK con la que comparar. [Solución de problemas](/docs/es/agent-sdk/troubleshooting) organiza esos errores por mensaje, con la causa y la solución de cada uno.

6014 5960 

6015<h2 id="sandbox-configuration">5961<h2 id="sandbox-configuration">

6016 Configuración de Sandbox5962 Configuración de Sandbox

agent-teams.md +5 −2

Details

196* **Modo en proceso**: use las teclas de flecha arriba y abajo en el panel del agente para seleccionar un compañero de equipo, luego presione Intro para ver su sesión y escriba para enviarle un mensaje. Presione `x` en un compañero de equipo seleccionado para detenerlo. Presione Ctrl+T para alternar la lista de tareas.196* **Modo en proceso**: use las teclas de flecha arriba y abajo en el panel del agente para seleccionar un compañero de equipo, luego presione Intro para ver su sesión y escriba para enviarle un mensaje. Presione `x` en un compañero de equipo seleccionado para detenerlo. Presione Ctrl+T para alternar la lista de tareas.

197* **Modo de panel dividido**: haga clic en el panel de un compañero de equipo para interactuar directamente con su sesión. Cada compañero de equipo tiene una vista completa de su propio terminal.197* **Modo de panel dividido**: haga clic en el panel de un compañero de equipo para interactuar directamente con su sesión. Cada compañero de equipo tiene una vista completa de su propio terminal.

198 198 

199Mientras está viendo un compañero de equipo en proceso, el texto sin formato y las [skills](/docs/es/skills) van a ese compañero de equipo, pero los comandos integrados aún se ejecutan en la sesión del líder.199Mientras ves un compañero de equipo en proceso, el texto sin formato y los [skills](/docs/es/skills) van a ese compañero de equipo, y los comandos integrados van a la sesión del líder, con estas salvaguardas:

200 200 

201El modelo y el modo rápido de un compañero de equipo se fijan cuando se genera, por lo que `/model` y `/fast` solo cambian la configuración del líder. A partir de v2.1.199, escribir cualquiera de estos comandos mientras se ve un compañero de equipo muestra un aviso de que el cambio se aplica al líder; las versiones anteriores lo aplicaban al líder sin indicación. `/effort` aún se aplica a los turnos posteriores del compañero de equipo visto, porque los compañeros de equipo siguen el [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) del líder.201* `/compact`, `/clear` y `/rewind` actúan sobre la conversación del líder, por lo que Claude Code te pide confirmación antes de ejecutar cualquiera de ellos desde esta vista.

202* `/model` y `/fast` establecen el modelo y el modo rápido del líder, no los del compañero de equipo, por lo que no se ejecutan desde esta vista. Un aviso te explica por qué.

203 

204El modelo y el modo rápido de un compañero de equipo se fijan cuando se genera. `/effort` aún se aplica a los turnos posteriores del compañero de equipo visto, porque los compañeros de equipo siguen el [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) del líder.

202 205 

203<h3 id="assign-and-claim-tasks">206<h3 id="assign-and-claim-tasks">

204 Asignar y reclamar tareas207 Asignar y reclamar tareas

agent-view.md +26 −6

Details

224 224 

225La mayoría de las veces el panel de vista previa es suficiente y no necesita abrir la transcripción completa.225La mayoría de las veces el panel de vista previa es suficiente y no necesita abrir la transcripción completa.

226 226 

227Escriba una respuesta en el panel de vista previa y presione `Enter` para enviarla a esa sesión. Cuando la sesión hace una pregunta con opciones predefinidas, el panel de vista previa las muestra como una lista numerada y puede presionar una tecla numérica para elegir una. Un mensaje de permiso se muestra como texto que describe lo que la sesión quiere ejecutar, sin opciones numeradas. Escriba una respuesta para responderla, o adjúntese para responder con el mensaje estándar. Para otras sesiones bloqueadas, presione `Tab` para llenar la entrada con una respuesta sugerida que puede editar antes de enviar. Prefije una respuesta con `!` para enviar un comando Bash en su lugar.227Escribe una respuesta en el panel de vista previa y presiona `Enter` para enviarla a esa sesión. Antepón `!` a una respuesta para enviar en su lugar un comando Bash. Lo que pasa con la respuesta depende de la sesión y de lo que envíes:

228 

229* Una sesión que está trabajando: la respuesta se une a la [cola de mensajes](/docs/es/interactive-mode#queue-messages-while-claude-works) de la sesión en lugar de interrumpir la respuesta, y surte efecto [cuando lo hace la entrada en cola](/docs/es/interactive-mode#when-claude-code-sends-what-you-queued). Un [comando](/docs/es/commands) espera a que termine el turno, incluso uno que se ejecuta en cuanto lo escribes en el propio prompt de una sesión

230* Una respuesta que es exactamente `/stop`: detiene la sesión de inmediato en lugar de entregársele, tanto si la sesión está trabajando como si te está esperando

231* Un [trabajo de shell](#run-a-shell-command): la respuesta, incluido `/stop`, va a la terminal del comando como entrada escrita

232 

233Cuando la sesión te está esperando, cómo respondes desde el panel de vista previa depende de lo que esté esperando:

234 

235* Una pregunta con opciones predefinidas: el panel enumera las opciones por número. Con la entrada de respuesta vacía, presiona el número de una opción para rellenarla y luego `Enter` para enviarla, o escribe tu propia respuesta en su lugar

236* Una pregunta sin opciones predefinidas: escribe tu respuesta. Cuando la entrada vacía muestra una respuesta sugerida, presiona `Tab` para rellenarla y editarla antes de enviarla

237* Una solicitud de permiso u otro diálogo, como un prompt del [sandbox](/docs/es/sandboxing) o la [solicitud de entrada](/docs/es/mcp#respond-to-mcp-elicitation-requests) de un servidor MCP: responder no lo contesta. Tu respuesta espera en la cola. Para contestar el diálogo, adjúntate con `→`

228 238 

229Cuando un hook [`PermissionRequest`](/docs/es/hooks#permissionrequest) o [`PreToolUse`](/docs/es/hooks#pretooluse) devuelve una salida que Claude Code no puede validar para la llamada que la sesión está pidiendo, la fila muestra el evento del hook y `hook output invalid:` con el error de validación antes del texto de la solicitud pendiente. Para un hook que falla de otra manera, la fila dice que el hook falló. La sesión aún espera la misma solicitud.239Cuando un hook [`PermissionRequest`](/docs/es/hooks#permissionrequest) o [`PreToolUse`](/docs/es/hooks#pretooluse) devuelve una salida que Claude Code no puede validar para la llamada que la sesión está pidiendo, la fila muestra el evento del hook y `hook output invalid:` con el error de validación antes del texto de la solicitud pendiente. Para un hook que falla de otra manera, la fila dice que el hook falló. La sesión aún espera la misma solicitud.

230 240 


301* Presione `Ctrl+T` para fijar una sesión en la parte superior y [mantener su proceso ejecutándose](#the-supervisor-process) mientras está inactivo311* Presione `Ctrl+T` para fijar una sesión en la parte superior y [mantener su proceso ejecutándose](#the-supervisor-process) mientras está inactivo

302* Presione `Shift+↑` o `Shift+↓` para reordenar sesiones312* Presione `Shift+↑` o `Shift+↓` para reordenar sesiones

303* Presione `Ctrl+R` para renombrar una sesión313* Presione `Ctrl+R` para renombrar una sesión

304* Presione `Enter` en un encabezado de grupo para contraerlo314* Presiona `Enter` en un encabezado de grupo para contraerlo, excepto mientras hay un [filtro](#filter-sessions) activo, cuando todos los grupos permanecen expandidos

305 315 

306Para eliminar una sesión de la lista, presione `Ctrl+X` para detenerla y `Ctrl+X` nuevamente dentro de dos segundos para eliminarla. Presionar `Ctrl+X` en un encabezado de grupo elimina cada sesión en ese grupo después de la confirmación.316Para eliminar una sesión de la lista, presione `Ctrl+X` para detenerla y `Ctrl+X` nuevamente dentro de dos segundos para eliminarla. Presionar `Ctrl+X` en un encabezado de grupo elimina cada sesión en ese grupo después de la confirmación.

307 317 


324 Filtrar sesiones334 Filtrar sesiones

325</h3>335</h3>

326 336 

327Escriba en la entrada de envío para filtrar en lugar de enviar:337Comienza la entrada de despacho con uno de estos filtros para reducir la lista mientras escribes:

328 338 

329| Filtro | Muestra |339| Filtro | Muestra |

330| :- | :- |340| :- | :- |

331| `a:<name>` | Sesiones que ejecutan el agente nombrado |341| `a:<name>` | Sesiones que ejecutan el agente nombrado |

332| `s:<state>` | Sesiones en el estado dado, como `s:working`. También acepta `s:blocked` para todo lo que está esperando por usted |342| `s:<state>` | Sesiones en el estado indicado, como `s:working`, o bajo el encabezado de grupo indicado, como `s:ready` para `Ready for review`. `s:blocked` enumera todo lo que te está esperando |

333| `#<number>` o una URL de pull o merge request | La sesión que funciona en ese pull request o merge request |343| `n:<text>` | Sesiones cuyo nombre o primer prompt contiene el texto, como `n:login`. Requiere Claude Code v2.1.287 o posterior |

344| `o:<text>` | Sesiones cuyo resultado contiene el texto, como `o:merged`. Un `o:` sin texto enumera todas las sesiones que han informado un resultado |

345| Un número de pull request o merge request, como `#1234`, o su URL | La sesión que trabaja en ese pull request o merge request |

334| Cualquier otra URL | La sesión cuyo primer mensaje contenía esa URL |346| Cualquier otra URL | La sesión cuyo primer mensaje contenía esa URL |

335 347 

348Para combinar filtros, comienza con `a:`, `s:`, `n:` u `o:` y agrega más, separados por espacios. La lista muestra las sesiones que coinciden con todos ellos. Por ejemplo, `s:blocked a:reviewer` enumera las sesiones `reviewer` que te están esperando.

349 

350Mientras hay un filtro activo, los grupos que contrajiste se expanden para mostrar sus coincidencias y se selecciona la primera coincidencia, de modo que al presionar `Enter` se abre. Borra la entrada para quitar el filtro, y esos grupos se vuelven a contraer.

351 

336<h3 id="keyboard-shortcuts">352<h3 id="keyboard-shortcuts">

337 Atajos de teclado353 Atajos de teclado

338</h3>354</h3>


342| Atajo | Acción |358| Atajo | Acción |

343| :- | :- |359| :- | :- |

344| `↑` / `↓` | Moverse entre filas |360| `↑` / `↓` | Moverse entre filas |

345| `Enter` | Adjuntarse a la sesión seleccionada, o enviar si hay texto en la entrada |361| `PgUp` / `PgDn` | Subir o bajar una pantalla de filas |

362| `Home` / `End` | Saltar a la primera o a la última fila |

363| `Enter` | Adjuntarse a la sesión seleccionada, o enviar el texto de la entrada si no es un [filtro](#filter-sessions) |

346| `Space` | Abrir o cerrar el panel de vista previa para la sesión seleccionada |364| `Space` | Abrir o cerrar el panel de vista previa para la sesión seleccionada |

347| `Shift+Enter` | Insertar una nueva línea en la entrada de envío, [como en el mensaje principal](/docs/es/terminal-config#enter-multiline-prompts) |365| `Shift+Enter` | Insertar una nueva línea en la entrada de envío, [como en el mensaje principal](/docs/es/terminal-config#enter-multiline-prompts) |

348| `Ctrl+Enter` | Enviar y adjuntarse inmediatamente, en terminales donde la superposición `?` enumera `ctrl+enter to start and open` |366| `Ctrl+Enter` | Enviar y adjuntarse inmediatamente, en terminales donde la superposición `?` enumera `ctrl+enter to start and open` |


1068 1086 

1069| Versión | Cambio |1087| Versión | Cambio |

1070| - | - |1088| - | - |

1089| v2.1.287 | El [filtro `n:<text>`](#filter-sessions) encuentra sesiones por nombre o por primer prompt. Mientras cualquier filtro está activo, los grupos que contrajiste se expanden para mostrar sus coincidencias y se selecciona la primera coincidencia, por lo que `Enter` la abre. |

1090| v2.1.287 | Un comando enviado como [respuesta desde el panel de vista previa](#peek-and-reply) se ejecuta cuando termina el turno actual de la sesión, incluidos los comandos que se ejecutan en cuanto los escribes en el propio prompt de una sesión. Una respuesta que es exactamente `/stop` detiene la sesión de inmediato. |

1071| v2.1.281 | Una restricción [`--setting-sources`](/docs/es/cli-reference#cli-flags) [se traslada](#what-carries-over-when-you-background) a una sesión que envía al segundo plano con `←` o `/bg` y a las sesiones que distribuye desde la vista de agentes. Antes de esta versión, la sesión generada cargaba cada fuente de configuración. |1091| v2.1.281 | Una restricción [`--setting-sources`](/docs/es/cli-reference#cli-flags) [se traslada](#what-carries-over-when-you-background) a una sesión que envía al segundo plano con `←` o `/bg` y a las sesiones que distribuye desde la vista de agentes. Antes de esta versión, la sesión generada cargaba cada fuente de configuración. |

1072| v2.1.281 | `claude --bg`, y los comandos que reinician una sesión, verifican la confianza del espacio de trabajo para el directorio de la sesión primero. Desde una terminal en ese directorio, [el diálogo de confianza aparece](#from-your-shell) si no lo ha aceptado; donde no puede aparecer ningún diálogo, como en un script, el comando sale con un error [`Workspace not trusted`](/docs/es/errors#workspace-not-trusted-when-dispatching-a-background-session). |1092| v2.1.281 | `claude --bg`, y los comandos que reinician una sesión, verifican la confianza del espacio de trabajo para el directorio de la sesión primero. Desde una terminal en ese directorio, [el diálogo de confianza aparece](#from-your-shell) si no lo ha aceptado; donde no puede aparecer ningún diálogo, como en un script, el comando sale con un error [`Workspace not trusted`](/docs/es/errors#workspace-not-trusted-when-dispatching-a-background-session). |

1073| v2.1.274 | Después de una auto-actualización, una vista de agentes de la que ha estado ausente durante aproximadamente una hora puede relanzarse a sí misma en la nueva compilación. Cuando lo hace, mantiene los [valores predeterminados de distribución](#dispatch-defaults) con los que la abrió: `--model`, `--effort`, `--permission-mode`, `--allow-dangerously-skip-permissions` y `--agent`. Antes de esta versión, la vista relanzada mantenía solo `--cwd` y banderas de configuración como `--settings` y `--mcp-config`, por lo que las sesiones que distribuía después comenzaban sin esos valores predeterminados. |1093| v2.1.274 | Después de una auto-actualización, una vista de agentes de la que ha estado ausente durante aproximadamente una hora puede relanzarse a sí misma en la nueva compilación. Cuando lo hace, mantiene los [valores predeterminados de distribución](#dispatch-defaults) con los que la abrió: `--model`, `--effort`, `--permission-mode`, `--allow-dangerously-skip-permissions` y `--agent`. Antes de esta versión, la vista relanzada mantenía solo `--cwd` y banderas de configuración como `--settings` y `--mcp-config`, por lo que las sesiones que distribuía después comenzaban sin esos valores predeterminados. |

Details

526 526 

527Si su organización entrega los encabezados de guardrail a través de una política de [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway) en su lugar, cuentan como [configuración que necesita aprobación](/docs/es/server-managed-settings#environment-variables-and-the-approval-dialog).527Si su organización entrega los encabezados de guardrail a través de una política de [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway) en su lugar, cuentan como [configuración que necesita aprobación](/docs/es/server-managed-settings#environment-variables-and-the-approval-dialog).

528 528 

529Cuando el guardrail bloquea una respuesta a mitad de camino, el texto transmitido hasta ese momento se conserva y la respuesta termina con el mensaje configurado en el guardrail para las respuestas bloqueadas.

530 

529<h2 id="use-the-mantle-endpoint">531<h2 id="use-the-mantle-endpoint">

530 Usar el punto final de Mantle532 Usar el punto final de Mantle

531</h2>533</h2>

Details

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.3> Use this file to discover all available pages before exploring further.

4 4 

5# Implementar Claude apps gateway en Google Cloud5# Desplegar Claude apps gateway en Google Cloud

6 6 

7> Un ejemplo práctico de ejecutar Claude apps gateway en Google Cloud: Cloud Run o GKE, Cloud SQL para PostgreSQL, Secret Manager y autenticación de cuenta de servicio en Agent Platform de Google Cloud.7> Un ejemplo práctico de ejecutar Claude apps gateway en Google Cloud: Cloud Run o GKE, Cloud SQL para PostgreSQL, Secret Manager y autenticación de cuenta de servicio en Agent Platform de Google Cloud.

8 8 


20 <img src="https://mintcdn.com/claude-code/-uq-4JE0W_JO5Er5/images/claude-gateway-gcp-architecture.svg?fit=max&auto=format&n=-uq-4JE0W_JO5Er5&q=85&s=cb705151c69128ac0da235852d5600ab" alt="Diagrama de Claude apps gateway en Google Cloud: los clientes de Claude Code se conectan a través de HTTPS a la puerta de enlace (Cloud Run o GKE), que se ejecuta dentro de una VPC junto a una base de datos Cloud SQL de IP privada para el estado de la sesión. La puerta de enlace inicia sesión de usuarios a través de OIDC contra Google Workspace, lee la configuración y los secretos de Secret Manager, reenvía solicitudes de modelo a Agent Platform y extrae su imagen de Artifact Registry en la implementación." width="760" height="400" data-path="images/claude-gateway-gcp-architecture.svg" />20 <img src="https://mintcdn.com/claude-code/-uq-4JE0W_JO5Er5/images/claude-gateway-gcp-architecture.svg?fit=max&auto=format&n=-uq-4JE0W_JO5Er5&q=85&s=cb705151c69128ac0da235852d5600ab" alt="Diagrama de Claude apps gateway en Google Cloud: los clientes de Claude Code se conectan a través de HTTPS a la puerta de enlace (Cloud Run o GKE), que se ejecuta dentro de una VPC junto a una base de datos Cloud SQL de IP privada para el estado de la sesión. La puerta de enlace inicia sesión de usuarios a través de OIDC contra Google Workspace, lee la configuración y los secretos de Secret Manager, reenvía solicitudes de modelo a Agent Platform y extrae su imagen de Artifact Registry en la implementación." width="760" height="400" data-path="images/claude-gateway-gcp-architecture.svg" />

21</Frame>21</Frame>

22 22 

23La configuración de referencia aprovisiona:23El despliegue consta de:

24 24 

25* Servicio **Cloud Run** o **GKE** Deployment ejecutando el contenedor de la puerta de enlace25* Servicio **Cloud Run** o **GKE** Deployment ejecutando el contenedor de la puerta de enlace

26* Repositorio de **Artifact Registry** para la imagen de la puerta de enlace26* Repositorio de **Artifact Registry** para la imagen de la puerta de enlace

27* Instancia de **Cloud SQL para PostgreSQL**, solo IP privada, para el [store](/docs/es/claude-apps-gateway-config#store) de la puerta de enlace27* Instancia de **Cloud SQL para PostgreSQL**, solo IP privada, para el [store](/docs/es/claude-apps-gateway-config#store) de la puerta de enlace

28* Secretos de **Secret Manager** para `gateway.yaml`, la clave de firma JWT, el secreto del cliente OIDC y la URL de Postgres28* Secretos de **Secret Manager** para `gateway.yaml`, la clave de firma JWT, el secreto del cliente OIDC y la URL de Postgres

29* **Cuenta de servicio** con `roles/aiplatform.user`, adjunta directamente en Cloud Run o vinculada a través de Workload Identity en GKE29* **Cuenta de servicio** con `roles/aiplatform.user`, adjunta directamente en Cloud Run o vinculada a través de Workload Identity en GKE

30* **Equilibrador de carga de aplicaciones interno** en Cloud Run, o un **GKE Ingress** interno de clase `gce-internal` en GKE, para HTTPS30* **Front end HTTPS** que tú proporcionas: un equilibrador de carga de aplicaciones interno delante de Cloud Run, para el cual esta guía configura el gateway pero que no crea, o un **GKE Ingress** interno de clase `gce-internal` en GKE

31 31 

32<h2 id="prerequisites">32<h2 id="prerequisites">

33 Requisitos previos33 Requisitos previos


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

144 El bloque `upstreams` apunta a Agent Platform con `auth: {}`, por lo que la puerta de enlace se autentica a través de Application Default Credentials desde la cuenta de servicio del tiempo de ejecución. Consulte la [referencia de configuración](/docs/es/claude-apps-gateway-config) para cada campo.144 El bloque `upstreams` apunta a Agent Platform con `auth: {}`, por lo que la puerta de enlace se autentica a través de Application Default Credentials desde la cuenta de servicio del tiempo de ejecución. Consulte la [referencia de configuración](/docs/es/claude-apps-gateway-config) para cada campo.

145 145 

146 Dos campos `listen` dependen de lo que está frente a la puerta de enlace:146 Dos campos de `listen` describen lo que está delante del gateway:

147 147 

148 * `public_url`: requerido detrás de Cloud Run o un GKE Ingress. La puerta de enlace construye el `redirect_uri` del IdP y su documento de descubrimiento solo a partir de este valor, nunca a partir de encabezados `X-Forwarded-*`.148 * `public_url`: el origen `https://` externo, obligatorio para cualquier enlace que no sea de loopback; consulta la [referencia de `listen`](/docs/es/claude-apps-gateway-config#listen). El gateway construye el `redirect_uri` del IdP y su documento de descubrimiento solo a partir de este valor, nunca a partir de encabezados `X-Forwarded-*`.

149 * `trusted_proxies`: los rangos de origen del front end. La puerta de enlace honra `X-Forwarded-For` solo cuando el par TCP está en esta lista, luego camina la cadena pasando saltos confiables, por lo que los límites de velocidad de inicio de sesión por IP y los eventos de auditoría registran las IP de los desarrolladores en lugar de la del equilibrador de carga.149 * `trusted_proxies`: los rangos de origen del front end. El gateway respeta `X-Forwarded-For` solo cuando el par TCP está en esta lista, y luego recorre la cadena más allá de los saltos de confianza, de modo que los rate limits de inicio de sesión por IP y los eventos de auditoría registran las IP de los desarrolladores en lugar de la del balanceador de carga.

150 150 

151 Establezca `trusted_proxies` para que coincida con su front end. Un GKE Ingress externo de clase `gce` no está listado: aprovisiona una dirección de regla de reenvío público, que la [verificación de red privada](/docs/es/claude-apps-gateway#prerequisites) de `/login` rechaza.151 Establezca `trusted_proxies` para que coincida con su front end. Un GKE Ingress externo de clase `gce` no está listado: aprovisiona una dirección de regla de reenvío público, que la [verificación de red privada](/docs/es/claude-apps-gateway#prerequisites) de `/login` rechaza.

152 152 


179 179 

180 store:180 store:

181 postgres_url: ${GATEWAY_POSTGRES_URL} # GKE: ${file:/secrets/postgres-url}181 postgres_url: ${GATEWAY_POSTGRES_URL} # GKE: ${file:/secrets/postgres-url}

182 # readiness_grace_seconds: 300 # keep passing the readiness probe

183 # through a Cloud SQL failover

182 184 

183 upstreams:185 upstreams:

184 - provider: vertex186 - provider: vertex


219 --region="$REGION" \221 --region="$REGION" \

220 --service-account="claude-gateway@${PROJECT_ID}.iam.gserviceaccount.com" \222 --service-account="claude-gateway@${PROJECT_ID}.iam.gserviceaccount.com" \

221 --min-instances=1 \223 --min-instances=1 \

224 --max-instances=8 \

222 --timeout=3600 \225 --timeout=3600 \

223 --ingress=internal-and-cloud-load-balancing \226 --ingress=internal \

224 --network="$VPC" --subnet=cc-gateway-subnet --vpc-egress=private-ranges-only \227 --network="$VPC" --subnet=cc-gateway-subnet --vpc-egress=private-ranges-only \

225 --set-secrets=/etc/claude/gateway.yaml=gateway-config:latest,GATEWAY_JWT_SECRET=gateway-jwt-secret:latest,OIDC_CLIENT_SECRET=gateway-oidc-client-secret:latest,GATEWAY_POSTGRES_URL=gateway-postgres-url:latest \228 --set-secrets=/etc/claude/gateway.yaml=gateway-config:latest,GATEWAY_JWT_SECRET=gateway-jwt-secret:latest,OIDC_CLIENT_SECRET=gateway-oidc-client-secret:latest,GATEWAY_POSTGRES_URL=gateway-postgres-url:latest \

226 --no-invoker-iam-check229 --no-invoker-iam-check

227 ```230 ```

228 231 

229 La salida directa de VPC, a través de `--network`, `--subnet` y `--vpc-egress=private-ranges-only`, permite que el servicio alcance la IP privada de Cloud SQL directamente. La salida pública a los puntos finales de Agent Platform y `accounts.google.com` va directamente a Internet en lugar de a través de la VPC, por lo que no se necesita Cloud NAT.232 La salida directa de VPC, mediante `--network`, `--subnet` y `--vpc-egress=private-ranges-only`, permite que el servicio acceda directamente a la IP privada de Cloud SQL. Cada instancia mantiene hasta [`store.max_connections`](/docs/es/claude-apps-gateway-config#store) conexiones de Postgres, cinco por defecto, así que mantén el número máximo de instancias × `store.max_connections` por debajo del límite de conexiones de tu nivel de Cloud SQL; por este motivo, los [recursos de referencia](#terraform-reference) limitan las instancias a 8 para el nivel `db-g1-small`. La salida pública hacia los endpoints de Agent Platform de Google Cloud y `accounts.google.com` va directamente a Internet en lugar de pasar por la VPC, por lo que no se necesita Cloud NAT.

230 233 

231 La verificación de IAM del invocador debe estar abierta o deshabilitada. La puerta de enlace ejecuta su propio OIDC y sus clientes no llevan ningún token de GCP, por lo que la verificación del invocador de Cloud Run tiene que admitir solicitudes no autenticadas. La autenticación OIDC de la puerta de enlace autentica la solicitud una vez que llega al contenedor, con `allowed_email_domains` controlando qué dominios pueden iniciar sesión.234 La verificación de IAM del invocador debe estar abierta o deshabilitada. La puerta de enlace ejecuta su propio OIDC y sus clientes no llevan ningún token de GCP, por lo que la verificación del invocador de Cloud Run tiene que admitir solicitudes no autenticadas. La autenticación OIDC de la puerta de enlace autentica la solicitud una vez que llega al contenedor, con `allowed_email_domains` controlando qué dominios pueden iniciar sesión.

232 235 


239 242 

240 Por defecto, la URL de Cloud Run `*.run.app` se resuelve a una dirección pública, que la [verificación de red privada](/docs/es/claude-apps-gateway#prerequisites) de `/login` rechaza. Dos topologías dan a los desarrolladores un nombre de host resolvible de forma privada, y Cloud Run no aprovisiona ninguno para usted:243 Por defecto, la URL de Cloud Run `*.run.app` se resuelve a una dirección pública, que la [verificación de red privada](/docs/es/claude-apps-gateway#prerequisites) de `/login` rechaza. Dos topologías dan a los desarrolladores un nombre de host resolvible de forma privada, y Cloud Run no aprovisiona ninguno para usted:

241 244 

242 * **Equilibrador de carga de aplicaciones interno**, la topología que el comando de implementación anterior asume: implemente con `--ingress=internal-and-cloud-load-balancing`, aprovisione un equilibrador de carga de aplicaciones interno frente al servicio con un nombre DNS interno y certificado, y establezca `listen.public_url` en ese nombre de host.245 * **Balanceador de carga de aplicaciones interno**, la topología que asume el `gateway.yaml` de esta página: aprovisiona un balanceador de carga de aplicaciones interno delante del servicio con un nombre DNS interno y un certificado, y establece `listen.public_url` en ese nombre de host. El ajuste de ingreso `internal` ya admite tráfico de balanceadores de carga de aplicaciones internos; `internal-and-cloud-load-balancing` admite además balanceadores de carga de aplicaciones externos, cuyas direcciones públicas rechaza la verificación de red privada de `/login`, por lo que ninguna topología de esta página lo necesita.

243 * **Ingreso solo interno sin equilibrador de carga**: implemente con `--ingress=internal` y deje `listen.public_url` como la URL `*.run.app`, el valor predeterminado en los [activos de referencia](#terraform-reference) a continuación. Para que `*.run.app` se resuelva de forma privada, su equipo de red debe operar un punto final de Private Service Connect para las API de Google, una zona privada de Cloud DNS que resuelva `*.run.app` a él, y enrutamiento local a ese punto final.246 * **Ingreso solo interno sin balanceador de carga**: mantén el comando de despliegue tal como está y deja `listen.public_url` como la URL `*.run.app`, el valor predeterminado en los [recursos de referencia](#terraform-reference) a continuación. Para que `*.run.app` se resuelva de forma privada, tu equipo de red ya debe operar un endpoint de Private Service Connect para las API de Google, una zona privada de Cloud DNS que resuelva `*.run.app` en él y enrutamiento local hacia ese endpoint.

244 247 

245 La [guía de redes privadas de Google para Cloud Run](https://cloud.google.com/run/docs/securing/private-networking) cubre la infraestructura que ambas opciones necesitan. Verifique el inicio de sesión una vez que la puerta de enlace esté sirviendo en un nombre de host privado; hasta entonces, confirme que el contenedor se inició desde sus registros en Cloud Run.248 La [guía de redes privadas de Google para Cloud Run](https://cloud.google.com/run/docs/securing/private-networking) cubre la infraestructura que ambas opciones necesitan. Verifique el inicio de sesión una vez que la puerta de enlace esté sirviendo en un nombre de host privado; hasta entonces, confirme que el contenedor se inició desde sus registros en Cloud Run.

246 249 


287 </Tabs>290 </Tabs>

288 </Step>291 </Step>

289 292 

290 <Step title="Insertar la URL de la puerta de enlace en máquinas de desarrolladores">293 <Step title="Enviar la URL del gateway a las máquinas de los desarrolladores">

291 La puerta de enlace ahora se está ejecutando, pero los desarrolladores no pueden alcanzarla desde `/login` hasta que la URL de la puerta de enlace esté en sus máquinas. Establezca `forceLoginMethod` y `forceLoginGatewayUrl` en el [archivo de configuración administrada](/docs/es/claude-apps-gateway#set-the-gateway-url) que implementa en cada dispositivo a través de MDM. No hay opción de puerta de enlace en el selector de inicio de sesión para que un desarrollador seleccione manualmente.294 El gateway ya se está ejecutando, pero los desarrolladores no pueden acceder a él desde `/login` hasta que la URL del gateway esté en sus máquinas. Despliega el [fragmento completo de configuración administrada](/docs/es/claude-apps-gateway#set-the-gateway-url), con `forceLoginMethod`, `forceLoginGatewayUrl` y la opción `parentSettingsBehavior: "merge"`, en cada dispositivo mediante MDM. No hay ninguna opción de gateway en el selector de inicio de sesión que un desarrollador pueda seleccionar manualmente.

292 </Step>295 </Step>

293</Steps>296</Steps>

294 297 


302* `terraform/`: la misma implementación como infraestructura como código, para una implementación de campo virgen: una aplicación dirigida para crear el repositorio de Artifact Registry, luego construir e insertar la imagen, luego una aplicación completa305* `terraform/`: la misma implementación como infraestructura como código, para una implementación de campo virgen: una aplicación dirigida para crear el repositorio de Artifact Registry, luego construir e insertar la imagen, luego una aplicación completa

303* `gateway.yaml.example` y un `Dockerfile` para la imagen de tiempo de ejecución sin distro306* `gateway.yaml.example` y un `Dockerfile` para la imagen de tiempo de ejecución sin distro

304 307 

305Los artefactos establecen por defecto el ingreso de Cloud Run a `internal`, por lo que no se requiere equilibrador de carga. Para que coincida con la implementación de producción detrás de un ALB de esta página, ejecute `setup.sh` con `INGRESS=internal-and-cloud-load-balancing`, o establezca la variable de Terraform `ingress` a `INGRESS_TRAFFIC_INTERNAL_LOAD_BALANCER`. Los artefactos también establecen por defecto la capa del invocador a una concesión `run.invoker` de `allUsers` en lugar de `--no-invoker-iam-check`, lo inverso del tutorial de esta página; cualquiera funciona, y la elección depende de las restricciones de política de su organización.308Los artefactos establecen por defecto el ingreso de Cloud Run a `internal`, lo que coincide con el comando de despliegue de esta página; ese ajuste funciona con o sin un Application Load Balancer interno delante del servicio, y los artefactos tampoco crean el equilibrador de carga. Los artefactos también establecen por defecto la capa del invocador a una concesión `run.invoker` de `allUsers` en lugar de `--no-invoker-iam-check`, lo inverso del tutorial de esta página; cualquiera funciona, y la elección depende de las restricciones de política de tu organización.

306 309 

307Los activos se proporcionan como ejemplos funcionales, no como un artefacto de producción compatible; revíselos y adáptelos a su entorno.310Los activos se proporcionan como ejemplos funcionales, no como un artefacto de producción compatible; revíselos y adáptelos a su entorno.

308 311 


317| Cloud Run devuelve `403 Forbidden` antes de alcanzar el contenedor | La verificación de IAM del invocador aún está habilitada | Implemente con `--no-invoker-iam-check`, o otorgue a `allUsers` el rol `run.invoker` con `--allow-unauthenticated` |320| Cloud Run devuelve `403 Forbidden` antes de alcanzar el contenedor | La verificación de IAM del invocador aún está habilitada | Implemente con `--no-invoker-iam-check`, o otorgue a `allUsers` el rol `run.invoker` con `--allow-unauthenticated` |

318| `--no-invoker-iam-check` rechazado con `invoker_iam_disabled is not currently available` | Bloqueado por `constraints/run.managed.requireInvokerIam` | Use `--allow-unauthenticated`. Si Domain Restricted Sharing a través de `constraints/iam.allowedPolicyMemberDomains` también bloquea eso, use la ruta de GKE, que expone la puerta de enlace en la capa de red sin ningún enlace `allUsers`. |321| `--no-invoker-iam-check` rechazado con `invoker_iam_disabled is not currently available` | Bloqueado por `constraints/run.managed.requireInvokerIam` | Use `--allow-unauthenticated`. Si Domain Restricted Sharing a través de `constraints/iam.allowedPolicyMemberDomains` también bloquea eso, use la ruta de GKE, que expone la puerta de enlace en la capa de red sin ningún enlace `allUsers`. |

319| `Container manifest type … must support amd64/linux` en la implementación | La imagen se construyó en un host que no es amd64, o buildx emitió un índice de imagen OCI | Construya con `--platform=linux/amd64 --provenance=false` |322| `Container manifest type … must support amd64/linux` en la implementación | La imagen se construyó en un host que no es amd64, o buildx emitió un índice de imagen OCI | Construya con `--platform=linux/amd64 --provenance=false` |

320| El arranque de la puerta de enlace sale con un error de tiempo de espera de conexión de Postgres en Cloud Run | El servicio no está adjunto a la VPC, o Cloud SQL no tiene IP privada en esa VPC; el almacén deja de esperar después de 5 segundos | Implemente con `--network` y `--subnet` para salida directa de VPC, y cree la instancia de Cloud SQL con `--no-assign-ip` y `--network` apuntando a la misma VPC |323| El arranque del gateway sale con un error de tiempo de espera de conexión de Postgres en Cloud Run | El servicio no está adjunto a la VPC, o Cloud SQL no tiene IP privada en esa VPC | Implementa con `--network` y `--subnet` para salida directa de VPC, y crea la instancia de Cloud SQL con `--no-assign-ip` y `--network` apuntando a la misma VPC |

321| Las solicitudes de Agent Platform devuelven `403 PERMISSION_DENIED` | El tiempo de ejecución no está utilizando la cuenta de servicio `claude-gateway`, o el modelo no está habilitado en Model Garden para el proyecto | Establezca `--service-account` en Cloud Run o vincule Workload Identity en GKE, y habilite cada modelo de Claude en Model Garden para la región de destino |324| Las solicitudes de Agent Platform devuelven `403 PERMISSION_DENIED` | El tiempo de ejecución no está utilizando la cuenta de servicio `claude-gateway`, o el modelo no está habilitado en Model Garden para el proyecto | Establezca `--service-account` en Cloud Run o vincule Workload Identity en GKE, y habilite cada modelo de Claude en Model Garden para la región de destino |

322| Las respuestas de transmisión se cortan después de una duración fija | Tiempo de espera de solicitud del front end: el servicio backend del equilibrador de carga detrás de GKE Ingress tiene un tiempo de espera predeterminado de 30 segundos y Cloud Run de 300 segundos | Adjunte un BackendConfig con un `timeoutSec` elevado en GKE, o implemente con `--timeout=3600` en Cloud Run |325| Las respuestas de transmisión se cortan después de una duración fija | Tiempo de espera de solicitud del front end: el servicio backend del equilibrador de carga detrás de GKE Ingress tiene un tiempo de espera predeterminado de 30 segundos y Cloud Run de 300 segundos | Adjunte un BackendConfig con un `timeoutSec` elevado en GKE, o implemente con `--timeout=3600` en Cloud Run |

323 326 

cli-reference.md +41 −33

Details

10 Comandos CLI10 Comandos CLI

11</h2>11</h2>

12 12 

13Puede iniciar sesiones, canalizar contenido, reanudar conversaciones y administrar actualizaciones con estos comandos:13Puedes iniciar sesiones, canalizar contenido, reanudar conversaciones y administrar actualizaciones con estos comandos:

14 14 

15| Comando | Descripción | Ejemplo |15| Comando | Descripción | Ejemplo |

16| :- | :- | :- |16| :- | :- | :- |

17| `claude` | Iniciar sesión interactiva | `claude` |17| `claude` | Iniciar sesión interactiva | `claude` |

18| `claude "query"` | Iniciar sesión interactiva con indicación inicial | `claude "explain this project"` |18| `claude "query"` | Iniciar sesión interactiva con prompt inicial | `claude "explain this project"` |

19| `claude -p "query"` | Consultar a través de SDK, luego salir | `claude -p "explain this function"` |19| `claude -p "query"` | Consultar a través de SDK, luego salir | `claude -p "explain this function"` |

20| `cat file \| claude -p "query"` | Procesar contenido canalizado | `cat logs.txt \| claude -p "explain"` |20| `cat file \| claude -p "query"` | Procesar contenido canalizado | `cat logs.txt \| claude -p "explain"` |

21| `claude -c` | Continuar la conversación más reciente en el directorio actual | `claude -c` |21| `claude -c` | Continuar la conversación más reciente en el directorio actual | `claude -c` |

22| `claude -c -p "query"` | Continuar a través de SDK | `claude -c -p "Check for type errors"` |22| `claude -c -p "query"` | Continuar a través de SDK | `claude -c -p "Check for type errors"` |

23| `claude -r "<session>" "query"` | Reanudar sesión por ID o nombre | `claude -r "auth-refactor" "Finish this PR"` |23| `claude -r "<session>" "query"` | Reanudar sesión por ID o nombre | `claude -r "auth-refactor" "Finish this PR"` |

24| `claude update` | Actualizar a la versión más reciente | `claude update` |24| `claude update` | Actualizar a la versión más reciente | `claude update` |

25| `claude gateway` | Iniciar el servidor de [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway) autohospedado, para administradores que implementan SSO y política frente a Claude Code en Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry. Requiere `--config` apuntando a un [`gateway.yaml`](/docs/es/claude-apps-gateway-config). | `claude gateway --config gateway.yaml` |25| `claude gateway` | Iniciar el servidor autohospedado del [gateway de aplicaciones de Claude](/docs/es/claude-apps-gateway), para administradores que implementan SSO y políticas frente a Claude Code en Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry. Requiere `--config` apuntando a un [`gateway.yaml`](/docs/es/claude-apps-gateway-config). | `claude gateway --config gateway.yaml` |

26| `claude install [version]` | Instalar o reinstalar el binario nativo. Acepta una versión como `2.1.118`, o `stable` o `latest`. Consulte [Instalar una versión específica](/docs/es/setup#install-a-specific-version) | `claude install stable` |26| `claude install [version]` | Instalar o reinstalar el binario nativo. Acepta una versión como `2.1.118`, o `stable` o `latest`. Consulta [Instalar una versión específica](/docs/es/setup#install-a-specific-version) | `claude install stable` |

27| `claude auth login` | Inicie sesión en su cuenta de Anthropic. Use `--email` para rellenar previamente su dirección de correo electrónico, `--sso` para forzar la autenticación SSO y `--console` para iniciar sesión con Anthropic Console para facturación de uso de API en lugar de una suscripción a Claude | `claude auth login --console` |27| `claude auth login` | Inicia sesión en tu cuenta de Anthropic. Usa `--email` para rellenar previamente tu dirección de correo electrónico, `--sso` para forzar la autenticación SSO y `--console` para iniciar sesión con Anthropic Console para facturación de uso de API en lugar de una suscripción a Claude | `claude auth login --console` |

28| `claude auth logout` | Cerrar sesión en su cuenta de Anthropic | `claude auth logout` |28| `claude auth logout` | Cerrar sesión en tu cuenta de Anthropic | `claude auth logout` |

29| `claude auth status` | Mostrar estado de autenticación como JSON. Use `--text` para salida legible por humanos. Sale con código 0 si ha iniciado sesión, 1 si no. El JSON incluye un campo `configDirectory` que nombra el [directorio de configuración](/docs/es/claude-directory) que utiliza la CLI. El campo requiere Claude Code v2.1.268 o posterior | `claude auth status` |29| `claude auth status` | Mostrar el estado de autenticación como JSON. Usa `--text` para salida legible por humanos. Sale con código 0 si has iniciado sesión, 1 si no. El JSON incluye un campo `configDirectory` que indica el [directorio de configuración](/docs/es/claude-directory) que utiliza la CLI. El campo requiere Claude Code v2.1.268 o posterior. El campo `authMethod` del JSON es uno de `none`, `claude.ai`, `oauth_token`, `api_key`, `api_key_helper` o `third_party` | `claude auth status` |

30| `claude agents` | Abrir [vista de agentes](/docs/es/agent-view) para monitorear y enviar sesiones de fondo paralelas. Use `--cwd <path>` para mostrar solo sesiones iniciadas en ese directorio, o `--json` para imprimir sesiones activas como una matriz JSON para scripts (`--json --all` también incluye sesiones de fondo completadas). Pase `--permission-mode`, `--model`, `--effort` o `--agent` para establecer [valores predeterminados para sesiones enviadas](/docs/es/agent-view#permission-mode-model-and-effort). Acepta `--settings`, `--add-dir`, `--plugin-dir` y `--mcp-config` como el comando `claude` de nivel superior. Abrir la vista de agentes requiere una terminal interactiva | `claude agents --json` |30| `claude agents` | Abrir la [vista de agentes](/docs/es/agent-view) para monitorear y enviar sesiones en segundo plano paralelas. Usa `--cwd <path>` para mostrar solo las sesiones iniciadas en ese directorio, o `--json` para imprimir las sesiones activas como una matriz JSON para scripts (`--json --all` también incluye las sesiones en segundo plano completadas). Pasa `--permission-mode`, `--model`, `--effort` o `--agent` para establecer [valores predeterminados para las sesiones enviadas](/docs/es/agent-view#permission-mode-model-and-effort). Acepta `--settings`, `--add-dir`, `--plugin-dir` y `--mcp-config` como el comando `claude` de nivel superior. Abrir la vista de agentes requiere una terminal interactiva | `claude agents --json` |

31| `claude attach <id>` | Adjuntar a una [sesión de fondo](/docs/es/agent-view#manage-sessions-from-the-shell) en esta terminal | `claude attach 7c5dcf5d` |31| `claude attach <id>` | Adjuntarse a una [sesión en segundo plano](/docs/es/agent-view#manage-sessions-from-the-shell) en esta terminal | `claude attach 7c5dcf5d` |

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

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

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

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

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

37| `claude import [source]` | Iniciar una sesión interactiva que ejecuta [`/import`](/docs/es/commands#all-commands) para traer configuración de otros agentes de codificación a Claude Code. Acepta las mismas opciones `--dry-run` y `--yes` que el comando. No disponible en Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry o Claude Platform en AWS. También no disponible cuando desactiva [obtención de banderas de características](/docs/es/env-vars#features-that-need-feature-flag-fetching). Requiere Claude Code v2.1.213 o posterior | `claude import codex --dry-run` |37| `claude import [source]` | Iniciar una sesión interactiva que ejecuta [`/import`](/docs/es/commands#all-commands) para traer configuración de otros agentes de codificación a Claude Code. Acepta las mismas opciones `--dry-run` y `--yes` que el comando. No disponible en Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry ni Claude Platform en AWS. Tampoco está disponible cuando desactivas la [obtención de feature flags](/docs/es/env-vars#features-that-need-feature-flag-fetching). Requiere Claude Code v2.1.213 o posterior | `claude import codex --dry-run` |

38| `claude logs <id>` | Imprimir salida reciente de una [sesión de fondo](/docs/es/agent-view#manage-sessions-from-the-shell) | `claude logs 7c5dcf5d` |38| `claude logs <id>` | Imprimir la salida reciente de una [sesión en segundo plano](/docs/es/agent-view#manage-sessions-from-the-shell) | `claude logs 7c5dcf5d` |

39| `claude mcp` | Configurar servidores Model Context Protocol (MCP) | Consulte la [documentación de Claude Code MCP](/docs/es/mcp). |39| `claude mcp` | Configurar servidores Model Context Protocol (MCP) | Consulta la [documentación de MCP de Claude Code](/docs/es/mcp). |

40| `claude mcp login <name>` | Ejecutar el flujo OAuth de un servidor MCP configurado sin abrir el panel interactivo `/mcp`. Funciona para servidores HTTP, SSE y conectores de claude.ai. Agregue `--no-browser` sobre SSH para imprimir la URL de autorización en lugar de abrir un navegador, luego pegue la URL de redirección nuevamente en el indicador. Consulte [Autenticar desde la línea de comandos](/docs/es/mcp#authenticate-from-the-command-line) | `claude mcp login sentry` |40| `claude mcp login <name>` | Ejecutar el flujo OAuth de un servidor MCP configurado sin abrir el panel interactivo `/mcp`. Funciona con servidores HTTP, SSE y conectores de claude.ai. Agrega `--no-browser` sobre SSH para imprimir la URL de autorización en lugar de abrir un navegador y luego pega la URL de redirección en el prompt. Consulta [Autenticar desde la línea de comandos](/docs/es/mcp#authenticate-from-the-command-line) | `claude mcp login sentry` |

41| `claude mcp logout <name>` | Borrar credenciales OAuth almacenadas para un servidor MCP | `claude mcp logout sentry` |41| `claude mcp logout <name>` | Borrar las credenciales OAuth almacenadas de un servidor MCP | `claude mcp logout sentry` |

42| `claude plugin` | Administrar Claude Code [plugins](/docs/es/plugins/overview). Alias: `claude plugins`. Consulte [referencia de plugins](/docs/es/plugins/cli-reference#claude-plugin-commands) para subcomandos | `claude plugin install code-review@claude-plugins-official` |42| `claude plugin` | Administrar [plugins](/docs/es/plugins/overview) de Claude Code. Alias: `claude plugins`. Consulta la [referencia de plugins](/docs/es/plugins/cli-reference#claude-plugin-commands) para ver los subcomandos | `claude plugin install code-review@claude-plugins-official` |

43| `claude project purge [path]` | Eliminar todo el estado local de Claude Code para un proyecto: transcripciones, listas de tareas, registros de depuración, historial de edición de archivos, líneas de historial de indicaciones y la entrada del proyecto en `~/.claude.json`. Omita `[path]` para elegir de una lista interactiva. Banderas: `--dry-run` para vista previa, `-y`/`--yes` para omitir confirmación, `-i`/`--interactive` para confirmar cada elemento, `--all` para cada proyecto. Consulte [Borrar datos locales](/docs/es/claude-directory#clear-local-data) | `claude project purge ~/work/repo --dry-run` |43| `claude project purge [path]` | Eliminar todo el estado local de Claude Code de un proyecto: transcripciones, listas de tareas, registros de depuración, historial de edición de archivos, líneas del historial de prompts y la entrada del proyecto en `~/.claude.json`. Omite `[path]` para elegir de una lista interactiva. Flags: `--dry-run` para obtener una vista previa, `-y`/`--yes` para omitir la confirmación, `-i`/`--interactive` para confirmar cada elemento, `--all` para todos los proyectos. Consulta [Borrar datos locales](/docs/es/claude-directory#clear-local-data) | `claude project purge ~/work/repo --dry-run` |

44| `claude remote-control` | Iniciar un servidor de [Remote Control](/docs/es/remote-control) para controlar Claude Code desde Claude.ai o la aplicación Claude. Se ejecuta en modo servidor (sin sesión interactiva local). Consulte [Banderas de modo servidor](/docs/es/remote-control#start-a-remote-control-session). Después de detener el servidor, puede recuperar las sesiones que estaba sirviendo. Consulte [Reanudar sesiones después de detener el servidor](/docs/es/remote-control#resume-sessions-after-stopping-the-server) | `claude remote-control --name "My Project"` |44| `claude remote-control` | Iniciar un servidor de [Remote Control](/docs/es/remote-control) para controlar Claude Code desde Claude.ai o la aplicación Claude. Se ejecuta en modo servidor (sin sesión interactiva local). Consulta [Flags del modo servidor](/docs/es/remote-control#start-a-remote-control-session). Después de detener el servidor, puedes recuperar las sesiones que estaba sirviendo. Consulta [Reanudar sesiones después de detener el servidor](/docs/es/remote-control#resume-sessions-after-stopping-the-server) | `claude remote-control --name "My Project"` |

45| `claude respawn <id>` | Reiniciar una [sesión de fondo](/docs/es/agent-view#manage-sessions-from-the-shell), en ejecución o detenida, con su conversación intacta. Use `--all` para reiniciar cada sesión en ejecución, por ejemplo, para recoger un binario de Claude Code actualizado | `claude respawn 7c5dcf5d` |45| `claude respawn <id>` | Reiniciar una [sesión en segundo plano](/docs/es/agent-view#manage-sessions-from-the-shell), en ejecución o detenida, con su conversación intacta. Usa `--all` para reiniciar todas las sesiones en ejecución, por ejemplo, para usar un binario de Claude Code actualizado | `claude respawn 7c5dcf5d` |

46| `claude rm <id>` | Eliminar una [sesión de fondo](/docs/es/agent-view#manage-sessions-from-the-shell) de la lista. Cuando la eliminación se [rechaza sobre el árbol de trabajo de la sesión](/docs/es/agent-view#what-deleting-a-session-removes) y un segundo `claude rm` puede resolverlo, el rechazo imprime la bandera exacta y el valor a pasar: `--discard-unpushed <commit>@<worktree-id>` descarta un árbol de trabajo que tiene commits sin enviar junto con esos commits, y `--force-remove-worktree <worktree-id>` elimina un directorio de árbol de trabajo que git o el hook `WorktreeRemove` no pudieron eliminar. `--discard-unpushed` requiere Claude Code v2.1.260 o posterior, y `--force-remove-worktree` requiere v2.1.268 o posterior. La transcripción de la conversación permanece en su máquina local, disponible a través de `claude --resume` | `claude rm 7c5dcf5d` |46| `claude rm <id>` | Eliminar una [sesión en segundo plano](/docs/es/agent-view#manage-sessions-from-the-shell) de la lista. Cuando la eliminación se [rechaza por el worktree de la sesión](/docs/es/agent-view#what-deleting-a-session-removes) y un segundo `claude rm` puede resolverlo, el rechazo imprime el flag exacto y el valor que debes pasar: `--discard-unpushed <commit>@<worktree-id>` descarta un worktree que tiene commits sin enviar junto con esos commits, y `--force-remove-worktree <worktree-id>` elimina un directorio de worktree que git o el hook `WorktreeRemove` no pudieron eliminar. `--discard-unpushed` requiere Claude Code v2.1.260 o posterior, y `--force-remove-worktree` requiere v2.1.268 o posterior. La transcripción de la conversación permanece en tu máquina local, disponible a través de `claude --resume` | `claude rm 7c5dcf5d` |

47| `claude self-hosted-runner` | Iniciar un proceso de ejecutor que registra esta máquina o contenedor con un [entorno autohospedado](/docs/es/self-hosted-environments) y aloja sesiones en la nube de Claude Code en su infraestructura. Ejecute `claude self-hosted-runner setup` para un recorrido guiado del operador, `claude self-hosted-runner doctor` para [diagnosticar un ejecutor implementado](/docs/es/self-hosted-environments-deploy#troubleshooting) y `claude self-hosted-runner orchestrator` para generar [ejecutores bajo demanda](/docs/es/self-hosted-environments-configuration#on-demand-runners). Requiere Claude Code v2.1.224 o posterior | `claude self-hosted-runner setup` |47| `claude self-hosted-runner` | Iniciar un proceso de ejecutor que registra esta máquina o contenedor en un [entorno autohospedado](/docs/es/self-hosted-environments) y aloja sesiones en la nube de Claude Code en tu infraestructura. Ejecuta `claude self-hosted-runner setup` para un recorrido guiado del operador, `claude self-hosted-runner doctor` para [diagnosticar un ejecutor implementado](/docs/es/self-hosted-environments-deploy#troubleshooting) y `claude self-hosted-runner orchestrator` para generar [ejecutores bajo demanda](/docs/es/self-hosted-environments-configuration#on-demand-runners). Requiere Claude Code v2.1.224 o posterior | `claude self-hosted-runner setup` |

48| `claude setup-token` | Generar un token OAuth de larga duración para CI y scripts. Imprime el token en la terminal sin guardarlo. Requiere una suscripción a Claude. Consulte [Generar un token de larga duración](/docs/es/authentication#generate-a-long-lived-token) | `claude setup-token` |48| `claude setup-token` | Generar un token OAuth de larga duración para CI y scripts. Imprime el token en la terminal sin guardarlo. Requiere una suscripción a Claude. Consulta [Generar un token de larga duración](/docs/es/authentication#generate-a-long-lived-token) | `claude setup-token` |

49| `claude stop <id>` | Detener una [sesión de fondo](/docs/es/agent-view#manage-sessions-from-the-shell). También acepta `claude kill` | `claude stop 7c5dcf5d` |49| `claude stop <id>` | Detener una [sesión en segundo plano](/docs/es/agent-view#manage-sessions-from-the-shell). También acepta `claude kill` | `claude stop 7c5dcf5d` |

50| `claude ultrareview [target]` | Ejecutar [ultrareview](/docs/es/ultrareview#run-ultrareview-non-interactively) de forma no interactiva. Imprime los hallazgos en stdout y sale con 0 en caso de éxito o 1 en caso de fallo. Use `--json` para la carga útil sin procesar y `--timeout <minutes>` para anular el valor predeterminado de 45 minutos. Use `--post` en un destino de solicitud de extracción `github.com` para publicar los hallazgos terminados en la PR como un comentario simple desde su cuenta de GitHub. `--no-post` es el predeterminado. `--post` y `--no-post` requieren Claude Code v2.1.227 o posterior. Consulte [Publicar hallazgos en la solicitud de extracción](/docs/es/ultrareview#post-findings-to-the-pull-request) | `claude ultrareview 1234 --json` |50| `claude ultrareview [target]` | Ejecutar [ultrareview](/docs/es/ultrareview#run-ultrareview-non-interactively) de forma no interactiva. Imprime los hallazgos en stdout y sale con 0 en caso de éxito o 1 en caso de fallo. Usa `--json` para obtener el payload sin procesar y `--timeout <minutes>` para sobrescribir el valor predeterminado de 45 minutos. Usa `--post` con un pull request de `github.com` como destino para publicar los hallazgos terminados en el PR como un comentario simple desde tu cuenta de GitHub. `--no-post` es el predeterminado. `--post` y `--no-post` requieren Claude Code v2.1.227 o posterior. Consulta [Publicar hallazgos en el pull request](/docs/es/ultrareview#post-findings-to-the-pull-request) | `claude ultrareview 1234 --json` |

51 51 

52Si escribe mal un subcomando, Claude Code sugiere la coincidencia más cercana y sale sin iniciar una sesión. Por ejemplo, `claude udpate` imprime `Did you mean claude update?`.52Si escribes mal un subcomando, Claude Code sugiere la coincidencia más cercana y sale sin iniciar una sesión. Por ejemplo, `claude udpate` imprime `Did you mean claude update?`.

53 53 

54A partir de v2.1.199, `claude --dangerously-skip-permissions daemon <subcommand>` ejecuta el subcomando `daemon`. Las versiones anteriores trataban `daemon <subcommand>` como el indicador para una nueva sesión interactiva, por lo que el subcomando nunca se ejecutaba cuando la bandera venía primero, una configuración común cuando `claude` tiene un alias que incluye la bandera. Solo un `--dangerously-skip-permissions` o `--allow-dangerously-skip-permissions` inicial enruta a `daemon` de esta manera; cualquier otra bandera inicial aún inicia una sesión interactiva.54A partir de v2.1.199, `claude --dangerously-skip-permissions daemon <subcommand>` ejecuta el subcomando `daemon`. Las versiones anteriores trataban `daemon <subcommand>` como el prompt para una nueva sesión interactiva, por lo que el subcomando nunca se ejecutaba cuando el flag iba primero, una configuración común cuando `claude` tiene un alias que incluye el flag. Solo un `--dangerously-skip-permissions` o `--allow-dangerously-skip-permissions` inicial se dirige a `daemon` de esta manera; cualquier otro flag inicial sigue iniciando una sesión interactiva.

55 55 

56<h2 id="cli-flags">56<h2 id="cli-flags">

57 Banderas CLI57 Banderas CLI


156| `--append-system-prompt-file` | Añade contenido del archivo al indicador predeterminado | `claude --append-system-prompt-file ./style-rules.txt` |156| `--append-system-prompt-file` | Añade contenido del archivo al indicador predeterminado | `claude --append-system-prompt-file ./style-rules.txt` |

157| `--system-prompt-snapshot` | Con `off`, reconstruye el indicador en cada solicitud. Con `on`, el predeterminado, reutiliza un indicador registrado donde [se aplica el registro](#system-prompt-flags-in-resumed-conversations) | `claude --append-system-prompt "Draft rules" --system-prompt-snapshot off` |157| `--system-prompt-snapshot` | Con `off`, reconstruye el indicador en cada solicitud. Con `on`, el predeterminado, reutiliza un indicador registrado donde [se aplica el registro](#system-prompt-flags-in-resumed-conversations) | `claude --append-system-prompt "Draft rules" --system-prompt-snapshot off` |

158 158 

159`--system-prompt` y `--system-prompt-file` son mutuamente excluyentes. Las banderas de añadir se pueden combinar con cualquiera de las banderas de reemplazo.159Puedes combinar estas banderas. Para reemplazar el prompt predeterminado y aun así añadir tu propio texto, pasa `--append-system-prompt` o `--append-system-prompt-file` junto con `--system-prompt` o `--system-prompt-file`. Con Claude Code v2.1.283 o posterior, también puedes pasar una bandera junto con su propia forma de archivo, como `--append-system-prompt` con `--append-system-prompt-file`, y Claude Code usa ambas.

160 

161Por ejemplo, ejecuta lo siguiente en tu shell para añadir tanto una guía de estilo desde un archivo como una instrucción adicional:

162 

163```bash theme={null}

164claude -p --append-system-prompt-file ./style.md --append-system-prompt "Always reply in French" "Summarize README.md"

165```

166 

167Claude recibe el prompt del sistema predeterminado seguido del contenido de `style.md`, una línea en blanco y luego `Always reply in French`. El contenido del archivo va primero incluso si pasas `--append-system-prompt` antes de `--append-system-prompt-file`.

160 168 

161Cuando el texto de reemplazo combina instrucciones que son iguales en cada ejecución con contexto que cambia por ejecución, añade una línea que contenga solo `__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__` entre las instrucciones y el contexto. Claude Code divide el indicador en la primera línea de este tipo y elimina esa línea, por lo que la parte anterior permanece en caché mientras la parte posterior cambia. Requiere Claude Code v2.1.275 o posterior. [Cachea la parte estática de un indicador personalizado](/docs/es/agent-sdk/modifying-system-prompts#cache-the-static-part-of-a-custom-prompt) enumera las configuraciones donde se aplica la división.169Cuando el texto de reemplazo combina instrucciones que son iguales en cada ejecución con contexto que cambia por ejecución, añade una línea que contenga solo `__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__` entre las instrucciones y el contexto. Claude Code divide el indicador en la primera línea de este tipo y elimina esa línea, por lo que la parte anterior permanece en caché mientras la parte posterior cambia. Requiere Claude Code v2.1.275 o posterior. [Cachea la parte estática de un indicador personalizado](/docs/es/agent-sdk/modifying-system-prompts#cache-the-static-part-of-a-custom-prompt) enumera las configuraciones donde se aplica la división.

162 170 

code-review.md +1 −3

Details

433 Ultrareview requiere autenticación con una cuenta de claude.ai y no está disponible en Amazon Bedrock, Google Cloud's Agent Platform, o Microsoft Foundry, ni para organizaciones con Zero Data Retention habilitado. Cuando ultrareview no está disponible, `/code-review ultra` ejecuta una revisión local en su sesión en su lugar.433 Ultrareview requiere autenticación con una cuenta de claude.ai y no está disponible en Amazon Bedrock, Google Cloud's Agent Platform, o Microsoft Foundry, ni para organizaciones con Zero Data Retention habilitado. Cuando ultrareview no está disponible, `/code-review ultra` ejecuta una revisión local en su sesión en su lugar.

434</Note>434</Note>

435 435 

436Para iniciar una revisión en la nube desde un script o CI, ejecute `claude -p '/code-review ultra'`. Claude Code lanza la revisión e imprime un enlace para rastrearla. Requiere Claude Code v2.1.218 o posterior.436Para ejecutar una revisión en la nube desde un script o un job de CI, usa el [subcomando `claude ultrareview`](/docs/es/ultrareview#run-ultrareview-non-interactively), que espera los hallazgos y los imprime en stdout.

437 

438Cuando la revisión facturía [créditos de uso](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans), Claude Code se detiene antes de lanzar, porque la confirmación de facturación necesita una sesión interactiva. Ejecute el [subcomando `claude ultrareview`](/docs/es/ultrareview#run-ultrareview-non-interactively) en su lugar; al ejecutarlo, usted consiente el cargo.

439 437 

440El comando se llamaba `/simplify` antes de v2.1.147, cuando aplicaba correcciones de forma predeterminada. `/simplify` ejecuta una revisión separada de solo limpieza que aplica correcciones sin buscar errores. Si escribió scripts con `/simplify` para búsqueda de errores, cambie a `/code-review --fix`.438El comando se llamaba `/simplify` antes de v2.1.147, cuando aplicaba correcciones de forma predeterminada. `/simplify` ejecuta una revisión separada de solo limpieza que aplica correcciones sin buscar errores. Si escribió scripts con `/simplify` para búsqueda de errores, cambie a `/code-review --fix`.

441 439 

commands.md +84 −84

Details

38 38 

39La tabla siguiente enumera todos los comandos incluidos en Claude Code. La mayoría son comandos integrados cuyo comportamiento está codificado en la CLI. Dos tipos de entradas están marcadas:39La tabla siguiente enumera todos los comandos incluidos en Claude Code. La mayoría son comandos integrados cuyo comportamiento está codificado en la CLI. Dos tipos de entradas están marcadas:

40 40 

41* **[Skill](/docs/es/skills#bundled-skills)**: una skill agrupada. Funciona como las skills que escribes tú mismo: un prompt entregado a Claude.41* **[Skill](/docs/es/skills#bundled-skills)**: un skill incluido. Funciona como los skills que escribes tú mismo: un prompt entregado a Claude.

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

43* **[Workflow](/docs/es/workflows#bundled-workflows)**: un [workflow dinámico](/docs/es/workflows) agrupado que distribuye el trabajo entre muchos subagentes y se ejecuta en segundo plano.43* **[Workflow](/docs/es/workflows#bundled-workflows)**: un [workflow dinámico](/docs/es/workflows) incluido que distribuye el trabajo entre muchos subagentes y se ejecuta en segundo plano.

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

45 45 

46Para agregar tus propios comandos, consulta [skills](/docs/es/skills).46Para agregar tus propios comandos, consulta [skills](/docs/es/skills).


53 53 

54| Comando | Propósito |54| Comando | Propósito |

55| :- | :- |55| :- | :- |

56| `/add-dir <path>` | Agrega un directorio de trabajo para acceso a archivos durante la sesión actual. Escribe una ruta parcial para ver sugerencias de directorios coincidentes; presiona `Tab` para aceptar una. La mayoría de la configuración de `.claude/` [no se descubre](/docs/es/permissions#additional-directories-grant-file-access-not-configuration) desde el directorio agregado. No puedes agregar la mayoría de [rutas de red](/docs/es/errors#working-directory-is-a-network-path), como `\\server\share`. Después de una adición exitosa, tus [hooks `DirectoryAdded`](/docs/es/hooks#directoryadded) se ejecutan. Cuando lo ejecutas mientras Claude está respondiendo, Claude Code te pide que confirmes el directorio de inmediato, y una vez que confirmes, la siguiente llamada de herramienta de Claude en el mismo turno puede acceder a él. Antes de v2.1.234, Claude Code ponía en cola el comando hasta que el turno terminaba |56| `/add-dir <path>` | Agrega un directorio de trabajo para acceso a archivos durante la sesión actual. Escribe una ruta parcial para ver sugerencias de directorios coincidentes; presiona `Tab` para aceptar una. La mayoría de la configuración de `.claude/` [no se descubre](/docs/es/permissions#additional-directories-grant-file-access-not-configuration) desde el directorio agregado. No puedes agregar la mayoría de [rutas de red](/docs/es/errors#working-directory-is-a-network-path), como `\\server\share`. Después de una adición exitosa, tus [hooks `DirectoryAdded`](/docs/es/hooks#directoryadded) se ejecutan. Cuando lo ejecutas mientras Claude está respondiendo, Claude Code te pide que confirmes el directorio de inmediato, y una vez que confirmes, la siguiente llamada a herramienta de Claude en el mismo turno puede acceder a él. Antes de v2.1.234, Claude Code ponía en cola el comando hasta que el turno terminaba |

57| `/advisor [model\|off]` | Habilita o deshabilita la [herramienta de asesor](/docs/es/advisor), que consulta un segundo modelo para obtener orientación en momentos clave durante una tarea. Acepta `fable`, `opus`, `sonnet`, o un ID de modelo completo. `fable` requiere [acceso a Fable](/docs/es/advisor#choose-an-advisor-model). Sin un argumento, abre un selector. En una sesión sin terminal interactiva, o sobre [Remote Control](/docs/es/remote-control#limitations), pasa el modelo u `off` como argumento; sin argumento allí, el comando imprime el asesor actual como texto. Estos formularios requieren Claude Code v2.1.260 o posterior |57| `/advisor [model\|off]` | Habilita o deshabilita la [herramienta de asesor](/docs/es/advisor), que consulta un segundo modelo para obtener orientación en momentos clave durante una tarea. Acepta `fable`, `opus`, `sonnet`, o un ID de modelo completo. `fable` requiere [acceso a Fable](/docs/es/advisor#choose-an-advisor-model). Sin un argumento, abre un selector. En una sesión sin terminal interactiva, o sobre [Remote Control](/docs/es/remote-control#limitations), pasa el modelo u `off` como argumento; sin argumento allí, el comando imprime el asesor actual como texto. Estas formas requieren Claude Code v2.1.260 o posterior |

58| `/agents` | A partir de v2.1.198, ejecutar `/agents` imprime un recordatorio para pedirle a Claude que cree o gestione [subagentes](/docs/es/sub-agents), o para editar `.claude/agents/` o `~/.claude/agents/` directamente. En v2.1.197 y anteriores, abre una interfaz interactiva para crear y gestionar configuraciones de subagentes |58| `/agents` | A partir de v2.1.198, ejecutar `/agents` imprime un recordatorio para pedirle a Claude que cree o gestione [subagentes](/docs/es/sub-agents), o para editar `.claude/agents/` o `~/.claude/agents/` directamente. En v2.1.197 y anteriores, abre una interfaz interactiva para crear y gestionar configuraciones de subagentes |

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

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

61| `/artifacts` | Enumera los [artefactos](/docs/es/artifacts#find-an-artifact-again) que posees o que se comparten contigo, luego adjunta uno a la sesión, ábrelo en tu navegador o copia su enlace. Disponible donde [los artefactos](/docs/es/artifacts#availability) están disponibles. Requiere Claude Code v2.1.208 o posterior; adjuntar con `Enter` requiere v2.1.216 |61| `/artifacts` | Enumera los [artefactos](/docs/es/artifacts#find-an-artifact-again) que posees o que se comparten contigo, luego adjunta uno a la sesión, ábrelo en tu navegador o copia su enlace. Disponible donde [los artefactos](/docs/es/artifacts#availability) están disponibles. Requiere Claude Code v2.1.208 o posterior; adjuntar con `Enter` requiere v2.1.216 |

62| `/auto-mode-setup` | [Redacta entradas `autoMode.environment`](/docs/es/auto-mode-config#generate-environment-entries) desde tu proyecto y sesiones recientes, luego revisa el borrador y guárdalo en tu configuración de usuario. Requiere un plan Pro, Max o Team y Claude Code v2.1.228 o posterior. En Windows nativo, requiere v2.1.233 o posterior |62| `/auto-mode-setup` | [Redacta entradas `autoMode.environment`](/docs/es/auto-mode-config#generate-environment-entries) desde tu proyecto y sesiones recientes, luego revisa el borrador y guárdalo en tu configuración de usuario. Requiere un plan Pro, Max o Team y Claude Code v2.1.228 o posterior. En Windows nativo, requiere v2.1.233 o posterior |

63| `/autocompact [auto\|<tokens>]` | Establece la ventana de auto-compactación: qué tan llena se pone la ventana de contexto antes de que Claude Code se 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 auto-compactación](/docs/es/model-config#set-the-auto-compact-window) para ver los valores aceptados y qué lo anula. Sin un argumento, abre un diálogo que muestra la ventana actual. Requiere Claude Code v2.1.221 o posterior |63| `/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](/docs/es/model-config#set-the-auto-compact-window) para ver los valores aceptados y qué lo sobrescribe. Sin un argumento, abre un diálogo que muestra la ventana actual. Requiere Claude Code v2.1.221 o posterior |

64| `/autofix-pr [prompt]` | Genera una sesión de [Claude Code en la web](/docs/es/claude-code-on-the-web#auto-fix-pull-requests) que observa el PR de la rama actual y envía correcciones cuando CI falla o los revisores dejan comentarios. Detecta el PR abierto desde tu rama extraída con `gh pr view`; para observar un PR diferente, primero extrae su rama. De forma predeterminada, se le dice a la sesión en la nube que corrija cada fallo de CI y 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 [Claude Code en la web](/docs/es/claude-code-on-the-web) |64| `/autofix-pr [prompt]` | Genera una [sesión en la nube](/docs/es/claude-code-on-the-web#auto-fix-pull-requests) que observa el PR de la rama actual y envía correcciones cuando CI falla o los revisores dejan comentarios. Detecta el PR abierto desde tu rama extraída con `gh pr view`; para observar un PR diferente, primero extrae su rama. De forma predeterminada, se le dice a la sesión en la nube que corrija cada fallo de CI y 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](/docs/es/claude-code-on-the-web) |

65| `/background [prompt]` | Desvincula la sesión actual para ejecutarse como un [agente de fondo](/docs/es/agent-view) y libera esta terminal. Pasa un prompt para enviar una instrucción más antes de desvincularse. Monitorea la sesión con `claude agents`. Para copiar la conversación en una nueva sesión de fondo mientras esta sigue ejecutándose, usa `/fork`. Alias: `/bg` |65| `/background [prompt]` | Desvincula la sesión actual para ejecutarse como un [agente en segundo plano](/docs/es/agent-view) y libera esta terminal. Pasa un prompt para enviar una instrucción más antes de desvincularse. Monitorea la sesión con `claude agents`. Para copiar la conversación en una nueva sesión en segundo plano mientras esta sigue ejecutándose, usa `/fork`. Alias: `/bg` |

66| `/batch <instruction>` | **[Skill](/docs/es/skills#bundled-skills).** Orquesta cambios a gran escala en toda una base de código en paralelo. Investiga la base de código, descompone el trabajo en 5 a 30 unidades independientes y presenta un plan. Una vez aprobado, genera un [subagente de fondo](/docs/es/sub-agents#run-subagents-in-foreground-or-background) por unidad en un [worktree](/docs/es/worktrees) aislado. Cada subagente implementa su unidad, ejecuta pruebas y publica su cambio. Requiere un repositorio git o un [hook `WorktreeCreate`](/docs/es/worktrees#non-git-version-control) que cree los worktrees. Fuera de un repositorio git, `/batch` requiere Claude Code v2.1.281 o posterior. Ejemplo: `/batch migrate src/ from JavaScript to TypeScript` |66| `/batch <instruction>` | **[Skill](/docs/es/skills#bundled-skills).** Orquesta cambios a gran escala en toda una base de código en paralelo. Investiga la base de código, descompone el trabajo en 5 a 30 unidades independientes y presenta un plan. Una vez aprobado, genera un [subagente en segundo plano](/docs/es/sub-agents#run-subagents-in-foreground-or-background) por unidad en un [worktree](/docs/es/worktrees) aislado. Cada subagente implementa su unidad, ejecuta pruebas y publica su cambio. Requiere un repositorio git o un [hook `WorktreeCreate`](/docs/es/worktrees#non-git-version-control) que cree los worktrees. Fuera de un repositorio git, `/batch` requiere Claude Code v2.1.281 o posterior. Ejemplo: `/batch migrate src/ from JavaScript to TypeScript` |

67| `/branch [name]` | Crea una rama de la conversación actual en este punto, para que puedas probar una dirección diferente sin perder la conversación tal como está. Te cambia a la rama y preserva la original, a la que puedes volver con `/resume`. Para ejecutar una copia como una [sesión de fondo](/docs/es/agent-view) separada en lugar de cambiar a ella, usa `/fork`; para entregar una tarea secundaria a un [subagente](/docs/es/sub-agents) que informe de vuelta a esta conversación, usa `/subtask` |67| `/branch [name]` | Crea una rama de la conversación actual en este punto, para que puedas probar una dirección diferente sin perder la conversación tal como está. Te cambia a la rama y preserva la original, a la que puedes volver con `/resume`. Para ejecutar una copia como una [sesión en segundo plano](/docs/es/agent-view) separada en lugar de cambiar a ella, usa `/fork`; para entregar una tarea secundaria a un [subagente](/docs/es/sub-agents) que informe de vuelta a esta conversación, usa `/subtask` |

68| `/btw [question]` | Haz una [pregunta secundaria](/docs/es/interactive-mode#side-questions-with-%2Fbtw) sobre la sesión actual sin agregarla a la conversación. Si ejecutas `/btw` sin una pregunta, Claude Code muestra tu pregunta secundaria más reciente para que puedas examinar respuestas anteriores; si aún no has hecho una, Claude Code imprime una línea de uso. Antes de v2.1.212, `/btw` requería una pregunta |68| `/btw [question]` | Haz una [pregunta secundaria](/docs/es/interactive-mode#side-questions-with-%2Fbtw) sobre la sesión actual sin agregarla a la conversación. Si ejecutas `/btw` sin una pregunta, Claude Code muestra tu pregunta secundaria más reciente para que puedas examinar respuestas anteriores; si aún no has hecho una, Claude Code imprime una línea de uso. Antes de v2.1.212, `/btw` requería una pregunta |

69| `/bug [report]` | Reporta un error o comparte tu conversación. Tú eliges cuánto historial de sesión incluir y confirmas en una pantalla de consentimiento antes de que se envíe nada. Cuando has iniciado sesión en Anthropic en una conexión de primera parte, el informe va a Anthropic; en un proveedor de terceros, o sin credenciales de Anthropic, Claude Code escribe el informe en un [archivo local bajo `~/.claude/feedback-bundles/`](/docs/es/data-usage#telemetry-services) que reenvías tú mismo. En la [extensión de VS Code](/docs/es/vs-code#use-the-prompt-box), `/bug` abre el diálogo de comentarios propio de la extensión en su lugar; requiere Claude Code v2.1.229 o posterior. Cuando lo ejecutas mientras Claude está respondiendo, Claude Code abre el diálogo de inmediato. Antes de v2.1.232, Claude Code ponía en cola el comando hasta que el turno terminaba. Alias: `/share`. Antes de v2.1.212, `/bug` y `/share` eran alias de `/feedback` |69| `/bug [report]` | Reporta un error o comparte tu conversación. Tú eliges cuánto historial de sesión incluir y confirmas en una pantalla de consentimiento antes de que se envíe nada. Cuando has iniciado sesión en Anthropic en una conexión de primera parte, el informe va a Anthropic; en un proveedor de terceros, o sin credenciales de Anthropic, Claude Code escribe el informe en un [archivo local bajo `~/.claude/feedback-bundles/`](/docs/es/data-usage#telemetry-services) que reenvías tú mismo. En la [extensión de VS Code](/docs/es/vs-code#use-the-prompt-box), `/bug` abre el diálogo de comentarios propio de la extensión en su lugar; requiere Claude Code v2.1.229 o posterior. Cuando lo ejecutas mientras Claude está respondiendo, Claude Code abre el diálogo de inmediato. Antes de v2.1.232, Claude Code ponía en cola el comando hasta que el turno terminaba. Alias: `/share`. Antes de v2.1.212, `/bug` y `/share` eran alias de `/feedback` |

70| `/cd <path>` | Mueve esta sesión a un nuevo directorio de trabajo, manteniendo la conversación. Escribe una ruta parcial para ver sugerencias de directorios coincidentes; presiona `Tab` para aceptar una. Las sugerencias requieren Claude Code v2.1.206 o posterior. Para ver qué aplica Claude Code desde el nuevo directorio tan pronto como te muevas, y cómo `/cd` difiere de `/add-dir`, consulta [Mover la sesión a otro directorio](/docs/es/permissions#move-the-session-to-another-directory) |70| `/cd <path>` | Mueve esta sesión a un nuevo directorio de trabajo, manteniendo la conversación. Escribe una ruta parcial para ver sugerencias de directorios coincidentes; presiona `Tab` para aceptar una. Las sugerencias requieren Claude Code v2.1.206 o posterior. Para ver qué aplica Claude Code desde el nuevo directorio tan pronto como te muevas, y cómo `/cd` difiere de `/add-dir`, consulta [Mover la sesión a otro directorio](/docs/es/permissions#move-the-session-to-another-directory) |

71| `/chrome` | Configura los ajustes de [Claude en Chrome](/docs/es/chrome) |71| `/chrome` | Configura los ajustes de [Claude en Chrome](/docs/es/chrome) |

72| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb\|preserved-thinking-migration]` | **[Skill](/docs/es/skills#bundled-skills).** Carga material de referencia de [Claude API](https://platform.claude.com/docs/en/api/overview) y [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) para el idioma de tu proyecto. También se activa automáticamente cuando tu código importa `anthropic` o `@anthropic-ai/sdk`. Para ver qué hace cada subcomando y la versión que requiere, consulta [Trabajar en proyectos de Claude API](/docs/es/skills#work-on-claude-api-projects) |72| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb\|preserved-thinking-migration]` | **[Skill](/docs/es/skills#bundled-skills).** Carga material de referencia de [Claude API](https://platform.claude.com/docs/en/api/overview) y [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) para el lenguaje de tu proyecto. También se activa automáticamente cuando tu código importa `anthropic` o `@anthropic-ai/sdk`. Para ver qué hace cada subcomando y la versión que requiere, consulta [Trabajar en proyectos de Claude API](/docs/es/skills#work-on-claude-api-projects) |

73| `/claude-in-chrome [task]` | **[Skill](/docs/es/skills#bundled-skills).** Haz que Claude realice una tarea en tu navegador, como probar una página, rellenar un formulario o leer registros de consola, a través de [Claude en Chrome](/docs/es/chrome). Disponible cuando la integración de Chrome está habilitada para la sesión, por ejemplo con `claude --chrome`, o cuando Claude Code puede ofrecer [instalar la extensión](/docs/es/chrome#install-the-extension-when-claude-asks) |73| `/claude-in-chrome [task]` | **[Skill](/docs/es/skills#bundled-skills).** Haz que Claude realice una tarea en tu navegador, como probar una página, rellenar un formulario o leer registros de consola, a través de [Claude en Chrome](/docs/es/chrome). Disponible cuando la integración de Chrome está habilitada para la sesión, por ejemplo con `claude --chrome`, o cuando Claude Code puede ofrecer [instalar la extensión](/docs/es/chrome#install-the-extension-when-claude-asks) |

74| `/clear [name]` | Inicia una nueva conversación con contexto vacío. Pasa un nombre para etiquetar la conversación anterior en el selector `/resume`. Para liberar contexto mientras continúas la misma conversación, usa `/compact` en su lugar. Reanuda la conversación anterior con `/resume`, o, en el mismo proceso de Claude Code, restáurala desde [la entrada de sesión anterior del menú de rebobinado](/docs/es/checkpointing#rewind-past-a-cleared-conversation). Alias: `/reset`, `/new` |74| `/clear [name]` | Inicia una nueva conversación con contexto vacío. Pasa un nombre para etiquetar la conversación anterior en el selector `/resume`. Para liberar contexto mientras continúas la misma conversación, usa `/compact` en su lugar. Reanuda la conversación anterior con `/resume`, o, en el mismo proceso de Claude Code, restáurala desde [la entrada de sesión anterior del menú de rebobinado](/docs/es/checkpointing#rewind-past-a-cleared-conversation). Alias: `/reset`, `/new` |

75| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [pr#\|branch\|path]` | **[Skill](/docs/es/skills#bundled-skills).** Revisa el diff actual, o un número de PR, rama o ruta que pases, para detectar lo que sí llega al PR en cuanto a errores de corrección. Dependiendo de tu modelo y nivel de esfuerzo, la revisión también cubre oportunidades de limpieza. Pasa `--fix` para aplicar hallazgos, `--comment` para publicarlos en el PR de GitHub o solicitud de fusión de GitLab, o `ultra` para ejecutar una [revisión en la nube](/docs/es/ultrareview) profunda. Publicar en una solicitud de fusión de GitLab requiere Claude Code v2.1.257 o posterior. Con `ultra` en un destino de PR de `github.com`, pasa `--post` para preseleccionar [publicar los hallazgos terminados en el PR](/docs/es/ultrareview#post-findings-to-the-pull-request) en el diálogo de lanzamiento; `--post` requiere Claude Code v2.1.227 o posterior. Consulta [Revisar un diff localmente](/docs/es/code-review#review-a-diff-locally) para los niveles de esfuerzo, orientación y cómo se relaciona con `/simplify`. Alias: `/review` |75| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [pr#\|branch\|path]` | **[Skill](/docs/es/skills#bundled-skills).** Revisa el diff actual, o un número de PR, rama o ruta que pases, en busca de errores de corrección. Dependiendo de tu modelo y nivel de esfuerzo, la revisión también cubre oportunidades de limpieza. Pasa `--fix` para aplicar hallazgos, `--comment` para publicarlos en el PR de GitHub o el merge request de GitLab, o `ultra` para ejecutar una [revisión en la nube](/docs/es/ultrareview) profunda. Publicar en un merge request de GitLab requiere Claude Code v2.1.257 o posterior. Con `ultra` en un destino de PR de `github.com`, pasa `--post` para preseleccionar [publicar los hallazgos terminados en el PR](/docs/es/ultrareview#post-findings-to-the-pull-request) en el diálogo de lanzamiento; `--post` requiere Claude Code v2.1.227 o posterior. Consulta [Revisar un diff localmente](/docs/es/code-review#review-a-diff-locally) para los niveles de esfuerzo, la selección de destino y cómo se relaciona con `/simplify`. Alias: `/review` |

76| `/color [color\|default]` | Establece el color de la barra de prompts para la sesión actual. Colores disponibles: `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`. Usa `default` para restablecer, o ejecuta sin argumento para elegir un color aleatorio. Cuando [Remote Control](/docs/es/remote-control) está conectado, el color se sincroniza con claude.ai/code. También disponible en modo no interactivo (`-p`); requiere Claude Code v2.1.205 o posterior |76| `/color [color\|default]` | Establece el color de la barra de prompts para la sesión actual. Colores disponibles: `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`. Usa `default` para restablecer, o ejecuta sin argumento para elegir un color aleatorio. Cuando [Remote Control](/docs/es/remote-control) está conectado, el color se sincroniza con claude.ai/code. También disponible en modo no interactivo (`-p`); requiere Claude Code v2.1.205 o posterior |

77| `/compact [instructions]` | Libera contexto resumiendo la conversación hasta ahora. Opcionalmente pasa instrucciones de enfoque para el resumen. Consulta [cómo la compactación maneja reglas, skills y archivos de memoria](/docs/es/context-window#what-survives-compaction) |77| `/compact [instructions]` | Libera contexto resumiendo la conversación hasta ahora. Opcionalmente pasa instrucciones de enfoque para el resumen. Consulta [cómo la compactación maneja reglas, skills y archivos de memoria](/docs/es/context-window#what-survives-compaction) |

78| `/config [key=value ...]` | Abre la interfaz de [Configuración](/docs/es/settings) para ajustar tema, modelo, [estilo de salida](/docs/es/output-styles) y otras preferencias. Pasa uno o más pares `key=value` para establecer una configuración directamente sin abrir la interfaz, por ejemplo `/config thinking=false`, `/config theme=dark`, o `/config model=sonnet`. El formulario `key=value` también funciona en modo no interactivo (`-p`) y desde la aplicación móvil de Claude a través de [Remote Control](/docs/es/remote-control). El formulario `key=value` no puede activar una configuración que necesite tu confirmación en el panel, como [`autoContinueAtUsageLimit`](/docs/es/interactive-mode#turn-automatic-continue-off), aunque puede desactivarla. Ejecuta `/config --help` para enumerar las claves que acepta. Alias: `/settings` |78| `/config [key=value ...]` | Abre la interfaz de [Configuración](/docs/es/settings) para ajustar tema, modelo, [estilo de salida](/docs/es/output-styles) y otras preferencias. Pasa uno o más pares `key=value` para establecer un ajuste directamente sin abrir la interfaz, por ejemplo `/config thinking=false`, `/config theme=dark`, o `/config model=sonnet`. La forma `key=value` también funciona en modo no interactivo (`-p`) y desde la aplicación móvil de Claude a través de [Remote Control](/docs/es/remote-control). La forma `key=value` no puede activar un ajuste que necesite tu confirmación en el panel, como [`autoContinueAtUsageLimit`](/docs/es/interactive-mode#turn-automatic-continue-off), aunque puede desactivarlo. Ejecuta `/config --help` para enumerar las claves que acepta. Alias: `/settings` |

79| `/context [all]` | Visualiza el uso actual del contexto como una cuadrícula de colores. Muestra sugerencias de optimización para herramientas pesadas en contexto, inflación de memoria y advertencias de capacidad. Cuando la conversación excede la ventana de contexto, la salida incluye una [advertencia](/docs/es/errors#context-exceeds-the-token-limit) que muestra cuánto excedes el límite y qué comando libera espacio. En [modo de pantalla completa](/docs/es/fullscreen), `/context` colapsa el desglose por elemento para mantener la cuadrícula visible. Pasa `all` para expandirlo |79| `/context [all]` | Visualiza el uso actual del contexto como una cuadrícula de colores. Muestra sugerencias de optimización para herramientas pesadas en contexto, inflación de memoria y advertencias de capacidad. Cuando la conversación excede la ventana de contexto, la salida incluye una [advertencia](/docs/es/errors#context-exceeds-the-token-limit) que muestra cuánto excedes el límite y qué comando libera espacio. En [modo de pantalla completa](/docs/es/fullscreen), `/context` colapsa el desglose por elemento para mantener la cuadrícula visible. Pasa `all` para expandirlo |

80| `/copy [N]` | Copia la última respuesta del asistente al portapapeles. Pasa un número `N` para copiar la respuesta N-ésima más reciente: `/copy 2` copia la segunda más reciente. Cuando hay bloques de código presentes, muestra un selector interactivo para seleccionar bloques individuales o la respuesta completa. Presiona `w` en el selector para escribir la selección en un archivo en lugar del portapapeles, lo cual es útil sobre SSH |80| `/copy [N]` | Copia la última respuesta del asistente al portapapeles. Pasa un número `N` para copiar la respuesta N-ésima más reciente: `/copy 2` copia la penúltima. Cuando hay bloques de código presentes, muestra un selector interactivo para seleccionar bloques individuales o la respuesta completa. Presiona `w` en el selector para escribir la selección en un archivo en lugar del portapapeles, lo cual es útil sobre SSH |

81| `/cost` | Alias para `/usage` |81| `/cost` | Alias para `/usage` |

82| `/dataviz [request]` | **[Skill](/docs/es/skills#bundled-skills).** Orientación de diseño para gráficos, gráficos y paneles. Claude elige la forma de gráfico para los datos, asigna color por rol, valida la paleta para seguridad de daltonismo y contraste con un script agrupado, y aplica reglas de marca, interacción y accesibilidad. Usa una paleta de marcador neutral de marca que reemplazas con la tuya. Requiere Claude Code v2.1.198 o posterior |82| `/dataviz [request]` | **[Skill](/docs/es/skills#bundled-skills).** Orientación de diseño para gráficos, diagramas y paneles. Claude elige la forma de gráfico para los datos, asigna color por rol, valida la paleta para seguridad ante daltonismo y contraste con un script incluido, y aplica reglas de marcas, interacción y accesibilidad. Usa una paleta de marcador de posición neutral respecto a la marca que reemplazas con la tuya. Requiere Claude Code v2.1.198 o posterior |

83| `/debug [description]` | **[Skill](/docs/es/skills#bundled-skills).** Habilita el registro de depuración para la sesión actual y soluciona problemas leyendo el registro de depuración de la sesión. El registro de depuración está desactivado de forma predeterminada a menos que hayas iniciado con `claude --debug`, por lo que ejecutar `/debug` a mitad de sesión comienza a capturar registros desde ese punto en adelante. Opcionalmente describe el problema para enfocar el análisis |83| `/debug [description]` | **[Skill](/docs/es/skills#bundled-skills).** Habilita el registro de depuración para la sesión actual y soluciona problemas leyendo el registro de depuración de la sesión. El registro de depuración está desactivado de forma predeterminada a menos que hayas iniciado con `claude --debug`, por lo que ejecutar `/debug` a mitad de sesión comienza a capturar registros desde ese punto en adelante. Opcionalmente describe el problema para enfocar el análisis |

84| `/deep-research <question>` | **[Workflow](/docs/es/workflows#bundled-workflows).** Distribuye búsquedas web en una pregunta, obtiene y verifica cruzadamente fuentes, y sintetiza un informe citado |84| `/deep-research <question>` | **[Workflow](/docs/es/workflows#bundled-workflows).** Distribuye búsquedas web en una pregunta, obtiene y verifica cruzadamente fuentes, y sintetiza un informe citado |

85| `/design [brief]` | **[Skill](/docs/es/skills#bundled-skills).** Redacta maquetas de UI, flujos de pantalla, páginas de destino o carteles como artículos en un lienzo, publicados como un [artefacto](/docs/es/artifacts#draft-a-design-canvas) de Design, por ejemplo `/design a settings screen for a mobile banking app`. Editas los artículos en un navegador de escritorio, y tus ediciones se guardan automáticamente. Puedes exportar cada artículo como PNG o PDF. Requiere Claude Code v2.1.265 o posterior, una sesión donde [los artefactos estén disponibles](/docs/es/artifacts#availability), y una cuenta donde la [plantilla de Design esté disponible](/docs/es/artifacts#start-from-a-slides-design-or-docs-template); si tu organización ha desactivado esa plantilla, `/design` no redacta diseños. Disponible en la API de Anthropic. En Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry y Claude Platform en AWS, los artefactos no están disponibles, por lo que el comando no está disponible allí |85| `/design [brief]` | **[Skill](/docs/es/skills#bundled-skills).** Redacta maquetas de UI, flujos de pantalla, páginas de destino o carteles como mesas de trabajo en un lienzo, publicados como un [artefacto](/docs/es/artifacts#draft-a-design-canvas) de Claude Design, por ejemplo `/design a settings screen for a mobile banking app`. Editas las mesas de trabajo en un navegador de escritorio, y tus ediciones se guardan automáticamente. Puedes exportar cada mesa de trabajo como PNG o PDF. Requiere Claude Code v2.1.265 o posterior, una sesión donde [los artefactos estén disponibles](/docs/es/artifacts#availability), y una cuenta donde la [plantilla de Design esté disponible](/docs/es/artifacts#start-from-a-slides-design-or-docs-template); si tu organización ha desactivado esa plantilla, `/design` no redacta diseños. Disponible en la API de Anthropic. En Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry y Claude Platform en AWS, los artefactos no están disponibles, por lo que el comando no está disponible allí |

86| `/design-login` | Autoriza el acceso al sistema de diseño para `/design-sync` con tu cuenta de claude.ai |86| `/design-login` | Autoriza el acceso al sistema de diseño para `/design-sync` con tu cuenta de claude.ai |

87| `/design-sync [hint]` | **[Skill](/docs/es/skills#bundled-skills).** Convierte el sistema de diseño React de tu repositorio y cárgalo en [Claude Design](https://claude.ai/design), para que los diseños que produce usen tus componentes reales. Opcionalmente nombra el sistema de diseño, por ejemplo `/design-sync Acme DS`. Una sincronización por primera vez verifica cada componente y puede tomar algunas horas en un repositorio grande. Disponible en la API de Anthropic. Necesita claude.ai, que la CLI no contacta en Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, o Claude Platform en AWS, o a través de una [puerta de enlace de aplicaciones de Claude](/docs/es/claude-apps-gateway#availability-and-limitations), por lo que el comando no está disponible allí |87| `/design-sync [hint]` | **[Skill](/docs/es/skills#bundled-skills).** Convierte el sistema de diseño React de tu repositorio y cárgalo en [Claude Design](https://claude.ai/design), para que los diseños que produce usen tus componentes reales. Opcionalmente nombra el sistema de diseño, por ejemplo `/design-sync Acme DS`. Una sincronización por primera vez verifica cada componente y puede tomar algunas horas en un repositorio grande. Disponible en la API de Anthropic. Necesita claude.ai, que la CLI no contacta en Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, o Claude Platform en AWS, o a través de un [gateway de aplicaciones de Claude](/docs/es/claude-apps-gateway#availability-and-limitations), por lo que el comando no está disponible allí |

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

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

90| `/doctor [prompt-audit [path]]` | **[Skill](/docs/es/skills#bundled-skills).** Ejecuta una verificación de configuración que diagnostica problemas y puede repararlos. Verifica la salud de la instalación, incluidas instalaciones duplicadas o sobrantes, problemas de `PATH` y archivos de configuración no analizables. Encuentra skills, servidores MCP y plugins no utilizados versus su costo de contexto, marca [hooks](/docs/es/hooks) lentos, y verifica si hay una versión más nueva en tu [canal de lanzamiento](/docs/es/setup#configure-release-channel). Deduplica archivos `CLAUDE.md` locales contra los registrados, recorta archivos [`CLAUDE.md`](/docs/es/memory#my-claude-md-is-too-large) registrados cortando contenido que Claude podría derivar de la base de código, y migra la orientación siempre cargada que permanece en [skills](/docs/es/skills) y archivos `CLAUDE.md` anidados que se cargan bajo demanda. También ofrece hacer que [auto mode](/docs/es/permissions#permission-modes) sea tu predeterminado y [pre-aprobar](/docs/es/permissions) comandos de solo lectura frecuentemente denegados. Reporta hallazgos primero y pide confirmación antes de cambiar nada. Desde la terminal, `claude doctor` imprime diagnósticos de instalación de solo lectura sin iniciar una sesión. Alias: `/checkup`. Ejecuta `/doctor prompt-audit` para que Claude [audite tus archivos `CLAUDE.md`, skills y otra configuración](/docs/es/memory#audit-your-instruction-files) para instrucciones obsoletas o conflictivas en lugar de ejecutar la verificación. El subcomando `prompt-audit` requiere Claude Code v2.1.283 o posterior. La verificación de recorte de `CLAUDE.md` requiere Claude Code v2.1.206 o posterior. Antes de v2.1.205, `/doctor` abría una pantalla de diagnósticos de solo lectura y presionar `f` enviaba el informe a Claude |90| `/doctor [prompt-audit [path]]` | **[Skill](/docs/es/skills#bundled-skills).** Ejecuta una verificación de configuración que diagnostica problemas y puede repararlos. Verifica la salud de la instalación, incluidas instalaciones duplicadas o sobrantes, problemas de `PATH` y archivos de configuración no analizables. Encuentra skills, servidores MCP y plugins no utilizados frente a su costo de contexto, marca [hooks](/docs/es/hooks) lentos, y verifica si hay una versión más nueva en tu [canal de lanzamiento](/docs/es/setup#configure-release-channel). Deduplica archivos `CLAUDE.md` locales contra los registrados en el repositorio, recorta archivos [`CLAUDE.md`](/docs/es/memory#my-claude-md-is-too-large) registrados eliminando contenido que Claude podría derivar de la base de código, y migra la orientación siempre cargada que permanece a [skills](/docs/es/skills) y archivos `CLAUDE.md` anidados que se cargan bajo demanda. También ofrece hacer que el [modo automático](/docs/es/permissions#permission-modes) sea tu predeterminado y [preaprobar](/docs/es/permissions) comandos de solo lectura frecuentemente denegados. Reporta hallazgos primero y pide confirmación antes de cambiar nada. Desde la terminal, `claude doctor` imprime diagnósticos de instalación de solo lectura sin iniciar una sesión. Alias: `/checkup`. Ejecuta `/doctor prompt-audit` para que Claude [audite tus archivos `CLAUDE.md`, skills y otra configuración](/docs/es/memory#audit-your-instruction-files) en busca de instrucciones obsoletas o conflictivas en lugar de ejecutar la verificación. El subcomando `prompt-audit` requiere Claude Code v2.1.283 o posterior. La verificación de recorte de `CLAUDE.md` requiere Claude Code v2.1.206 o posterior. Antes de v2.1.205, `/doctor` abría una pantalla de diagnósticos de solo lectura y presionar `f` enviaba el informe a Claude |

91| `/effort [level\|auto\|status\|ultracode [on\|off]]` | Establece el [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level): `low` a `xhigh`, `max`, o `auto`; `status` lo imprime. `ultracode` u `ultracode on` activa [ultracode](/docs/es/workflows#let-claude-decide-with-ultracode) para la sesión en el nivel actual, y `ultracode off` lo desactiva; la clave [`ultracode`](/docs/es/settings-reference#ultracode) persiste. `max` es solo de 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é](/docs/es/prompt-caching#changing-effort-level), si Claude Code muestra una, Claude Code aplica el nuevo nivel a la siguiente solicitud en ese turno. Antes de v2.1.242, Claude Code decidió desde una bandera de característica que obtuvo de Anthropic si ejecutar el comando a mitad de turno o ponerlo en cola hasta que el turno terminara, y siempre lo ponía en cola en una sesión que no [obtiene banderas de característica](/docs/es/env-vars#features-that-need-feature-flag-fetching), como en un [proveedor de terceros](/docs/es/third-party-integrations). Funciona en `-p` |91| `/effort [level\|auto\|status\|ultracode [on\|off]]` | Establece el [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level): `low` a `xhigh`, `max`, o `auto`; `status` lo imprime. `ultracode` u `ultracode on` activa [ultracode](/docs/es/workflows#let-claude-decide-with-ultracode) para la sesión en el nivel actual, y `ultracode off` lo desactiva; la clave [`ultracode`](/docs/es/settings-reference#ultracode) persiste. `max` es solo de 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é](/docs/es/prompt-caching#changing-effort-level), si Claude Code muestra una, Claude Code aplica el nuevo nivel a la siguiente solicitud en ese turno. Antes de v2.1.242, Claude Code decidía a partir de una bandera de característica que obtenía de Anthropic si ejecutar el comando a mitad de turno o ponerlo en cola hasta que el turno terminara, y siempre lo ponía en cola en una sesión que no [obtiene banderas de característica](/docs/es/env-vars#features-that-need-feature-flag-fetching), como en un [proveedor de terceros](/docs/es/third-party-integrations). Funciona en `-p` |

92| `/exit` | Sale de la CLI. En una [sesión de fondo](/docs/es/agent-view#attach-to-a-session) adjunta, esto se desvincula y la sesión sigue ejecutándose. Alias: `/quit` |92| `/exit` | Sale de la CLI. En una [sesión en segundo plano](/docs/es/agent-view#attach-to-a-session) adjunta, esto se desvincula y la sesión sigue ejecutándose. Alias: `/quit` |

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

94| `/fast [on\|off]` | Alterna [modo rápido](/docs/es/fast-mode) activado o desactivado. Ejecútalo mientras Claude está respondiendo y Claude Code alterna el modo rápido sin esperar a que el turno termine, aunque el turno en ejecución termina a su velocidad original. Antes de v2.1.242, Claude Code decidió desde una bandera de característica que obtuvo de Anthropic si ejecutar el comando a mitad de turno o ponerlo en cola hasta que el turno terminara, y siempre lo ponía en cola en una sesión que no [obtiene banderas de característica](/docs/es/env-vars#features-that-need-feature-flag-fetching). La disponibilidad en modo no interactivo con `-p` es limitada; consulta [Alternar modo rápido](/docs/es/fast-mode#toggle-fast-mode). Requiere Claude Code v2.1.205 o posterior |94| `/fast [on\|off]` | Activa o desactiva el [modo rápido](/docs/es/fast-mode). Ejecútalo mientras Claude está respondiendo y Claude Code alterna el modo rápido sin esperar a que el turno termine, aunque el turno en ejecución termina a su velocidad original. Antes de v2.1.242, Claude Code decidía a partir de una bandera de característica que obtenía de Anthropic si ejecutar el comando a mitad de turno o ponerlo en cola hasta que el turno terminara, y siempre lo ponía en cola en una sesión que no [obtiene banderas de característica](/docs/es/env-vars#features-that-need-feature-flag-fetching). La disponibilidad en modo no interactivo con `-p` es limitada; consulta [Alternar modo rápido](/docs/es/fast-mode#toggle-fast-mode). Requiere Claude Code v2.1.205 o posterior |

95| `/feedback [report]` | Envía comentarios de producto sobre Claude Code. Abre el mismo diálogo que [`/bug`](#all-commands), con el mismo paso de consentimiento, reglas de envío y comportamiento a mitad de turno. En sesiones con [comentarios redactados por Claude](/docs/es/tools-reference#sendfeedback-tool-behavior), `/feedback` sin argumento abre la cola de borradores en su lugar, donde revisas, editas, envías o descartas los borradores que Claude puso en cola; la cola incluye una opción para escribir un nuevo informe en el diálogo. Con un argumento, y para `/bug` siempre, el diálogo se abre directamente |95| `/feedback [report]` | Envía comentarios de producto sobre Claude Code. Abre el mismo diálogo que [`/bug`](#all-commands), con el mismo paso de consentimiento, reglas de envío y comportamiento a mitad de turno. En sesiones con [comentarios redactados por Claude](/docs/es/tools-reference#sendfeedback-tool-behavior), `/feedback` sin argumento abre la cola de borradores en su lugar, donde revisas, editas, envías o descartas los borradores que Claude puso en cola; la cola incluye una opción para escribir un nuevo informe en el diálogo. Con un argumento, y para `/bug` siempre, el diálogo se abre directamente |

96| `/fewer-permission-prompts` | **[Skill](/docs/es/skills#bundled-skills).** Escanea tus transcripciones para llamadas comunes de herramientas Bash y MCP de solo lectura, luego agrega una lista de permitidos priorizada al proyecto `.claude/settings.json` para reducir solicitudes de permiso |96| `/fewer-permission-prompts` | **[Skill](/docs/es/skills#bundled-skills).** Escanea tus transcripciones en busca de llamadas comunes a herramientas Bash y MCP de solo lectura, luego agrega una lista de permitidos priorizada al `.claude/settings.json` del proyecto para reducir las solicitudes de permiso |

97| `/focus` | Alterna la vista de enfoque, que muestra solo tu último prompt, un resumen de llamada de herramienta de una línea con estadísticas de diff de edición, y la respuesta final. El resumen de llamada de herramienta también cuenta los subagentes lanzados en el turno y colapsa notificaciones de tareas de fondo completadas en un solo conteo. La selección persiste entre sesiones; establece [`viewMode`](/docs/es/settings-reference#viewmode) en la configuración para anularlo. Solo disponible en [renderizado de pantalla completa](/docs/es/fullscreen). Desde un cliente de [Remote Control](/docs/es/remote-control), ejecuta `/focus [on\|off]` para activar o desactivar la vista de enfoque para la sesión actual solo, sin cambiar tu selección guardada; esto requiere Claude Code v2.1.281 o posterior. La [extensión de VS Code](/docs/es/vs-code#use-the-prompt-box) ofrece su propia vista de enfoque como un comando de menú alternado, almacenado como una configuración de extensión, independiente de `viewMode` |97| `/focus` | Alterna la vista de enfoque, que muestra 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. El resumen de llamadas a herramientas también cuenta los subagentes lanzados en el turno y colapsa las notificaciones de tareas en segundo plano completadas en un solo conteo. La selección persiste entre sesiones; establece [`viewMode`](/docs/es/settings-reference#viewmode) en la configuración para sobrescribirla. Solo disponible en [renderizado de pantalla completa](/docs/es/fullscreen). Desde un cliente de [Remote Control](/docs/es/remote-control), ejecuta `/focus [on\|off]` para activar o desactivar la vista de enfoque solo para la sesión actual, sin cambiar tu selección guardada; esto requiere Claude Code v2.1.281 o posterior. La [extensión de VS Code](/docs/es/vs-code#use-the-prompt-box) ofrece su propia vista de enfoque como un interruptor del menú de comandos, almacenado como un ajuste de la extensión, independiente de `viewMode` |

98| `/fork [prompt]` | [Copia la conversación actual](/docs/es/agent-view#copy-the-session-with-%2Ffork) en una nueva sesión de fondo y sigue trabajando aquí. Pasa un prompt y la copia comienza a trabajar en él inmediatamente; sin uno espera en la vista de agente para su primer prompt. Excepto cuando la copia [edita en su lugar](/docs/es/agent-view#how-file-edits-are-isolated), Claude Code le instruye que cree su propio worktree antes de hacer cambios de código; la instrucción de aislamiento requiere Claude Code v2.1.221 o posterior. Para entregar una tarea secundaria a un subagente cuyo resultado vuelve a esta conversación, usa `/subtask`; para cambiar a una copia tú mismo, usa `/branch`. Requiere Claude Code v2.1.212 o posterior; en v2.1.161 a través de v2.1.211, y siempre que [la vista de agente esté desactivada](/docs/es/agent-view#turn-off-agent-view), `/fork` inicia un [subagente bifurcado](/docs/es/sub-agents#fork-the-current-conversation) en su lugar |98| `/fork [prompt]` | [Copia la conversación actual](/docs/es/agent-view#copy-the-session-with-%2Ffork) en una nueva sesión en segundo plano y sigue trabajando aquí. Pasa un prompt y la copia comienza a trabajar en él inmediatamente; sin uno espera en la vista de agentes su primer prompt. Excepto cuando la copia [edita en el mismo lugar](/docs/es/agent-view#how-file-edits-are-isolated), Claude Code le indica que cree su propio worktree antes de hacer cambios de código; la instrucción de aislamiento requiere Claude Code v2.1.221 o posterior. Para entregar una tarea secundaria a un subagente cuyo resultado vuelve a esta conversación, usa `/subtask`; para cambiar a una copia tú mismo, usa `/branch`. Requiere Claude Code v2.1.212 o posterior; de v2.1.161 a v2.1.211, y siempre que [la vista de agentes esté desactivada](/docs/es/agent-view#turn-off-agent-view), `/fork` inicia un [subagente bifurcado](/docs/es/sub-agents#fork-the-current-conversation) en su lugar |

99| `/goal [condition\|clear]` | Establece un [objetivo](/docs/es/goal): Claude sigue trabajando entre turnos hasta que se cumpla la condición o el objetivo [se borre por otra razón](/docs/es/goal#how-evaluation-works). Sin argumento, muestra el objetivo actual o más recientemente logrado. `clear`, `stop`, `off`, `reset`, `none`, o `cancel` elimina un objetivo activo temprano |99| `/goal [condition\|clear]` | Establece un [objetivo](/docs/es/goal): Claude sigue trabajando entre turnos hasta que se cumpla la condición o el objetivo [se borre por otra razón](/docs/es/goal#how-evaluation-works). Sin argumento, muestra el objetivo actual o el logrado más recientemente. `clear`, `stop`, `off`, `reset`, `none`, o `cancel` elimina un objetivo activo antes de tiempo |

100| `/heapdump` | Escribe una instantánea de montón de JavaScript y un desglose de memoria en `~/Desktop`, o tu directorio de inicio en Linux sin una carpeta de Escritorio, para diagnosticar uso alto de memoria. Adjunta solo el archivo `-diagnostics.json` al reportar un problema de memoria; el `.heapsnapshot` contiene tu conversación completa y credenciales, así que no lo compartas. [Oculto del menú de comandos](#how-the-command-menu-matches-what-you-type); escríbelo en su totalidad. Consulta [qué hacer con la salida](/docs/es/troubleshooting#high-cpu-or-memory-usage) |100| `/heapdump` | Escribe una instantánea del heap de JavaScript y un desglose de memoria en `~/Desktop`, o en tu directorio home en Linux sin una carpeta Desktop, para diagnosticar un uso alto de memoria. Adjunta solo el archivo `-diagnostics.json` al reportar un problema de memoria; el `.heapsnapshot` contiene tu conversación completa y tus credenciales, así que no lo compartas. [Oculto del menú de comandos](#how-the-command-menu-matches-what-you-type); escríbelo completo. Consulta [qué hacer con la salida](/docs/es/troubleshooting#high-cpu-or-memory-usage) |

101| `/help` | Muestra ayuda y comandos disponibles |101| `/help` | Muestra ayuda y comandos disponibles |

102| `/hooks` | Ver configuraciones de [hook](/docs/es/hooks) para eventos de herramientas |102| `/hooks` | Ve las configuraciones de [hooks](/docs/es/hooks#the-%2Fhooks-menu) |

103| `/ide` | Gestiona integraciones de IDE y muestra estado |103| `/ide` | Gestiona integraciones de IDE y muestra su estado |

104| `/import [codex\|gemini\|cursor] [--dry-run] [--yes]` | Trae configuración de OpenAI Codex, Google Gemini CLI, o Cursor en tu máquina a Claude Code, incluidos archivos de instrucciones, servidores MCP, comandos, subagentes y skills. En [modo no interactivo](/docs/es/headless) con `-p`, `/import` enumera lo que encontró y te da el comando que confirma la importación. Agrega `--dry-run` para obtener una vista previa sin escribir nada, o `--yes` para omitir el selector interactivo. No disponible en Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, o Claude Platform en AWS, o a través de una [puerta de enlace de aplicaciones de Claude](/docs/es/claude-apps-gateway#availability-and-limitations). También no disponible cuando desactivas [obtención de banderas de característica](/docs/es/env-vars#features-that-need-feature-flag-fetching). Requiere Claude Code v2.1.213 o posterior. Importar desde Cursor requiere v2.1.265 o posterior |104| `/import [codex\|gemini\|cursor] [--dry-run] [--yes]` | Trae a Claude Code la configuración de OpenAI Codex, Google Gemini CLI o Cursor en tu máquina, incluidos archivos de instrucciones, servidores MCP, comandos, subagentes y skills. En [modo no interactivo](/docs/es/headless) con `-p`, `/import` enumera lo que encontró y te da el comando que confirma la importación. Agrega `--dry-run` para obtener una vista previa sin escribir nada, o `--yes` para omitir el selector interactivo. No disponible en Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, o Claude Platform en AWS, o a través de un [gateway de aplicaciones de Claude](/docs/es/claude-apps-gateway#availability-and-limitations). Tampoco está disponible cuando desactivas la [obtención de banderas de característica](/docs/es/env-vars#features-that-need-feature-flag-fetching). Requiere Claude Code v2.1.213 o posterior. Importar desde Cursor requiere v2.1.265 o posterior |

105| `/init` | Inicializa el proyecto con una guía `CLAUDE.md`. Establece `CLAUDE_CODE_NEW_INIT=1` para un flujo interactivo que también te guía a través de skills, hooks y archivos de memoria personal. Si `/init` encuentra configuración de OpenAI Codex o Google Gemini CLI, ofrece llevarla con `/import` |105| `/init` | Inicializa el proyecto con una guía `CLAUDE.md`. Establece `CLAUDE_CODE_NEW_INIT=1` para un flujo interactivo que también te guía a través de skills, hooks y archivos de memoria personal. Si `/init` encuentra configuración de OpenAI Codex o Google Gemini CLI, ofrece trasladarla con `/import` |

106| `/insights` | Genera un informe HTML que analiza tus sesiones recientes en esta máquina: en qué proyectos trabajas, cómo usas Claude Code, dónde salen mal las cosas y características para probar. No disponible en [sesiones en la nube](/docs/es/claude-code-on-the-web). Consulta [Analizar tus patrones de uso](/docs/es/costs#analyze-your-usage-patterns) para la ubicación del informe, retención y costo |106| `/insights` | Genera un informe HTML que analiza tus sesiones recientes en esta máquina: en qué proyectos trabajas, cómo usas Claude Code, dónde salen mal las cosas y características para probar. No disponible en [sesiones en la nube](/docs/es/claude-code-on-the-web). Consulta [Analizar tus patrones de uso](/docs/es/costs#analyze-your-usage-patterns) para la ubicación del informe, retención y costo |

107| `/install-github-app` | Instala la aplicación Claude GitHub para un repositorio, con un paso opcional para configurar flujos de trabajo de [GitHub Actions](/docs/es/github-actions) y secretos. Te guía a través de seleccionar un repositorio y configurar la integración. Funciona solo con repositorios de github.com. Cuando el repositorio remoto git está en gitlab.com o bitbucket.org, el comando imprime un aviso y sale en lugar de iniciar la configuración. Para ejecutar Claude Code desde tuberías de GitLab, consulta [GitLab CI/CD](/docs/es/gitlab-ci-cd) |107| `/install-github-app` | Instala la aplicación Claude GitHub para un repositorio, con un paso opcional para configurar workflows y secretos de [GitHub Actions](/docs/es/github-actions). Te guía a través de seleccionar un repositorio y configurar la integración. Funciona solo con repositorios de github.com. Cuando el remoto git de tu repositorio está en gitlab.com o bitbucket.org, el comando imprime un aviso y sale en lugar de iniciar la configuración. Para ejecutar Claude Code desde pipelines de GitLab, consulta [GitLab CI/CD](/docs/es/gitlab-ci-cd) |

108| `/install-slack-app` | Instala la aplicación Claude Slack. Abre un navegador para completar el flujo de OAuth |108| `/install-slack-app` | Instala la aplicación Claude Slack. Abre un navegador para completar el flujo de OAuth |

109| `/keybindings` | Abre tu archivo de [atajos de teclado](/docs/es/keybindings) |109| `/keybindings` | Abre tu archivo de [atajos de teclado](/docs/es/keybindings) |

110| `/list-agents` | Enumera los subagentes, compañeros de [equipo de agentes](/docs/es/agent-teams), y otras sesiones de Claude Code que Claude puede contactar, con el nombre a usar para cada uno. Consulta [mensajería entre sesiones](/docs/es/cross-session-messaging). También disponible como `/peers`. Requiere Claude Code v2.1.224 o posterior; versiones anteriores reportan `Unknown command: /list-agents`. Las filas de compañeros y la primera línea que muestra el nombre de esta sesión requieren v2.1.239 o posterior. Disponible solo en sesiones donde [la mensajería entre sesiones está habilitada](/docs/es/cross-session-messaging#availability) |110| `/list-agents` | Enumera los subagentes, compañeros de [equipo de agentes](/docs/es/agent-teams), y otras sesiones de Claude Code a las que Claude puede enviar mensajes, con el nombre a usar para cada uno. Consulta [mensajería entre sesiones](/docs/es/cross-session-messaging). También disponible como `/peers`. Requiere Claude Code v2.1.224 o posterior; las versiones anteriores reportan `Unknown command: /list-agents`. Las filas de compañeros y la primera línea que muestra el nombre propio de esta sesión requieren v2.1.239 o posterior. Disponible solo en sesiones donde [la mensajería entre sesiones está habilitada](/docs/es/cross-session-messaging#availability) |

111| `/login` | Inicia sesión en tu cuenta de Anthropic |111| `/login` | Inicia sesión en tu cuenta de Anthropic |

112| `/logout` | Cierra sesión en tu cuenta de Anthropic |112| `/logout` | Cierra sesión en tu cuenta de Anthropic |

113| `/loop [interval] [prompt]` | **[Skill](/docs/es/skills#bundled-skills).** Ejecuta un prompt repetidamente mientras la sesión permanece abierta. Omite el intervalo y Claude [se autoajusta entre iteraciones](/docs/es/scheduled-tasks#let-claude-choose-the-interval). Omite el prompt y Claude ejecuta el [prompt de mantenimiento integrado](/docs/es/scheduled-tasks#run-the-built-in-maintenance-prompt) o tu [`loop.md`](/docs/es/scheduled-tasks#customize-the-default-prompt-with-loop-md). Ejemplo: `/loop 5m check if the deploy finished`. Consulta [Ejecutar prompts en un horario](/docs/es/scheduled-tasks). Alias: `/proactive` |113| `/loop [interval] [prompt]` | **[Skill](/docs/es/skills#bundled-skills).** Ejecuta un prompt repetidamente mientras la sesión permanece abierta. Omite el intervalo y Claude [marca su propio ritmo entre iteraciones](/docs/es/scheduled-tasks#let-claude-choose-the-interval). Omite el prompt y Claude ejecuta el [prompt de mantenimiento integrado](/docs/es/scheduled-tasks#run-the-built-in-maintenance-prompt) o tu [`loop.md`](/docs/es/scheduled-tasks#customize-the-default-prompt-with-loop-md). Ejemplo: `/loop 5m check if the deploy finished`. Consulta [Ejecutar prompts de forma programada](/docs/es/scheduled-tasks). Alias: `/proactive` |

114| `/mcp [reconnect <server>\|enable\|disable [<server>\|all]]` | Gestiona conexiones de servidores MCP y autenticación OAuth. Ejecuta sin argumento para abrir la lista interactiva, pasa `reconnect <server>` para reconectar un servidor desconectado, o pasa `enable`/`disable` con un nombre de servidor o `all` para cambiar el estado de conexión sin abrir el diálogo. También disponible en modo no interactivo (`-p`), donde ejecutarlo sin argumento imprime un resumen de texto del estado del servidor en lugar de abrir la lista; requiere Claude Code v2.1.205 o posterior |114| `/mcp [reconnect <server>\|enable\|disable [<server>\|all]]` | Gestiona conexiones de servidores MCP y autenticación OAuth. Ejecuta sin argumento para abrir la lista interactiva, pasa `reconnect <server>` para reconectar un servidor desconectado, o pasa `enable`/`disable` con un nombre de servidor o `all` para cambiar el estado de conexión sin abrir el diálogo. También disponible en modo no interactivo (`-p`), donde ejecutarlo sin argumento imprime un resumen de texto del estado de los servidores en lugar de abrir la lista; requiere Claude Code v2.1.205 o posterior |

115| `/memory` | Edita archivos `CLAUDE.md`, habilita o deshabilita [memoria automática](/docs/es/memory#auto-memory), y ve entradas de memoria automática |115| `/memory` | Edita archivos `CLAUDE.md`, habilita o deshabilita la [memoria automática](/docs/es/memory#auto-memory), y ve las entradas de memoria automática |

116| `/mobile` | Muestra código QR para descargar la aplicación móvil de Claude. Alias: `/ios`, `/android` |116| `/mobile` | Muestra un código QR para descargar la aplicación móvil de Claude. Alias: `/ios`, `/android` |

117| `/model [model]` | Cambia el modelo de IA y guárdalo como tu predeterminado para nuevas sesiones. Para modelos que lo admiten, usa las flechas izquierda/derecha para [ajustar el nivel de esfuerzo](/docs/es/model-config#adjust-effort-level). Sin argumento, abre un selector; presiona `s` en una fila para cambiar solo para la sesión actual. Consulta [cuándo Claude Code te pide que confirmes el cambio](/docs/es/prompt-caching#switching-models). Una vez que confirmes el cambio, si Claude Code lo pide, Claude Code aplica el cambio sin esperar a que la respuesta actual termine. Antes de v2.1.242, Claude Code decidió desde una bandera de característica que obtuvo de Anthropic si ejecutar el comando a mitad de turno o ponerlo en cola hasta que el turno terminara, y siempre lo ponía en cola en una sesión que no [obtiene banderas de característica](/docs/es/env-vars#features-that-need-feature-flag-fetching), como en un [proveedor de terceros](/docs/es/third-party-integrations). También disponible en modo no interactivo (`-p`) con un argumento de modelo en lugar del selector, donde se aplica solo a la sesión actual y no se guarda como tu predeterminado; requiere Claude Code v2.1.205 o posterior |117| `/model [model]` | Cambia el modelo de IA y guárdalo como tu predeterminado para nuevas sesiones. Para modelos que lo admiten, usa las flechas izquierda/derecha para [ajustar el nivel de esfuerzo](/docs/es/model-config#adjust-effort-level). Sin argumento, abre un selector; presiona `s` en una fila para cambiar solo para la sesión actual. Consulta [cuándo Claude Code te pide que confirmes el cambio](/docs/es/prompt-caching#switching-models). Una vez que confirmes el cambio, si Claude Code lo pide, Claude Code aplica el cambio sin esperar a que la respuesta actual termine. Antes de v2.1.242, Claude Code decidía a partir de una bandera de característica que obtenía de Anthropic si ejecutar el comando a mitad de turno o ponerlo en cola hasta que el turno terminara, y siempre lo ponía en cola en una sesión que no [obtiene banderas de característica](/docs/es/env-vars#features-that-need-feature-flag-fetching), como en un [proveedor de terceros](/docs/es/third-party-integrations). También disponible en modo no interactivo (`-p`) con un argumento de modelo en lugar del selector, donde se aplica solo a la sesión actual y no se guarda como tu predeterminado; requiere Claude Code v2.1.205 o posterior |

118| `/output-style [style]` | Lista [estilos de salida](/docs/es/output-styles) o cambia a uno, por ejemplo `/output-style concise`. Consulta [Cambiar tu estilo de salida](/docs/es/output-styles#change-your-output-style). Requiere Claude Code v2.1.269 o posterior |118| `/output-style [style]` | Enumera [estilos de salida](/docs/es/output-styles) o cambia a uno, por ejemplo `/output-style concise`. Consulta [Cambiar tu estilo de salida](/docs/es/output-styles#change-your-output-style). Requiere Claude Code v2.1.269 o posterior |

119| `/passes` | Comparte una semana gratis de Claude Code con amigos. Solo visible si tu cuenta es elegible |119| `/passes` | Comparte una semana gratis de Claude Code con amigos. Solo visible si tu cuenta es elegible |

120| `/permissions` | Gestiona reglas de permitir, preguntar y denegar para permisos de herramientas. Abre un diálogo interactivo donde puedes ver reglas por alcance, agregar o eliminar reglas, gestionar directorios de trabajo, y revisar [denegaciones automáticas de modo recientes](/docs/es/auto-mode-config#review-denials). También puedes ver y editar [reglas del clasificador de modo automático](/docs/es/auto-mode-config#edit-rules-from-permissions) desde la pestaña **Auto mode** del diálogo. Cuando lo ejecutas mientras Claude está respondiendo, Claude Code abre el diálogo de inmediato y aplica tus cambios comenzando con la siguiente llamada de herramienta de Claude en el mismo turno. Antes de v2.1.234, Claude Code ponía en cola el comando hasta que el turno terminaba. Alias: `/allowed-tools` |120| `/permissions` | Gestiona reglas de permitir, preguntar y denegar para permisos de herramientas. Abre un diálogo interactivo donde puedes ver reglas por alcance, agregar o eliminar reglas, gestionar directorios de trabajo, y revisar [denegaciones recientes del modo automático](/docs/es/auto-mode-config#review-denials). También puedes ver y editar [reglas del clasificador del modo automático](/docs/es/auto-mode-config#edit-rules-from-permissions) desde la pestaña **Auto mode** del diálogo. Cuando lo ejecutas mientras Claude está respondiendo, Claude Code abre el diálogo de inmediato y aplica tus cambios a partir de la siguiente llamada a herramienta de Claude en el mismo turno. Antes de v2.1.234, Claude Code ponía en cola el comando hasta que el turno terminaba. Alias: `/allowed-tools` |

121| `/plan [description]` | Entra en modo plan directamente desde el prompt. Pasa una descripción opcional para entrar en modo plan e inmediatamente comenzar con esa tarea, por ejemplo `/plan fix the auth bug` |121| `/plan [description]` | Entra en modo plan directamente desde el prompt. Pasa una descripción opcional para entrar en modo plan e inmediatamente comenzar con esa tarea, por ejemplo `/plan fix the auth bug` |

122| `/plugin [subcommand]` | Gestiona [plugins](/docs/es/plugins/overview) de Claude Code. Ejecuta sin argumento para abrir el menú de plugins, o pasa un subcomando como `list`, `install`, `enable`, o `disable` para actuar directamente. Claude Code puede activar un plugin durante la instalación; el [resumen de instalación](/docs/es/plugins/install#install-a-plugin) te dice si lo hizo o si debes ejecutar `/reload-plugins` |122| `/plugin [subcommand]` | Gestiona [plugins](/docs/es/plugins/overview) de Claude Code. Ejecuta sin argumento para abrir el menú de plugins, o pasa un subcomando como `list`, `install`, `enable`, o `disable` para actuar directamente. Claude Code puede activar un plugin durante la instalación; el [resumen de instalación](/docs/es/plugins/install#install-a-plugin) te dice si lo hizo o si debes ejecutar `/reload-plugins` |

123| `/powerup` | Descubre características de Claude Code a través de lecciones interactivas rápidas con demostraciones animadas |123| `/powerup` | Descubre características de Claude Code a través de lecciones interactivas rápidas con demostraciones animadas |

124| `/pr-comments [PR]` | Eliminado en v2.1.91. Pídele a Claude directamente que vea comentarios de solicitud de extracción en su lugar. En versiones anteriores, obtiene y muestra comentarios de una solicitud de extracción de GitHub; detecta automáticamente el PR para la rama actual, o pasa una URL o número de PR. Requiere la CLI `gh` |124| `/pr-comments [PR]` | Eliminado en v2.1.91. Pídele a Claude directamente que vea los comentarios del pull request en su lugar. En versiones anteriores, obtiene y muestra comentarios de un pull request de GitHub; detecta automáticamente el PR para la rama actual, o pasa una URL o número de PR. Requiere la CLI `gh` |

125| `/privacy-settings` | Ver y actualizar tu configuración de privacidad. Solo disponible para suscriptores de planes Pro y Max |125| `/privacy-settings` | Ve y actualiza tu configuración de privacidad. Solo disponible para suscriptores de planes Pro y Max |

126| `/radio` | Abre la radio lo-fi de Claude FM en tu navegador. Imprime la URL de transmisión cuando no hay navegador disponible |126| `/radio` | Abre la radio lo-fi de Claude FM en tu navegador. Imprime la URL de transmisión cuando no hay navegador disponible |

127| `/rate-limit-options` | Muestra formas de seguir trabajando cuando un límite de uso de claude.ai bloquea una solicitud: espera y [continúa automáticamente cuando se restablezca el límite](/docs/es/interactive-mode#wait-for-a-usage-limit-to-reset), agrega [créditos de uso](/docs/es/costs#add-usage-credits-to-your-subscription), o actualiza tu plan. Claude Code también puede abrir este menú por su cuenta cuando alcanzas un límite en tu propia terminal. Consulta [Desactivar continuación automática](/docs/es/interactive-mode#turn-automatic-continue-off). Requiere una suscripción de claude.ai. Las filas de espera y continuación requieren Claude Code v2.1.234 o posterior |127| `/rate-limit-options` | Muestra formas de seguir trabajando cuando un límite de uso de claude.ai bloquea una solicitud: esperar y [continuar automáticamente cuando se restablezca el límite](/docs/es/interactive-mode#wait-for-a-usage-limit-to-reset), agregar [créditos de uso](/docs/es/costs#add-usage-credits-to-your-subscription), o actualizar tu plan. Claude Code también puede abrir este menú por su cuenta cuando alcanzas un límite en tu propia terminal. Consulta [Desactivar la continuación automática](/docs/es/interactive-mode#turn-automatic-continue-off). Requiere una suscripción de claude.ai. Las filas de esperar y continuar requieren Claude Code v2.1.234 o posterior |

128| `/recap` | Genera un resumen de una línea de la sesión actual bajo demanda. Consulta [Resumen de sesión](/docs/es/interactive-mode#session-recap) para el resumen automático que aparece después de que hayas estado fuera |128| `/recap` | Genera un resumen de una línea de la sesión actual bajo demanda. Consulta [Resumen de sesión](/docs/es/interactive-mode#session-recap) para el resumen automático que aparece después de que hayas estado fuera |

129| `/release-notes` | Ver el registro de cambios en un selector de versión interactivo. Selecciona una versión específica para ver sus notas de lanzamiento, o elige mostrar todas las versiones. Las notas aparecen en tu transcripción sin entrar en la conversación que Claude ve |129| `/release-notes` | Ve el registro de cambios en un selector de versión interactivo. Selecciona una versión específica para ver sus notas de lanzamiento, o elige mostrar todas las versiones. Las notas aparecen en tu transcripción sin entrar en la conversación que Claude ve |

130| `/reload-plugins [--force]` | Recarga todos los [plugins](/docs/es/plugins/overview) activos para aplicar cambios pendientes sin reiniciar. Reporta conteos para cada componente recargado e indica cualquier error de carga. Cuando la recarga cambiaría qué herramientas MCP se cargan e invalidaría el caché de prompts, el comando advierte y omite a menos que pases `--force`. También disponible en modo no interactivo (`-p`), el SDK del Agente y la aplicación de escritorio, donde se ejecuta solo en entrada escrita directamente en la sesión y no aplica cambios de servidor MCP de plugins; requiere Claude Code v2.1.260 o posterior. Consulta [Aplicar cambios de plugins sin reiniciar](/docs/es/plugins/cli-reference#reload-plugins) |130| `/reload-plugins [--force]` | Recarga todos los [plugins](/docs/es/plugins/overview) activos para aplicar cambios pendientes sin reiniciar. Reporta conteos para cada componente recargado y señala cualquier error de carga. Cuando la recarga cambiaría qué herramientas MCP se cargan e invalidaría la caché de prompts, el comando advierte y omite la recarga a menos que pases `--force`. También disponible en modo no interactivo (`-p`), el Agent SDK y la aplicación de escritorio, donde se ejecuta solo con entrada escrita directamente en la sesión y no aplica cambios de servidores MCP de plugins; requiere Claude Code v2.1.260 o posterior. Consulta [Aplicar cambios de plugins sin reiniciar](/docs/es/plugins/cli-reference#reload-plugins) |

131| `/reload-skills` | Vuelve a escanear directorios de [skill](/docs/es/skills) y comandos para que las skills agregadas o cambiadas en el disco durante la sesión estén disponibles sin reiniciar. Reporta cuántas skills están disponibles y cuántas se agregaron o eliminaron |131| `/reload-skills` | Vuelve a escanear los directorios de [skills](/docs/es/skills) y comandos para que los skills agregados o cambiados en el disco durante la sesión estén disponibles sin reiniciar. Reporta cuántos skills están disponibles y cuántos se agregaron o eliminaron |

132| `/remote-control` | Hace que esta sesión esté disponible para [Remote Control](/docs/es/remote-control) desde claude.ai. Ejecutarlo mientras no has iniciado sesión imprime que Remote Control requiere una suscripción de claude.ai y te dice cómo iniciar sesión; antes de v2.1.206 reportaba `Unknown command: /remote-control`. Alias: `/rc` |132| `/remote-control` | Hace que esta sesión esté disponible para [Remote Control](/docs/es/remote-control) desde claude.ai. Ejecutarlo sin haber iniciado sesión imprime que Remote Control requiere una suscripción de claude.ai y te dice cómo iniciar sesión; antes de v2.1.206 reportaba `Unknown command: /remote-control`. Alias: `/rc` |

133| `/remote-env` | Elige el entorno predeterminado para [sesiones en la nube](/docs/es/cloud-environments#select-an-environment-from-the-cli) que inicias desde la CLI |133| `/remote-env` | Elige el [entorno en la nube](/docs/es/cloud-environments#select-an-environment-from-the-cli) predeterminado para las sesiones en la nube que inicias desde la CLI |

134| `/rename [name]` | Renombra la sesión actual y muestra el nombre en la barra de prompts. Sin un nombre, genera automáticamente uno desde el historial de conversación. También disponible en modo no interactivo (`-p`); requiere Claude Code v2.1.205 o posterior. Desde cada superficie de renombramiento, incluidos claude.ai y la aplicación de escritorio, Claude Code reemplaza caracteres de control e invisibles en el nuevo nombre con espacios y limita el nombre a 200 caracteres. Si el nombre está vacío una vez que se eliminan los caracteres invisibles, Claude Code lo rechaza y muestra `That name is empty once invisible characters are removed. Usage: /rename <name>`. El reemplazo de caracteres y el límite de longitud requieren Claude Code v2.1.221 o posterior. Si otra sesión activa en esta máquina ya usa un nombre que pasas, Claude Code aplica [una variante del mismo](/docs/es/sessions#name-your-sessions) en su lugar |134| `/rename [name]` | Renombra la sesión actual y muestra el nombre en la barra de prompts. Sin un nombre, genera automáticamente uno a partir del historial de conversación. También disponible en modo no interactivo (`-p`); requiere Claude Code v2.1.205 o posterior. Desde cada superficie de renombrado, incluidos claude.ai y la aplicación de escritorio, Claude Code reemplaza los caracteres de control e invisibles del nuevo nombre con espacios y limita el nombre a 200 caracteres. Si el nombre queda vacío una vez que se eliminan los caracteres invisibles, Claude Code lo rechaza y muestra `That name is empty once invisible characters are removed. Usage: /rename <name>`. El reemplazo de caracteres y el límite de longitud requieren Claude Code v2.1.221 o posterior. Si otra sesión activa en esta máquina ya usa un nombre que pasas, Claude Code aplica [una variante del mismo](/docs/es/sessions#name-your-sessions) en su lugar |

135| `/resume [session]` | Reanuda una conversación por ID o nombre, o abre el selector de sesión. [Las sesiones de fondo](/docs/es/agent-view) aparecen en el selector marcadas con `bg`. Reanudar una que aún se está ejecutando, desde el selector o por ID o nombre, [abre esa sesión](/docs/es/sessions#resume-a-running-background-session): tu conversación actual se mueve al fondo y esta terminal se adjunta a la que se está ejecutando. Presiona `←` en un prompt vacío para volver a la vista de agente, que también enumera la conversación que dejaste. Antes de v2.1.285, Claude Code se negaba y te decía que abrieras la sesión con `claude attach` o la detuvieras primero. Alias: `/continue` |135| `/resume [session]` | Reanuda una conversación por ID o nombre, o abre el selector de sesiones. [Las sesiones en segundo plano](/docs/es/agent-view) aparecen en el selector marcadas con `bg`. Reanudar una que aún se está ejecutando, desde el selector o por ID o nombre, [abre esa sesión](/docs/es/sessions#resume-a-running-background-session): tu conversación actual pasa a segundo plano y esta terminal se adjunta a la que se está ejecutando. Presiona `←` en un prompt vacío para volver a la vista de agentes, que también enumera la conversación que dejaste. Antes de v2.1.285, Claude Code se negaba y te decía que abrieras la sesión con `claude attach` o la detuvieras primero. Alias: `/continue` |

136| `/review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [pr#\|branch\|path]` | Alias de [`/code-review`](/docs/es/code-review#review-a-diff-locally): revisa el diff actual, o un número de PR, rama o ruta que pases, como `/review 1234`, y toma los mismos niveles de esfuerzo e indicadores. Sin un nivel dado, la revisión reutiliza el último nivel `low` a `max` que escribiste; consulta [Revisar un diff localmente](/docs/es/code-review#review-a-diff-locally) para las reglas exactas. Para una revisión en la nube profunda, usa [`/code-review ultra`](/docs/es/ultrareview). Antes de v2.1.223, `/review` era un comando separado que ejecutaba una revisión de una sola pasada, de solo lectura de una solicitud de extracción de GitHub por número, enumerando PRs abiertos para elegir cuando se ejecuta sin argumento; de v2.1.186 a v2.1.201, ejecutaba el mismo motor multiagente que `/code-review medium` |136| `/review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [pr#\|branch\|path]` | Alias de [`/code-review`](/docs/es/code-review#review-a-diff-locally): revisa el diff actual, o un número de PR, rama o ruta que pases, como `/review 1234`, y acepta los mismos niveles de esfuerzo y flags. Sin un nivel dado, la revisión reutiliza el último nivel de `low` a `max` que escribiste; consulta [Revisar un diff localmente](/docs/es/code-review#review-a-diff-locally) para las reglas exactas. Para una revisión profunda en la nube, usa [`/code-review ultra`](/docs/es/ultrareview). Antes de v2.1.223, `/review` era un comando separado que ejecutaba una revisión de una sola pasada y de solo lectura de un pull request de GitHub por número, enumerando los PR abiertos para elegir cuando se ejecutaba sin argumento; de v2.1.186 a v2.1.201, ejecutaba el mismo motor multiagente que `/code-review medium` |

137| `/rewind` | Rebobina la conversación y/o código a un punto anterior, o resume desde un mensaje seleccionado. Consulta [checkpointing](/docs/es/checkpointing). Alias: `/checkpoint`, `/undo` |137| `/rewind` | Rebobina la conversación y/o el código a un punto anterior, o resume desde un mensaje seleccionado. Consulta [checkpointing](/docs/es/checkpointing). Alias: `/checkpoint`, `/undo` |

138| `/run` | **[Skill](/docs/es/skills#bundled-skills).** Lanza y conduce la aplicación de tu proyecto para ver un cambio funcionando, no solo pasando pruebas. Consulta [Ejecutar y verificar tu aplicación](/docs/es/skills#run-and-verify-your-app) |138| `/run` | **[Skill](/docs/es/skills#bundled-skills).** Lanza y maneja la aplicación de tu proyecto para ver un cambio funcionando, no solo pasando pruebas. Consulta [Ejecutar y verificar tu aplicación](/docs/es/skills#run-and-verify-your-app) |

139| `/run-skill-generator` | **[Skill](/docs/es/skills#bundled-skills).** Enseña a `/run` y `/verify` cómo construir, lanzar y conducir la aplicación de tu proyecto desde un entorno limpio escribiendo una [skill](/docs/es/skills#run-and-verify-your-app) por proyecto |139| `/run-skill-generator` | **[Skill](/docs/es/skills#bundled-skills).** Enseña a `/run` y `/verify` cómo compilar, lanzar y manejar la aplicación de tu proyecto desde un entorno limpio escribiendo un [skill](/docs/es/skills#run-and-verify-your-app) por proyecto |

140| `/sandbox` | Alterna [modo sandbox](/docs/es/sandboxing). Disponible solo en plataformas compatibles |140| `/sandbox` | Alterna el [modo sandbox](/docs/es/sandboxing). Disponible solo en plataformas compatibles |

141| `/schedule [description]` | Crea, actualiza, enumera o ejecuta [rutinas](/docs/es/routines), que se ejecutan en la nube. Claude te guía a través de la configuración conversacionalmente. También puedes preguntar sobre [ejecuciones recientes de una rutina](/docs/es/routines#manage-routines-from-the-cli). Alias: `/routines` |141| `/schedule [description]` | Crea, actualiza, enumera o ejecuta [rutinas](/docs/es/routines), que se ejecutan en la nube. Claude te guía a través de la configuración de forma conversacional. También puedes preguntar sobre las [ejecuciones recientes de una rutina](/docs/es/routines#manage-routines-from-the-cli). Alias: `/routines` |

142| `/scroll-speed` | Ajusta la [velocidad de desplazamiento](/docs/es/fullscreen#mouse-wheel-scrolling) de la rueda del ratón interactivamente, con una regla que puedes desplazar mientras el diálogo está abierto para obtener una vista previa del cambio. Disponible solo en [renderizado de pantalla completa](/docs/es/fullscreen) y no en la terminal del IDE JetBrains |142| `/scroll-speed` | Ajusta la [velocidad de desplazamiento](/docs/es/fullscreen#mouse-wheel-scrolling) de la rueda del ratón de forma interactiva, con una regla que puedes desplazar mientras el diálogo está abierto para obtener una vista previa del cambio. Disponible solo en [renderizado de pantalla completa](/docs/es/fullscreen) y no en la terminal del IDE JetBrains |

143| `/security-review` | Analiza los cambios en tu rama actual para detectar vulnerabilidades de seguridad. Revisa el diff entre tu rama y la rama predeterminada del origen, identificando riesgos como inyección, problemas de autenticación y exposición de datos. Necesita un remoto `origin`; si la revisión falla con un error de `ambiguous argument`, consulta la [referencia de errores](/docs/es/errors#security-review-fails-without-origin-head) |143| `/security-review` | Analiza los cambios en tu rama actual para detectar vulnerabilidades de seguridad. Revisa el diff entre tu rama y la rama predeterminada de origin, identificando riesgos como inyección, problemas de autenticación y exposición de datos. Necesita un remoto `origin`; si la revisión falla con un error de `ambiguous argument`, consulta la [referencia de errores](/docs/es/errors#security-review-fails-without-origin-head) |

144| `/setup-bedrock` | Configura la autenticación, región y fijaciones de modelo de [Amazon Bedrock](/docs/es/amazon-bedrock) a través de un asistente interactivo. [Oculto del menú de comandos](#how-the-command-menu-matches-what-you-type) hasta que se establezca `CLAUDE_CODE_USE_BEDROCK=1`; escríbelo en su totalidad. Los usuarios de Amazon Bedrock por primera vez también pueden acceder a este asistente desde la pantalla de inicio de sesión |144| `/setup-bedrock` | Configura la autenticación, región y fijaciones de modelo de [Amazon Bedrock](/docs/es/amazon-bedrock) a través de un asistente interactivo. [Oculto del menú de comandos](#how-the-command-menu-matches-what-you-type) hasta que se establezca `CLAUDE_CODE_USE_BEDROCK=1`; escríbelo completo. Los usuarios de Amazon Bedrock por primera vez también pueden acceder a este asistente desde la pantalla de inicio de sesión |

145| `/setup-vertex` | Configura la autenticación, proyecto, región y fijaciones de modelo de [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) a través de un asistente interactivo. [Oculto del menú de comandos](#how-the-command-menu-matches-what-you-type) hasta que se establezca `CLAUDE_CODE_USE_VERTEX=1`; escríbelo en su totalidad. Los usuarios de Google Cloud's Agent Platform por primera vez también pueden acceder a este asistente desde la pantalla de inicio de sesión |145| `/setup-vertex` | Configura la autenticación, proyecto, región y fijaciones de modelo de [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) a través de un asistente interactivo. [Oculto del menú de comandos](#how-the-command-menu-matches-what-you-type) hasta que se establezca `CLAUDE_CODE_USE_VERTEX=1`; escríbelo completo. Los usuarios de Google Cloud's Agent Platform por primera vez también pueden acceder a este asistente desde la pantalla de inicio de sesión |

146| `/simplify [target]` | **[Skill](/docs/es/skills#bundled-skills).** Revisa el código cambiado para oportunidades de limpieza y aplica las correcciones. Cuatro [agentes](/docs/es/sub-agents) de revisión se ejecutan en paralelo, cubriendo reutilización de ayudantes existentes, simplificación, eficiencia y si el cambio está al nivel correcto de abstracción. La revisión no busca errores de corrección. Usa `/code-review` para encontrar errores. Pasa una ruta o referencia de PR para revisar un objetivo específico |146| `/simplify [target]` | **[Skill](/docs/es/skills#bundled-skills).** Revisa el código cambiado en busca de oportunidades de limpieza y aplica las correcciones. Cuatro [agentes](/docs/es/sub-agents) de revisión se ejecutan en paralelo, cubriendo la reutilización de helpers existentes, la simplificación, la eficiencia y si el cambio está al nivel correcto de abstracción. La revisión no busca errores de corrección. Usa `/code-review` para encontrar errores. Pasa una ruta o referencia de PR para revisar un objetivo específico |

147| `/skill-doctor` | Muestra lo que cada una de tus [skills](/docs/es/skills) cuesta en contexto y con qué frecuencia se usa, para que puedas [encontrar skills para desactivar](/docs/es/skills#find-unused-skills). Requiere Claude Code v2.1.252 o posterior y [obtención de banderas de característica](/docs/es/env-vars#features-that-need-feature-flag-fetching) |147| `/skill-doctor` | Muestra lo que cada uno de tus [skills](/docs/es/skills) cuesta en contexto y con qué frecuencia se usa, para que puedas [encontrar skills para desactivar](/docs/es/skills#find-unused-skills). Requiere Claude Code v2.1.252 o posterior y la [obtención de banderas de característica](/docs/es/env-vars#features-that-need-feature-flag-fetching) |

148| `/skills` | Enumera [skills](/docs/es/skills) disponibles. Escribe para filtrar la lista por nombre, descripción o fuente. Presiona `t` para ordenar por conteo de tokens, `Space` o `Enter` para [ciclar la visibilidad de una skill a Claude y el menú `/`](/docs/es/skills#override-skill-visibility-from-settings), y `Esc` para guardar y cerrar. No puedes ciclar skills de plugins, skills cuya portada establece `disable-model-invocation: true`, o skills con una entrada `skillOverrides` en configuración administrada o la bandera `--settings` |148| `/skills` | Enumera los [skills](/docs/es/skills) disponibles. Escribe para filtrar la lista por nombre, descripción o fuente. Presiona `t` para ordenar por conteo de tokens, `Space` o `Enter` para [alternar la visibilidad de un skill para Claude y el menú `/`](/docs/es/skills#override-skill-visibility-from-settings), y `Esc` para guardar y cerrar. No puedes alternar skills de plugins, skills cuyo frontmatter establece `disable-model-invocation: true`, o skills con una entrada `skillOverrides` en la configuración administrada o el flag `--settings` |

149| `/slides [brief]` | **[Skill](/docs/es/skills#bundled-skills).** Crea una nueva presentación como un [artefacto](/docs/es/artifacts#make-a-slide-deck) de Claude Slides rellenado desde tu resumen, por ejemplo `/slides a quarterly review of the platform team`. Requiere Claude Code v2.1.265 o posterior, una sesión donde [los artefactos estén disponibles](/docs/es/artifacts#availability), y una cuenta donde la [plantilla de Slides esté disponible](/docs/es/artifacts#start-from-a-slides-design-or-docs-template); de lo contrario el comando no aparece. Disponible en la API de Anthropic. En Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry y Claude Platform en AWS, los artefactos no están disponibles, por lo que el comando no está disponible allí |149| `/slides [brief]` | **[Skill](/docs/es/skills#bundled-skills).** Crea una nueva presentación como un [artefacto](/docs/es/artifacts#make-a-slide-deck) de Claude Slides rellenado a partir de tu resumen, por ejemplo `/slides a quarterly review of the platform team`. Requiere Claude Code v2.1.265 o posterior, una sesión donde [los artefactos estén disponibles](/docs/es/artifacts#availability), y una cuenta donde la [plantilla de Slides esté disponible](/docs/es/artifacts#start-from-a-slides-design-or-docs-template); de lo contrario el comando no aparece. Disponible en la API de Anthropic. En Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry y Claude Platform en AWS, los artefactos no están disponibles, por lo que el comando no está disponible allí |

150| `/stats` | Alias para `/usage`. Se abre en la pestaña Stats |150| `/stats` | Alias para `/usage`. Se abre en la pestaña Stats |

151| `/status` | Abre la interfaz de Configuración en la pestaña Estado, mostrando versión, modelo, cuenta y conectividad. Una fila `Session kind` lee `background job · attached` o `background job · unattended` en una [sesión de fondo](/docs/es/agent-view), dependiendo de si una terminal está adjunta, e `interactive` en cualquier otra sesión. Antes de v2.1.221, `/status` no mostraba esta fila. Funciona mientras Claude está respondiendo |151| `/status` | Abre la interfaz de Configuración en la pestaña Estado, mostrando versión, modelo, cuenta y conectividad. Una fila `Session kind` muestra `background job · attached` o `background job · unattended` en una [sesión en segundo plano](/docs/es/agent-view), dependiendo de si hay una terminal adjunta, e `interactive` en cualquier otra sesión. Antes de v2.1.221, `/status` no mostraba esta fila. Funciona mientras Claude está respondiendo |

152| `/statusline` | Configura la [línea de estado](/docs/es/statusline) de Claude Code. Describe lo que quieres, o ejecuta sin argumentos para auto-configurar desde tu prompt de shell |152| `/statusline` | Configura la [línea de estado](/docs/es/statusline) de Claude Code. Describe lo que quieres, o ejecuta sin argumentos para configurarla automáticamente a partir del prompt de tu shell |

153| `/stickers` | Ordena pegatinas de Claude Code |153| `/stickers` | Pide stickers de Claude Code |

154| `/stop` | Detiene la [sesión de fondo](/docs/es/agent-view) actual. Solo disponible mientras estés adjunto a una sesión de fondo; la transcripción y cualquier worktree se mantienen. Para desvincularse sin detener, usa `/exit` o presiona `←` |154| `/stop` | Detiene la [sesión en segundo plano](/docs/es/agent-view) a la que estás adjunto, o aquella a la que lo envías como [respuesta rápida](/docs/es/agent-view#peek-and-reply); la transcripción y cualquier worktree se mantienen. Para desvincularte sin detenerla, usa `/exit` o presiona `←` |

155| `/subtask <task>` | Genera un [subagente bifurcado](/docs/es/sub-agents#fork-the-current-conversation): un subagente de fondo que hereda la conversación completa y trabaja en la tarea mientras tú sigues trabajando. Su resultado vuelve a esta conversación cuando termina. Para copiar la conversación en una sesión de fondo separada en su lugar, usa `/fork`. Requiere Claude Code v2.1.212 o posterior; en v2.1.161 a través de v2.1.211 este comando es `/fork`. Cuando [la vista de agente está desactivada](/docs/es/agent-view#turn-off-agent-view), `/subtask` no está disponible y `/fork` mantiene el comportamiento de subagente bifurcado |155| `/subtask <task>` | Genera un [subagente bifurcado](/docs/es/sub-agents#fork-the-current-conversation): un subagente en segundo plano que hereda la conversación completa y trabaja en la tarea mientras tú sigues trabajando. Su resultado vuelve a esta conversación cuando termina. Para copiar la conversación en una sesión en segundo plano separada en su lugar, usa `/fork`. Requiere Claude Code v2.1.212 o posterior; de v2.1.161 a v2.1.211 este comando es `/fork`. Cuando [la vista de agentes está desactivada](/docs/es/agent-view#turn-off-agent-view), `/subtask` no está disponible y `/fork` mantiene el comportamiento de subagente bifurcado |

156| `/tasks` | Ver y gestionar trabajo de fondo en la sesión actual, incluidos subagentes que han terminado. También disponible como `/bashes` |156| `/tasks` | Ve y gestiona el trabajo en segundo plano de la sesión actual, incluidos los subagentes que han terminado. También disponible como `/bashes` |

157| `/team-onboarding` | Genera una guía de incorporación de equipo desde tu historial de uso de Claude Code. Claude analiza tus sesiones, comandos y uso de servidores MCP de los últimos 30 días y produce una guía de markdown que un compañero de equipo puede pegar como primer mensaje para configurarse rápidamente. Para suscriptores de claude.ai en planes Pro, Max, Team y Enterprise, también devuelve un enlace de compartición que los compañeros de equipo pueden abrir directamente en Claude Code |157| `/team-onboarding` | Genera una guía de incorporación de equipo a partir de tu historial de uso de Claude Code. Claude analiza tus sesiones, comandos y uso de servidores MCP de los últimos 30 días y produce una guía en markdown que un compañero de equipo puede pegar como primer mensaje para configurarse rápidamente. Para suscriptores de claude.ai en planes Pro, Max, Team y Enterprise, también devuelve un enlace para compartir que los compañeros de equipo pueden abrir directamente en Claude Code |

158| `/teleport` | Tira una sesión de [Claude Code en la web](/docs/es/claude-code-on-the-web#from-cloud-to-terminal) a esta terminal. Abre un selector, luego obtiene la rama y conversación. También disponible como `/tp`. Requiere una suscripción de claude.ai |158| `/teleport` | Trae una [sesión en la nube](/docs/es/claude-code-on-the-web#from-cloud-to-terminal) a esta terminal. Abre un selector y luego obtiene la rama y la conversación. También disponible como `/tp`. Requiere una suscripción de claude.ai |

159| `/terminal-setup` | [Instala un atajo de teclado Shift+Enter para nuevas líneas](/docs/es/terminal-config#enter-multiline-prompts) en VS Code, Cursor, Devin Desktop, Alacritty, o Zed. En Apple Terminal, [habilita Option+Enter para nuevas líneas y desactiva el timbre audible](/docs/es/terminal-config#enable-option-key-shortcuts-on-macos) en su lugar. En iTerm2, [activa el acceso al portapapeles para que `/copy` funcione](/docs/es/terminal-config#enable-option-key-shortcuts-on-macos) |159| `/terminal-setup` | [Instala un atajo de teclado Shift+Enter para nuevas líneas](/docs/es/terminal-config#enter-multiline-prompts) en VS Code, Cursor, Devin Desktop, Alacritty, o Zed. En Apple Terminal, [habilita Option+Enter para nuevas líneas y desactiva el timbre audible](/docs/es/terminal-config#enable-option-key-shortcuts-on-macos) en su lugar. En iTerm2, [activa el acceso al portapapeles para que `/copy` funcione](/docs/es/terminal-config#enable-option-key-shortcuts-on-macos) |

160| `/theme` | Cambia el tema de color. Incluye una opción `auto` que coincide con el fondo claro u oscuro de tu terminal, variantes claras y oscuras, temas accesibles para daltónicos (daltonizados), temas ANSI que usan la paleta de colores de tu terminal, y cualquier [tema personalizado](/docs/es/terminal-config#create-a-custom-theme) de `~/.claude/themes/` o plugins. Selecciona **New custom theme…** para crear uno |160| `/theme` | Cambia el tema de color. Incluye una opción `auto` que coincide con el fondo claro u oscuro de tu terminal, variantes claras y oscuras, temas accesibles para daltónicos (daltonizados), temas ANSI que usan la paleta de colores de tu terminal, y cualquier [tema personalizado](/docs/es/terminal-config#create-a-custom-theme) de `~/.claude/themes/` o de plugins. Selecciona **New custom theme…** para crear uno |

161| `/tui [default\|fullscreen]` | Establece el renderizador de interfaz de usuario de terminal y relanza en él con tu conversación intacta. `fullscreen` habilita el [renderizador de pantalla alternativa sin parpadeos](/docs/es/fullscreen). Sin argumento, imprime el renderizador activo |161| `/tui [default\|fullscreen]` | Establece el renderizador de la interfaz de terminal y se relanza en él con tu conversación intacta. `fullscreen` habilita el [renderizador de pantalla alternativa sin parpadeos](/docs/es/fullscreen). Sin argumento, imprime el renderizador activo |

162| `/ultraplan <prompt>` | Eliminado. Usa [modo plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) en su lugar. Anteriormente enviaba una tarea de planificación a una sesión de [Claude Code en la web](/docs/es/claude-code-on-the-web) para revisión en tu navegador |162| `/ultraplan <prompt>` | Eliminado. Usa el [modo plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) en su lugar. Anteriormente enviaba una tarea de planificación a una [sesión en la nube](/docs/es/claude-code-on-the-web) para revisarla en tu navegador |

163| `/ultrareview [PR or branch]` | Ejecuta una revisión de código profunda y multiagente en una sandbox en la nube con [ultrareview](/docs/es/ultrareview). Pasa una referencia de PR para revisar esa solicitud de extracción, o una rama base o commit para cambiar la base de comparación. La invocación preferida es `/code-review ultra`, y `/ultrareview` es un alias. Incluye 3 ejecuciones gratuitas en Pro y Max, luego requiere [créditos de uso](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |163| `/ultrareview [PR or branch]` | Ejecuta una revisión de código profunda y multiagente en un sandbox en la nube con [ultrareview](/docs/es/ultrareview). Pasa una referencia de PR para revisar ese pull request, o una rama base o commit para cambiar la base de comparación. La invocación preferida es `/code-review ultra`, y `/ultrareview` es un alias. Incluye 3 ejecuciones gratuitas en Pro y Max, luego requiere [créditos de uso](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

164| `/update-config [request]` | **[Skill](/docs/es/skills#bundled-skills).** Describe un cambio de configuración, como permitir un comando, establecer una variable de entorno, o agregar un [hook](/docs/es/hooks), y Claude edita el archivo [`settings.json`](/docs/es/settings) coincidente. Para opciones como tema y modelo, usa `/config` en su lugar |164| `/update-config [request]` | **[Skill](/docs/es/skills#bundled-skills).** Describe un cambio de configuración, como permitir un comando, establecer una variable de entorno, o agregar un [hook](/docs/es/hooks), y Claude edita el archivo [`settings.json`](/docs/es/settings) correspondiente. Para opciones como tema y modelo, usa `/config` en su lugar |

165| `/upgrade` | Abre la página de actualización en tu navegador para cambiar a un nivel de plan superior. Cuando el navegador no se abre, el comando muestra un prompt de inicio de sesión sin imprimir la URL |165| `/upgrade` | Abre la página de actualización en tu navegador para cambiar a un nivel de plan superior. Cuando el navegador no se abre, el comando muestra una solicitud de inicio de sesión sin imprimir la URL |

166| `/usage` | Muestra el costo de la sesión, límites de uso del plan y estadísticas de actividad. En un plan Pro, Max, Team o Enterprise, incluye un [desglose de lo que cuenta contra tus límites del plan](/docs/es/costs#plan-usage-breakdown). `/cost` y `/stats` son alias |166| `/usage` | Muestra el costo de la sesión, los límites de uso del plan y estadísticas de actividad. En un plan Pro, Max, Team o Enterprise, incluye un [desglose de lo que cuenta contra los límites de tu plan](/docs/es/costs#plan-usage-breakdown). `/cost` y `/stats` son alias |

167| `/usage-credits` | Configura créditos de uso, o solicítalos a tu administrador, cuando alcances un límite. Abre tu [configuración de facturación de créditos de uso](/docs/es/costs#add-usage-credits-to-your-subscription) en el navegador, excepto que los miembros de Team y Enterprise sin acceso de facturación en su lugar envíen una solicitud de créditos de uso a su administrador desde la CLI, después de confirmar en un diálogo que la solicitud notifica a sus administradores. Cuando no se puede abrir el navegador en la página de facturación, por ejemplo sobre SSH, el comando imprime la URL a visitar en su lugar; esto requiere Claude Code v2.1.205 o posterior, y versiones anteriores no mostraban nada en ese caso. Anteriormente `/extra-usage` |167| `/usage-credits` | Configura créditos de uso, o solicítalos a tu administrador, cuando alcances un límite. Abre tu [configuración de facturación de créditos de uso](/docs/es/costs#add-usage-credits-to-your-subscription) en el navegador, excepto que los miembros de Team y Enterprise sin acceso de facturación envían en su lugar una solicitud de créditos de uso a su administrador desde la CLI, después de confirmar en un diálogo que la solicitud notifica a sus administradores. Cuando ningún navegador puede abrir la página de facturación, por ejemplo sobre SSH, el comando imprime la URL a visitar en su lugar; esto requiere Claude Code v2.1.205 o posterior, y las versiones anteriores no mostraban nada en ese caso. Anteriormente `/extra-usage` |

168| `/verify` | **[Skill](/docs/es/skills#bundled-skills).** Confirma que un cambio de código hace lo que debe haciendo construir la aplicación de tu proyecto, ejecutándola y observando el resultado, en lugar de confiar en pruebas o verificaciones de tipo. Consulta [Ejecutar y verificar tu aplicación](/docs/es/skills#run-and-verify-your-app) |168| `/verify` | **[Skill](/docs/es/skills#bundled-skills).** Confirma que un cambio de código hace lo que debe compilando la aplicación de tu proyecto, ejecutándola y observando el resultado, en lugar de confiar en pruebas o verificaciones de tipos. Consulta [Ejecutar y verificar tu aplicación](/docs/es/skills#run-and-verify-your-app) |

169| `/vim` | Eliminado en v2.1.92. Para alternar entre modos de edición Vim y Normal, usa `/config` → Editor mode |169| `/vim` | Eliminado en v2.1.92. Para alternar entre los modos de edición Vim y Normal, usa `/config` → Editor mode |

170| `/voice [hold\|tap\|off]` | Alterna [dictado de voz](/docs/es/voice-dictation), o habilítalo en un modo específico. Requiere una cuenta de Claude.ai |170| `/voice [hold\|tap\|off]` | Alterna el [dictado de voz](/docs/es/voice-dictation), o habilítalo en un modo específico. Requiere una cuenta de Claude.ai |

171| `/web-setup` | Conecta tu cuenta de GitHub a [Claude Code en la web](/docs/es/web-quickstart#connect-from-your-terminal) usando tus credenciales locales de CLI `gh` |171| `/web-setup` | Conecta tu cuenta de GitHub para [sesiones en la nube](/docs/es/web-quickstart#connect-from-your-terminal) usando las credenciales locales de tu CLI `gh` |

172| `/workflow-authoring` | **[Skill](/docs/es/skills#bundled-skills).** Carga la referencia para escribir scripts de [workflow dinámico](/docs/es/workflows): la API de script, comportamiento de reanudación, patrones de calidad y ejemplos trabajados. Claude normalmente lo carga por su cuenta antes de escribir un script; ejecútalo tú mismo antes de [editar un script guardado a mano](/docs/es/workflows#edit-a-saved-script). Disponible cuando los workflows dinámicos están habilitados, y requiere Claude Code v2.1.248 o posterior |172| `/workflow-authoring` | **[Skill](/docs/es/skills#bundled-skills).** Carga la referencia para escribir scripts de [workflow dinámico](/docs/es/workflows): la API de scripts, el comportamiento de reanudación, patrones de calidad y ejemplos resueltos. Claude normalmente lo carga por su cuenta antes de escribir un script; ejecútalo tú mismo antes de [editar un script guardado a mano](/docs/es/workflows#edit-a-saved-script). Disponible cuando los workflows dinámicos están habilitados, y requiere Claude Code v2.1.248 o posterior |

173| `/workflows` | Abre la [vista de progreso del workflow](/docs/es/workflows#watch-the-run) para observar, pausar, reanudar o guardar workflows en ejecución y completados |173| `/workflows` | Abre la [vista de progreso del workflow](/docs/es/workflows#watch-the-run) para observar, pausar, reanudar o guardar workflows en ejecución y completados |

174 174 

175<h2 id="how-the-command-menu-matches-what-you-type">175<h2 id="how-the-command-menu-matches-what-you-type">

Details

65 Verificar hooks65 Verificar hooks

66</h2>66</h2>

67 67 

68Ejecute `/hooks` para enumerar cada hook registrado para la sesión actual, agrupado por evento. Si un hook que definió no aparece, no se está leyendo: los hooks van bajo la clave `"hooks"` en un archivo de configuración, no en un archivo independiente.68Ejecuta `/hooks` para enumerar cada hook registrado para la sesión actual, agrupado por evento. Si un hook que definiste no aparece, Claude Code no lo cargó. Comprueba estas causas:

69 69 

70Si el hook aparece pero no se dispara, el matcher es la causa habitual. Compruébelo para estos errores:70* El hook está definido en un archivo independiente. Los hooks van bajo la clave `"hooks"` en un [archivo de configuración](/docs/es/settings#settings-files).

71* El valor de `matcher` es una matriz en lugar de una cadena única. Claude Code muestra la entrada como un ajuste no válido cuando inicias una sesión interactiva y en `claude doctor`. Si la matriz está bajo `PreToolUse` o `PermissionRequest`, tampoco se carga ninguno de los otros hooks de ese archivo.

71 72 

72* El campo `matcher` es una cadena única que usa `|` para coincidir con múltiples nombres de herramientas, por ejemplo `"Edit|Write"`. Un separador `,` es equivalente, por lo que `"Edit,Write"` coincide con las mismas herramientas. Antes de v2.1.191, una coma se evaluaba como expresión regular y el matcher nunca coincidía, así que use `|` si no está en v2.1.191 aún.73Si el hook aparece pero no se dispara, el matcher es la causa habitual. Compruébalo para estos errores:

74 

75* El campo `matcher` es una cadena única que usa `|` para coincidir con múltiples nombres de herramientas, por ejemplo `"Edit|Write"`. Un separador `,` es equivalente, por lo que `"Edit,Write"` coincide con las mismas herramientas. Antes de v2.1.191, una coma se evaluaba como expresión regular y el matcher nunca coincidía, así que usa `|` si aún no estás en v2.1.191.

73* Un nombre de herramienta mal escrito produce un matcher que no coincide con nada, por lo que el hook falla silenciosamente.76* Un nombre de herramienta mal escrito produce un matcher que no coincide con nada, por lo que el hook falla silenciosamente.

74* Un valor de matriz es un error de esquema: Claude Code muestra un aviso de error de configuración y rechaza todo el archivo de configuración del usuario, proyecto o local, `claude doctor` informa del error de validación, y ningún hook de ese archivo aparece en `/hooks`. En [configuración administrada](/docs/es/managed-settings), Claude Code elimina toda la clave `hooks` del archivo que contiene la matriz, por lo que ninguno de los hooks de ese archivo se aplica. Los otros ajustes del archivo aún se aplican, y `claude doctor` enumera la clave eliminada.

75 77 

76Cuando edita `settings.json`, el cambio surte efecto en la sesión en ejecución después de un breve retraso de estabilidad de archivo, incluso si crea el archivo o la carpeta `.claude/` del proyecto después de que la sesión comenzó. No necesita reiniciar. Antes de v2.1.257, Claude Code no detectaba ediciones en una carpeta `.claude/` creada después de que la sesión comenzó.78Cuando editas `settings.json`, el cambio surte efecto en la sesión en ejecución después de un breve retraso de estabilidad de archivo, incluso si creas el archivo o la carpeta `.claude/` del proyecto después de que la sesión comenzó. No necesitas reiniciar. Antes de v2.1.257, Claude Code no detectaba ediciones en una carpeta `.claude/` creada después de que la sesión comenzó.

77 79 

78Si `/hooks` aún muestra la definición anterior unos segundos después de guardar, ejecute `/hooks` nuevamente para actualizar la vista.80Si `/hooks` aún muestra la definición anterior unos segundos después de guardar, ejecuta `/hooks` nuevamente para actualizar la vista.

79 81 

80Si `/hooks` muestra el hook pero aún no se dispara, el siguiente paso es ver la evaluación del hook en vivo. Inicie una sesión con `claude --debug` y active la llamada de herramienta. El registro de depuración registra cada evento, qué matchers se verificaron, y el código de salida y la salida del hook. Consulte [Depurar hooks](/docs/es/hooks#debug-hooks) para el formato del registro y [solución de problemas de hooks](/docs/es/hooks-guide#limitations-and-troubleshooting) para patrones de fallo comunes.82Si `/hooks` muestra el hook pero aún no se dispara, el siguiente paso es ver la evaluación del hook en vivo. Inicia una sesión con `claude --debug` y activa la llamada a herramienta. El registro de depuración registra cada evento, qué matchers se verificaron, y el código de salida y la salida del hook. Consulta [Depurar hooks](/docs/es/hooks#debug-hooks) para el formato del registro y [solución de problemas de hooks](/docs/es/hooks-guide#limitations-and-troubleshooting) para patrones de fallo comunes.

81 83 

82<h2 id="test-against-a-clean-configuration">84<h2 id="test-against-a-clean-configuration">

83 Probar contra una configuración limpia85 Probar contra una configuración limpia

env-vars.md +2 −1

Details

205| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Tiempo de espera de estancamiento en milisegundos para subagentes. Predeterminado `600000` (10 minutos); si aumenta `CLAUDE_STREAM_IDLE_TIMEOUT_MS` mientras el perro guardián de transmisión está activado, el predeterminado aumenta con él, como describe [Manejar respuestas de API lentas o estancadas](/docs/es/agent-sdk/typescript#handle-slow-or-stalled-api-responses). El temporizador se reinicia en cada evento de progreso de transmisión; si no llega progreso dentro de la ventana, Claude Code aborta el subagente e informa el estancamiento al padre |205| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Tiempo de espera de estancamiento en milisegundos para subagentes. Predeterminado `600000` (10 minutos); si aumenta `CLAUDE_STREAM_IDLE_TIMEOUT_MS` mientras el perro guardián de transmisión está activado, el predeterminado aumenta con él, como describe [Manejar respuestas de API lentas o estancadas](/docs/es/agent-sdk/typescript#handle-slow-or-stalled-api-responses). El temporizador se reinicia en cada evento de progreso de transmisión; si no llega progreso dentro de la ventana, Claude Code aborta el subagente e informa el estancamiento al padre |

206| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Establezca el porcentaje (1-100) de la ventana de auto-compactación en la que se activa la auto-compactación. Use valores más bajos como `50` para compactar antes; la variable no puede aumentar el umbral, por lo que los valores por encima del porcentaje predeterminado se ignoran. Solo se aplica en sesiones que [compactan antes del límite de contexto del modelo](/docs/es/model-config#context-window-and-auto-compaction). Se aplica tanto a conversaciones principales como a subagentes |206| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Establezca el porcentaje (1-100) de la ventana de auto-compactación en la que se activa la auto-compactación. Use valores más bajos como `50` para compactar antes; la variable no puede aumentar el umbral, por lo que los valores por encima del porcentaje predeterminado se ignoran. Solo se aplica en sesiones que [compactan antes del límite de contexto del modelo](/docs/es/model-config#context-window-and-auto-compaction). Se aplica tanto a conversaciones principales como a subagentes |

207| `CLAUDE_AUTO_BACKGROUND_TASKS` | Establezca en `1` para forzar la habilitación del envío automático a segundo plano de tareas de agente de larga duración. Cuando está habilitado, los subagentes se mueven al fondo después de ejecutarse durante aproximadamente dos minutos. También habilita [envío automático a segundo plano de llamadas de herramientas MCP largas](/docs/es/mcp#automatic-backgrounding-of-long-tool-calls) en modo no interactivo en Claude Code v2.1.212 o posterior |207| `CLAUDE_AUTO_BACKGROUND_TASKS` | Establezca en `1` para forzar la habilitación del envío automático a segundo plano de tareas de agente de larga duración. Cuando está habilitado, los subagentes se mueven al fondo después de ejecutarse durante aproximadamente dos minutos. También habilita [envío automático a segundo plano de llamadas de herramientas MCP largas](/docs/es/mcp#automatic-backgrounding-of-long-tool-calls) en modo no interactivo en Claude Code v2.1.212 o posterior |

208| `CLAUDE_AX_PREPARK_MS` | En [modo de lector de pantalla](/docs/es/accessibility#what-your-screen-reader-hears), cuántos milisegundos Claude Code espera, con el cursor al inicio de la línea, antes de escribir una línea nueva o cambiada. Predeterminado `50`. Establezca `0` para escribir inmediatamente. Claude Code limita la espera a `5000`. Requiere Claude Code v2.1.233 o posterior |208| `CLAUDE_AX_PREPARK_MS` | En el [modo de lector de pantalla](/docs/es/accessibility), cuántos milisegundos espera Claude Code antes de escribir una línea nueva o modificada. Predeterminado `0`, por lo que Claude Code no espera. Antes de v2.1.287, el valor predeterminado era `50`. Claude Code limita la espera a `5000`. Requiere Claude Code v2.1.233 o posterior |

209| `CLAUDE_AX_SCREEN_READER` | Establezca en `1` para renderizar salida amigable con lector de pantalla: texto plano sin bordes decorativos o animaciones. Establezca en `0` para forzar el modo de lector de pantalla desactivado incluso cuando [`axScreenReader`](/docs/es/settings-reference#axscreenreader) es `true`. La bandera [`--ax-screen-reader`](/docs/es/cli-reference#cli-flags) tiene prioridad. Requiere Claude Code v2.1.181 o posterior |209| `CLAUDE_AX_SCREEN_READER` | Establezca en `1` para renderizar salida amigable con lector de pantalla: texto plano sin bordes decorativos o animaciones. Establezca en `0` para forzar el modo de lector de pantalla desactivado incluso cuando [`axScreenReader`](/docs/es/settings-reference#axscreenreader) es `true`. La bandera [`--ax-screen-reader`](/docs/es/cli-reference#cli-flags) tiene prioridad. Requiere Claude Code v2.1.181 o posterior |

210| `CLAUDE_AX_STARTUP_QUIET_MS` | En [modo de lector de pantalla](/docs/es/accessibility), cuántos milisegundos Claude Code mantiene el primer renderizado de interfaz después de la línea de confirmación de inicio, para que su lector de pantalla pueda hablar la línea en su totalidad antes de que la nueva salida la interrumpa. Predeterminado `3000`. Establezca `0` para renderizar inmediatamente. Claude Code limita la retención a `600000` (10 minutos). Su primer pulsación de tecla termina la retención temprano. Requiere Claude Code v2.1.217 o posterior |210| `CLAUDE_AX_STARTUP_QUIET_MS` | En [modo de lector de pantalla](/docs/es/accessibility), cuántos milisegundos Claude Code mantiene el primer renderizado de interfaz después de la línea de confirmación de inicio, para que su lector de pantalla pueda hablar la línea en su totalidad antes de que la nueva salida la interrumpa. Predeterminado `3000`. Establezca `0` para renderizar inmediatamente. Claude Code limita la retención a `600000` (10 minutos). Su primer pulsación de tecla termina la retención temprano. Requiere Claude Code v2.1.217 o posterior |

211| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | Vuelva al directorio de trabajo original después de cada comando Bash o PowerShell en la sesión principal |211| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | Vuelva al directorio de trabajo original después de cada comando Bash o PowerShell en la sesión principal |


245| `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN` | Establezca en `1` para desabilitar [renderizado de pantalla completa](/docs/es/fullscreen) y usar el renderizador de pantalla principal clásico. La conversación permanece en el desplazamiento nativo de su terminal para que `Cmd+f` y el modo de copia de tmux funcionen como de costumbre. Tiene prioridad sobre `CLAUDE_CODE_NO_FLICKER` y la configuración [`tui`](/docs/es/settings-reference#tui). También puede cambiar con `/tui default`. No se aplica a sesiones de fondo abiertas desde [vista de agente](/docs/es/agent-view), que siempre usan renderizado de pantalla completa |245| `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN` | Establezca en `1` para desabilitar [renderizado de pantalla completa](/docs/es/fullscreen) y usar el renderizador de pantalla principal clásico. La conversación permanece en el desplazamiento nativo de su terminal para que `Cmd+f` y el modo de copia de tmux funcionen como de costumbre. Tiene prioridad sobre `CLAUDE_CODE_NO_FLICKER` y la configuración [`tui`](/docs/es/settings-reference#tui). También puede cambiar con `/tui default`. No se aplica a sesiones de fondo abiertas desde [vista de agente](/docs/es/agent-view), que siempre usan renderizado de pantalla completa |

246| `CLAUDE_CODE_DISABLE_ARTIFACT` | Establezca en `1` para desactivar la herramienta [Artifact](/docs/es/artifacts), que publica la salida de sesión como una página web privada en claude.ai. Una vez que lo establece, ningún archivo de configuración activa la herramienta de nuevo. Para desactivar la herramienta desde un archivo de configuración en su lugar, establezca [`enableArtifact`](/docs/es/settings-reference#enableartifact) en `false`; la clave deprecated [`disableArtifact`](/docs/es/settings-reference#disableartifact) también la desactiva |246| `CLAUDE_CODE_DISABLE_ARTIFACT` | Establezca en `1` para desactivar la herramienta [Artifact](/docs/es/artifacts), que publica la salida de sesión como una página web privada en claude.ai. Una vez que lo establece, ningún archivo de configuración activa la herramienta de nuevo. Para desactivar la herramienta desde un archivo de configuración en su lugar, establezca [`enableArtifact`](/docs/es/settings-reference#enableartifact) en `false`; la clave deprecated [`disableArtifact`](/docs/es/settings-reference#disableartifact) también la desactiva |

247| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Establezca en `1` para desabilitar el procesamiento de archivos adjuntos. Las menciones de archivos con sintaxis `@` se envían como texto simple en lugar de expandirse en contenido de archivo |247| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Establezca en `1` para desabilitar el procesamiento de archivos adjuntos. Las menciones de archivos con sintaxis `@` se envían como texto simple en lugar de expandirse en contenido de archivo |

248| `CLAUDE_CODE_DISABLE_AUTH_REFRESH_LOCK` | Establécela en `1` para que un proceso de Claude Code ejecute él mismo su comando [`gcpAuthRefresh`](/docs/es/settings-reference#gcpauthrefresh) o [`awsAuthRefresh`](/docs/es/settings-reference#awsauthrefresh) en lugar de esperar mientras otro proceso lo ejecuta. Requiere Claude Code v2.1.286 o posterior |

248| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Establezca en `1` para desabilitar [memoria automática](/docs/es/memory#auto-memory). Establezca en `0` para forzar la memoria automática incluso cuando el modo `--bare` o [`autoMemoryEnabled: false`](/docs/es/settings-reference#automemoryenabled) la deshabilitaría de otra manera. Cuando está deshabilitada, Claude no crea ni carga archivos de memoria automática |249| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Establezca en `1` para desabilitar [memoria automática](/docs/es/memory#auto-memory). Establezca en `0` para forzar la memoria automática incluso cuando el modo `--bare` o [`autoMemoryEnabled: false`](/docs/es/settings-reference#automemoryenabled) la deshabilitaría de otra manera. Cuando está deshabilitada, Claude no crea ni carga archivos de memoria automática |

249| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Establezca en `1` para desabilitar toda la funcionalidad de tareas de fondo, incluido el parámetro `run_in_background` en herramientas Bash y subagente, auto-envío a segundo plano y el atajo Ctrl+B |250| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Establezca en `1` para desabilitar toda la funcionalidad de tareas de fondo, incluido el parámetro `run_in_background` en herramientas Bash y subagente, auto-envío a segundo plano y el atajo Ctrl+B |

250| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_DEFAULT` | Establezca en `1` para evitar que Claude Code trate una respuesta de transmisión de [Amazon Bedrock](/docs/es/amazon-bedrock) con un encabezado `Content-Type` faltante o vacío como flujo de eventos binario de Amazon Bedrock. De forma predeterminada, Claude Code asume que una puerta de enlace eliminó el encabezado de una respuesta por lo demás sin modificar, por lo que decodifica el cuerpo y la transmisión sigue funcionando. Establezca esto solo para una puerta de enlace que también re-emita la transmisión como eventos enviados por servidor; Claude Code luego lee el cuerpo sin encabezado como eventos enviados por servidor en su lugar. Requiere Claude Code v2.1.239 o posterior |251| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_DEFAULT` | Establezca en `1` para evitar que Claude Code trate una respuesta de transmisión de [Amazon Bedrock](/docs/es/amazon-bedrock) con un encabezado `Content-Type` faltante o vacío como flujo de eventos binario de Amazon Bedrock. De forma predeterminada, Claude Code asume que una puerta de enlace eliminó el encabezado de una respuesta por lo demás sin modificar, por lo que decodifica el cuerpo y la transmisión sigue funcionando. Establezca esto solo para una puerta de enlace que también re-emita la transmisión como eventos enviados por servidor; Claude Code luego lee el cuerpo sin encabezado como eventos enviados por servidor en su lugar. Requiere Claude Code v2.1.239 o posterior |

errors.md +794 −767

Details

4 4 

5# Referencia de errores5# Referencia de errores

6 6 

7> Busque mensajes de error en tiempo de ejecución de Claude Code con lo que cada uno significa y cómo solucionarlo.7> Busca mensajes de error en tiempo de ejecución de Claude Code con lo que cada uno significa y cómo solucionarlo.

8 8 

9Esta página enumera los errores en tiempo de ejecución que Claude Code muestra y cómo recuperarse de cada uno, además de qué verificar cuando las respuestas parecen estar mal sin un error. Para errores de instalación como `command not found` o fallos de TLS durante la configuración, consulte [Solucionar problemas de instalación e inicio de sesión](/docs/es/troubleshoot-install).9Esta página enumera los errores en tiempo de ejecución que Claude Code muestra y cómo recuperarte de cada uno, además de qué verificar cuando las respuestas parecen estar mal sin un error. Para errores de instalación como `command not found` o fallos de TLS durante la configuración, consulta [Solucionar problemas de instalación e inicio de sesión](/docs/es/troubleshoot-install).

10 10 

11Excepto por [errores de Wrapper e IDE](#wrapper-and-ide-errors), que el programa de lanzamiento imprime en lugar de Claude Code mismo, estos errores y comandos de recuperación se aplican en toda la CLI, la [aplicación de escritorio](/docs/es/desktop) y [sesiones en la nube](/docs/es/claude-code-on-the-web), ya que los tres envuelven la misma CLI de Claude Code. Para otros problemas específicos de la superficie, consulte la sección de solución de problemas en la página de esa superficie.11Excepto por [errores de Wrapper e IDE](#wrapper-and-ide-errors), que el programa de lanzamiento imprime en lugar de Claude Code mismo, estos errores y comandos de recuperación se aplican en toda la CLI, la [aplicación de escritorio](/docs/es/desktop) y [sesiones en la nube](/docs/es/claude-code-on-the-web), ya que las tres envuelven la misma CLI de Claude Code. Para otros problemas específicos de la superficie, consulta la sección de solución de problemas en la página de esa superficie.

12 12 

13<Note>13<Note>

14 Claude Code llama a la API de Claude para respuestas del modelo, por lo que la mayoría de los errores en tiempo de ejecución se asignan a un código de error de API subyacente. Esta página cubre lo que cada error significa dentro de Claude Code y cómo recuperarse. Para las definiciones de código de estado HTTP sin procesar, consulte la [referencia de errores de la plataforma Claude](https://platform.claude.com/docs/en/api/errors).14 Claude Code llama a la API de Claude para respuestas del modelo, por lo que la mayoría de los errores en tiempo de ejecución se asignan a un código de error de API subyacente. Esta página cubre lo que cada error significa dentro de Claude Code y cómo recuperarte. Para las definiciones de código de estado HTTP sin procesar, consulta la [referencia de errores de la plataforma Claude](https://platform.claude.com/docs/en/api/errors).

15</Note>15</Note>

16 16 

17<h2 id="find-your-error">17<h2 id="find-your-error">

18 Encuentre su error18 Encuentra tu error

19</h2>19</h2>

20 20 

21Haga coincidir el mensaje que ve con una sección a continuación.21Busca el mensaje que ves en la tabla y ve a la sección correspondiente.

22 22 

23| Mensaje | Sección |23| Mensaje | Sección |

24| :- | :- |24| :- | :- |

25| `API Error: 500 Internal server error` | [Errores del servidor](#api-error-500-internal-server-error) |25| `API Error: 500 Internal server error` | [Errores del servidor](#api-error-500-internal-server-error) |

26| `API Error: Repeated 529 Overloaded errors` | [Errores del servidor](#api-error-repeated-529-overloaded-errors) |26| `API Error: Repeated 529 Overloaded errors` | [Errores del servidor](#api-error-repeated-529-overloaded-errors) |

27| `Opus is experiencing high load` / `Fable is experiencing high load` | [Errores del servidor](#api-error-repeated-529-overloaded-errors) |27| `Opus is experiencing high load` / `Fable is experiencing high load` | [Errores del servidor](#api-error-repeated-529-overloaded-errors) |

28| `Request timed out` | [Errores del servidor](#request-timed-out), o [Red](#unable-to-connect-to-api) si el mensaje menciona su conexión a internet |28| `Request timed out` | [Errores del servidor](#request-timed-out), o [Red](#unable-to-connect-to-api) si el mensaje menciona tu conexión a internet |

29| `API Error: No response from API` | [Errores del servidor](#no-response-from-api) |29| `API Error: No response from API` | [Errores del servidor](#no-response-from-api) |

30| `Server error mid-response. The response above may be incomplete.` | [Errores del servidor](#the-response-above-may-be-incomplete) |30| `Server error mid-response. The response above may be incomplete.` | [Errores del servidor](#the-response-above-may-be-incomplete) |

31| `Connection lost mid-response` / `Your computer went to sleep mid-response` / `The response stopped arriving` | [Errores del servidor](#the-response-above-may-be-incomplete) |31| `Connection lost mid-response` / `Your computer went to sleep mid-response` / `The response stopped arriving` | [Errores del servidor](#the-response-above-may-be-incomplete) |


75| `Remote Control stopped — the app running this session is now signed in to a different Claude account` | [Autenticación](#remote-control-stopped-because-the-app-running-the-session-signed-out-or-switched-accounts) |75| `Remote Control stopped — the app running this session is now signed in to a different Claude account` | [Autenticación](#remote-control-stopped-because-the-app-running-the-session-signed-out-or-switched-accounts) |

76| `Remote Control stopped — the app running this session is signed out of Claude` | [Autenticación](#remote-control-stopped-because-the-app-running-the-session-signed-out-or-switched-accounts) |76| `Remote Control stopped — the app running this session is signed out of Claude` | [Autenticación](#remote-control-stopped-because-the-app-running-the-session-signed-out-or-switched-accounts) |

77| `Couldn't verify your organization's policy for remote control` | [Solucionar problemas de Remote Control](/docs/es/remote-control#couldnt-verify-your-organizations-policy-for-remote-control) |77| `Couldn't verify your organization's policy for remote control` | [Solucionar problemas de Remote Control](/docs/es/remote-control#couldnt-verify-your-organizations-policy-for-remote-control) |

78| `Remote Control is disabled by your organization's policy` | [Solucionar problemas de Remote Control](/docs/es/remote-control#remote-control-is-disabled-by-your-organizations-policy) |

79| `Remote Control was turned off by your organization's policy` | [Solucionar problemas de Remote Control](/docs/es/remote-control#remote-control-was-turned-off-by-your-organizations-policy) |

78| `OAuth token revoked` / `OAuth token has expired` | [Autenticación](#oauth-token-revoked-or-expired) |80| `OAuth token revoked` / `OAuth token has expired` | [Autenticación](#oauth-token-revoked-or-expired) |

79| `API Error: 401 Invalid authentication credentials` | [Autenticación](#api-error-401-invalid-authentication-credentials) |81| `API Error: 401 Invalid authentication credentials` | [Autenticación](#api-error-401-invalid-authentication-credentials) |

80| `Login expired · Please run /login` | [Autenticación](#login-expired) |82| `Login expired · Please run /login` | [Autenticación](#login-expired) |


112| `AWS default-chain credential resolve timed out` | [Autenticación](#aws-default-chain-credential-resolve-timed-out) |114| `AWS default-chain credential resolve timed out` | [Autenticación](#aws-default-chain-credential-resolve-timed-out) |

113| `Timed out after 60s waiting for AWS` | [Autenticación](#bedrock-setup-verification-timed-out-waiting-for-aws) |115| `Timed out after 60s waiting for AWS` | [Autenticación](#bedrock-setup-verification-timed-out-waiting-for-aws) |

114| `A request to AWS timed out. Check your network and proxy settings, then try again.` | [Autenticación](#bedrock-setup-verification-timed-out-waiting-for-aws) |116| `A request to AWS timed out. Check your network and proxy settings, then try again.` | [Autenticación](#bedrock-setup-verification-timed-out-waiting-for-aws) |

115| `Could not load the default credentials` on Google Cloud's Agent Platform | [Autenticación](#could-not-load-aws-or-google-cloud-credentials) |117| `Could not load the default credentials` en Agent Platform de Google Cloud | [Autenticación](#could-not-load-aws-or-google-cloud-credentials) |

116| `Unable to connect to API` | [Red](#unable-to-connect-to-api) |118| `Unable to connect to API` | [Red](#unable-to-connect-to-api) |

117| `Connection refused —` / `Can't reach the API server —` / `No internet route —` / `Couldn't connect through your proxy` / `Connection dropped`, each with an error code in parentheses | [Red](#unable-to-connect-to-api) |119| `Connection refused —` / `Can't reach the API server —` / `No internet route —` / `Couldn't connect through your proxy` / `Connection dropped`, cada uno con un código de error entre paréntesis | [Red](#unable-to-connect-to-api) |

118| `Unable to connect to Anthropic services` during setup | [Red](#unable-to-connect-to-anthropic-services) |120| `Unable to connect to Anthropic services` durante la configuración | [Red](#unable-to-connect-to-anthropic-services) |

119| `Socket is closed` | [Red](#socket-is-closed) |121| `Socket is closed` | [Red](#socket-is-closed) |

120| `Waiting for API response · will retry in` | [Reintentos automáticos](#automatic-retries), o [Red](#unable-to-connect-to-api) si persiste |122| `Waiting for API response · will retry in` | [Reintentos automáticos](#automatic-retries), o [Red](#unable-to-connect-to-api) si persiste |

121| `API returned an empty or malformed response` | [Red](#api-returned-an-empty-or-malformed-response) |123| `API returned an empty or malformed response` | [Red](#api-returned-an-empty-or-malformed-response) |

122| `Streaming response ended before any complete data was received` | [Red](#streaming-response-ended-before-any-complete-data-was-received) |124| `Streaming response ended before any complete data was received` | [Red](#streaming-response-ended-before-any-complete-data-was-received) |

123| `Bedrock streaming response has content-type "..."; expected "application/vnd.amazon.eventstream"` | [Red](#bedrock-streaming-response-has-an-unexpected-content-type) |125| `Bedrock streaming response has content-type "..."; expected "application/vnd.amazon.eventstream"` | [Red](#bedrock-streaming-response-has-an-unexpected-content-type) |

124| `SSL certificate verification failed` | [Red](#ssl-certificate-errors) |126| `SSL certificate verification failed` | [Red](#ssl-certificate-errors) |

125| `SSL certificate error (...)` during login or startup | [Red](#ssl-certificate-errors) |127| `SSL certificate error (...)` durante el inicio de sesión o el arranque | [Red](#ssl-certificate-errors) |

126| `unable to get local issuer certificate` | [Red](#ssl-certificate-errors) |128| `unable to get local issuer certificate` | [Red](#ssl-certificate-errors) |

127| `403` with `x-deny-reason: host_not_allowed` in a cloud or routine session | [Red](#host-not-allowed-in-a-cloud-session) |129| `403` con `x-deny-reason: host_not_allowed` en una sesión en la nube o de rutina | [Red](#host-not-allowed-in-a-cloud-session) |

128| `proxy refused the connection` | [Red](#the-proxy-refused-the-connection) |130| `proxy refused the connection` | [Red](#the-proxy-refused-the-connection) |

129| `403` with `This GraphQL query is not enabled for this session` in a cloud session | [GitHub proxy](/docs/es/cloud-environments#github-proxy) |131| `403` con `This GraphQL query is not enabled for this session` en una sesión en la nube | [Proxy de GitHub](/docs/es/cloud-environments#github-proxy) |

130| `The cloud environments service returned an empty response` / `The cloud environments service returned a response in an unexpected format` | [Red](#the-cloud-environments-service-returned-an-empty-or-unexpected-response) |132| `The cloud environments service returned an empty response` / `The cloud environments service returned a response in an unexpected format` | [Red](#the-cloud-environments-service-returned-an-empty-or-unexpected-response) |

131| `Couldn't reconnect to your Remote Control session` | [Red](#couldnt-reconnect-to-your-remote-control-session) |133| `Couldn't reconnect to your Remote Control session` | [Red](#couldnt-reconnect-to-your-remote-control-session) |

132| `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) |134| `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) |


137| `Prompt is too long · this conversation is a single exchange` / `A single-exchange conversation cannot be compacted` | [Errores de solicitud](#prompt-is-too-long) |139| `Prompt is too long · this conversation is a single exchange` / `A single-exchange conversation cannot be compacted` | [Errores de solicitud](#prompt-is-too-long) |

138| `Context limit reached · /compact or /clear to continue` | [Errores de solicitud](#prompt-is-too-long) |140| `Context limit reached · /compact or /clear to continue` | [Errores de solicitud](#prompt-is-too-long) |

139| `Context limit reached · /clear to continue` | [Errores de solicitud](#prompt-is-too-long) |141| `Context limit reached · /clear to continue` | [Errores de solicitud](#prompt-is-too-long) |

140| `capability_rejected: prompt_too_long` on a Claude apps gateway session | [Errores de solicitud](#prompt-is-too-long) |142| `capability_rejected: prompt_too_long` en una sesión del gateway de aplicaciones de Claude | [Errores de solicitud](#prompt-is-too-long) |

141| `upstream rejected the request` / `request too large for this upstream` on a Claude apps gateway session | [Mensajes de error ascendentes](/docs/es/claude-apps-gateway-config#upstream-error-messages) |143| `upstream rejected the request` / `request too large for this upstream` en una sesión del gateway de aplicaciones de Claude | [Mensajes de error ascendentes](/docs/es/claude-apps-gateway-config#upstream-error-messages) |

142| `upstream rate limit exceeded` on a Claude apps gateway session | [Mensajes de error ascendentes](/docs/es/claude-apps-gateway-config#upstream-error-messages) |144| `upstream rate limit exceeded` en una sesión del gateway de aplicaciones de Claude | [Mensajes de error ascendentes](/docs/es/claude-apps-gateway-config#upstream-error-messages) |

143| `all upstreams failed (N attempted)` on a Claude apps gateway session | [Mensajes de error ascendentes](/docs/es/claude-apps-gateway-config#upstream-error-messages) |145| `all upstreams failed (N attempted)` en una sesión del gateway de aplicaciones de Claude | [Mensajes de error ascendentes](/docs/es/claude-apps-gateway-config#upstream-error-messages) |

144| `Claude Code may not be enabled for your organization` after a Claude apps gateway sign-in | [Solución de problemas de la puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway-deploy#troubleshooting) |146| `Claude Code may not be enabled for your organization` después de iniciar sesión en el gateway de aplicaciones de Claude | [Solución de problemas del gateway de aplicaciones de Claude](/docs/es/claude-apps-gateway-deploy#troubleshooting) |

145| `Context exceeds the ...-token limit by ... tokens` in `/context` output | [Errores de solicitud](#context-exceeds-the-token-limit) |147| `Context exceeds the ...-token limit by ... tokens` en la salida de `/context` | [Errores de solicitud](#context-exceeds-the-token-limit) |

146| `Request too large` | [Errores de solicitud](#request-too-large) |148| `Request too large` | [Errores de solicitud](#request-too-large) |

147| `Request too large for the API's 32MB request limit` | [Errores de solicitud](#request-too-large) |149| `Request too large for the API's 32MB request limit` | [Errores de solicitud](#request-too-large) |

148| `Image was too large` | [Errores de solicitud](#image-was-too-large) |150| `Image was too large` | [Errores de solicitud](#image-was-too-large) |


176| `role 'system' must precede an 'assistant' message` | [Errores de solicitud](#role-system-must-precede-an-assistant-message) |178| `role 'system' must precede an 'assistant' message` | [Errores de solicitud](#role-system-must-precede-an-assistant-message) |

177| `Invalid encrypted_content in search_result block` / `Invalid encrypted_index in text block` / `Failed to decrypt web search result content` | [Errores de solicitud](#invalid-encrypted-content-in-search-result-block) |179| `Invalid encrypted_content in search_result block` / `Invalid encrypted_index in text block` / `Failed to decrypt web search result content` | [Errores de solicitud](#invalid-encrypted-content-in-search-result-block) |

178| `Invalid encrypted_stdout in encrypted_code_execution_result block` | [Errores de solicitud](#invalid-encrypted-content-in-search-result-block) |180| `Invalid encrypted_stdout in encrypted_code_execution_result block` | [Errores de solicitud](#invalid-encrypted-content-in-search-result-block) |

179| `server_tool_use.name: Input should be` on every turn of a resumed session | [Errores de solicitud](#unsupported-tool-content-removed) |181| `server_tool_use.name: Input should be` en cada turno de una sesión reanudada | [Errores de solicitud](#unsupported-tool-content-removed) |

180| `<model> can't help with this. Start a new session to continue` | [Errores de solicitud](#usage-policy-refusal) |182| `<model> can't help with this. Start a new session to continue` | [Errores de solicitud](#usage-policy-refusal) |

181| `Claude Code is unable to respond to this request, which appears to violate our Usage Policy` | [Errores de solicitud](#usage-policy-refusal) |183| `Claude Code is unable to respond to this request, which appears to violate our Usage Policy` | [Errores de solicitud](#usage-policy-refusal) |

182| `<model>'s safeguards flagged this message` | [Errores de solicitud](#safety-measures-flagged-a-cybersecurity-topic) |184| `<model>'s safeguards flagged this message` | [Errores de solicitud](#safety-measures-flagged-a-cybersecurity-topic) |


186| `The connection dropped while downloading the update` | [Errores de instalación](#the-connection-dropped-while-downloading-the-update) |188| `The connection dropped while downloading the update` | [Errores de instalación](#the-connection-dropped-while-downloading-the-update) |

187| `Download timed out: exceeded the total deadline` | [Errores de instalación](#the-connection-dropped-while-downloading-the-update) |189| `Download timed out: exceeded the total deadline` | [Errores de instalación](#the-connection-dropped-while-downloading-the-update) |

188| `--bg and --print conflict` | [Errores de línea de comandos](#conflict-between-bg-and-print) |190| `--bg and --print conflict` | [Errores de línea de comandos](#conflict-between-bg-and-print) |

191| `Error: Cannot use both --append-subagent-system-prompt and --append-subagent-system-prompt-file. Please use only one.` | [Errores de línea de comandos](#conflict-between-a-system-prompt-flag-and-its-file-form) |

189| `Cloud sessions cannot be created from a --restricted session` | [Errores de línea de comandos](#cloud-sessions-cannot-be-created-from-a-restricted-session) |192| `Cloud sessions cannot be created from a --restricted session` | [Errores de línea de comandos](#cloud-sessions-cannot-be-created-from-a-restricted-session) |

190| `Cloud sessions are disabled by your organization's policy` | [Errores de línea de comandos](#cloud-sessions-are-disabled-by-your-organizations-policy) |193| `Cloud sessions are disabled by your organization's policy` | [Errores de línea de comandos](#cloud-sessions-are-disabled-by-your-organizations-policy) |

191| `Couldn't verify your organization's policy for cloud sessions` | [Errores de línea de comandos](#cloud-sessions-are-disabled-by-your-organizations-policy) |194| `Couldn't verify your organization's policy for cloud sessions` | [Errores de línea de comandos](#cloud-sessions-are-disabled-by-your-organizations-policy) |


197| `The current directory no longer exists (it was deleted or moved)` / `Can't read the current directory` | [Errores de línea de comandos](#the-current-directory-no-longer-exists) |200| `The current directory no longer exists (it was deleted or moved)` / `Can't read the current directory` | [Errores de línea de comandos](#the-current-directory-no-longer-exists) |

198| `Temp directory <dir> ... Refusing to use it` / `ENOSPC: no space left on device, mkdir '<dir>'` | [Errores de línea de comandos](#temp-directory-refused-or-cannot-be-created) |201| `Temp directory <dir> ... Refusing to use it` / `ENOSPC: no space left on device, mkdir '<dir>'` | [Errores de línea de comandos](#temp-directory-refused-or-cannot-be-created) |

199| `couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded` | [Errores de línea de comandos](#directory-couldnt-be-resolved-to-a-real-location) |202| `couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded` | [Errores de línea de comandos](#directory-couldnt-be-resolved-to-a-real-location) |

200| `Error: Workspace not trusted` when starting Remote Control | [Errores de línea de comandos](#workspace-not-trusted-when-starting-remote-control) |203| `Error: Workspace not trusted` al iniciar Remote Control | [Errores de línea de comandos](#workspace-not-trusted-when-starting-remote-control) |

201| `` `<flag>` before `remote-control` is not carried over to the sessions Remote Control starts `` | [Errores de línea de comandos](#not-carried-over-to-the-sessions-remote-control-starts) |204| `` `<flag>` before `remote-control` is not carried over to the sessions Remote Control starts `` | [Errores de línea de comandos](#not-carried-over-to-the-sessions-remote-control-starts) |

202| `` `claude import` is not yet available in this build `` | [Errores de línea de comandos](#claude-import-is-not-yet-available-in-this-build) |205| `` `claude import` is not yet available in this build `` | [Errores de línea de comandos](#claude-import-is-not-yet-available-in-this-build) |

203| `Could not read Claude Code config` | [Errores de línea de comandos](#could-not-read-claude-code-config) |206| `Could not read Claude Code config` | [Errores de línea de comandos](#could-not-read-claude-code-config) |


211| `Error: MCP tool <name> (passed via --permission-prompt-tool) not found` | [Errores de línea de comandos](#mcp-permission-prompt-tool-not-found) |214| `Error: MCP tool <name> (passed via --permission-prompt-tool) not found` | [Errores de línea de comandos](#mcp-permission-prompt-tool-not-found) |

212| `OAuth callback port <port> is already in use — another process may be holding it` | [Errores de línea de comandos](#oauth-callback-port-is-already-in-use) |215| `OAuth callback port <port> is already in use — another process may be holding it` | [Errores de línea de comandos](#oauth-callback-port-is-already-in-use) |

213| `No available ports for OAuth redirect` | [Errores de línea de comandos](#no-available-ports-for-oauth-redirect) |216| `No available ports for OAuth redirect` | [Errores de línea de comandos](#no-available-ports-for-oauth-redirect) |

214| `Shell command failed for pattern "..."`, from `/security-review` or any skill that injects dynamic context | [Errores de línea de comandos](#security-review-fails-without-origin-head) |217| `Shell command failed for pattern "..."`, de `/security-review` o de cualquier skill que inyecte contexto dinámico | [Errores de línea de comandos](#security-review-fails-without-origin-head) |

215| `Shell command permission check failed for pattern "..."`, from a skill that injects dynamic context | [Errores de línea de comandos](#security-review-fails-without-origin-head) |218| `Shell command permission check failed for pattern "..."`, de un skill que inyecta contexto dinámico | [Errores de línea de comandos](#security-review-fails-without-origin-head) |

216| ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found`` | [Errores de línea de comandos](#security-review-fails-without-origin-head) |219| ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found`` | [Errores de línea de comandos](#security-review-fails-without-origin-head) |

217| `Input must be provided either through stdin or as a prompt argument when using --print` | [Errores de línea de comandos](#input-must-be-provided-when-using-print) |220| `Input must be provided either through stdin or as a prompt argument when using --print` | [Errores de línea de comandos](#input-must-be-provided-when-using-print) |

218| `Error: Input contained only whitespace` | [Errores de línea de comandos](#input-contained-only-whitespace) |221| `Error: Input contained only whitespace` | [Errores de línea de comandos](#input-contained-only-whitespace) |

219| `Blank prompt — the message was only whitespace, so nothing was sent to the model.` | [Errores de línea de comandos](#input-contained-only-whitespace) |222| `Blank prompt — the message was only whitespace, so nothing was sent to the model.` | [Errores de línea de comandos](#input-contained-only-whitespace) |

220| `Error: stream-json input carried over 256M characters with no newline` | [Errores de línea de comandos](#stream-json-input-carried-over-256m-characters-with-no-newline) |223| `Error: stream-json input carried over 256M characters with no newline` | [Errores de línea de comandos](#stream-json-input-carried-over-256m-characters-with-no-newline) |

221| `Unknown command: /<name>`, with or without a `Did you mean` suggestion | [Errores de línea de comandos](#unknown-command) |224| `Unknown command: /<name>`, con o sin una sugerencia `Did you mean` | [Errores de línea de comandos](#unknown-command) |

222| `Diff is too large for ultrareview` / `PR #<N> is too large for ultrareview` | [Errores de línea de comandos](#diff-is-too-large-for-ultrareview) |225| `Diff is too large for ultrareview` / `PR #<N> is too large for ultrareview` | [Errores de línea de comandos](#diff-is-too-large-for-ultrareview) |

223| `Could not find merge-base with <branch>` | [Errores de línea de comandos](#could-not-find-merge-base-with-the-base-branch) |226| `Could not find merge-base with <branch>` | [Errores de línea de comandos](#could-not-find-merge-base-with-the-base-branch) |

224| `Your checkout has no branches (detached HEAD only)` | [Errores de línea de comandos](#your-checkout-has-no-branches) |227| `Your checkout has no branches (detached HEAD only)` | [Errores de línea de comandos](#your-checkout-has-no-branches) |

225| `Ultrareview clones <owner>/<repo> in the cloud with the GitHub account connected to your Claude account, and none is connected` | [Errores de línea de comandos](#no-github-account-is-connected-to-your-claude-account) |228| `Ultrareview clones <owner>/<repo> in the cloud with the GitHub account connected to your Claude account, and none is connected` | [Errores de línea de comandos](#no-github-account-is-connected-to-your-claude-account) |

226| `Your connected GitHub account can't see <owner>/<repo>` | [Errores de línea de comandos](#your-connected-github-account-cant-see-the-repository) |229| `Your connected GitHub account can't see <owner>/<repo>` | [Errores de línea de comandos](#your-connected-github-account-cant-see-the-repository) |

227| `The GitHub App preflight failed transiently (network or service hiccup) — retry in a moment to start from GitHub instead` | [Errores de línea de comandos](#the-github-app-preflight-failed-transiently) |230| `The GitHub App preflight failed transiently (network or service hiccup) — retry in a moment to start from GitHub instead` | [Errores de línea de comandos](#the-github-app-preflight-failed-transiently) |

228| `Not uploading this working tree` with `the upload cannot follow that setting` | [Errores de línea de comandos](#the-repository-upload-cant-follow-a-git-setting) |231| `Not uploading this working tree` con `the upload cannot follow that setting` | [Errores de línea de comandos](#the-repository-upload-cant-follow-a-git-setting) |

229| `GitHub isn't connected to your Claude account, so this repository can't be cloned in the cloud` | [Errores de línea de comandos](#github-isnt-connected-to-your-claude-account) |232| `GitHub isn't connected to your Claude account, so this repository can't be cloned in the cloud` | [Errores de línea de comandos](#github-isnt-connected-to-your-claude-account) |

230| `Single sign-on authorization needed` | [Errores de línea de comandos](#single-sign-on-authorization-needed) |233| `Single sign-on authorization needed` | [Errores de línea de comandos](#single-sign-on-authorization-needed) |

231| `Failed to resume the conversation` | [Errores de línea de comandos](#failed-to-resume-the-conversation) |234| `Failed to resume the conversation` | [Errores de línea de comandos](#failed-to-resume-the-conversation) |


236| `Couldn't open Claude Desktop` | [Errores de línea de comandos](#couldnt-open-claude-desktop) |239| `Couldn't open Claude Desktop` | [Errores de línea de comandos](#couldnt-open-claude-desktop) |

237| `Failed to open Claude Desktop. Please try opening it manually.` | [Errores de línea de comandos](#couldnt-open-claude-desktop) |240| `Failed to open Claude Desktop. Please try opening it manually.` | [Errores de línea de comandos](#couldnt-open-claude-desktop) |

238| `Couldn't read your Zed keymap` / `Couldn't back up your Zed keymap` / `Couldn't update your Zed keymap` | [Errores de línea de comandos](#terminal-setup-left-your-zed-keymap-unchanged) |241| `Couldn't read your Zed keymap` / `Couldn't back up your Zed keymap` / `Couldn't update your Zed keymap` | [Errores de línea de comandos](#terminal-setup-left-your-zed-keymap-unchanged) |

239| `Your Zed keymap isn't a readable list of atajos de teclado` | [Errores de línea de comandos](#terminal-setup-left-your-zed-keymap-unchanged) |242| `Your Zed keymap isn't a readable list of keybindings` | [Errores de línea de comandos](#terminal-setup-left-your-zed-keymap-unchanged) |

240| `Skill usage reports are not available on this connection.` | [Errores de línea de comandos](#skill-usage-reports-are-not-available-on-this-connection) |243| `Skill usage reports are not available on this connection.` | [Errores de línea de comandos](#skill-usage-reports-are-not-available-on-this-connection) |

241| `Custom output styles can't be selected over Remote Control or from a relayed message` | [Errores de línea de comandos](#custom-output-styles-cant-be-selected-over-remote-control) |244| `Custom output styles can't be selected over Remote Control or from a relayed message` | [Errores de línea de comandos](#custom-output-styles-cant-be-selected-over-remote-control) |

242| `Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load` | [Errores de línea de comandos](#output-styles-are-saved-to-local-settings-which-this-session-doesnt-load) |245| `Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load` | [Errores de línea de comandos](#output-styles-are-saved-to-local-settings-which-this-session-doesnt-load) |


246| `Marketplace name impersonates an official Anthropic/Claude marketplace` | [Errores de plugins](#claude-code-refuses-the-marketplace-name) |249| `Marketplace name impersonates an official Anthropic/Claude marketplace` | [Errores de plugins](#claude-code-refuses-the-marketplace-name) |

247| `Marketplace "<name>" is already added from a different source` | [Errores de plugins](#marketplace-is-already-added-from-a-different-source) |250| `Marketplace "<name>" is already added from a different source` | [Errores de plugins](#marketplace-is-already-added-from-a-different-source) |

248| `"<name>" is another spelling of "<reserved>", a reserved marketplace name` | [Errores de plugins](#marketplace-name-is-another-spelling-of-a-reserved-name) |251| `"<name>" is another spelling of "<reserved>", a reserved marketplace name` | [Errores de plugins](#marketplace-name-is-another-spelling-of-a-reserved-name) |

252| `Marketplace "<name>" is added but ignored` | [Solución de problemas de plugins](/docs/es/plugins/troubleshooting#marketplace-is-added-but-ignored) |

253| `Marketplace "<name>" is registered but was refused (see the debug log)` | [Solución de problemas de plugins](/docs/es/plugins/troubleshooting#marketplace-is-added-but-ignored) |

249| `references ${user_config.*} in a shell-form command` | [Errores de plugins](#plugin-command-references-user-config) |254| `references ${user_config.*} in a shell-form command` | [Errores de plugins](#plugin-command-references-user-config) |

250| `Monitor "<name>" from plugin <plugin> references ${user_config.*} in its command` | [Errores de plugins](#plugin-command-references-user-config) |255| `Monitor "<name>" from plugin <plugin> references ${user_config.*} in its command` | [Errores de plugins](#plugin-command-references-user-config) |

251| `headersHelper for MCP server '<name>' references ${user_config.*}` | [Errores de plugins](#plugin-command-references-user-config) |256| `headersHelper for MCP server '<name>' references ${user_config.*}` | [Errores de plugins](#plugin-command-references-user-config) |

252| `Plugin archive integrity check failed` | [Errores de plugins](#plugin-archive-integrity-check-failed) |257| `Plugin archive integrity check failed` | [Errores de plugins](#plugin-archive-integrity-check-failed) |

258| `An npm plugin source must name a registry package` | [Solución de problemas de plugins](/docs/es/plugins/troubleshooting#an-npm-plugin-source-must-name-a-registry-package) |

253| `path escapes plugin directory` | [Errores de plugins](#path-escapes-plugin-directory) |259| `path escapes plugin directory` | [Errores de plugins](#path-escapes-plugin-directory) |

254| `path could not be checked` | [Errores de plugins](#path-could-not-be-checked) |260| `path could not be checked` | [Errores de plugins](#path-could-not-be-checked) |

255| `its marketplace entry path does not stay inside the marketplace directory` | [Errores de plugins](#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory) |261| `its marketplace entry path does not stay inside the marketplace directory` | [Errores de plugins](#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory) |


315| `EACCES: permission denied, posix_spawn` | [Errores de sesión en segundo plano](#eacces-when-starting-a-background-session) |321| `EACCES: permission denied, posix_spawn` | [Errores de sesión en segundo plano](#eacces-when-starting-a-background-session) |

316| `exited before it became reachable` | [Errores de sesión en segundo plano](#background-service-exited-before-it-became-reachable) |322| `exited before it became reachable` | [Errores de sesión en segundo plano](#background-service-exited-before-it-became-reachable) |

317| `Couldn't start a background session (working directory no longer exists or is not accessible: ...)` | [Errores de sesión en segundo plano](#working-directory-no-longer-exists-when-starting-a-background-session) |323| `Couldn't start a background session (working directory no longer exists or is not accessible: ...)` | [Errores de sesión en segundo plano](#working-directory-no-longer-exists-when-starting-a-background-session) |

318| `Workspace not trusted.` when starting or restarting a background session | [Errores de sesión en segundo plano](#workspace-not-trusted-when-dispatching-a-background-session) |324| `Workspace not trusted.` al iniciar o reiniciar una sesión en segundo plano | [Errores de sesión en segundo plano](#workspace-not-trusted-when-dispatching-a-background-session) |

319| `Claude Code is being updated by npm on this machine (still not runnable after 2 min, ...)` | [Errores de sesión en segundo plano](#eacces-when-starting-a-background-session) |325| `Claude Code is being updated by npm on this machine (still not runnable after 2 min, ...)` | [Errores de sesión en segundo plano](#eacces-when-starting-a-background-session) |

320| `Claude Code process exited with code N` | [Errores de contenedor e IDE](#claude-code-process-exited-with-code-n) |326| `Claude Code process exited with code N` | [Errores de contenedor e IDE](#claude-code-process-exited-with-code-n) |

321| `The connection to Claude Code ended before this message completed` | [Errores de contenedor e IDE](#the-connection-to-claude-code-ended-before-this-message-completed) |327| `The connection to Claude Code ended before this message completed` | [Errores de contenedor e IDE](#the-connection-to-claude-code-ended-before-this-message-completed) |


418 Errores del servidor424 Errores del servidor

419</h2>425</h2>

420 426 

421La mayoría de estos errores provienen del proveedor de inferencia: el servicio de Anthropic en la API de Anthropic, y el servicio detrás del punto de conexión de ese proveedor en Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, o una puerta de enlace personalizada. [Auto mode cannot determine the safety of an action](#auto-mode-cannot-determine-the-safety-of-an-action) y [Agent terminated early due to an API error](#agent-terminated-early-due-to-an-api-error) también cubren causas de su lado, como una cuenta de Amazon Bedrock que no puede invocar el modelo clasificador o un subagente que alcanzó un límite de uso.427La mayoría de estos errores provienen del proveedor de inferencia: el servicio de Anthropic en la API de Anthropic, y el servicio detrás del endpoint de ese proveedor en Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry o un gateway personalizado. [Auto mode cannot determine the safety of an action](#auto-mode-cannot-determine-the-safety-of-an-action) y [Agent terminated early due to an API error](#agent-terminated-early-due-to-an-api-error) también cubren causas de tu lado, como una cuenta de Amazon Bedrock que no puede invocar el modelo clasificador o un subagente que alcanzó un límite de uso.

422 428 

423<h3 id="api-error-500-internal-server-error">429<h3 id="api-error-500-internal-server-error">

424 API Error: 500 Internal server error430 API Error: 500 Internal server error


430API Error: 500 Internal server error. This is a server-side issue, usually temporary — try again in a moment. If it persists, check https://status.claude.com.436API Error: 500 Internal server error. This is a server-side issue, usually temporary — try again in a moment. If it persists, check https://status.claude.com.

431```437```

432 438 

433La oración final indica dónde verificar la salud del servicio y varía según el proveedor. Las configuraciones de Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry nombran el estado del servicio de ese proveedor. Un `ANTHROPIC_BASE_URL` personalizado nombra el host de la puerta de enlace.439La oración final indica dónde verificar el estado del servicio y varía según el proveedor. Las configuraciones de Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry nombran el estado del servicio de ese proveedor. Un `ANTHROPIC_BASE_URL` personalizado nombra el host del gateway.

434 440 

435Un 5xx de la API en sí indica un fallo inesperado dentro de la API. No es causado por su prompt, configuración o cuenta.441Un 5xx de la propia API indica un fallo inesperado dentro de la API. No lo causa tu prompt, tu configuración ni tu cuenta.

436 442 

437Cuando un proxy, equilibrador de carga o puerta de enlace responde con una página de error HTML, el mensaje muestra el código de estado y el título de la página, como `API Error: 502 Bad Gateway`. Para una página sin título, el mensaje muestra el código de estado y su nombre estándar en su lugar. Antes de v2.1.281, el código de estado se eliminaba cuando la página tenía un título, y el marcado sin procesar de la página se imprimía cuando no tenía ninguno.443Cuando un proxy, balanceador de carga o gateway responde con una página de error HTML, el mensaje muestra el código de estado y el título de la página, como `API Error: 502 Bad Gateway`. Para una página sin título, el mensaje muestra en su lugar el código de estado y su nombre estándar. Antes de v2.1.281, el código de estado se omitía cuando la página tenía un título, y el marcado sin procesar de la página se imprimía cuando no tenía ninguno.

438 444 

439**Qué hacer:**445**Qué hacer:**

440 446 

441* Verifique [status.claude.com](https://status.claude.com), o la página de estado del proveedor nombrada en el mensaje, para incidentes activos447* Consulta [status.claude.com](https://status.claude.com), o la página de estado del proveedor nombrada en el mensaje, para ver si hay incidentes activos

442* Espere un minuto y luego envíe su mensaje nuevamente. Su mensaje original sigue en la conversación, así que para un prompt largo puede escribir `try again` en lugar de pegar todo de nuevo.448* Espera un minuto y luego envía tu mensaje de nuevo. Tu mensaje original sigue en la conversación, así que para un prompt largo puedes escribir `try again` en lugar de pegarlo completo.

443* Si el error persiste sin incidente publicado, ejecute `/feedback` para que Anthropic pueda investigar con los detalles de su solicitud. Consulte [Report an error](#report-an-error) si `/feedback` no está disponible en su entorno.449* Si el error persiste sin ningún incidente publicado, ejecuta `/feedback` para que Anthropic pueda investigar con los detalles de tu solicitud. Consulta [Informar un error](#report-an-error) si `/feedback` no está disponible en tu entorno.

444 450 

445<h3 id="api-error-repeated-529-overloaded-errors">451<h3 id="api-error-repeated-529-overloaded-errors">

446 API Error: Repeated 529 Overloaded errors452 API Error: Repeated 529 Overloaded errors

447</h3>453</h3>

448 454 

449La API está temporalmente a capacidad en todos los usuarios. Claude Code ya ha reintentado varias veces antes de mostrar este mensaje:455La API está temporalmente al límite de su capacidad para todos los usuarios. Claude Code ya reintentó varias veces antes de mostrar este mensaje:

450 456 

451```text theme={null}457```text theme={null}

452API Error: Repeated 529 Overloaded errors. The API is at capacity — this is usually temporary. Try again in a moment. If it persists, check https://status.claude.com.458API Error: Repeated 529 Overloaded errors. The API is at capacity — this is usually temporary. Try again in a moment. If it persists, check https://status.claude.com.

453```459```

454 460 

455La oración final varía según el proveedor de la misma manera que el error 500 anterior.461La oración final varía según el proveedor de la misma manera que en el error 500 anterior.

456 462 

457Un 529 no es su límite de uso y no cuenta contra su cuota.463Un 529 no es tu límite de uso y no cuenta contra tu cuota.

458 464 

459**Qué hacer:**465**Qué hacer:**

460 466 

461* Verifique [status.claude.com](https://status.claude.com), o la página de estado del proveedor nombrada en el mensaje, para avisos de capacidad467* Consulta [status.claude.com](https://status.claude.com), o la página de estado del proveedor nombrada en el mensaje, para ver si hay avisos de capacidad

462* Intente de nuevo en unos minutos468* Vuelve a intentarlo en unos minutos

463* Ejecute `/model` y cambie a un modelo diferente para continuar trabajando, ya que la capacidad se rastrea por modelo. Claude Code le solicita que haga esto cuando un modelo está bajo una carga particularmente alta, por ejemplo `Opus is experiencing high load, please use /model to switch to Sonnet`. En modelos Fable el mensaje nombra Fable.469* Ejecuta `/model` y cambia a un modelo diferente para seguir trabajando, ya que la capacidad se controla por modelo. Claude Code te pide que hagas esto cuando un modelo está bajo una carga particularmente alta, por ejemplo `Opus is experiencing high load, please use /model to switch to Sonnet`. En los modelos Fable, el mensaje nombra Fable.

464 470 

465 En una sesión que ejecuta la aplicación Claude Desktop, como la pestaña Code o Cowork, el mensaje dice `Opus is experiencing high load. Switch to Sonnet.` y cambia modelos con el selector de modelos de la aplicación.471 En una sesión que ejecuta la aplicación Claude Desktop, como la pestaña Code o Cowork, el mensaje dice `Opus is experiencing high load. Switch to Sonnet.` y cambias de modelo con el selector de modelos de la aplicación.

466 472 

467<h3 id="request-timed-out">473<h3 id="request-timed-out">

468 Request timed out474 Request timed out


474Request timed out480Request timed out

475```481```

476 482 

477Esto puede suceder durante períodos de alta carga o cuando el modelo está generando una respuesta muy grande. El tiempo de espera de solicitud predeterminado es de 10 minutos.483Esto puede ocurrir durante períodos de alta carga o cuando el modelo está generando una respuesta muy grande. El tiempo de espera predeterminado de la solicitud es de 10 minutos.

478 484 

479**Qué hacer:**485**Qué hacer:**

480 486 

481* Reintente la solicitud487* Reintenta la solicitud

482* Si la causa es una red lenta o un proxy, aumente `API_TIMEOUT_MS` como se describe en [Automatic retries](#automatic-retries)488* Si la causa es una red lenta o un proxy, aumenta `API_TIMEOUT_MS` como se describe en [Reintentos automáticos](#automatic-retries)

483* Si los tiempos de espera son frecuentes y su red es de otra manera saludable, consulte [Network and connection errors](#network-and-connection-errors) a continuación489* Si se agota el tiempo de espera con frecuencia y tu red por lo demás funciona bien, consulta [Errores de red y de conexión](#network-and-connection-errors) más abajo

484 490 

485<h3 id="no-response-from-api">491<h3 id="no-response-from-api">

486 No response from API492 No response from API

487</h3>493</h3>

488 494 

489Claude Code envió una solicitud de transmisión y la API no devolvió encabezados de respuesta dentro del plazo para el primer byte, por lo que Claude Code abortó la solicitud en lugar de esperar el tiempo de espera de solicitud completo `API_TIMEOUT_MS`, 10 minutos por defecto. Claude Code envía la solicitud nuevamente como máximo una vez, si el [retry budget](#tune-retry-behavior) lo permite. Cuando el reintento tampoco recibe respuesta, el turno termina con este mensaje, que muestra cuánto tiempo esperó cada intento. Cuando establece [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/es/env-vars), el límite de un reintento no se aplica y Claude Code reintenta bajo el presupuesto descrito en [Tune retry behavior](#tune-retry-behavior).495Claude Code envió una solicitud en streaming y la API no devolvió encabezados de respuesta dentro del plazo para el primer byte, así que Claude Code abortó la solicitud en lugar de esperar el tiempo de espera completo de la solicitud, `API_TIMEOUT_MS`, de 10 minutos por defecto. Claude Code envía la solicitud de nuevo como máximo una vez, si el [presupuesto de reintentos](#tune-retry-behavior) lo permite. Cuando el reintento tampoco recibe respuesta, el turno termina con este mensaje, que muestra cuánto tiempo esperó cada intento. Cuando estableces [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/es/env-vars), el límite de un solo reintento no se aplica y Claude Code reintenta según el presupuesto descrito en [Ajustar el comportamiento de los reintentos](#tune-retry-behavior).

490 496 

491```text theme={null}497```text theme={null}

492API Error: No response from API (waited 3m, then 10m on the retry). If a proxy or gateway on your network holds responses until they complete, raise API_TIMEOUT_MS or CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS to wait longer.498API Error: No response from API (waited 3m, then 10m on the retry). If a proxy or gateway on your network holds responses until they complete, raise API_TIMEOUT_MS or CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS to wait longer.

493```499```

494 500 

495Claude Code establece el tiempo de espera para los encabezados de respuesta del primer intento y el reintento por separado:501Claude Code establece por separado la espera de los encabezados de respuesta del primer intento y la del reintento:

496 502 

497* **First attempt**: [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/es/env-vars) cuando lo establece en 1 o más, limitado entre 10 segundos y 30 minutos. De lo contrario, Claude Code utiliza el tiempo de espera del vigilante a nivel de byte enumerado en [Streaming idle watchdogs](/docs/es/network-config#streaming-idle-watchdogs), por lo que las variables que cambian ese tiempo de espera cambian este tiempo de espera también. De cualquier manera, Claude Code agrega un segundo por cada 32KB del cuerpo de la solicitud.503* **Primer intento**: [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/es/env-vars) cuando lo estableces en 1 o más, limitado a un valor entre 10 segundos y 30 minutos. De lo contrario, Claude Code usa el tiempo de espera del watchdog a nivel de bytes indicado en [Watchdogs de inactividad del streaming](/docs/es/network-config#streaming-idle-watchdogs), así que las variables que cambian ese tiempo de espera también cambian esta espera. En cualquier caso, Claude Code agrega un segundo por cada 32KB del cuerpo de la solicitud.

498* **Retry**: un segundo menos que `API_TIMEOUT_MS`, justo bajo 10 minutos por defecto, para que el reintento pueda superar un proxy o puerta de enlace que mantiene la respuesta hasta que se completa la generación. En Amazon Bedrock, el reintento utiliza el mismo plazo que el primer intento, y el mensaje muestra una duración en lugar de dos.504* **Reintento**: un segundo menos que `API_TIMEOUT_MS`, poco menos de 10 minutos por defecto, para que el reintento pueda durar más que un proxy o gateway que retiene la respuesta hasta que termina la generación. En Amazon Bedrock, el reintento usa el mismo plazo que el primer intento, y el mensaje muestra una duración en lugar de dos.

499 505 

500Ningún tiempo de espera excede un segundo menos que un `API_TIMEOUT_MS` positivo, y un `API_TIMEOUT_MS` positivo bajo 11 segundos desactiva el plazo. El vigilante a nivel de byte comienza solo una vez que llegan los encabezados de respuesta, por lo que una respuesta que deja de enviar bytes después de eso sigue las [stalled-stream rules](#automatic-retries) en su lugar.506Ninguna de las dos esperas supera un segundo menos que un `API_TIMEOUT_MS` positivo, y un `API_TIMEOUT_MS` positivo inferior a 11 segundos desactiva el plazo. El watchdog a nivel de bytes se inicia solo cuando llegan los encabezados de respuesta, así que una respuesta que deja de enviar bytes después de eso sigue las [reglas de streaming detenido](#automatic-retries) en lugar de este plazo.

501 507 

502**Qué hacer:**508**Qué hacer:**

503 509 

504* Envíe su mensaje nuevamente. Su mensaje original sigue en la conversación, así que para un prompt largo puede escribir `try again` en lugar de pegar todo de nuevo.510* Envía tu mensaje de nuevo. Tu mensaje original sigue en la conversación, así que para un prompt largo puedes escribir `try again` en lugar de pegarlo completo.

505* Si se repite, trátelo como un [network or proxy problem](#unable-to-connect-to-api).511* Si se repite, trátalo como un [problema de red o de proxy](#unable-to-connect-to-api).

506* Si un proxy o puerta de enlace en su red mantiene respuestas hasta que se completan, aumente `API_TIMEOUT_MS` para que el reintento espere más tiempo. En Amazon Bedrock, aumente `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` también.512* Si un proxy o gateway de tu red retiene las respuestas hasta que se completan, aumenta `API_TIMEOUT_MS` para que el reintento espere más. En Amazon Bedrock, aumenta también `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`.

507* Si el primer intento sigue agotando el tiempo de espera y el reintento luego tiene éxito, aumente `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` para que el primer intento también espere lo suficiente.513* Si al primer intento se le sigue agotando el tiempo de espera y luego el reintento tiene éxito, aumenta `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` para que el primer intento también espere lo suficiente.

508 514 

509Antes de v2.1.242, Claude Code esperaba el tiempo de espera de solicitud completo `API_TIMEOUT_MS`, 10 minutos por defecto, antes de fallar una solicitud de transmisión sin respuesta. Antes de v2.1.261, el reintento esperaba el mismo plazo que el primer intento y el mensaje no mostraba duraciones.515Antes de v2.1.242, Claude Code esperaba el tiempo de espera completo de la solicitud, `API_TIMEOUT_MS`, de 10 minutos por defecto, antes de dar por fallida una solicitud en streaming sin respuesta. Antes de v2.1.261, el reintento esperaba el mismo plazo que el primer intento y el mensaje no mostraba duraciones.

510 516 

511<h3 id="the-response-above-may-be-incomplete">517<h3 id="the-response-above-may-be-incomplete">

512 The response above may be incomplete518 The response above may be incomplete

513</h3>519</h3>

514 520 

515Una solicitud de transmisión falló mientras la respuesta aún estaba en progreso, después de que Claude completó un bloque de texto o una llamada de herramienta, o había comenzado uno después de terminar su pensamiento. Reenviar la solicitud podría ejecutar las mismas llamadas de herramienta dos veces, por lo que Claude Code mantiene la salida que Claude completó y agrega este aviso en lugar de descartar el turno. Qué variante ve nombra la causa:521Una solicitud en streaming falló mientras la respuesta aún estaba en curso, después de que Claude completó un bloque de texto o una llamada a herramienta, o de que empezó uno tras terminar su pensamiento. Reenviar la solicitud podría ejecutar las mismas llamadas a herramientas dos veces, así que Claude Code conserva la salida que Claude completó y agrega este aviso en lugar de descartar el turno. La variante que ves indica la causa:

516 522 

517```text theme={null}523```text theme={null}

518API Error: Server error mid-response. The response above may be incomplete.524API Error: Server error mid-response. The response above may be incomplete.


523API Error: The response stream was malformed. The response above may be incomplete.529API Error: The response stream was malformed. The response above may be incomplete.

524```530```

525 531 

526* `Server error mid-response`: un error de servidor sobrecargado o 5xx a mitad de la transmisión. Esta variante requiere Claude Code v2.1.199 o posterior; antes de eso, ese caso descartaba la salida parcial e informaba todo el turno como un error.532* `Server error mid-response`: un error de sobrecarga o un error de servidor 5xx a mitad del streaming. Esta variante requiere Claude Code v2.1.199 o posterior; antes, en ese caso se descartaba la salida parcial y se informaba todo el turno como un error.

527* `Connection lost mid-response`: la conexión se perdió. También ve esta variante cuando un proxy o puerta de enlace termina el cuerpo de la respuesta limpiamente antes de que la respuesta haya terminado.533* `Connection lost mid-response`: la conexión se perdió. También ves esta variante cuando un proxy o gateway cierra limpiamente el cuerpo de la respuesta antes de que la respuesta haya terminado.

528* `Your computer went to sleep mid-response`: Claude Code detectó que su computadora se durmió mientras la respuesta se transmitía. Una vez que su computadora se despierte, Claude Code trata la conexión como rota y deja de leer de ella.534* `Your computer went to sleep mid-response`: Claude Code detectó que tu computadora entró en suspensión mientras la respuesta se transmitía en streaming. Cuando tu computadora se reactiva, Claude Code trata la conexión como rota y deja de leer de ella.

529* `Part of the response never arrived`: un evento de transmisión se perdió entre la API y Claude Code, por lo que un evento posterior hizo referencia a contenido que nunca llegó. Antes de v2.1.281, este caso terminaba el turno con `API Error: Content block not found`.535* `Part of the response never arrived`: un evento del streaming se perdió entre la API y Claude Code, así que un evento posterior hizo referencia a contenido que nunca llegó. Antes de v2.1.281, en este caso el turno terminaba con `API Error: Content block not found`.

530* `The response stream was malformed`: un evento llegó para un bloque de contenido que ya había terminado, o un evento llegó dañado. Un evento dañado es uno cuyos datos no son JSON válido, cuyo contenido falta, o cuyo contenido no coincide con el tipo del evento. Antes de v2.1.284, el error sin procesar del analizador, como uno que comienza con `API Error: JSON Parse error`, aparecía en su lugar cuando un evento con JSON inválido llegaba después de que Claude había completado su pensamiento, un bloque de texto, o una llamada de herramienta.536* `The response stream was malformed`: llegó un evento para un bloque de contenido que ya había terminado, o llegó un evento dañado. Un evento dañado es aquel cuyos datos no son JSON válido, cuyo contenido falta o cuyo contenido no coincide con el tipo del evento. Antes de v2.1.284, en su lugar aparecía el error sin procesar del analizador, como uno que empieza con `API Error: JSON Parse error`, cuando un evento con JSON no válido llegaba después de que Claude había completado su pensamiento, un bloque de texto o una llamada a herramienta. Antes de v2.1.287, cuando un [guardrail de Amazon Bedrock](/docs/es/amazon-bedrock#aws-guardrails) bloqueaba una respuesta que ya había transmitido pensamiento y algo de texto, esta variante aparecía en lugar del mensaje del guardrail.

531* `The response stopped arriving`: la conexión se mantuvo abierta pero dejó de entregar datos, por lo que el vigilante de inactividad de transmisión la abortó. Antes de v2.1.222, Claude Code también podría informar este fallo en conexiones de [gateway](/docs/es/gateways) alcanzadas a través de `ANTHROPIC_BASE_URL` o `ANTHROPIC_AWS_BASE_URL` mientras los pings de keep-alive del servidor aún llegaban, porque contaba solo eventos de respuesta analizados allí; actualizar detiene esos tiempos de espera espurios en esas rutas. Las puertas de enlace alcanzadas a través de una URL base de proveedor como `ANTHROPIC_BEDROCK_BASE_URL` no están envueltas por el vigilante de bytes; consulte [Streaming idle watchdogs](/docs/es/network-config#streaming-idle-watchdogs).537* `The response stopped arriving`: la conexión siguió abierta pero dejó de entregar datos, así que el watchdog de inactividad del streaming la abortó. Antes de v2.1.222, Claude Code también podía informar este fallo en conexiones a un [gateway](/docs/es/gateways) a través de `ANTHROPIC_BASE_URL` o `ANTHROPIC_AWS_BASE_URL` mientras aún llegaban los pings de keep-alive del servidor, porque allí solo contaba los eventos de respuesta analizados; actualizar elimina esos tiempos de espera agotados falsos en esas rutas. Los gateways a los que se accede mediante una URL base de proveedor como `ANTHROPIC_BEDROCK_BASE_URL` no están cubiertos por el watchdog de bytes; consulta [Watchdogs de inactividad del streaming](/docs/es/network-config#streaming-idle-watchdogs).

532 538 

533Antes de v2.1.227, `Connection lost mid-response` decía `Connection closed mid-response` y `The response stopped arriving` decía `Response stalled mid-stream`.539Antes de v2.1.227, `Connection lost mid-response` decía `Connection closed mid-response` y `The response stopped arriving` decía `Response stalled mid-stream`.

534 540 

535Cuando un evento de transmisión perdido, duplicado o dañado llega antes de que Claude haya comenzado cualquier texto o llamada de herramienta, no ve este aviso:541Cuando un evento del streaming perdido, duplicado o dañado llega antes de que Claude haya empezado cualquier texto o llamada a herramienta, no ves este aviso:

536 542 

537* Si Claude había completado solo su pensamiento, Claude Code reemite la solicitud. Cuando los reemitidos se rompen de la misma manera, el turno termina con `Part of the response never arrived and no response was produced. Try again.` o `The response stream was malformed and no response was produced. Try again.`543* Si Claude solo había completado su pensamiento, Claude Code vuelve a emitir la solicitud. Cuando los streamings reemitidos fallan de la misma manera, el turno termina con `Part of the response never arrived and no response was produced. Try again.` o `The response stream was malformed and no response was produced. Try again.`

538* Si nada había completado, Claude Code reenvía la solicitud sin transmisión en su lugar. Si desactivó ese respaldo con [`CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK`](/docs/es/env-vars), el turno termina con `API Error: Content block not found` para un evento perdido o `API Error: Content block already closed` para uno duplicado. Para un evento dañado con el respaldo desactivado, el turno termina con `API Error: Stream event unreadable` o el error sin procesar del analizador.544* Si no se había completado nada, Claude Code reenvía en su lugar la solicitud sin streaming. Si desactivaste ese respaldo con [`CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK`](/docs/es/env-vars), el turno termina con `API Error: Content block not found` para un evento perdido o `API Error: Content block already closed` para uno duplicado. Para un evento dañado con el respaldo desactivado, el turno termina con `API Error: Stream event unreadable` o con el error sin procesar del analizador.

539 545 

540En cuatro casos, Claude Code maneja el fallo sin mostrar este aviso de inmediato:546En cuatro casos, Claude Code maneja el fallo sin mostrar este aviso de inmediato:

541 547 

542* Anteriormente en la respuesta, Claude Code reintenta el fallo o termina el turno con un error diferente. Consulte [Automatic retries](#automatic-retries).548* Si ocurre antes en la respuesta, Claude Code reintenta el fallo o termina el turno con un error diferente. Consulta [Reintentos automáticos](#automatic-retries).

543* Cuando uno de estos fallos llega después de que Claude ha terminado la respuesta, Claude Code mantiene la respuesta completa y termina el turno normalmente, sin este aviso. Antes de v2.1.222, Claude Code mostraba este aviso cuando la conexión se perdía o se estancaba después de que la respuesta terminaba, e informaba el turno como un error aunque la respuesta fuera completa.549* Cuando uno de estos fallos llega después de que Claude terminó la respuesta, Claude Code conserva la respuesta completa y termina el turno normalmente, sin este aviso. Antes de v2.1.222, Claude Code mostraba este aviso cuando la conexión se perdía o se detenía después de que la respuesta terminaba, e informaba el turno como un error aunque la respuesta estuviera completa.

544* En una [non-interactive session](/docs/es/headless), como una ejecución `-p`, una ejecución de [Agent SDK](/docs/es/agent-sdk/overview), o una [cloud session](/docs/es/claude-code-on-the-web), no tiene que enviar `continue` usted mismo cuando la respuesta cortada está en la conversación principal y contiene texto pero sin llamadas de herramienta: Claude Code mantiene la salida parcial e invita a Claude a continuar desde donde se detuvo, hasta tres veces seguidas. Ve este aviso para tal respuesta solo una vez que Claude Code ha agotado esas continuaciones. Antes de v2.1.246, Claude Code terminaba un turno no interactivo con este aviso en el primer corte.550* En una [sesión no interactiva](/docs/es/headless), como una ejecución con `-p`, una ejecución del [Agent SDK](/docs/es/agent-sdk/overview) o una [sesión en la nube](/docs/es/claude-code-on-the-web), no tienes que enviar `continue` tú mismo cuando la respuesta cortada está en la conversación principal y contiene texto pero ninguna llamada a herramienta: Claude Code conserva la salida parcial y le pide a Claude que continúe desde donde se detuvo, hasta tres veces seguidas. Solo ves este aviso para una respuesta así cuando Claude Code agotó esas continuaciones. Antes de v2.1.246, Claude Code terminaba un turno no interactivo con este aviso en el primer corte.

545* En un [subagent](/docs/es/sub-agents#api-errors-in-subagents), ya sea que la sesión sea interactiva o no: cuando su respuesta cortada contiene texto pero sin llamadas de herramienta, Claude Code invita al subagente a continuar. El aviso se convierte en el último mensaje del subagente solo una vez que esas continuaciones se agotan. Antes de v2.1.257, un subagente mostraba este aviso en el primer corte.551* En un [subagente](/docs/es/sub-agents#api-errors-in-subagents), sea la sesión interactiva o no: cuando su respuesta cortada contiene texto pero ninguna llamada a herramienta, Claude Code le pide al subagente que continúe. El aviso se convierte en el último mensaje del subagente solo cuando esas continuaciones se agotan. Antes de v2.1.257, un subagente mostraba este aviso en el primer corte.

546 552 

547**Qué hacer:**553**Qué hacer:**

548 554 

549* En una sesión interactiva, lea la respuesta que permanece en la pantalla: Claude Code mantiene cada bloque que Claude completó antes del error, pero descarta un bloque final interrumpido cuando el turno termina, por lo que las oraciones finales o llamadas de herramienta pueden faltar. Responda con `continue` para que Claude continúe desde su último bloque completado.555* En una sesión interactiva, lee la respuesta que queda en pantalla: Claude Code conserva cada bloque que Claude completó antes del error, pero descarta un bloque final interrumpido cuando termina el turno, así que es posible que falten las últimas oraciones o llamadas a herramientas. Responde con `continue` para que Claude retome desde su último bloque completado.

550* En [non-interactive mode](/docs/es/headless) (`-p`):556* En [modo no interactivo](/docs/es/headless) (`-p`):

551 * Con la salida de texto predeterminada, Claude Code imprime el último bloque de texto completado que aún mantiene de anteriormente en el turno, seguido de este mensaje. Cuando no mantiene ninguno, Claude Code imprime solo este mensaje, por ejemplo porque Claude Code compactó la conversación a mitad del turno y borró ese texto. Antes de v2.1.219, Claude Code imprimía solo este mensaje en la salida de texto `-p` y descartaba la respuesta que ya había producido.557 * Con la salida de texto predeterminada, Claude Code imprime el último bloque de texto completado que aún conserva de antes en el turno, seguido de este mensaje. Cuando no conserva ninguno, Claude Code imprime solo este mensaje, por ejemplo porque Claude Code compactó la conversación a mitad del turno y borró ese texto. Antes de v2.1.219, Claude Code imprimía solo este mensaje en la salida de texto de `-p` y descartaba la respuesta que ya había producido.

552 * Con `--output-format json` o `stream-json`, Claude Code informa este mensaje en el campo `result`.558 * Con `--output-format json` o `stream-json`, Claude Code informa este mensaje en el campo `result`.

553 * Para continuar el turno una vez que la conexión sea estable, reanude la sesión y envíe `continue` como se describe en [Continue conversations](/docs/es/headless#continue-conversations).559 * Para continuar el turno cuando la conexión sea estable, reanuda la sesión y envía `continue` como se describe en [Continuar conversaciones](/docs/es/headless#continue-conversations).

554 560 

555<h3 id="auto-mode-cannot-determine-the-safety-of-an-action">561<h3 id="auto-mode-cannot-determine-the-safety-of-an-action">

556 Auto mode cannot determine the safety of an action562 Auto mode cannot determine the safety of an action

557</h3>563</h3>

558 564 

559El modelo que [auto mode](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) utiliza para clasificar acciones no pudo producir una decisión, por lo que auto mode no aprobó la acción automáticamente. El mensaje que ve depende de cómo falló el clasificador.565El modelo que usa el [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) para clasificar acciones no pudo producir una decisión, así que el modo automático no aprobó la acción automáticamente. El mensaje que ves depende de cómo falló el clasificador.

560 566 

561Las lecturas, búsquedas y ediciones dentro de su directorio de trabajo omiten el clasificador, por lo que continúan funcionando en todos estos casos.567Las lecturas, búsquedas y ediciones dentro de tu directorio de trabajo omiten el clasificador, así que siguen funcionando en todos estos casos.

562 568 

563Cuando el modelo clasificador no está disponible:569Cuando el modelo clasificador no está disponible:

564 570 


566<model> is temporarily unavailable, so auto mode cannot determine the safety of <tool> right now. Wait a moment and then try this action again.572<model> is temporarily unavailable, so auto mode cannot determine the safety of <tool> right now. Wait a moment and then try this action again.

567```573```

568 574 

569Cuando Claude Code puede determinar la categoría de fallo, nombra la categoría entre paréntesis después de `temporarily unavailable`, por ejemplo `<model> is temporarily unavailable (rate-limited), so auto mode cannot determine the safety of <tool> right now`. Las categorías son `(rate-limited)`, `(overloaded)`, `(server error)`, `(timed out)`, y `(connection failed)`. Si `(timed out)` o `(connection failed)` se repite, verifique su conexión; consulte [Unable to connect to API](#unable-to-connect-to-api). Antes de v2.1.229, el mensaje nunca nombraba una categoría y decía `Wait briefly and then try this action again`.575Cuando Claude Code puede determinar la categoría del fallo, la nombra entre paréntesis después de `temporarily unavailable`, por ejemplo `<model> is temporarily unavailable (rate-limited), so auto mode cannot determine the safety of <tool> right now`. Las categorías son `(rate-limited)`, `(overloaded)`, `(server error)`, `(timed out)` y `(connection failed)`. Si `(timed out)` o `(connection failed)` se repite, revisa tu conexión; consulta [Unable to connect to API](#unable-to-connect-to-api). Antes de v2.1.229, el mensaje nunca nombraba una categoría y decía `Wait briefly and then try this action again`.

570 576 

571Cuando ninguna categoría encaja, el mensaje aparece sin categoría entre paréntesis; más de un fallo produce esa forma. En [Amazon Bedrock](/docs/es/amazon-bedrock), incluyendo el [Mantle endpoint](/docs/es/amazon-bedrock#use-the-mantle-endpoint), también aparece cuando su cuenta de AWS no puede invocar el modelo nombrado en el mensaje, y ese fallo se repite en cada reintento hasta que su cuenta tenga acceso al modelo.577Cuando ninguna categoría encaja, el mensaje aparece sin categoría entre paréntesis; más de un fallo produce esa forma. En [Amazon Bedrock](/docs/es/amazon-bedrock), incluido el [endpoint de Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint), también aparece cuando tu cuenta de AWS no puede invocar el modelo nombrado en el mensaje, y ese fallo se repite en cada reintento hasta que tu cuenta obtenga acceso al modelo.

572 578 

573**Qué hacer:**579**Qué hacer:**

574 580 

575* Reintente después de unos segundos; Claude ve el mismo mensaje y generalmente reintenta por su cuenta. Un fallo transitorio no está relacionado con [auto mode eligibility](/docs/es/permission-modes#eliminate-prompts-with-auto-mode); no necesita cambiar la configuración581* Reintenta después de unos segundos; Claude ve el mismo mensaje y normalmente reintenta por su cuenta. Un fallo transitorio no tiene relación con los [requisitos del modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode); no necesitas cambiar la configuración

576* Si los reintentos siguen fallando, continúe con tareas de solo lectura y vuelva a la acción bloqueada más tarde582* Si los reintentos siguen fallando, continúa con tareas de solo lectura y vuelve más tarde a la acción bloqueada

577* En Amazon Bedrock, si el mensaje regresa en cada reintento, verifique que su cuenta pueda invocar el modelo que nombra: para modelos estándar de Amazon Bedrock, confirme que su [IAM policy](/docs/es/amazon-bedrock#iam-configuration) permite invocarlo; para IDs de modelo de Mantle, [contact your AWS account team](/docs/es/amazon-bedrock#mantle-endpoint-errors)583* En Amazon Bedrock, si el mensaje reaparece en cada reintento, comprueba que tu cuenta pueda invocar el modelo que nombra: para los modelos estándar de Amazon Bedrock, confirma que tu [política de IAM](/docs/es/amazon-bedrock#iam-configuration) permite invocarlo; para los IDs de modelo de Mantle, [contacta al equipo de tu cuenta de AWS](/docs/es/amazon-bedrock#mantle-endpoint-errors)

578 584 

579Cuando una solicitud de clasificador falla porque su token OAuth expiró o fue rotado por otra sesión, Claude Code actualiza el token e reintenta la solicitud una vez, por lo que una expiración de token rutinaria no aparece como este mensaje. Antes de v2.1.216, un token expirado o rotado fallaba en cada solicitud de clasificador, y auto mode negaba cada acción verificada con este mensaje hasta que el token se actualizara.585Cuando una solicitud al clasificador falla porque tu token de OAuth expiró o fue rotado por otra sesión, Claude Code actualiza el token y reintenta la solicitud una vez, así que una expiración habitual del token no aparece como este mensaje. Antes de v2.1.216, un token expirado o rotado hacía fallar cada solicitud al clasificador, y el modo automático denegaba cada acción verificada con este mensaje hasta que se actualizaba el token.

580 586 

581Cuando el clasificador devolvió una respuesta no analizable:587Cuando el clasificador devolvió una respuesta que no se pudo analizar:

582 588 

583```text theme={null}589```text theme={null}

584Auto mode could not evaluate this action and is blocking it for safety — run with --debug for details590Auto mode could not evaluate this action and is blocking it for safety — run with --debug for details


586 592 

587**Qué hacer:**593**Qué hacer:**

588 594 

589* Reintente la acción; esto generalmente tiene éxito en el siguiente intento595* Reintenta la acción; normalmente funciona en el siguiente intento

590* Ejecute `claude --debug` y repita la acción para ver la respuesta del clasificador subyacente en el registro de depuración596* Ejecuta `claude --debug` y repite la acción para ver los detalles en el registro de depuración

591 597 

592Cuando una verificación de seguridad de API separada bloqueó la solicitud del clasificador debido al contenido de la conversación anterior:598Cuando una verificación de seguridad de la API independiente bloqueó la solicitud al clasificador debido a contenido anterior de la conversación:

593 599 

594```text theme={null}600```text theme={null}

595Auto mode could not evaluate this action and is blocking it for safety — a safety check separate from auto mode blocked this request because of earlier conversation content — it isn't about the action itself — run with --debug for details601Auto mode could not evaluate this action and is blocking it for safety — a safety check separate from auto mode blocked this request because of earlier conversation content — it isn't about the action itself — run with --debug for details

596```602```

597 603 

598Claude Code niega la acción pero le dice a Claude que esto no es un juicio de que la acción sea insegura, y que continúe con otras tareas en lugar de reintentar. Estas denegaciones no cuentan hacia [auto mode's pause thresholds](/docs/es/permission-modes#when-auto-mode-falls-back). En una ejecución `-p` [non-interactive](/docs/es/headless), Claude Code no detiene la ejecución. Lo que Claude recibe depende de dónde solicitó la acción:604Claude Code deniega la acción, pero le indica a Claude que esto no es un juicio de que la acción sea insegura y que continúe con otras tareas en lugar de reintentar. Estas denegaciones no cuentan para los [umbrales de pausa del modo automático](/docs/es/permission-modes#when-auto-mode-falls-back). En una ejecución [no interactiva](/docs/es/headless) con `-p`, Claude Code no detiene la ejecución. Lo que recibe Claude depende de dónde solicitó la acción:

599 605 

600* A un [background subagent](/docs/es/sub-agents#run-subagents-in-foreground-or-background) en una ejecución `-p` sin `--input-format stream-json`, Claude Code devuelve un resultado de error que contiene `Agent aborted: auto mode classifier request refused by the safety safeguard in headless mode`606* A un [subagente en segundo plano](/docs/es/sub-agents#run-subagents-in-foreground-or-background) en una ejecución con `-p` sin `--input-format stream-json`, Claude Code le devuelve un resultado de error que contiene `Agent aborted: auto mode classifier request refused by the safety safeguard in headless mode`

601* En todos los demás lugares, incluyendo sesiones interactivas y la conversación principal de una ejecución `-p`, Claude Code devuelve esa denegación a Claude607* En todos los demás casos, incluidas las sesiones interactivas y la conversación principal de una ejecución con `-p`, Claude Code le devuelve esa denegación a Claude

602 608 

603Antes de v2.1.225, Claude Code contaba estas denegaciones hacia los umbrales de pausa y devolvía el mismo mensaje de rechazo que un bloque de clasificador genuino.609Antes de v2.1.225, Claude Code contaba estos rechazos para los umbrales de pausa y devolvía el mismo mensaje de rechazo que un bloqueo real del clasificador.

604 610 

605**Qué hacer:**611**Qué hacer:**

606 612 

607* Esto no es una decisión sobre su acción. El contenido ya en su conversación activó un filtro de seguridad en la API cuando auto mode envió la conversación al clasificador613* Esto no es una decisión sobre tu acción. Contenido que ya estaba en tu conversación activó un filtro de seguridad en la API cuando el modo automático envió la conversación al clasificador

608* Reintentar no ayudará; el mismo contenido de conversación activará el filtro nuevamente614* Reintentar no servirá; el mismo contenido de la conversación volverá a activar el filtro

609* En una sesión interactiva, cambie a un [permission mode](/docs/es/permission-modes) diferente para que pueda aprobar la acción cuando se le solicite615* En una sesión interactiva, cambia a otro [modo de permisos](/docs/es/permission-modes) para poder aprobar la acción cuando se te solicite

610* Inicie una conversación nueva sin el contenido que activa616* Inicia una conversación nueva sin el contenido que activa el filtro

611 617 

612Cuando la conversación ha crecido más que la ventana de contexto del clasificador:618Cuando la conversación superó el tamaño de la ventana de contexto del clasificador:

613 619 

614```text theme={null}620```text theme={null}

615Auto mode classifier transcript exceeded context window — falling back to manual approval (try /compact to reduce conversation size)621Auto mode classifier transcript exceeded context window — falling back to manual approval (try /compact to reduce conversation size)

616```622```

617 623 

618Lo que sucede con la acción depende de dónde Claude la solicitó:624Lo que sucede con la acción depende de dónde la solicitó Claude:

619 625 

620* En una sesión interactiva, auto mode vuelve a un prompt de permiso normal para esa acción para que pueda aprobarla o negarla manualmente626* En una sesión interactiva, el modo automático recurre a una solicitud de permiso normal para esa acción, para que puedas aprobarla o denegarla manualmente

621* A un [background subagent](/docs/es/sub-agents#run-subagents-in-foreground-or-background) en una ejecución `-p` [non-interactive](/docs/es/headless) sin `--input-format stream-json`, Claude Code devuelve un resultado de error que contiene `Agent aborted: auto mode classifier transcript exceeded context window in headless mode`, y la ejecución continúa627* A un [subagente en segundo plano](/docs/es/sub-agents#run-subagents-in-foreground-or-background) en una ejecución [no interactiva](/docs/es/headless) con `-p` sin `--input-format stream-json`, Claude Code le devuelve un resultado de error que contiene `Agent aborted: auto mode classifier transcript exceeded context window in headless mode`, y la ejecución continúa

622* En otro lugar en una ejecución `-p` sin un [`--permission-prompt-tool`](/docs/es/cli-reference#cli-flags), no hay prompt para volver, por lo que la acción no se ejecuta y la ejecución continúa628* En cualquier otro punto de una ejecución con `-p` sin [`--permission-prompt-tool`](/docs/es/cli-reference#cli-flags), no hay ninguna solicitud a la que recurrir, así que la acción no se ejecuta y la ejecución continúa

623 629 

624**Qué hacer:**630**Qué hacer:**

625 631 

626* En una sesión interactiva, apruebe o niegue la acción en el prompt que aparece632* En una sesión interactiva, aprueba o deniega la acción en la solicitud que aparece

627* En una sesión interactiva, ejecute `/compact` para reducir el tamaño de la conversación para que las acciones posteriores se ajusten nuevamente dentro de la ventana del clasificador633* En una sesión interactiva, ejecuta `/compact` para reducir el tamaño de la conversación y que las acciones siguientes vuelvan a caber en la ventana del clasificador

628 634 

629<h3 id="the-server-returned-no-safety-verdict">635<h3 id="the-server-returned-no-safety-verdict">

630 The server returned no safety verdict636 The server returned no safety verdict

631</h3>637</h3>

632 638 

633Bajo [server-side classifier review](/docs/es/permission-modes#server-side-classifier-review), auto mode niega una acción cuando el servidor no da un veredicto para ella. La denegación nombra una categoría entre paréntesis cuando Claude Code puede determinar una, como `(timed out)`:639Con la [revisión del clasificador en el servidor](/docs/es/permission-modes#server-side-classifier-review), el modo automático deniega una acción cuando el servidor no da ningún veredicto sobre ella. La denegación nombra una categoría entre paréntesis cuando Claude Code puede determinarla, como `(timed out)`:

634 640 

635```text theme={null}641```text theme={null}

636The server-side auto mode classifier gave no verdict (timed out), so auto mode cannot determine the safety of <tool>.642The server-side auto mode classifier gave no verdict (timed out), so auto mode cannot determine the safety of <tool>.

637```643```

638 644 

639El resto del mensaje le dice a Claude si un reintento puede ayudar. Antes de algunas de estas denegaciones, Claude Code espera para que el siguiente intento de Claude no siga de inmediato. Durante la espera en una sesión interactiva, el spinner muestra `Auto mode check unavailable` con una cuenta regresiva, y presionar `Esc` interrumpe el turno.645El resto del mensaje le indica a Claude si un reintento puede ayudar. Antes de algunas de estas denegaciones, Claude Code espera para que el siguiente intento de Claude no llegue de inmediato. Durante la espera en una sesión interactiva, el spinner muestra `Auto mode check unavailable` con una cuenta regresiva, y al presionar `Esc` se interrumpe el turno.

640 646 

641Después de diez respuestas seguidas sin veredicto, auto mode detiene el turno:647Después de diez respuestas seguidas sin veredicto, el modo automático detiene el turno:

642 648 

643```text theme={null}649```text theme={null}

644Auto mode is unavailable — the server returned no safety verdict for the last 10 responses, so Claude stopped. Send a message to try again, or switch out of auto mode.650Auto mode is unavailable — the server returned no safety verdict for the last 10 responses, so Claude stopped. Send a message to try again, or switch out of auto mode.

645```651```

646 652 

647El mensaje de parada aparece en un lugar diferente en cada tipo de sesión:653El mensaje de detención aparece en un lugar distinto en cada tipo de sesión:

648 654 

649* En una sesión interactiva, el mensaje aparece como una advertencia en la transcripción y el turno termina655* En una sesión interactiva, el mensaje aparece como advertencia en la transcripción y el turno termina

650* En una ejecución `-p` [non-interactive](/docs/es/headless), la ejecución termina e informa un error de ejecución. Con la salida de texto predeterminada, el mensaje se imprime en stderr.656* En una ejecución [no interactiva](/docs/es/headless) con `-p`, la ejecución termina e informa un error de ejecución. Con la salida de texto predeterminada, el mensaje se imprime en stderr.

651* Cuando un [subagent](/docs/es/sub-agents) alcanzó el límite, el subagente se detiene antes de terminar, y Claude recibe lo que produjo con una nota de que auto mode lo detuvo657* Cuando un [subagente](/docs/es/sub-agents) alcanzó el límite, el subagente se detiene antes de terminar, y Claude recibe lo que haya producido junto con una nota de que el modo automático lo detuvo

652 658 

653**Qué hacer:**659**Qué hacer:**

654 660 

655* Envíe otro mensaje para que Claude intente de nuevo. El recuento de respuestas comienza de nuevo.661* Envía otro mensaje para que Claude lo intente de nuevo. El recuento de respuestas se reinicia.

656* Si la parada se repite y sus solicitudes pasan a través de una [LLM gateway or proxy](/docs/es/llm-gateway), verifique si corta respuestas de transmisión o las reescribe. [Server-side classifier review](/docs/es/permission-modes#server-side-classifier-review) dice qué comportamiento de puerta de enlace causa denegaciones, y la [gateway compatibility guide](/docs/es/llm-gateway-protocol#feature-pass-through) enumera qué pasar sin cambios.662* Si la detención se repite y tus solicitudes pasan por un [gateway de LLM o proxy](/docs/es/llm-gateway), comprueba si corta las respuestas en streaming o las reescribe. [Revisión del clasificador en el servidor](/docs/es/permission-modes#server-side-classifier-review) indica qué comportamiento del gateway causa denegaciones, y la [guía de compatibilidad de gateways](/docs/es/llm-gateway-protocol#feature-pass-through) enumera lo que debe pasar sin cambios.

657* Establezca `CLAUDE_CODE_AUTO_MODE_SERVER=0` antes de iniciar Claude Code para usar sus propias solicitudes de clasificador en su lugar. Antes de v2.1.281, Claude Code no leía la variable en una conexión directa a la API de Anthropic.663* Establece `CLAUDE_CODE_AUTO_MODE_SERVER=0` antes de iniciar Claude Code para que use en su lugar sus propias solicitudes al clasificador. Antes de v2.1.281, Claude Code no leía la variable en una conexión directa a la API de Anthropic.

658* Para aprobar las acciones usted mismo en su lugar, [switch out of auto mode](/docs/es/permission-modes#switch-permission-modes)664* Para aprobar tú mismo las acciones, [sal del modo automático](/docs/es/permission-modes#switch-permission-modes)

659 665 

660Antes de v2.1.280, Claude Code negaba cada acción de una respuesta sin veredicto de inmediato y nunca detenía el turno.666Antes de v2.1.280, Claude Code denegaba de inmediato cada acción de una respuesta sin veredicto y nunca detenía el turno.

661 667 

662<h3 id="agent-terminated-early-due-to-an-api-error">668<h3 id="agent-terminated-early-due-to-an-api-error">

663 Agent terminated early due to an API error669 Agent terminated early due to an API error

664</h3>670</h3>

665 671 

666La solicitud de API de un [subagent](/docs/es/sub-agents) falló terminalmente, por ejemplo porque se alcanzó un límite de uso o los reintentos de un error de servidor se agotaron, por lo que el subagente se detuvo antes de terminar su tarea. Este mensaje requiere Claude Code v2.1.199 o posterior; antes de eso, el texto de error de la API se devolvía a Claude como si fuera el resultado del subagente.672La solicitud a la API de un [subagente](/docs/es/sub-agents) falló de forma definitiva, por ejemplo porque se alcanzó un límite de uso o se agotaron los reintentos de un error de servidor, así que el subagente se detuvo antes de terminar su tarea. Este mensaje requiere Claude Code v2.1.199 o posterior; antes, el texto del error de la API se devolvía a Claude como si fuera el resultado del subagente.

667 673 

668```text theme={null}674```text theme={null}

669Agent terminated early due to an API error: <error detail>675Agent terminated early due to an API error: <error detail>


671 677 

672**Qué hacer:**678**Qué hacer:**

673 679 

674* Haga coincidir el detalle del error después de los dos puntos con su propia sección en esta página, como [Usage limits](#usage-limits) o [Server errors](#server-errors), y siga los pasos de esa sección680* Busca el detalle del error que aparece después de los dos puntos en su propia sección de esta página, como [Límites de uso](#usage-limits) o [Errores del servidor](#server-errors), y sigue los pasos de esa sección

675* Una vez que el error subyacente se aclare, pida a Claude que reintente la tarea o [resume the subagent](/docs/es/sub-agents#resume-subagents)681* Cuando se resuelva el error subyacente, pídele a Claude que reintente la tarea o [reanuda el subagente](/docs/es/sub-agents#resume-subagents)

676 682 

677Cuando una limitación de velocidad, sobrecarga o error de servidor interrumpe un subagente en primer plano que ya produjo salida de texto, Claude recibe esa salida parcial marcada como incompleta en lugar de este error. Un subagente cuya única salida fueron llamadas de herramienta también obtiene este error; en v2.1.199 eso devolvía un resultado parcial vacío en su lugar. Consulte [API errors in subagents](/docs/es/sub-agents#api-errors-in-subagents).683Cuando un rate limit, una sobrecarga o un error de servidor interrumpe un subagente en primer plano que ya produjo salida de texto, Claude recibe esa salida parcial marcada como incompleta en lugar de este error. Un subagente cuya única salida fueron llamadas a herramientas también recibe este error; en v2.1.199, ese caso devolvía en su lugar un resultado parcial vacío. Consulta [Errores de API en subagentes](/docs/es/sub-agents#api-errors-in-subagents).

678 684 

679<h2 id="usage-limits">685<h2 id="usage-limits">

680 Límites de uso686 Límites de uso


885 Errores de autenticación891 Errores de autenticación

886</h2>892</h2>

887 893 

888Estos errores significan que Claude Code no puede probar quién eres ante la API. Ejecuta `/status` en cualquier momento para ver qué credencial está activa actualmente.894Estos errores significan que Claude Code no puede demostrar tu identidad ante la API. Ejecuta `/status` en cualquier momento para ver qué credencial está activa actualmente.

889 895 

890<h3 id="not-logged-in">896<h3 id="not-logged-in">

891 No iniciaste sesión897 No has iniciado sesión

892</h3>898</h3>

893 899 

894No hay una credencial válida disponible para esta sesión.900No hay ninguna credencial válida disponible para esta sesión.

895 901 

896```text theme={null}902```text theme={null}

897Not logged in · Please run /login903Not logged in · Please run /login

898```904```

899 905 

900En una sesión que ejecuta la aplicación Claude Desktop, como la pestaña Code o Cowork, el mensaje dice `Authentication required · Sign in again to continue`, e inicias sesión nuevamente desde la aplicación.906En una sesión que ejecuta la aplicación Claude Desktop, como la pestaña Code o Cowork, el mensaje dice `Authentication required · Sign in again to continue`, y vuelves a iniciar sesión desde la aplicación.

907 

908Si inicias sesión con tu cuenta de claude.ai en otra ventana de Claude Code que usa el mismo [directorio de configuración](/docs/es/claude-directory), una sesión interactiva que muestra este mensaje empieza a usar ese inicio de sesión por sí sola. No necesitas reiniciarla.

909 

910Antes de v2.1.286 en macOS, la sesión podía seguir mostrando el mensaje después de que iniciaras sesión desde otra ventana. En esas versiones, reinicia la sesión que muestra el mensaje.

901 911 

902**Qué hacer:**912**Qué hacer:**

903 913 

904* Ejecuta `/login` para autenticarte con tu suscripción de Claude o cuenta de Console914* Ejecuta `/login` para autenticarte con tu suscripción de Claude o tu cuenta de Console

905* Si esperabas que una variable de entorno te autenticara, confirma que `ANTHROPIC_API_KEY` esté configurada y exportada en el shell donde lanzaste `claude`915* Si esperabas que una variable de entorno te autenticara, confirma que `ANTHROPIC_API_KEY` esté definida y exportada en el shell donde iniciaste `claude`

906* Para CI o automatización donde el inicio de sesión interactivo no es posible, configura un script [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) que obtenga una clave al iniciar916* Para CI o automatización donde el inicio de sesión interactivo no es posible, configura un script [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) que obtenga una clave al iniciar

907* Consulta [Precedencia de autenticación](/docs/es/authentication#authentication-precedence) para entender qué credencial usa Claude Code cuando hay varias presentes917* Consulta [Precedencia de autenticación](/docs/es/authentication#authentication-precedence) para entender qué credencial usa Claude Code cuando hay varias presentes

908 918 

909Si se te pide que inicies sesión repetidamente, consulta [No iniciaste sesión o token expirado](/docs/es/troubleshoot-install#not-logged-in-or-token-expired) para verificaciones del reloj del sistema y pasos de recuperación del almacenamiento de credenciales de macOS.919Si se te pide iniciar sesión repetidamente, consulta [No has iniciado sesión o el token expiró](/docs/es/troubleshoot-install#not-logged-in-or-token-expired) para ver las comprobaciones del reloj del sistema y los pasos de recuperación del almacenamiento de credenciales de macOS.

910 920 

911<h3 id="could-not-resolve-authentication-method">921<h3 id="could-not-resolve-authentication-method">

912 No se pudo resolver el método de autenticación922 No se pudo resolver el método de autenticación

913</h3>923</h3>

914 924 

915La sesión llegó al cliente de API sin ninguna credencial. Las [sesiones en segundo plano](/docs/es/agent-view) y las sesiones en la nube muestran este mensaje cuando el worker inicia sin una credencial. Las ejecuciones interactivas, `-p` y Agent SDK reportan la misma condición que [No iniciaste sesión](#not-logged-in) y escriben esta cadena solo en su registro de depuración, así que si la encontraste allí, sigue esa entrada en su lugar.925La sesión llegó al cliente de la API sin ninguna credencial. Las [sesiones en segundo plano](/docs/es/agent-view) y las sesiones en la nube muestran este mensaje cuando el worker se inicia sin una credencial. Las ejecuciones interactivas, con `-p` y del Agent SDK informan la misma condición como [No has iniciado sesión](#not-logged-in) y escriben esta cadena solo en su registro de depuración, así que si la encontraste ahí, sigue esa entrada en su lugar.

916 926 

917```text theme={null}927```text theme={null}

918Could not resolve authentication method. Expected one of apiKey, authToken, credentials, config, or profile to be set. Or for one of the "X-Api-Key" or "Authorization" headers to be explicitly omitted928Could not resolve authentication method. Expected one of apiKey, authToken, credentials, config, or profile to be set. Or for one of the "X-Api-Key" or "Authorization" headers to be explicitly omitted

919```929```

920 930 

921En versiones actuales el error significa que no había credencial disponible para el proceso worker. Antes de v2.1.174, una sesión en segundo plano asignada a un worker pre-inicializado inactivo podría fallar de esta manera incluso cuando había credenciales válidas configuradas. Antes de v2.1.176, una sesión en la nube que estaba inactiva antes de ser reclamada también podría. Actualiza para recuperarte.931En las versiones actuales, el error significa que no había ninguna credencial disponible para el proceso del worker. Antes de v2.1.174, una sesión en segundo plano asignada a un worker preinicializado inactivo podía fallar de esta forma incluso cuando había credenciales válidas configuradas. Antes de v2.1.176, también podía fallar así una sesión en la nube que había permanecido inactiva antes de ser reclamada. Actualiza para recuperarte.

922 932 

923**Qué hacer:**933**Qué hacer:**

924 934 

925* Actualiza a v2.1.176 o posterior si esto aparece en una sesión en segundo plano o en la nube y tus credenciales ya están configuradas935* Actualiza a v2.1.176 o posterior si esto aparece en una sesión en segundo plano o en la nube y tus credenciales ya están configuradas

926* Confirma que `ANTHROPIC_API_KEY`, `CLAUDE_CODE_OAUTH_TOKEN`, o tus credenciales del proveedor en la nube estén configuradas en el entorno que lanza el worker, no solo en tu shell interactivo936* Confirma que `ANTHROPIC_API_KEY`, `CLAUDE_CODE_OAUTH_TOKEN` o las credenciales de tu proveedor de nube estén definidas en el entorno que inicia el worker, no solo en tu shell interactivo

927* Para Agent SDK, consulta [configuración de autenticación en el inicio rápido](/docs/es/agent-sdk/quickstart#setup)937* Para el Agent SDK, consulta la [configuración de autenticación en el inicio rápido](/docs/es/agent-sdk/quickstart#setup)

928* Ejecuta `/status` en una sesión interactiva en el mismo entorno para confirmar qué fuente de credencial se resuelve938* Ejecuta `/status` en una sesión interactiva en el mismo entorno para confirmar qué fuente de credenciales se resuelve

929 939 

930<h3 id="invalid-api-key">940<h3 id="invalid-api-key">

931 Clave API inválida941 Clave de API no válida

932</h3>942</h3>

933 943 

934La variable de entorno `ANTHROPIC_API_KEY` o el script `apiKeyHelper` devolvieron una clave que la API rechazó, o Claude Code bloqueó una clave de `ANTHROPIC_API_KEY` antes de enviarla.944La variable de entorno `ANTHROPIC_API_KEY` o el script `apiKeyHelper` devolvió una clave que la API rechazó, o Claude Code bloqueó una clave de `ANTHROPIC_API_KEY` antes de enviarla.

935 945 

936```text theme={null}946```text theme={null}

937Invalid API key · Fix external API key947Invalid API key · Fix external API key

938```948```

939 949 

940Cuando el mensaje continúa después de `Fix external API key` con una descripción como `Invalid X-Api-Key header value from ANTHROPIC_API_KEY: it contains a line break at character 41 (120 characters on 2 lines).`, la API nunca vio la clave. Claude Code encontró un carácter que los encabezados HTTP no pueden llevar y detuvo la solicitud antes de enviarla. Consulta [Valor de encabezado de solicitud inválido](#invalid-request-header-value) para saber cómo leer la descripción y corregir el valor.950Cuando el mensaje continúa después de `Fix external API key` con una descripción como `Invalid X-Api-Key header value from ANTHROPIC_API_KEY: it contains a line break at character 41 (120 characters on 2 lines).`, la API nunca vio la clave. Claude Code encontró un carácter que los encabezados HTTP no pueden transportar y detuvo la solicitud antes de enviarla. Consulta [Valor de encabezado de solicitud no válido](#invalid-request-header-value) para saber cómo leer la descripción y corregir el valor.

941 951 

942**Qué hacer:**952**Qué hacer:**

943 953 

944* Verifica si hay errores tipográficos y confirma que la clave no haya sido revocada en la [Consola](https://platform.claude.com/settings/keys)954* Busca errores tipográficos y confirma que la clave no haya sido revocada en la [Console](https://platform.claude.com/settings/keys)

945* En el mismo shell, ejecuta `env | grep ANTHROPIC`, o en PowerShell `Get-ChildItem Env:ANTHROPIC*`. Herramientas como direnv, complementos de shell dotenv e IDE terminals pueden cargar una clave antigua de un archivo `.env` en tu proyecto sin que la configures explícitamente.955* En el mismo shell, ejecuta `env | grep ANTHROPIC`, o en PowerShell `Get-ChildItem Env:ANTHROPIC*`. Herramientas como direnv, los plugins de shell de dotenv y las terminales de los IDE pueden cargar una clave obsoleta desde un archivo `.env` de tu proyecto sin que la definas explícitamente.

946* Desactiva `ANTHROPIC_API_KEY` y ejecuta `/login` para usar autenticación de suscripción en su lugar956* Elimina la definición de `ANTHROPIC_API_KEY` y ejecuta `/login` para usar la autenticación por suscripción en su lugar

947* Si la clave proviene de un script [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper), ejecuta el script directamente para confirmar que imprime una clave válida en stdout957* Si la clave proviene de un script [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper), ejecuta el script directamente para confirmar que imprime una clave válida en stdout

948* Ejecuta `/status` para confirmar qué fuente de credencial está usando realmente Claude Code958* Ejecuta `/status` para confirmar qué fuente de credenciales está usando realmente Claude Code

949 959 

950<h3 id="your-apikeyhelper-script-is-failing">960<h3 id="your-apikeyhelper-script-is-failing">

951 Tu script apiKeyHelper está fallando961 Tu script apiKeyHelper está fallando

952</h3>962</h3>

953 963 

954Claude Code ejecutó el comando en tu configuración [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) y no obtuvo una clave. Sin una, la solicitud llega a la API con una credencial de marcador de posición, y la API la rechaza con `401`. El panel `Authentication` en la terminal muestra cuál de estos sucedió:964Claude Code ejecutó el comando de tu ajuste [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) y no recibió una clave. Sin ella, la solicitud llega a la API con una credencial de marcador de posición, y la API la rechaza con `401`. El panel `Authentication` de la terminal muestra cuál de estas situaciones ocurrió:

955 965 

956* El comando salió con un error o se agotó el tiempo de espera966* El comando terminó con un error o se agotó su tiempo de espera

957* El comando no imprimió nada en stdout967* El comando no imprimió nada en stdout

958* El comando imprimió algo además de la clave, como un banner de inicio de sesión o una línea de registro. El panel muestra `returned output that cannot be used as an API key` y dice qué está mal, sin repetir la salida. Antes de v2.1.227, Claude Code enviaba lo que el comando imprimía, después de recortar espacios en blanco circundantes.968* El comando imprimió algo además de la clave, como un banner de inicio de sesión o una línea de registro. El panel muestra `returned output that cannot be used as an API key` e indica qué está mal, sin repetir la salida. Antes de v2.1.227, Claude Code enviaba lo que el comando imprimiera, después de recortar los espacios en blanco circundantes.

959 969 

960```text theme={null}970```text theme={null}

961Your apiKeyHelper script is failing · This usually means you need to re-authenticate with your provider · Run /status to see the script's error output971Your apiKeyHelper script is failing · This usually means you need to re-authenticate with your provider · Run /status to see the script's error output

962```972```

963 973 

964En [modo no interactivo](/docs/es/headless), stderr también lleva la razón específica, con el prefijo `apiKeyHelper failed:`.974En [modo no interactivo](/docs/es/headless), stderr también incluye el motivo específico, con el prefijo `apiKeyHelper failed:`.

965 975 

966Claude Code vuelve a ejecutar el script y reintenta la solicitud hasta dos veces más antes de mostrar este mensaje, por lo que el fallo aparece dentro de tres intentos. Antes de v2.1.208, Claude Code gastaba el [presupuesto de reintentos](#automatic-retries) completo reenviando la solicitud con la credencial de marcador de posición y luego reportaba un error de autenticación `401` genérico en lugar del fallo del script.976Claude Code vuelve a ejecutar el script y reintenta la solicitud hasta dos veces más antes de mostrar este mensaje, así que el fallo aparece en un máximo de tres intentos. Antes de v2.1.208, Claude Code consumía todo el [presupuesto de reintentos](#automatic-retries) reenviando la solicitud con la credencial de marcador de posición y luego informaba un error de autenticación `401` genérico en lugar del fallo del script.

967 977 

968Ejecutar `/login` no ayuda aquí: la salida del helper [toma precedencia](/docs/es/authentication#authentication-precedence) sobre un inicio de sesión guardado mientras la configuración esté presente.978Ejecutar `/login` no ayuda aquí: la salida del helper [tiene precedencia](/docs/es/authentication#authentication-precedence) sobre un inicio de sesión guardado mientras el ajuste esté presente.

969 979 

970**Qué hacer:**980**Qué hacer:**

971 981 

972* Ejecuta el comando configurado en `apiKeyHelper` directamente en tu shell para reproducir el fallo982* Ejecuta directamente en tu shell el comando configurado en `apiKeyHelper` para reproducir el fallo

973* Si el comando reporta una sesión expirada, vuelve a autenticarte con tu proveedor de credenciales, por ejemplo iniciando sesión en tu SSO o bóveda de secretos nuevamente983* Si el comando informa una sesión expirada, vuelve a autenticarte con tu proveedor de credenciales, por ejemplo, iniciando sesión de nuevo en tu SSO o en tu almacén de secretos

974* Corrige el comando para que imprima solo la clave en stdout, como un único token de ASCII imprimible de hasta 16.384 caracteres, y salga con código 0. Consulta [rotar credenciales con apiKeyHelper](/docs/es/llm-gateway-connect#rotate-credentials-with-apikeyhelper) para una configuración que funcione.984* Corrige el comando para que imprima solo la clave en stdout, como un único token de ASCII imprimible de hasta 16,384 caracteres, y termine con el código 0. Consulta [rotar credenciales con apiKeyHelper](/docs/es/llm-gateway-connect#rotate-credentials-with-apikeyhelper) para ver una configuración funcional.

975* Ejecuta `/status` para ver el fallo y confirmar que `apiKeyHelper` es la fuente de credencial activa. La fila `apiKeyHelper` muestra `Failing` con el detalle del último fallo, como el código de salida y la salida de error del comando, y desaparece después de la siguiente ejecución exitosa. Antes de v2.1.274, `/status` mostraba solo la fuente de credencial, no el fallo.985* Ejecuta `/status` para ver el fallo y confirmar que `apiKeyHelper` es la fuente de credenciales activa. La fila `apiKeyHelper` muestra `Failing` con el detalle del último fallo, como el código de salida y la salida de error del comando, y desaparece después de la siguiente ejecución correcta. Antes de v2.1.274, `/status` mostraba solo la fuente de credenciales, no el fallo.

976* Cada vez que el comando falla, su código de salida y salida de error también aparecen en un panel `Authentication` en la terminal. Antes de v2.1.212, el panel se titulaba `Cloud authentication`.986* Cada vez que el comando falla, su código de salida y su salida de error también aparecen en un panel `Authentication` de la terminal. Antes de v2.1.212, el panel se titulaba `Cloud authentication`.

977 987 

978<h3 id="invalid-request-header-value">988<h3 id="invalid-request-header-value">

979 Valor de encabezado de solicitud inválido989 Valor de encabezado de solicitud no válido

980</h3>990</h3>

981 991 

982Un valor que Claude Code estaba a punto de enviar como encabezado de solicitud contiene un carácter que los encabezados HTTP no pueden llevar: un salto de línea, un byte NUL, o un carácter por encima de `U+00FF`, como una comilla curva o un espacio de ancho cero. Claude Code detiene la solicitud antes de que se envíe nada y nombra la variable o configuración a corregir. La causa habitual es una credencial pegada de un documento o chat que llevaba un carácter invisible o un salto de línea extraviado.992Un valor que Claude Code estaba a punto de enviar como encabezado de solicitud contiene un carácter que los encabezados HTTP no pueden transportar: un salto de línea, un byte NUL o un carácter por encima de `U+00FF`, como una comilla tipográfica o un espacio de ancho cero. Claude Code detiene la solicitud antes de enviar nada e indica la variable o el ajuste que debes corregir. La causa habitual es una credencial pegada desde un documento o un chat que incluía un carácter invisible o un salto de línea accidental.

983 993 

984Claude Code ejecuta esta verificación cuando envía solicitudes a la API de Claude directamente o a través de una [puerta de enlace LLM](/docs/es/llm-gateway). En un proveedor en la nube de terceros como [Amazon Bedrock](/docs/es/amazon-bedrock), Claude Code no la ejecuta antes de enviar.994Claude Code realiza esta comprobación cuando envía solicitudes a la Claude API directamente o a través de un [gateway de LLM](/docs/es/llm-gateway). En un proveedor de nube de terceros como [Amazon Bedrock](/docs/es/amazon-bedrock), Claude Code no la realiza antes de enviar.

985 995 

986```text theme={null}996```text theme={null}

987Invalid auth token · Fix external auth token997Invalid auth token · Fix external auth token


989Invalid request header from the environment · Fix the environment variable999Invalid request header from the environment · Fix the environment variable

990```1000```

991 1001 

992La primera parte del mensaje depende de dónde vino el valor incorrecto:1002La primera parte del mensaje depende de dónde provino el valor incorrecto:

993 1003 

994* `Invalid auth token`: un token de portador de [`ANTHROPIC_AUTH_TOKEN`](/docs/es/env-vars) o [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/es/env-vars)1004* `Invalid auth token`: un token bearer de [`ANTHROPIC_AUTH_TOKEN`](/docs/es/env-vars) o [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/es/env-vars)

995* `Invalid ANTHROPIC_CUSTOM_HEADERS`: un nombre de encabezado o valor que configuraste en [`ANTHROPIC_CUSTOM_HEADERS`](/docs/es/env-vars). La descripción cuenta cuál par `Name: Value` es el culpable, como `distinct header 2 of 3 parsed from ANTHROPIC_CUSTOM_HEADERS`, sin repetir el nombre o valor, ya que elegiste ambos.1005* `Invalid ANTHROPIC_CUSTOM_HEADERS`: un nombre o valor de encabezado que definiste en [`ANTHROPIC_CUSTOM_HEADERS`](/docs/es/env-vars). La descripción indica por número qué par `Name: Value` tiene el problema, como `distinct header 2 of 3 parsed from ANTHROPIC_CUSTOM_HEADERS`, sin repetir el nombre ni el valor, ya que tú elegiste ambos.

996* `Invalid request header from the environment`: un valor que Claude Code copia en un encabezado de solicitud desde otra variable de entorno, como `CLAUDE_AGENT_SDK_CLIENT_APP`. La descripción nombra la variable a corregir.1006* `Invalid request header from the environment`: un valor que Claude Code copia en un encabezado de solicitud desde otra variable de entorno, como `CLAUDE_AGENT_SDK_CLIENT_APP`. La descripción indica la variable que debes corregir.

997 1007 

998Claude Code reporta un `ANTHROPIC_API_KEY` incorrecto capturado por esta verificación como [Clave API inválida](#invalid-api-key), con la misma descripción final. Reporta una credencial `/login` guardada incorrecta como [No iniciaste sesión](#not-logged-in) en su lugar; ejecuta `/login` para guardar una nueva. La salida de un script [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) nunca llega a esta verificación: Claude Code la valida cuando se ejecuta el script, y la salida que un encabezado HTTP no puede llevar falla con [Tu script apiKeyHelper está fallando](#your-apikeyhelper-script-is-failing).1008Claude Code informa una `ANTHROPIC_API_KEY` incorrecta detectada por esta comprobación como [Clave de API no válida](#invalid-api-key), con la misma descripción final. En cambio, informa una credencial de `/login` guardada incorrecta como [No has iniciado sesión](#not-logged-in); ejecuta `/login` para guardar una nueva. La salida de un script [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) nunca llega a esta comprobación: Claude Code la valida cuando se ejecuta el script, y una salida que un encabezado HTTP no puede transportar falla con [Tu script apiKeyHelper está fallando](#your-apikeyhelper-script-is-failing).

999 1009 

1000Después del segundo `·`, el mensaje describe el problema, como en este ejemplo completo:1010Después del segundo `·`, el mensaje describe el problema, como en este ejemplo completo:

1001 1011 


1003Invalid auth token · Fix external auth token · Invalid Authorization header value from ANTHROPIC_AUTH_TOKEN: it contains a line break at character 41 (120 characters on 2 lines).1013Invalid auth token · Fix external auth token · Invalid Authorization header value from ANTHROPIC_AUTH_TOKEN: it contains a line break at character 41 (120 characters on 2 lines).

1004```1014```

1005 1015 

1006Las posiciones cuentan caracteres comenzando en uno. La descripción se construye a partir de frases fijas y conteos de caracteres, por lo que nunca incluye el valor en sí. Nombra el carácter ofensivo solo cuando es un carácter invisible o tipográfico bien conocido, como una marca de orden de bytes, un espacio de ancho cero, o una comilla curva, y reporta cualquier otra cosa como `a non-ASCII character`.1016Las posiciones cuentan los caracteres empezando desde uno. La descripción se construye a partir de frases fijas y recuentos de caracteres, por lo que nunca incluye el valor en sí. Nombra el carácter problemático solo cuando es un carácter invisible o tipográfico conocido, como una marca de orden de bytes, un espacio de ancho cero o una comilla tipográfica, e informa cualquier otro como `a non-ASCII character`.

1007 1017 

1008**Qué hacer:**1018**Qué hacer:**

1009 1019 

1010* Vuelve a configurar la variable o configuración que el mensaje nombra, reescribiendo los caracteres alrededor de la posición reportada en lugar de pegar desde la misma fuente nuevamente1020* Vuelve a definir la variable o el ajuste que indica el mensaje, reescribiendo a mano los caracteres alrededor de la posición informada en lugar de pegar de nuevo desde la misma fuente

1011* Para `ANTHROPIC_CUSTOM_HEADERS`, mantén un par `Name: Value` por línea y reescribe el par que el mensaje cuenta1021* Para `ANTHROPIC_CUSTOM_HEADERS`, mantén un par `Name: Value` por línea y reescribe el par que indica el mensaje

1012* Ejecuta `/status` para confirmar qué fuente de credencial está activa1022* Ejecuta `/status` para confirmar qué fuente de credenciales está activa

1013 1023 

1014<h3 id="this-organization-has-been-disabled">1024<h3 id="this-organization-has-been-disabled">

1015 Esta organización ha sido deshabilitada1025 Esta organización ha sido deshabilitada

1016</h3>1026</h3>

1017 1027 

1018Claude Code está usando un `ANTHROPIC_API_KEY` antiguo de una organización de Console deshabilitada. Cuando tienes un inicio de sesión de suscripción guardado, la clave lo anula.1028Claude Code está usando una `ANTHROPIC_API_KEY` obsoleta de una organización de Console deshabilitada. Cuando tienes un inicio de sesión de suscripción guardado, la clave tiene prioridad sobre él.

1019 1029 

1020```text theme={null}1030```text theme={null}

1021Your ANTHROPIC_API_KEY belongs to a disabled organization · Unset the environment variable to use your subscription instead1031Your ANTHROPIC_API_KEY belongs to a disabled organization · Unset the environment variable to use your subscription instead


1023API Error: 400 ... This organization has been disabled.1033API Error: 400 ... This organization has been disabled.

1024```1034```

1025 1035 

1026La sugerencia después del `·` depende de tus credenciales guardadas: la primera forma aparece cuando un `/login` almacenado puede tomar el control después de que desactives la clave, y la segunda cuando la clave es tu única credencial.1036La sugerencia después del `·` depende de tus credenciales guardadas: la primera forma aparece cuando un `/login` almacenado puede tomar el relevo después de que elimines la clave, y la segunda cuando la clave es tu única credencial.

1027 1037 

1028Las variables de entorno toman precedencia sobre `/login`, por lo que una clave exportada en tu perfil de shell o cargada desde un archivo `.env` se usa incluso cuando tienes una suscripción Pro o Max que funciona. En modo no interactivo (`-p`), la clave siempre se usa cuando está presente.1038Las variables de entorno tienen precedencia sobre `/login`, así que una clave exportada en el perfil de tu shell o cargada desde un archivo `.env` se usa incluso cuando tienes una suscripción Pro o Max que funciona. En modo no interactivo (`-p`), la clave siempre se usa cuando está presente.

1029 1039 

1030**Qué hacer:**1040**Qué hacer:**

1031 1041 

1032* Desactiva `ANTHROPIC_API_KEY` en el shell actual y elimínalo de tu perfil de shell, luego relanza `claude`1042* Elimina la definición de `ANTHROPIC_API_KEY` en el shell actual y quítala del perfil de tu shell; luego vuelve a iniciar `claude`

1033* Si el mensaje dice `Update or unset`, no tienes un inicio de sesión guardado para recurrir. Desactiva la clave y ejecuta `/login`, o reemplaza la clave con una de una organización de Console activa.1043* Si el mensaje dice `Update or unset`, no tienes un inicio de sesión guardado al que recurrir. Elimina la clave y ejecuta `/login`, o reemplaza la clave por una de una organización de Console activa.

1034* Ejecuta `/status` después para confirmar que la credencial activa es tu suscripción1044* Ejecuta `/status` después para confirmar que la credencial activa es tu suscripción

1035* Si no hay variable de entorno configurada y el error persiste, contacta con soporte o inicia sesión con una cuenta diferente.1045* Si no hay ninguna variable de entorno definida y el error persiste, contacta con soporte o inicia sesión con otra cuenta.

1036 1046 

1037<h3 id="your-organization-has-disabled-api-key-authentication">1047<h3 id="your-organization-has-disabled-api-key-authentication">

1038 Tu organización ha deshabilitado la autenticación por clave API1048 Tu organización ha deshabilitado la autenticación con clave de API

1039</h3>1049</h3>

1040 1050 

1041Este mensaje requiere Claude Code v2.1.169 o posterior. El administrador de tu organización de Console ha desactivado la autenticación por clave API, por lo que la API rechaza la clave que Claude Code está enviando. La sugerencia de recuperación después del `·` varía según de dónde vino la clave:1051Este mensaje requiere Claude Code v2.1.169 o posterior. El administrador de tu organización de Console desactivó la autenticación con clave de API, así que la API rechaza la clave que Claude Code está enviando. La sugerencia de recuperación después del `·` varía según de dónde provino la clave:

1042 1052 

1043```text theme={null}1053```text theme={null}

1044Your organization has disabled API key authentication · Run /login to sign in with your claude.ai account1054Your organization has disabled API key authentication · Run /login to sign in with your claude.ai account


1048Your organization has disabled API key authentication · Sign in again with your claude.ai account1058Your organization has disabled API key authentication · Sign in again with your claude.ai account

1049```1059```

1050 1060 

1051La última forma aparece en una sesión que ejecuta la aplicación Claude Desktop, como la pestaña Code o Cowork, donde inicias sesión nuevamente desde la aplicación.1061La última forma aparece en una sesión que ejecuta la aplicación Claude Desktop, como la pestaña Code o Cowork, donde vuelves a iniciar sesión desde la aplicación.

1052 1062 

1053Las variables de entorno y `apiKeyHelper` toman precedencia sobre `/login`, por lo que ejecutar `/login` solo no ayuda mientras cualquiera de ellos siga suministrando una clave. Consulta [Precedencia de autenticación](/docs/es/authentication#authentication-precedence).1063Las variables de entorno y `apiKeyHelper` tienen precedencia sobre `/login`, así que ejecutar solo `/login` no ayuda mientras cualquiera de ellos siga proporcionando una clave. Consulta [Precedencia de autenticación](/docs/es/authentication#authentication-precedence).

1054 1064 

1055**Qué hacer:**1065**Qué hacer:**

1056 1066 

1057* Si el mensaje nombra `ANTHROPIC_API_KEY`, desactívalo en el shell actual y elimínalo de tu perfil de shell o archivo `.env`, luego relanza `claude`1067* Si el mensaje menciona `ANTHROPIC_API_KEY`, elimina su definición en el shell actual y quítala del perfil de tu shell o del archivo `.env`; luego vuelve a iniciar `claude`

1058* Si el mensaje nombra `apiKeyHelper`, elimina la configuración [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) de tu `settings.json`1068* Si el mensaje menciona `apiKeyHelper`, quita el ajuste [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) de tu `settings.json`

1059* Ejecuta `/login` para iniciar sesión con tu cuenta de claude.ai1069* Ejecuta `/login` para iniciar sesión con tu cuenta de claude.ai

1060* Ejecuta `/status` después para confirmar que la credencial activa es tu suscripción en lugar de una clave API1070* Ejecuta `/status` después para confirmar que la credencial activa es tu suscripción y no una clave de API

1061* Si necesitas autenticación por clave API para automatización, pide al administrador de tu organización que la vuelva a habilitar en la Consola1071* Si necesitas autenticación con clave de API para automatización, pide al administrador de tu organización que la vuelva a habilitar en la Console

1062 1072 

1063<h3 id="your-organization-has-disabled-claude-subscription-access">1073<h3 id="your-organization-has-disabled-claude-subscription-access">

1064 Tu organización ha deshabilitado el acceso a la suscripción de Claude1074 Tu organización ha deshabilitado el acceso con suscripción de Claude

1065</h3>1075</h3>

1066 1076 

1067Tu organización de Claude no permite iniciar sesión en Claude Code con un inicio de sesión de suscripción. Ejecutar `/login` nuevamente con la misma cuenta devuelve el mismo error.1077Tu organización de Claude no permite iniciar sesión en Claude Code con un inicio de sesión de suscripción. Volver a ejecutar `/login` con la misma cuenta devuelve el mismo error.

1068 1078 

1069```text theme={null}1079```text theme={null}

1070Your organization has disabled Claude subscription access for Claude Code · Use an Anthropic API key instead, or ask your admin to enable access1080Your organization has disabled Claude subscription access for Claude Code · Use an Anthropic API key instead, or ask your admin to enable access

1071```1081```

1072 1082 

1073Esta es una configuración de organización del lado del servidor, por lo que no se puede anular desde configuraciones locales, variables de entorno o banderas CLI.1083Esta es una configuración de la organización del lado del servidor, así que no se puede sobrescribir desde la configuración local, variables de entorno ni flags de la CLI.

1074 1084 

1075Agent SDK y el modo no interactivo `-p` muestran esto como el código de error `oauth_org_not_allowed`.1085El Agent SDK y el modo no interactivo `-p` muestran esto como el código de error `oauth_org_not_allowed`.

1076 1086 

1077**Qué hacer:**1087**Qué hacer:**

1078 1088 

1079* Pide a tu administrador que habilite el acceso a Claude Code para tu organización1089* Pide a tu administrador que habilite el acceso a Claude Code para tu organización

1080* Auténticate con una clave API de Console en lugar de tu suscripción. Consulta [Autenticación de Claude Console](/docs/es/authentication#claude-console-authentication) para la configuración.1090* Autentícate con una clave de API de Console en lugar de tu suscripción. Consulta [Autenticación con Claude Console](/docs/es/authentication#claude-console-authentication) para configurarla.

1081* Si eres el administrador y no ves una opción para habilitar el acceso, contacta con [soporte de Anthropic](https://support.claude.com)1091* Si eres el administrador y no ves una opción para habilitar el acceso, contacta con el [soporte de Anthropic](https://support.claude.com)

1082 1092 

1083<h3 id="routines-are-disabled-by-your-organizations-policy">1093<h3 id="routines-are-disabled-by-your-organizations-policy">

1084 Las rutinas están deshabilitadas por la política de tu organización1094 Las rutinas están deshabilitadas por la política de tu organización

1085</h3>1095</h3>

1086 1096 

1087Un Propietario en tu organización de Equipo o Empresa ha desactivado las rutinas a nivel de organización. El error aparece cuando intentas crear o ejecutar una rutina, por ejemplo desde la interfaz de usuario [Rutinas](/docs/es/routines) en claude.ai/code. En Claude Code v2.1.227 o posterior, la misma configuración también [oculta `/schedule`](/docs/es/routines#troubleshooting) en la CLI.1097Un Owner de tu organización Team o Enterprise desactivó las rutinas a nivel de organización. El error aparece cuando intentas crear o ejecutar una rutina, por ejemplo, desde la interfaz de [Routines](/docs/es/routines) en claude.ai/code. En Claude Code v2.1.227 o posterior, la misma configuración también [oculta `/schedule`](/docs/es/routines#troubleshooting) en la CLI.

1088 1098 

1089```text theme={null}1099```text theme={null}

1090Routines are disabled by your organization's policy.1100Routines are disabled by your organization's policy.

1091```1101```

1092 1102 

1093Esta es una configuración del lado del servidor, por lo que no se puede anular desde configuraciones locales, variables de entorno o banderas CLI.1103Esta es una configuración del lado del servidor, así que no se puede sobrescribir desde la configuración local, variables de entorno ni flags de la CLI.

1094 1104 

1095**Qué hacer:**1105**Qué hacer:**

1096 1106 

1097* Pide a un Propietario en tu organización que habilite el botón **Routines** en [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)1107* Pide a un Owner de tu organización que active el interruptor **Routines** en [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)

1098* Para trabajo programado único que no requiere rutinas a nivel de organización, consulta [tareas programadas](/docs/es/scheduled-tasks)1108* Para trabajo programado puntual que no requiera rutinas a nivel de organización, consulta [tareas programadas](/docs/es/scheduled-tasks)

1099 1109 

1100<h3 id="remote-control-requires-the-anthropic-api">1110<h3 id="remote-control-requires-the-anthropic-api">

1101 Remote Control requiere la API de Anthropic1111 Remote Control requiere la API de Anthropic

1102</h3>1112</h3>

1103 1113 

1104La sesión no está hablando directamente con la API de Anthropic, que es lo que [Remote Control](/docs/es/remote-control) requiere.1114La sesión no se comunica directamente con la API de Anthropic, algo que [Remote Control](/docs/es/remote-control) requiere.

1105 1115 

1106```text theme={null}1116```text theme={null}

1107Remote Control is only available when using Claude via api.anthropic.com. CLAUDE_CODE_USE_BEDROCK is set, so this session is using Amazon Bedrock — unset it (or run in a shell without it) to use Remote Control.1117Remote Control is only available when using Claude via api.anthropic.com. CLAUDE_CODE_USE_BEDROCK is set, so this session is using Amazon Bedrock — unset it (or run in a shell without it) to use Remote Control.

1108```1118```

1109 1119 

1110Una segunda oración explica qué enrutó la sesión lejos de la API de Anthropic; antes de v2.1.219, el mensaje era solo la primera oración. Dependiendo de la causa, el mensaje nombra:1120Una segunda oración explica qué desvió la sesión de la API de Anthropic; antes de v2.1.219, el mensaje consistía solo en la primera oración. Según la causa, el mensaje menciona:

1111 1121 

1112* Una variable de proveedor `CLAUDE_CODE_USE_*`, como `CLAUDE_CODE_USE_BEDROCK` para [Amazon Bedrock](/docs/es/amazon-bedrock) o `CLAUDE_CODE_USE_VERTEX` para [Plataforma de Agentes de Google Cloud](/docs/es/google-vertex-ai)1122* Una variable de proveedor `CLAUDE_CODE_USE_*`, como `CLAUDE_CODE_USE_BEDROCK` para [Amazon Bedrock](/docs/es/amazon-bedrock) o `CLAUDE_CODE_USE_VERTEX` para [Google Cloud's Agent Platform](/docs/es/google-vertex-ai)

1113* [`ANTHROPIC_BASE_URL`](/docs/es/env-vars) apuntando a un host diferente de `api.anthropic.com`, como una [puerta de enlace LLM](/docs/es/llm-gateway) o proxy, incluso cuando inicias sesión con claude.ai; antes de v2.1.196, una URL base personalizada no bloqueaba Remote Control1123* [`ANTHROPIC_BASE_URL`](/docs/es/env-vars) apuntando a un host distinto de `api.anthropic.com`, como un [gateway de LLM](/docs/es/llm-gateway) o un proxy, incluso cuando inicias sesión con claude.ai; antes de v2.1.196, una URL base personalizada no bloqueaba Remote Control

1114* `ANTHROPIC_UNIX_SOCKET` configurado, por lo que la sesión envía sus solicitudes a través de un socket local en lugar de a `api.anthropic.com`1124* `ANTHROPIC_UNIX_SOCKET` definida, de modo que la sesión envía sus solicitudes a través de un socket local en lugar de a `api.anthropic.com`

1115* Un inicio de sesión de [puerta de enlace en la nube](/docs/es/claude-apps-gateway) empresarial realizado a través de `/login`, que no admite Remote Control y no tiene variable para desactivar1125* Un inicio de sesión en un [gateway de nube](/docs/es/claude-apps-gateway) empresarial hecho mediante `/login`, que no admite Remote Control y no tiene ninguna variable que eliminar

1116 1126 

1117**Qué hacer:**1127**Qué hacer:**

1118 1128 

1119* Desactiva la variable que el mensaje nombra, como `CLAUDE_CODE_USE_BEDROCK` o `ANTHROPIC_BASE_URL`, y reinicia la sesión, o inicia Remote Control desde una sesión que hable directamente con la API de Anthropic1129* Elimina la definición de la variable que menciona el mensaje, como `CLAUDE_CODE_USE_BEDROCK` o `ANTHROPIC_BASE_URL`, y reinicia la sesión, o inicia Remote Control desde una sesión que se comunique directamente con la API de Anthropic

1120* Si la variable no está configurada en tu shell, verifica la clave `env` en tus [archivos de configuración](/docs/es/settings#where-settings-live), que aplica variables de entorno a cada sesión1130* Si la variable no está definida en tu shell, revisa la clave `env` en tus [archivos de configuración](/docs/es/settings#where-settings-live), que aplica variables de entorno a cada sesión

1121* Para este y los otros mensajes de inicio de Remote Control, consulta [Solucionar problemas de Remote Control](/docs/es/remote-control#troubleshooting)1131* Para este y los demás mensajes de inicio de Remote Control, consulta [Solución de problemas de Remote Control](/docs/es/remote-control#troubleshooting)

1122 1132 

1123<h3 id="remote-control-couldnt-refresh-your-login">1133<h3 id="remote-control-couldnt-refresh-your-login">

1124 Remote Control no pudo actualizar tu inicio de sesión1134 Remote Control no pudo renovar tu inicio de sesión

1125</h3>1135</h3>

1126 1136 

1127Claude Code ejecuta una conexión [Remote Control](/docs/es/remote-control) en vivo en credenciales de corta duración que obtiene y renueva usando tu inicio de sesión guardado de claude.ai. Cuando claude.ai deja de aceptar ese inicio de sesión, o Claude Code no tiene inicio de sesión guardado, Claude Code detiene Remote Control y necesita que inicies sesión nuevamente. Cualquiera de los dos fallos puede suceder mientras Claude Code aún se está conectando o más tarde, cuando renueva las credenciales.1137Claude Code mantiene una conexión activa de [Remote Control](/docs/es/remote-control) con credenciales de corta duración que obtiene y renueva usando tu inicio de sesión de claude.ai guardado. Cuando claude.ai deja de aceptar ese inicio de sesión, o Claude Code ya no tiene ningún inicio de sesión guardado, Claude Code detiene Remote Control y necesita que vuelvas a iniciar sesión. Cualquiera de los dos fallos puede ocurrir mientras Claude Code todavía se está conectando o más tarde, cuando renueva las credenciales.

1128 1138 

1129Cuando Claude Code le pide al servicio de inicio de sesión que actualice tu inicio de sesión guardado y no obtiene respuesta, mantiene Remote Control en funcionamiento e intenta la actualización nuevamente mientras la credencial actual de la conexión sigue siendo válida. Una actualización no obtiene respuesta cuando Claude Code no puede alcanzar el servicio de inicio de sesión, la solicitud se agota el tiempo de espera, o el servicio falla sin rechazar tu inicio de sesión. Si el servicio de inicio de sesión aún no está respondiendo cuando esa credencial expira, Claude Code detiene Remote Control e informa `OAuth token refresh failed`.1139Cuando Claude Code pide al servicio de inicio de sesión que renueve tu inicio de sesión guardado y no obtiene respuesta, mantiene Remote Control en ejecución y vuelve a intentar la renovación mientras la credencial actual de la conexión siga siendo válida. Una renovación no obtiene respuesta cuando Claude Code no puede llegar al servicio de inicio de sesión, se agota el tiempo de espera de la solicitud o el servicio falla sin rechazar tu inicio de sesión. Si el servicio de inicio de sesión sigue sin responder cuando esa credencial expira, Claude Code detiene Remote Control e informa `OAuth token refresh failed`.

1130 1140 

1131Cuando Claude Code detiene Remote Control, muestra la razón en una advertencia y en una línea de transcripción que comienza con `Remote Control disconnected`. Tu sesión local sigue ejecutándose sin Remote Control. Esta sección cubre estas líneas:1141Cuando Claude Code detiene Remote Control, muestra el motivo en una advertencia y en una línea de la transcripción que empieza con `Remote Control disconnected`. Tu sesión local sigue ejecutándose sin Remote Control. Esta sección cubre estas líneas:

1132 1142 

1133```text theme={null}1143```text theme={null}

1134Remote Control disconnected — Claude.ai login expired — run /login to restore Remote Control1144Remote Control disconnected — Claude.ai login expired — run /login to restore Remote Control


1140Remote Control disconnected — Signed out of Claude — run /login, then /remote-control1150Remote Control disconnected — Signed out of Claude — run /login, then /remote-control

1141```1151```

1142 1152 

1143Claude Code nombra la causa en el medio del mensaje:1153Claude Code indica la causa en la parte central del mensaje:

1144 1154 

1145* `Claude.ai login expired` y `Claude.ai login was rejected`: claude.ai ya no acepta tu token de inicio de sesión guardado, porque expiró o fue revocado1155* `Claude.ai login expired` y `Claude.ai login was rejected`: claude.ai ya no acepta tu token de inicio de sesión guardado, porque expiró o fue revocado

1146* `OAuth token unavailable`: Claude Code no tenía un token de inicio de sesión guardado cuando la credencial de la conexión vencía para renovación1156* `OAuth token unavailable`: Claude Code no tenía ningún token de inicio de sesión guardado cuando llegó el momento de renovar la credencial de la conexión

1147* `OAuth token refresh failed`: claude.ai rechazó tu token de inicio de sesión guardado mientras Claude Code se estaba reconectando, y actualizar el token no produjo uno nuevo1157* `OAuth token refresh failed`: claude.ai rechazó tu token de inicio de sesión guardado mientras Claude Code se reconectaba, y la renovación del token no produjo uno nuevo

1148* `JWT refresh failed: no OAuth token`: Claude Code no encontró un token de inicio de sesión guardado para renovar1158* `JWT refresh failed: no OAuth token`: Claude Code no encontró ningún token de inicio de sesión guardado con el que renovar

1149* `Signed out of Claude`: cerraste sesión en esta máquina, por ejemplo ejecutando `/logout` en otra terminal, por lo que Claude Code no tiene inicio de sesión guardado para renovar la conexión1159* `Signed out of Claude`: cerraste sesión en esta máquina, por ejemplo, ejecutando `/logout` en otra terminal, así que Claude Code no tiene ningún inicio de sesión guardado con el que renovar la conexión

1150 1160 

1151**Qué hacer:**1161**Qué hacer:**

1152 1162 

1153* Ejecuta `/login` para iniciar sesión nuevamente1163* Ejecuta `/login` para volver a iniciar sesión

1154* Ejecuta `/remote-control` para reconectar la sesión. Los mensajes que terminan `run /login to restore Remote Control` no necesitan este paso: Claude Code se reconecta automáticamente una vez que inicias sesión.1164* Ejecuta `/remote-control` para reconectar la sesión. Los mensajes que terminan en `run /login to restore Remote Control` no necesitan este paso: Claude Code se reconecta por sí solo en cuanto inicias sesión.

1155 1165 

1156Antes de v2.1.224, `OAuth token refresh failed — run /login to re-authenticate` decía `OAuth token refresh failed — re-authenticate, then re-enable Remote Control`, y `JWT refresh failed: no OAuth token — run /login` decía `no OAuth token available for recovery (code <N>)`. Los mensajes `Claude.ai login expired`, `Claude.ai login was rejected`, y `OAuth token unavailable` se agregaron en v2.1.225.1166Antes de v2.1.224, `OAuth token refresh failed — run /login to re-authenticate` decía `OAuth token refresh failed — re-authenticate, then re-enable Remote Control`, y `JWT refresh failed: no OAuth token — run /login` decía `no OAuth token available for recovery (code <N>)`. Los mensajes `Claude.ai login expired`, `Claude.ai login was rejected` y `OAuth token unavailable` se añadieron en v2.1.225.

1157 1167 

1158Antes de v2.1.238, Claude Code reportaba los casos que ahora dicen `Signed out of Claude` como `JWT refresh failed: no OAuth token — run /login`, y detenía Remote Control con `Claude.ai login expired — run /login to restore Remote Control` tan pronto como una actualización de inicio de sesión no obtuviera respuesta.1168Antes de v2.1.238, Claude Code informaba los casos que ahora dicen `Signed out of Claude` como `JWT refresh failed: no OAuth token — run /login`, y detenía Remote Control con `Claude.ai login expired — run /login to restore Remote Control` en cuanto una renovación del inicio de sesión no obtenía respuesta.

1159 1169 

1160<h3 id="remote-control-stopped-because-the-signed-in-account-changed">1170<h3 id="remote-control-stopped-because-the-signed-in-account-changed">

1161 Remote Control se detuvo porque la cuenta con la que iniciaste sesión cambió1171 Remote Control se detuvo porque cambió la cuenta con sesión iniciada

1162</h3>1172</h3>

1163 1173 

1164Claude Code muestra esta línea durante una sesión [Remote Control](/docs/es/remote-control) cuando inicias sesión en una cuenta de claude.ai u organización diferente en esta máquina. Hiciste el cambio fuera de la sesión de Claude Code, por ejemplo ejecutando `/login` en otra terminal.1174Claude Code muestra esta línea durante una sesión de [Remote Control](/docs/es/remote-control) cuando inicias sesión en una cuenta u organización de claude.ai diferente en esta máquina. Hiciste el cambio fuera de la sesión de Claude Code, por ejemplo, ejecutando `/login` en otra terminal.

1165 1175 

1166Una sesión de Remote Control que iniciaste mientras estabas conectado a través de `/login` pertenece a la cuenta de claude.ai y organización que estaban conectadas en ese momento.1176Una sesión de Remote Control que iniciaste mientras tenías la sesión iniciada mediante `/login` pertenece a la cuenta y organización de claude.ai que tenían la sesión iniciada en ese momento.

1167 1177 

1168```text theme={null}1178```text theme={null}

1169Remote Control disconnected — signed-in claude.ai account or organization changed on this machine — run /remote-control to start a session for the current account, or /login to switch back, then /remote-control1179Remote Control disconnected — signed-in claude.ai account or organization changed on this machine — run /remote-control to start a session for the current account, or /login to switch back, then /remote-control

1170```1180```

1171 1181 

1172Claude Code detiene la sesión de Remote Control tan pronto como claude.ai confirma que la cuenta u organización cambió. Tu sesión local sigue ejecutándose sin Remote Control.1182Claude Code detiene la sesión de Remote Control en cuanto claude.ai confirma que la cuenta u organización cambió. Tu sesión local sigue ejecutándose sin Remote Control.

1173 1183 

1174**Qué hacer:**1184**Qué hacer:**

1175 1185 

1176* Ejecuta `/remote-control` para iniciar una nueva sesión de Remote Control bajo la cuenta u organización actual1186* Ejecuta `/remote-control` para iniciar una nueva sesión de Remote Control con la cuenta u organización actual

1177* Para cambiar atrás, ejecuta `/login` e inicia sesión en la cuenta u organización anterior nuevamente. Luego ejecuta `/remote-control`.1187* Para volver a la anterior, ejecuta `/login` e inicia sesión de nuevo en la cuenta u organización anterior. Luego ejecuta `/remote-control`.

1178 1188 

1179Antes de v2.1.234, Claude Code no notaba cuando cambiabas a una cuenta u organización diferente fuera de la sesión de Claude Code. Claude Code mantenía la sesión de Remote Control conectada hasta que una solicitud posterior al servidor de Remote Control fallaba con `Remote Control server rejected the request (HTTP 404)`. Ese fallo podría venir horas después del cambio.1189Antes de v2.1.234, Claude Code no detectaba cuándo cambiabas a una cuenta u organización diferente fuera de la sesión de Claude Code. Claude Code mantenía conectada la sesión de Remote Control hasta que una solicitud posterior al servidor de Remote Control fallaba con `Remote Control server rejected the request (HTTP 404)`. Ese fallo podía producirse horas después del cambio.

1180 1190 

1181<h3 id="remote-control-stopped-because-the-app-running-the-session-signed-out-or-switched-accounts">1191<h3 id="remote-control-stopped-because-the-app-running-the-session-signed-out-or-switched-accounts">

1182 Remote Control se detuvo porque la aplicación que ejecuta la sesión cerró sesión o cambió de cuenta1192 Remote Control se detuvo porque la aplicación que ejecuta la sesión cerró sesión o cambió de cuenta

1183</h3>1193</h3>

1184 1194 

1185Cuando la aplicación de escritorio de Claude o un IDE aloja tu sesión, Claude Code obtiene su token de inicio de sesión de esa aplicación en lugar de `/login`. Cuando claude.ai rechaza ese token, Claude Code le pide a la aplicación uno nuevo. Si la aplicación responde que está cerrada, o que ahora está conectada a una cuenta de Claude diferente, Claude Code termina la sesión [Remote Control](/docs/es/remote-control) y envía a la aplicación una de estas líneas:1195Cuando la aplicación de escritorio de Claude o un IDE aloja tu sesión, Claude Code obtiene su token de inicio de sesión de esa aplicación en lugar de `/login`. Cuando claude.ai rechaza ese token, Claude Code pide uno nuevo a la aplicación. Si la aplicación responde que cerró sesión, o que ahora tiene la sesión iniciada en una cuenta de Claude diferente, Claude Code finaliza la sesión de [Remote Control](/docs/es/remote-control) y envía a la aplicación una de estas líneas:

1186 1196 

1187```text theme={null}1197```text theme={null}

1188Remote Control stopped — the app running this session is now signed in to a different Claude account1198Remote Control stopped — the app running this session is now signed in to a different Claude account


1193 1203 

1194**Qué hacer:**1204**Qué hacer:**

1195 1205 

1196* Si la aplicación está cerrada, inicia sesión en ella nuevamente, luego activa Remote Control nuevamente en la aplicación1206* Si la aplicación cerró sesión, vuelve a iniciar sesión en ella y luego vuelve a activar Remote Control en la aplicación

1197* Si la aplicación cambió de cuenta, Claude Code no puede continuar la sesión terminada bajo la nueva cuenta. Inicia una nueva sesión de Remote Control bajo esa cuenta.1207* Si la aplicación cambió de cuenta, Claude Code no puede continuar la sesión finalizada con la nueva cuenta. Inicia una nueva sesión de Remote Control con esa cuenta.

1198 1208 

1199Antes de v2.1.238, Claude Code enviaba a la aplicación los mensajes `run /login` enumerados en [Remote Control no pudo actualizar tu inicio de sesión](#remote-control-couldnt-refresh-your-login) en ambos casos.1209Antes de v2.1.238, Claude Code enviaba a la aplicación los mensajes `run /login` indicados en [Remote Control no pudo renovar tu inicio de sesión](#remote-control-couldnt-refresh-your-login) en ambos casos.

1200 1210 

1201<h3 id="oauth-token-revoked-or-expired">1211<h3 id="oauth-token-revoked-or-expired">

1202 Token OAuth revocado o expirado1212 Token de OAuth revocado o expirado

1203</h3>1213</h3>

1204 1214 

1205Tu inicio de sesión guardado ya no es válido. Un token revocado significa que cerraste sesión en todas partes o un administrador eliminó el acceso; un token expirado significa que la actualización automática falló a mitad de sesión.1215Tu inicio de sesión guardado ya no es válido. Un token revocado significa que cerraste sesión en todas partes o que un administrador quitó el acceso; un token expirado significa que la renovación automática falló a mitad de la sesión.

1206 1216 

1207Ambos mensajes reportan un rechazo que la API devolvió para una solicitud que Claude Code envió. Cuando el inicio de sesión guardado ya ha sido borrado después de una actualización fallida, ves [Inicio de sesión expirado](#login-expired) en su lugar. Si te autenticas con un token de larga duración en [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/es/env-vars), ves los mismos mensajes cuando ese token expira o es revocado.1217Ambos mensajes informan un rechazo que la API devolvió para una solicitud que envió Claude Code. Cuando el inicio de sesión guardado ya se borró tras una renovación fallida, ves [Inicio de sesión expirado](#login-expired) en su lugar. Si te autenticas con un token de larga duración en [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/es/env-vars), ves los mismos mensajes cuando ese token expira o es revocado.

1208 1218 

1209```text theme={null}1219```text theme={null}

1210OAuth token revoked · Please run /login1220OAuth token revoked · Please run /login


1213 1223 

1214**Qué hacer:**1224**Qué hacer:**

1215 1225 

1216* Ejecuta `/login` para iniciar sesión nuevamente1226* Ejecuta `/login` para volver a iniciar sesión

1217* Si te autenticas con la variable de entorno `CLAUDE_CODE_OAUTH_TOKEN`, Claude Code sigue enviando el valor que configuraste después de que una solicitud falla con un 401, en lugar de cambiar al token de un inicio de sesión guardado. [`/status`](/docs/es/commands) muestra esta credencial como una fila `Auth token` que dice `CLAUDE_CODE_OAUTH_TOKEN`. Genera un token nuevo con [`claude setup-token`](/docs/es/authentication#generate-a-long-lived-token) y reinicia con él, o desactiva la variable y ejecuta `/login`. Antes de v2.1.225, Claude Code podría reemplazar el valor de la variable a mitad de sesión con el token de acceso de corta duración de un inicio de sesión guardado, y la sesión falló con errores 401 nuevamente una vez que ese token expiró.1227* Si te autenticas con la variable de entorno `CLAUDE_CODE_OAUTH_TOKEN`, Claude Code sigue enviando el valor que definiste después de que una solicitud falle con un 401, en lugar de cambiar al token de un inicio de sesión almacenado. [`/status`](/docs/es/commands) muestra esta credencial como una fila `Auth token` que dice `CLAUDE_CODE_OAUTH_TOKEN`. Genera un token nuevo con [`claude setup-token`](/docs/es/authentication#generate-a-long-lived-token) y reinicia con él, o elimina la definición de la variable y ejecuta `/login`. Antes de v2.1.225, Claude Code podía reemplazar el valor de la variable a mitad de la sesión con el token de acceso de corta duración de un inicio de sesión almacenado, y la sesión volvía a fallar con errores 401 una vez que ese token expiraba.

1218* Para solicitudes repetidas de inicio de sesión entre lanzamientos, consulta las verificaciones del reloj del sistema y los pasos de recuperación del almacenamiento de credenciales de macOS en [Solución de problemas](/docs/es/troubleshoot-install#not-logged-in-or-token-expired)1228* Si se te pide iniciar sesión repetidamente en distintos arranques, consulta las comprobaciones del reloj del sistema y los pasos de recuperación del almacenamiento de credenciales de macOS en [Solución de problemas](/docs/es/troubleshoot-install#not-logged-in-or-token-expired)

1219* Para otros fallos incluyendo `403 Forbidden` y problemas del navegador OAuth, consulta [Inicio de sesión y autenticación](/docs/es/troubleshoot-install#login-and-authentication)1229* Para otros fallos, incluidos `403 Forbidden` y problemas de OAuth en el navegador, consulta [Inicio de sesión y autenticación](/docs/es/troubleshoot-install#login-and-authentication)

1220 1230 

1221<h3 id="api-error-401-invalid-authentication-credentials">1231<h3 id="api-error-401-invalid-authentication-credentials">

1222 Error de API: 401 Credenciales de autenticación inválidas1232 API Error: 401 Invalid authentication credentials

1223</h3>1233</h3>

1224 1234 

1225La API reconoció el formato de tu credencial pero rechazó la cuenta u organización detrás de ella. Anthropic devuelve este mensaje cuando una credencial fue revocada recientemente, cuando una organización fue deshabilitada o eliminó tu acceso, o cuando la cuenta misma fue desactivada, por lo que un token expirado no es la causa. La credencial puede ser tu inicio de sesión guardado o un `ANTHROPIC_API_KEY` aprobado, y la solución difiere, así que comienza ejecutando `/status` para ver cuál está activo.1235La API reconoció el formato de tu credencial, pero rechazó la cuenta u organización que la respalda. Anthropic devuelve este mensaje cuando una credencial se revocó recientemente, cuando una organización se deshabilitó o eliminó tu acceso, o cuando la propia cuenta se desactivó, así que la causa no es un token expirado. La credencial puede ser tu inicio de sesión guardado o una `ANTHROPIC_API_KEY` aprobada, y la solución es distinta, así que empieza por ejecutar `/status` para ver cuál está activa.

1226 1236 

1227```text theme={null}1237```text theme={null}

1228Please run /login · API Error: 401 Invalid authentication credentials1238Please run /login · API Error: 401 Invalid authentication credentials


1230 1240 

1231**Qué hacer:**1241**Qué hacer:**

1232 1242 

1233* Si `/status` muestra una fila `API key` que no está marcada como no en uso, un [`ANTHROPIC_API_KEY`](/docs/es/authentication#authentication-precedence) aprobado es la credencial activa y toma precedencia sobre tu inicio de sesión, por lo que `/login` no lo reemplaza. Rota la clave en la Consola de Claude, o recurre a tu suscripción ejecutando `unset ANTHROPIC_API_KEY`, o en PowerShell `Remove-Item Env:ANTHROPIC_API_KEY`.1243* Si `/status` muestra una fila `API key` que no está marcada como no en uso, una [`ANTHROPIC_API_KEY`](/docs/es/authentication#authentication-precedence) aprobada es la credencial activa y tiene precedencia sobre tu inicio de sesión, así que `/login` no la reemplaza. Rota la clave en la Claude Console, o recurre a tu suscripción ejecutando `unset ANTHROPIC_API_KEY`, o en PowerShell `Remove-Item Env:ANTHROPIC_API_KEY`.

1234* Si `/status` muestra solo tu inicio de sesión, ejecuta `/login` una vez. Si la credencial fue revocada, un inicio de sesión nuevo la reemplaza.1244* Si `/status` muestra solo tu inicio de sesión, ejecuta `/login` una vez. Si la credencial fue revocada, un inicio de sesión nuevo la reemplaza.

1235* Si el mismo mensaje regresa para la misma cuenta de inicio de sesión, la cuenta u organización ya no está activa. Verifica la cuenta y organización que `/status` reporta, y pide al administrador de tu organización que restaure el acceso.1245* Si el mismo mensaje vuelve para la misma cuenta de inicio de sesión, la cuenta u organización ya no está activa. Revisa la cuenta y la organización que informa `/status`, y pide al administrador de tu organización que restablezca el acceso.

1236* Si [`ANTHROPIC_BASE_URL`](/docs/es/env-vars) apunta a una [puerta de enlace LLM](/docs/es/llm-gateway), el texto después de `401` es el mensaje de tu puerta de enlace en lugar del de Anthropic, y `/login` no lo cambia. Corrige la credencial que tu puerta de enlace espera en su lugar.1246* Si [`ANTHROPIC_BASE_URL`](/docs/es/env-vars) apunta a un [gateway de LLM](/docs/es/llm-gateway), el texto después de `401` es el mensaje de tu gateway y no el de Anthropic, y `/login` no lo cambia. En su lugar, corrige la credencial que espera tu gateway.

1237 1247 

1238<h3 id="login-expired">1248<h3 id="login-expired">

1239 Inicio de sesión expirado1249 Inicio de sesión expirado

1240</h3>1250</h3>

1241 1251 

1242Claude Code intentó renovar tu inicio de sesión guardado de claude.ai y el servicio OAuth rechazó el token de actualización almacenado, por lo que Claude Code borró las credenciales guardadas. Después de eso, cada solicitud de modelo se detiene localmente con este mensaje antes de llegar a la API, porque solo `/login` puede crear nuevas credenciales.1252Claude Code intentó renovar tu inicio de sesión de claude.ai guardado y el servicio de OAuth rechazó el token de actualización almacenado, así que Claude Code borró las credenciales guardadas. Después de eso, cada solicitud al modelo se detiene localmente con este mensaje antes de llegar a la API, porque solo `/login` puede crear credenciales nuevas.

1243 1253 

1244Antes de v2.1.206, Claude Code enviaba la solicitud de modelo de todas formas con cualquier credencial que permaneciera en el entorno, y cada modelo fallaba con [Hay un problema con el modelo seleccionado](#theres-an-issue-with-the-selected-model) o un 401 en lugar de un aviso para iniciar sesión.1254Antes de v2.1.206, Claude Code enviaba de todos modos la solicitud al modelo con la credencial que quedara en el entorno, y entonces todos los modelos fallaban con [Hay un problema con el modelo seleccionado](#theres-an-issue-with-the-selected-model) o un 401 en lugar de pedirte que iniciaras sesión.

1245 1255 

1246```text theme={null}1256```text theme={null}

1247Login expired · Please run /login1257Login expired · Please run /login

1248```1258```

1249 1259 

1250En [modo no interactivo](/docs/es/headless) (`-p`) y [Agent SDK](/docs/es/agent-sdk/overview), el mensaje se lee de la siguiente manera, y el código de error estructurado es `authentication_failed`:1260En [modo no interactivo](/docs/es/headless) (`-p`) y en el [Agent SDK](/docs/es/agent-sdk/overview), el mensaje dice lo siguiente, y el código de error estructurado es `authentication_failed`:

1251 1261 

1252```text theme={null}1262```text theme={null}

1253Failed to authenticate: OAuth session expired and could not be refreshed1263Failed to authenticate: OAuth session expired and could not be refreshed

1254```1264```

1255 1265 

1256Este no es el mismo estado que [Token OAuth revocado o expirado](#oauth-token-revoked-or-expired). Esos mensajes reportan un rechazo que la API devolvió. Claude Code mismo produce `Login expired` para un inicio de sesión que ya falló al renovar, por lo que no envía solicitud. Cuando la renovación falla porque la cuenta misma está suspendida en lugar de que el inicio de sesión sea antiguo, Claude Code muestra [Tu cuenta está en espera](#your-account-is-on-hold) en su lugar.1266Este no es el mismo estado que [Token de OAuth revocado o expirado](#oauth-token-revoked-or-expired). Esos mensajes informan un rechazo que devolvió la API. El propio Claude Code produce `Login expired` para un inicio de sesión que ya no pudo renovar, así que no envía ninguna solicitud. Cuando la renovación falla porque la propia cuenta está suspendida y no porque el inicio de sesión esté obsoleto, Claude Code muestra [Tu cuenta está en espera](#your-account-is-on-hold) en su lugar.

1257 1267 

1258Las sesiones autenticadas con una clave API, [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/es/env-vars), o un proveedor de terceros no usan el inicio de sesión guardado y nunca ven este mensaje.1268Las sesiones autenticadas con una clave de API, [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/es/env-vars) o un proveedor de terceros no usan el inicio de sesión guardado y nunca ven este mensaje.

1259 1269 

1260Puedes verificar este estado antes de que una solicitud falle: [`/status`](/docs/es/commands) muestra una fila `Login` que dice `Expired — log in again`, más la organización y correo electrónico que tiene guardados para el inicio de sesión expirado. La fila aparece solo cuando el inicio de sesión guardado es tu credencial activa y ya no se puede renovar. Las sesiones autenticadas de otra manera no muestran la fila, incluso si un inicio de sesión expirado permanece guardado. Antes de v2.1.210, `/status` no daba indicación en este estado de que un inicio de sesión hubiera existido alguna vez, porque la credencial borrada no le dejaba nada para reportar.1270Puedes comprobar este estado antes de que falle una solicitud: [`/status`](/docs/es/commands) muestra una fila `Login` que dice `Expired — log in again`, además de la organización y el correo electrónico que tiene guardados para el inicio de sesión expirado. La fila aparece solo cuando el inicio de sesión guardado es tu credencial activa y ya no se puede renovar. Las sesiones autenticadas de otra forma no muestran la fila, aunque siga guardado un inicio de sesión expirado. Antes de v2.1.210, `/status` no daba ninguna indicación en este estado de que alguna vez hubiera existido un inicio de sesión, porque la credencial borrada no le dejaba nada que informar.

1261 1271 

1262**Qué hacer:**1272**Qué hacer:**

1263 1273 

1264* Ejecuta `/login` para iniciar sesión nuevamente. Reintentar sin iniciar sesión muestra el mismo mensaje en cada solicitud.1274* Ejecuta `/login` para volver a iniciar sesión. Reintentar sin iniciar sesión muestra el mismo mensaje en cada solicitud.

1265* En modo no interactivo, ejecuta `claude` en el mismo entorno, completa `/login`, luego reejecutar tu comando. Para automatización que no puede iniciar sesión interactivamente, auténticate con `ANTHROPIC_API_KEY` o [genera un token de larga duración con `claude setup-token`](/docs/es/authentication#generate-a-long-lived-token).1275* Si inicias sesión con tu cuenta de claude.ai en otra ventana de Claude Code, consulta [No has iniciado sesión](#not-logged-in) para saber cuándo esta sesión empieza a usar ese inicio de sesión por sí sola.

1266* Si iniciar sesión sigue fallando, consulta [Inicio de sesión y autenticación](/docs/es/troubleshoot-install#login-and-authentication)1276* En modo no interactivo, ejecuta `claude` en el mismo entorno, completa `/login` y luego vuelve a ejecutar tu comando. Para automatización que no puede iniciar sesión de forma interactiva, autentícate con `ANTHROPIC_API_KEY` o [genera un token de larga duración con `claude setup-token`](/docs/es/authentication#generate-a-long-lived-token).

1277* Si el inicio de sesión sigue fallando, consulta [Inicio de sesión y autenticación](/docs/es/troubleshoot-install#login-and-authentication)

1267 1278 

1268<h3 id="could-not-refresh-your-login">1279<h3 id="could-not-refresh-your-login">

1269 No se pudo actualizar tu inicio de sesión porque otro proceso de Claude Code lo está actualizando1280 No se pudo renovar tu inicio de sesión porque otro proceso de Claude Code lo está renovando

1270</h3>1281</h3>

1271 1282 

1272Este mensaje no significa que tu inicio de sesión fue rechazado. Tu inicio de sesión guardado de claude.ai había expirado y necesitaba renovación. Otro proceso de Claude Code en la misma máquina mantenía el bloqueo de actualización compartida, o salió y lo dejó atrás, y la actualización no hizo progreso mientras esta sesión esperaba. Claude Code detiene la solicitud antes de enviarla:1283Este mensaje no significa que tu inicio de sesión haya sido rechazado. Tu inicio de sesión de claude.ai guardado había expirado y necesitaba renovarse. Otro proceso de Claude Code en la misma máquina tenía el bloqueo de renovación compartido, o terminó y lo dejó sin liberar, y la renovación no avanzó mientras esta sesión esperaba. Claude Code detiene la solicitud antes de enviarla:

1273 1284 

1274```text theme={null}1285```text theme={null}

1275Could not refresh your login because another Claude Code process is refreshing it (or exited mid-refresh) · Try again in a minute; if it keeps happening, close other Claude Code windows or sign in again with /login1286Could not refresh your login because another Claude Code process is refreshing it (or exited mid-refresh) · Try again in a minute; if it keeps happening, close other Claude Code windows or sign in again with /login

1276```1287```

1277 1288 

1278En [modo no interactivo](/docs/es/headless) (`-p`) y [Agent SDK](/docs/es/agent-sdk/overview), el mensaje se lee de la siguiente manera, y el código de error estructurado es `server_error`:1289En [modo no interactivo](/docs/es/headless) (`-p`) y en el [Agent SDK](/docs/es/agent-sdk/overview), el mensaje dice lo siguiente, y el código de error estructurado es `server_error`:

1279 1290 

1280```text theme={null}1291```text theme={null}

1281Failed to refresh OAuth token: another Claude Code process is refreshing it or exited mid-refresh. This is usually transient; retry in a minute, and if it persists close other Claude Code processes or sign in again1292Failed to refresh OAuth token: another Claude Code process is refreshing it or exited mid-refresh. This is usually transient; retry in a minute, and if it persists close other Claude Code processes or sign in again

1282```1293```

1283 1294 

1284Las sesiones autenticadas con una clave API, [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/es/env-vars), o un proveedor de terceros no usan el inicio de sesión guardado y nunca ven este mensaje.1295Las sesiones autenticadas con una clave de API, [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/es/env-vars) o un proveedor de terceros no usan el inicio de sesión guardado y nunca ven este mensaje.

1285 1296 

1286**Qué hacer:**1297**Qué hacer:**

1287 1298 

1288* Intenta nuevamente en un minuto. Si otro proceso completa la actualización primero, esta sesión usa el inicio de sesión renovado.1299* Vuelve a intentarlo en un minuto. Si otro proceso completa primero la renovación, esta sesión usa el inicio de sesión renovado.

1289* Si el mensaje sigue regresando, cierra otras ventanas y procesos de Claude Code, luego reintenta.1300* Si el mensaje sigue apareciendo, cierra las demás ventanas y procesos de Claude Code y vuelve a intentarlo.

1290* Si regresa sin otro proceso de Claude Code ejecutándose, ejecuta `/login`. Iniciar sesión nuevamente no espera en el bloqueo de actualización.1301* Si aparece sin que haya ningún otro proceso de Claude Code en ejecución, ejecuta `/login`. Volver a iniciar sesión no espera al bloqueo de renovación.

1291 1302 

1292<h3 id="couldnt-save-your-login">1303<h3 id="couldnt-save-your-login">

1293 No se pudo guardar tu inicio de sesión1304 No se pudo guardar tu inicio de sesión

1294</h3>1305</h3>

1295 1306 

1296Iniciaste sesión con claude.ai, pero Claude Code no pudo guardar el inicio de sesión en su almacén de credenciales, por lo que el inicio de sesión no se completó. En macOS esto puede suceder cuando el llavero de inicio de sesión se bloquea, por ejemplo en suspensión o inactividad, después de que Claude Code ya haya leído o guardado credenciales en él durante la misma sesión.1307Iniciaste sesión con claude.ai, pero Claude Code no pudo guardar el inicio de sesión en su almacén de credenciales, así que el inicio de sesión no se completó. En macOS, esto puede ocurrir cuando el llavero de inicio de sesión se bloquea, por ejemplo, al entrar en reposo o por inactividad, después de que Claude Code ya haya leído o guardado credenciales en él durante la misma sesión.

1297 1308 

1298```text theme={null}1309```text theme={null}

1299Couldn't save your login. If your Mac's keychain is locked, unlock it and log in again.1310Couldn't save your login. If your Mac's keychain is locked, unlock it and log in again.

1300Couldn't save your login. Try logging in again.1311Couldn't save your login. Try logging in again.

1301```1312```

1302 1313 

1303La primera forma aparece en macOS y la segunda en todas partes. Un fallo transitorio del almacén de credenciales, como un tiempo de espera o un almacén ilegible, produce el mismo mensaje.1314La primera forma aparece en macOS y la segunda en todas las demás plataformas. Un fallo transitorio del almacén de credenciales, como que se agote el tiempo de espera o un almacén ilegible, produce el mismo mensaje.

1304 1315 

1305**Qué hacer:**1316**Qué hacer:**

1306 1317 

1307* En macOS, desbloquea el llavero de inicio de sesión, luego ejecuta `/login` nuevamente1318* En macOS, desbloquea el llavero de inicio de sesión y luego vuelve a ejecutar `/login`

1308* En otras plataformas, ejecuta `/login` nuevamente1319* En otras plataformas, vuelve a ejecutar `/login`

1309* Si el inicio de sesión aún no se guarda, consulta [No iniciaste sesión o token expirado](/docs/es/troubleshoot-install#not-logged-in-or-token-expired) para el comando de desbloqueo del llavero y otros pasos de recuperación del almacenamiento de credenciales1320* Si el inicio de sesión sigue sin guardarse, consulta [No has iniciado sesión o el token expiró](/docs/es/troubleshoot-install#not-logged-in-or-token-expired) para ver el comando para desbloquear el llavero y otros pasos de recuperación del almacenamiento de credenciales

1310 1321 

1311<h3 id="failed-to-start-oauth-callback-server">1322<h3 id="failed-to-start-oauth-callback-server">

1312 Falló al iniciar el servidor de devolución de llamada OAuth1323 No se pudo iniciar el servidor de callback de OAuth

1313</h3>1324</h3>

1314 1325 

1315Cuando `/login`, `claude auth login`, o `claude setup-token` te inicia sesión a través del navegador, Claude Code abre un puerto de escucha en `127.0.0.1` para que tu navegador pueda devolver el resultado del inicio de sesión. Este mensaje significa que Claude Code no pudo abrir ese puerto, y el inicio de sesión se detiene antes de que aparezca una ventana del navegador o URL de inicio de sesión:1326Cuando `/login`, `claude auth login` o `claude setup-token` te inicia sesión a través del navegador, Claude Code abre un puerto de escucha en `127.0.0.1` para que tu navegador pueda devolverle el resultado del inicio de sesión. Este mensaje significa que Claude Code no pudo abrir ese puerto, y el inicio de sesión se detiene antes de que aparezca una ventana del navegador o una URL de inicio de sesión:

1316 1327 

1317```text theme={null}1328```text theme={null}

1318Failed to start OAuth callback server: Failed to start server. Is port 0 in use?1329Failed to start OAuth callback server: Failed to start server. Is port 0 in use?

1319```1330```

1320 1331 

1321Si tu mensaje termina con `Is port 0 in use?`, el intento de escuchar en la dirección de loopback IPv4 `127.0.0.1` falló completamente. Porque el fallo sucede antes de que exista una URL de inicio de sesión, el flujo `Paste code here if prompted` no está disponible como solución alternativa.1332Si tu mensaje termina con `Is port 0 in use?`, el intento de escuchar en la dirección de loopback IPv4 `127.0.0.1` falló directamente. Como el fallo ocurre antes de que exista una URL de inicio de sesión, el flujo `Paste code here if prompted` no está disponible como solución alternativa.

1322 1333 

1323**Qué hacer:**1334**Qué hacer:**

1324 1335 

1325* Para iniciar sesión ahora sin el oyente local: si usas una suscripción de claude.ai, ejecuta [`claude setup-token`](/docs/es/authentication#generate-a-long-lived-token) en una máquina donde el inicio de sesión funciona y configura el token que imprime como `CLAUDE_CODE_OAUTH_TOKEN` en esta máquina. De lo contrario, configura `ANTHROPIC_API_KEY` con una clave de la [Consola de Claude](https://platform.claude.com/settings/keys). [Precedencia de autenticación](/docs/es/authentication#authentication-precedence) explica cómo Claude Code elige entre credenciales.1336* Para iniciar sesión de inmediato sin el listener local: si usas una suscripción de claude.ai, ejecuta [`claude setup-token`](/docs/es/authentication#generate-a-long-lived-token) en una máquina donde el inicio de sesión funcione y define el token que imprime como `CLAUDE_CODE_OAUTH_TOKEN` en esta máquina. De lo contrario, define `ANTHROPIC_API_KEY` con una clave de la [Claude Console](https://platform.claude.com/settings/keys). [Precedencia de autenticación](/docs/es/authentication#authentication-precedence) explica cómo elige Claude Code entre credenciales.

1326* Para usar el inicio de sesión del navegador en esta máquina en su lugar, Claude Code debe poder escuchar en `127.0.0.1`. Si se ejecuta dentro de una sandbox, verifica que la política de la sandbox permita escuchar en puertos locales, luego ejecuta `/login` nuevamente. Si debería poder y aún falla, ejecuta `/feedback` para que el informe incluya los detalles de tu entorno.1337* Para usar en su lugar el inicio de sesión por navegador en esta máquina, Claude Code debe poder escuchar en `127.0.0.1`. Si se ejecuta dentro de un sandbox, comprueba que la política del sandbox permita escuchar en puertos locales y luego vuelve a ejecutar `/login`. Si debería poder hacerlo y sigue fallando, ejecuta `/feedback` para que el informe incluya los detalles de tu entorno.

1327 1338 

1328<h3 id="claude-login-not-accepted">1339<h3 id="claude-login-not-accepted">

1329 Inicio de sesión de Claude no aceptado1340 Inicio de sesión de Claude no aceptado

1330</h3>1341</h3>

1331 1342 

1332Intentaste iniciar una [sesión en la nube](/docs/es/claude-code-on-the-web), y el servidor se negó a crearla con un 401: no aceptó el inicio de sesión de Claude que esta máquina envió, generalmente porque el inicio de sesión expiró o fue revocado.1343Intentaste iniciar una [sesión en la nube](/docs/es/claude-code-on-the-web), y el servidor se negó a crearla con un 401: no aceptó el inicio de sesión de Claude que envió esta máquina, normalmente porque el inicio de sesión expiró o fue revocado.

1333 1344 

1334La primera parte de la línea es la razón propia del servidor cuando da una. De lo contrario, la línea se lee:1345La primera parte de la línea es el propio motivo del servidor cuando lo proporciona. De lo contrario, la línea dice:

1335 1346 

1336```text theme={null}1347```text theme={null}

1337Claude login not accepted · Run /login, then try again1348Claude login not accepted · Run /login, then try again


1339 1350 

1340**Qué hacer:**1351**Qué hacer:**

1341 1352 

1342* Ejecuta `/login`, completa el inicio de sesión, luego inicia la sesión nuevamente1353* Ejecuta `/login`, completa el inicio de sesión y luego vuelve a iniciar la sesión

1343 1354 

1344<h3 id="artifacts-need-a-claude-ai-login">1355<h3 id="artifacts-need-a-claude-ai-login">

1345 Los artefactos necesitan un inicio de sesión de claude.ai1356 Los artefactos necesitan un inicio de sesión de claude.ai

1346</h3>1357</h3>

1347 1358 

1348Claude Code rechazó una publicación o lectura de [artefactos](/docs/es/artifacts) porque la sesión no tiene un inicio de sesión de claude.ai que pueda usar para artefactos.1359Claude Code rechazó la publicación o lectura de un [artefacto](/docs/es/artifacts) porque la sesión no tiene ningún inicio de sesión de claude.ai que pueda usar para artefactos.

1349 1360 

1350Cada forma del mensaje comienza con las mismas palabras, seguidas de un remedio que depende de cómo tu sesión se autentica. Sin credencial competidora se lee:1361Todas las formas del mensaje empiezan con las mismas palabras, seguidas de una solución que depende de cómo se autentica tu sesión. Sin ninguna credencial en competencia, dice:

1351 1362 

1352```text theme={null}1363```text theme={null}

1353Artifacts need a claude.ai login. Run /login and select "Claude account with subscription", then retry — the "Anthropic Console account" option does not provide claude.ai credentials.1364Artifacts need a claude.ai login. Run /login and select "Claude account with subscription", then retry — the "Anthropic Console account" option does not provide claude.ai credentials.


1356**Qué hacer:**1367**Qué hacer:**

1357 1368 

1358* Ejecuta `/login` y selecciona **Claude account with subscription**. La opción **Anthropic Console account** no proporciona credenciales de claude.ai.1369* Ejecuta `/login` y selecciona **Claude account with subscription**. La opción **Anthropic Console account** no proporciona credenciales de claude.ai.

1359* Cuando el mensaje nombra una credencial que toma precedencia, como `ANTHROPIC_API_KEY`, una configuración `apiKeyHelper`, o una clave de Console guardada por un `/login` anterior, elimínalo de la manera que el mensaje dice, luego ejecuta `/login`1370* Cuando el mensaje menciona una credencial que tiene precedencia, como `ANTHROPIC_API_KEY`, un ajuste `apiKeyHelper` o una clave de Console guardada por un `/login` anterior, quítala de la forma que indica el mensaje y luego ejecuta `/login`

1360* Cuando el mensaje dice que esta sesión remota se autentica a través de la máquina que la lanzó, inicia sesión en claude.ai en esa máquina, luego reconecta la sesión1371* Cuando el mensaje dice que esta sesión remota se autentica a través de la máquina que la inició, inicia sesión en claude.ai en esa máquina y luego vuelve a conectar la sesión

1361* Cuando el mensaje dice que la credencial es inyectada por el entorno anfitrión de la sesión, no puedes cambiarla en esa sesión; inicia una sesión que esté conectada a claude.ai1372* Cuando el mensaje dice que la credencial la inyecta el entorno anfitrión de la sesión, no puedes cambiarla en esa sesión; inicia una sesión que tenga la sesión iniciada en claude.ai

1362* Consulta [Disponibilidad](/docs/es/artifacts#availability) para los otros requisitos que los artefactos tienen, como plan, proveedor de modelo y política de organización1373* Consulta [Disponibilidad](/docs/es/artifacts#availability) para ver los demás requisitos de los artefactos, como el plan, el proveedor del modelo y la política de la organización

1363 1374 

1364<h3 id="administrator-policy-requires-a-cloud-gateway-sign-in">1375<h3 id="administrator-policy-requires-a-cloud-gateway-sign-in">

1365 La política del administrador requiere un inicio de sesión de puerta de enlace en la nube1376 La política del administrador requiere iniciar sesión en el Cloud gateway

1366</h3>1377</h3>

1367 1378 

1368La [configuración administrada](/docs/es/managed-settings) de un administrador en esta máquina configuró [`forceLoginMethod`](/docs/es/settings-reference#forceloginmethod) a `"gateway"` o configuró [`forceLoginGatewayUrl`](/docs/es/settings-reference#forcelogingatewayurl). A menos que selecciones un proveedor en la nube a través de una variable como `CLAUDE_CODE_USE_BEDROCK`, Claude Code entonces acepta solo el inicio de sesión de [puerta de enlace de aplicaciones de Claude](/docs/es/claude-apps-gateway). Ves uno de dos mensajes:1379La [configuración administrada](/docs/es/managed-settings) de un administrador en esta máquina establece [`forceLoginMethod`](/docs/es/settings-reference#forceloginmethod) en `"gateway"` o define [`forceLoginGatewayUrl`](/docs/es/settings-reference#forcelogingatewayurl). A menos que selecciones un proveedor de nube mediante una variable como `CLAUDE_CODE_USE_BEDROCK`, Claude Code acepta entonces solo el inicio de sesión del [gateway de aplicaciones de Claude](/docs/es/claude-apps-gateway). Ves uno de dos mensajes:

1369 1380 

1370```text theme={null}1381```text theme={null}

1371Not signed in to the Cloud gateway — run /login.1382Not signed in to the Cloud gateway — run /login.

1372```1383```

1373 1384 

1374Las solicitudes de modelo fallan con este mensaje cuando la sesión no tiene un inicio de sesión de puerta de enlace, por ejemplo porque no has ejecutado `/login` desde que la política llegó a la máquina.1385Las solicitudes al modelo fallan con este mensaje cuando la sesión no tiene un inicio de sesión en el gateway, por ejemplo, porque no has ejecutado `/login` desde que la política llegó a la máquina.

1375 1386 

1376Si la máquina también contiene una credencial emitida por Anthropic y la configuración administrada establece `forceLoginMethod` o `forceLoginOrgUUID`, Claude Code sale al iniciar en su lugar. Esa credencial puede ser una variable `ANTHROPIC_API_KEY` o `ANTHROPIC_AUTH_TOKEN`, una configuración `apiKeyHelper`, o una clave API guardada por un inicio de sesión anterior de Claude Console. El mensaje comienza:1387Si la máquina también tiene una credencial emitida por Anthropic y la configuración administrada establece `forceLoginMethod` o `forceLoginOrgUUID`, Claude Code termina al iniciar en su lugar. Esa credencial puede ser una variable `ANTHROPIC_API_KEY` o `ANTHROPIC_AUTH_TOKEN`, un ajuste `apiKeyHelper` o una clave de API guardada por un inicio de sesión anterior en Claude Console. El mensaje empieza así:

1377 1388 

1378```text theme={null}1389```text theme={null}

1379Administrator policy requires a Cloud gateway sign-in on this machine; the1390Administrator policy requires a Cloud gateway sign-in on this machine; the


1384**Qué hacer:**1395**Qué hacer:**

1385 1396 

1386* Ejecuta `/login` y completa el inicio de sesión en la pantalla **Cloud gateway**1397* Ejecuta `/login` y completa el inicio de sesión en la pantalla **Cloud gateway**

1387* Para el mensaje de inicio, elimina la configuración `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, o `apiKeyHelper` que configuraste. Para eliminar una clave API de Console guardada, ejecuta `claude auth logout`, que también elimina un inicio de sesión guardado de claude.ai. Si seleccionas un proveedor en la nube con `CLAUDE_CODE_USE_*`, la sesión entonces comienza sin inicio de sesión. De lo contrario, inicia `claude` y ejecuta `/login`1398* Para el mensaje de inicio, quita el ajuste `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` o `apiKeyHelper` que configuraste. Para quitar una clave de API de Console guardada, ejecuta `claude auth logout`, que también quita un inicio de sesión de claude.ai guardado. Si seleccionas un proveedor de nube con `CLAUDE_CODE_USE_*`, la sesión se inicia entonces sin ningún inicio de sesión. De lo contrario, inicia `claude` y ejecuta `/login`

1388* Si crees que la máquina no debería requerir la puerta de enlace, pide al administrador que la administra que elimine `forceLoginMethod` y `forceLoginGatewayUrl` de su configuración administrada1399* Si crees que la máquina no debería requerir el gateway, pide al administrador que la gestiona que quite `forceLoginMethod` y `forceLoginGatewayUrl` de su configuración administrada

1389 1400 

1390En v2.1.265, una regresión también mostró el primer mensaje en algunas configuraciones de puerta de enlace LLM y proxy que se autentican con una clave API, `apiKeyHelper`, o encabezados personalizados, incluso sin requisito de administrador en la máquina. Actualiza a v2.1.266 o posterior. No necesitas cambiar tu configuración.1401En v2.1.265, una regresión también mostraba el primer mensaje en algunas configuraciones de gateway de LLM y proxy que se autentican con una clave de API, `apiKeyHelper` o encabezados personalizados, incluso sin ningún requisito del administrador en la máquina. Actualiza a v2.1.266 o posterior. No necesitas cambiar tu configuración.

1391 1402 

1392Antes de v2.1.261, en máquinas que establecen `forceLoginMethod` a `"gateway"`, Claude Code usaba un inicio de sesión guardado restante en lugar de fallar solicitudes de modelo, e informaba una credencial de entorno configurada con `This machine's managed settings require a first-party login` en lugar del mensaje de inicio. Antes de v2.1.265, una máquina cuya configuración administrada establecía solo `forceLoginGatewayUrl` no requería el inicio de sesión de puerta de enlace, y Claude Code usaba una credencial restante allí.1403Antes de v2.1.261, en máquinas que establecían `forceLoginMethod` en `"gateway"`, Claude Code usaba un inicio de sesión guardado que quedara en lugar de hacer fallar las solicitudes al modelo, e informaba una credencial de entorno configurada con `This machine's managed settings require a first-party login` en lugar del mensaje de inicio. Antes de v2.1.265, una máquina cuya configuración administrada definía solo `forceLoginGatewayUrl` no requería el inicio de sesión en el gateway, y Claude Code usaba ahí una credencial que quedara.

1393 1404 

1394<h3 id="your-account-is-on-hold">1405<h3 id="your-account-is-on-hold">

1395 Tu cuenta está en espera1406 Tu cuenta está en espera

1396</h3>1407</h3>

1397 1408 

1398La cuenta de Claude detrás de tu inicio de sesión ha sido suspendida. Claude Code muestra el primer mensaje cuando intenta renovar tu inicio de sesión guardado y se entera de la suspensión, y el segundo cuando un inicio de sesión que completas en el navegador lo reporta:1409La cuenta de Claude asociada a tu inicio de sesión fue suspendida. Claude Code muestra el primer mensaje cuando intenta renovar tu inicio de sesión guardado y se entera de la suspensión, y el segundo cuando un inicio de sesión que completas en el navegador la informa:

1399 1410 

1400```text theme={null}1411```text theme={null}

1401Your account is on hold and can't use Claude Code. View details or appeal: https://claude.ai/restricted1412Your account is on hold and can't use Claude Code. View details or appeal: https://claude.ai/restricted

1402Your account is on hold and can't sign in to Claude Code. View details or appeal: https://claude.ai/restricted1413Your account is on hold and can't sign in to Claude Code. View details or appeal: https://claude.ai/restricted

1403```1414```

1404 1415 

1405Iniciar sesión nuevamente con la misma cuenta no borra el mensaje, porque la suspensión está en la cuenta en lugar del inicio de sesión. En [modo no interactivo](/docs/es/headless) (`-p`) y [Agent SDK](/docs/es/agent-sdk/overview), el código de error estructurado es `account_on_hold`. Antes de v2.1.235, Claude Code reportaba una cuenta suspendida como [Inicio de sesión expirado · Please run /login](#login-expired), cuyos pasos de recuperación no pueden borrar una suspensión.1416Volver a iniciar sesión con la misma cuenta no elimina el mensaje, porque la suspensión afecta a la cuenta y no al inicio de sesión. En [modo no interactivo](/docs/es/headless) (`-p`) y en el [Agent SDK](/docs/es/agent-sdk/overview), el código de error estructurado es `account_on_hold`. Antes de v2.1.235, Claude Code informaba una cuenta en espera como [Login expired · Please run /login](#login-expired), cuyos pasos de recuperación no pueden eliminar una suspensión.

1406 1417 

1407**Qué hacer:**1418**Qué hacer:**

1408 1419 

1409* Abre el enlace en el mensaje para ver los detalles de la suspensión o apelarla1420* Abre el enlace del mensaje para ver los detalles de la suspensión o apelarla

1410* Si tienes otra cuenta de Claude o una clave API que no está afectada por la suspensión, puedes seguir trabajando mientras se resuelve la suspensión: ejecuta `/login` con esa cuenta, o configura la clave con `ANTHROPIC_API_KEY`1421* Si tienes otra cuenta de Claude o una clave de API que no esté afectada por la suspensión, puedes seguir trabajando mientras se resuelve: ejecuta `/login` con esa cuenta, o define la clave con `ANTHROPIC_API_KEY`

1411 1422 

1412<h3 id="anthropic-profile-login-expired">1423<h3 id="anthropic-profile-login-expired">

1413 Inicio de sesión de perfil de Anthropic expirado1424 El inicio de sesión del perfil de Anthropic expiró

1414</h3>1425</h3>

1415 1426 

1416Claude Code se está autenticando a través de un perfil de credencial de Anthropic cuya credencial de inicio de sesión guardada ha expirado, y el perfil no contiene una credencial de actualización que Claude Code pueda usar para renovarla. Claude Code detiene cada solicitud localmente sin reintentar, porque un reintento leería la misma credencial expirada.1427Claude Code se está autenticando mediante un perfil de credenciales de Anthropic cuya credencial de inicio de sesión guardada expiró, y el perfil no contiene ninguna credencial de actualización que Claude Code pueda usar para renovarla. Claude Code detiene cada solicitud localmente sin reintentar, porque un reintento leería la misma credencial expirada.

1417 1428 

1418```text theme={null}1429```text theme={null}

1419Anthropic profile login expired · Re-authenticate your Anthropic profile1430Anthropic profile login expired · Re-authenticate your Anthropic profile

1420Anthropic profile login expired · Run /login to use your claude.ai account instead, or re-authenticate the profile1431Anthropic profile login expired · Run /login to use your claude.ai account instead, or re-authenticate the profile

1421```1432```

1422 1433 

1423Esto aparece solo cuando la credencial activa proviene de un perfil de credencial de Anthropic, uno que seleccionas con la variable de entorno `ANTHROPIC_PROFILE`, que Claude Code descubre como el perfil activo en tu directorio de configuración de Anthropic, o que Claude Code escribió cuando [iniciaste sesión sin una clave API](/docs/es/authentication#sign-in-without-an-api-key). Las sesiones que se autentican con una clave API, un token de portador como `ANTHROPIC_AUTH_TOKEN`, o un proveedor de terceros nunca ven este mensaje.1434Esto aparece solo cuando la credencial activa proviene de un perfil de credenciales de Anthropic: uno que seleccionas con la variable de entorno `ANTHROPIC_PROFILE`, que Claude Code descubre como el perfil activo en tu directorio de configuración de Anthropic, o que Claude Code escribió cuando [iniciaste sesión sin una clave de API](/docs/es/authentication#sign-in-without-an-api-key). Las sesiones que se autentican con una clave de API, un token bearer como `ANTHROPIC_AUTH_TOKEN` o un proveedor de terceros nunca ven este mensaje.

1424 1435 

1425En una máquina que [ofrece el inicio de sesión sin clave](/docs/es/authentication#sign-in-without-an-api-key), ejecuta `/login`, elige la cuenta de Anthropic Console, e inicia sesión nuevamente para renovar un perfil que el inicio de sesión sin clave de Console o el CLI de Claude Platform `ant auth login` escribió. Claude Code reemplaza la credencial expirada en ese perfil. Para un perfil de federación u otro que creó una herramienta, `/login` no renueva la credencial. Qué forma ves depende de si seleccionaste el perfil o Claude Code lo descubrió:1436En una máquina que [ofrece el inicio de sesión sin clave](/docs/es/authentication#sign-in-without-an-api-key), ejecuta `/login`, elige la cuenta de Anthropic Console y vuelve a iniciar sesión para renovar un perfil que escribió el inicio de sesión sin clave de Console o el `ant auth login` de la Claude Platform CLI. Claude Code reemplaza la credencial expirada en ese perfil. Para un perfil de federación o uno creado por otra herramienta, `/login` no renueva la credencial. La forma que ves depende de si seleccionaste el perfil o si Claude Code lo descubrió:

1426 1437 

1427* Cuando estableces `ANTHROPIC_PROFILE` explícitamente, el mensaje termina con `Re-authenticate your Anthropic profile`.1438* Cuando defines `ANTHROPIC_PROFILE` explícitamente, el mensaje termina con `Re-authenticate your Anthropic profile`.

1428* Cuando Claude Code descubrió el perfil de tu directorio de configuración, el mensaje ofrece `/login`, porque Claude Code da precedencia a un `/login` que funciona sobre el perfil descubierto y luego se autentica con tu cuenta de claude.ai o Console en su lugar. Antes de v2.1.234, Claude Code mostraba el formulario `Re-authenticate your Anthropic profile` en este caso también.1439* Cuando Claude Code descubrió el perfil desde tu directorio de configuración, el mensaje ofrece `/login`, porque Claude Code da a un `/login` que funcione precedencia sobre el perfil descubierto y entonces se autentica con tu cuenta de claude.ai o de Console en su lugar. Antes de v2.1.234, Claude Code también mostraba la forma `Re-authenticate your Anthropic profile` en este caso.

1429 1440 

1430**Qué hacer:**1441**Qué hacer:**

1431 1442 

1432* Inicia sesión en el perfil nuevamente, luego reintenta: en una máquina que [ofrece el inicio de sesión sin clave](/docs/es/authentication#sign-in-without-an-api-key), ejecuta `/login` y elige la cuenta de Anthropic Console para un perfil que el inicio de sesión sin clave de Console o el CLI de Claude Platform `ant auth login` escribió; para otros perfiles, usa la herramienta que los creó1443* Vuelve a iniciar sesión en el perfil y luego reintenta: en una máquina que [ofrece el inicio de sesión sin clave](/docs/es/authentication#sign-in-without-an-api-key), ejecuta `/login` y elige la cuenta de Anthropic Console para un perfil que escribió el inicio de sesión sin clave de Console o el `ant auth login` de la Claude Platform CLI; para otros perfiles, usa la herramienta que los creó

1433* Si un administrador aprovisionó la credencial del perfil, pídele que emita una nueva1444* Si un administrador aprovisionó la credencial del perfil, pídele que emita una nueva

1434* Ejecuta `/status` para confirmar la fuente de credencial activa y el nombre del perfil1445* Ejecuta `/status` para confirmar la fuente de credenciales activa y el nombre del perfil

1435* Para dejar de usar el perfil, desactiva `ANTHROPIC_PROFILE` si lo estableciste, luego auténticate de otra manera, como `/login` o `ANTHROPIC_API_KEY`1446* Para dejar de usar el perfil, elimina la definición de `ANTHROPIC_PROFILE` si la definiste y luego autentícate de otra forma, como `/login` o `ANTHROPIC_API_KEY`

1436 1447 

1437<h3 id="oauth-scope-requirement">1448<h3 id="oauth-scope-requirement">

1438 Requisito de alcance OAuth1449 Requisito de alcance de OAuth

1439</h3>1450</h3>

1440 1451 

1441El token almacenado es anterior a un alcance de permiso que una característica más nueva necesita:1452El token almacenado es anterior a un alcance de permisos que necesita una función más reciente:

1442 1453 

1443```text theme={null}1454```text theme={null}

1444OAuth token does not meet scope requirement: user:profile1455OAuth token does not meet scope requirement: user:profile


1452 claude.ai rechazó el token de sesión1463 claude.ai rechazó el token de sesión

1453</h3>1464</h3>

1454 1465 

1455Una solicitud de [conector de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) falló porque claude.ai rechazó el token de tu inicio de sesión de Claude Code. El token rechazado es tu inicio de sesión, no la autorización propia del conector en claude.ai, por lo que autorizar el conector nuevamente no lo resuelve. En `/mcp`, el conector se muestra como `session token rejected` y su vista de detalle se lee:1466Una solicitud de un [conector de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) falló porque claude.ai rechazó el token de tu inicio de sesión de Claude Code. El token rechazado es tu inicio de sesión, no la autorización propia del conector en claude.ai, así que volver a autorizar el conector no lo resuelve. En `/mcp`, el conector aparece como `session token rejected` y su vista de detalle dice:

1456 1467 

1457```text theme={null}1468```text theme={null}

1458claude.ai rejected the session token. Run /login, then reconnect.1469claude.ai rejected the session token. Run /login, then reconnect.


1460 1471 

1461**Qué hacer:**1472**Qué hacer:**

1462 1473 

1463* Ejecuta `/login` para iniciar sesión nuevamente1474* Ejecuta `/login` para volver a iniciar sesión

1464* Reconecta el conector desde `/mcp`, o ejecuta `/mcp reconnect <server>`. Reconectar antes de iniciar sesión nuevamente deja el conector en el mismo estado. La opción **Reconnect** del panel `/mcp` reporta `your claude.ai session token was rejected`; el formulario `/mcp reconnect <server>` escrito reporta una reconexión exitosa incluso aunque el token aún sea rechazado.1475* Vuelve a conectar el conector desde `/mcp`, o ejecuta `/mcp reconnect <server>`. Reconectar antes de volver a iniciar sesión deja el conector en el mismo estado. La opción **Reconnect** del panel `/mcp` informa `your claude.ai session token was rejected`; la forma escrita `/mcp reconnect <server>` informa una reconexión correcta aunque el token siga rechazado.

1465 1476 

1466Antes de v2.1.222, Claude Code marcaba el conector como necesitando autenticación en su lugar, lo que te apuntaba al flujo de autorización del conector incluso aunque completarlo no resolviera el estado.1477Antes de v2.1.222, Claude Code marcaba el conector como que necesitaba autenticación, lo que te dirigía al flujo de autorización del conector aunque completarlo no resolvía el estado.

1467 1478 

1468<h3 id="mcp-server-needs-you-to-sign-in-again">1479<h3 id="mcp-server-needs-you-to-sign-in-again">

1469 El servidor MCP necesita que inicies sesión nuevamente1480 El servidor MCP necesita que vuelvas a iniciar sesión

1470</h3>1481</h3>

1471 1482 

1472Un [servidor MCP](/docs/es/mcp) remoto rechazó la credencial en una llamada de herramienta a mitad de sesión, generalmente porque un inicio de sesión o token expiró o porque el token carece de un permiso que la herramienta necesita. La llamada de herramienta falla, y `/mcp` marca el servidor como [necesitando autenticación](/docs/es/mcp#authenticate-with-remote-mcp-servers).1483Un [servidor MCP](/docs/es/mcp) remoto rechazó la credencial en una llamada a herramienta a mitad de la sesión, normalmente porque un inicio de sesión o un token expiró o porque el token carece de un permiso que la herramienta necesita. La llamada a herramienta falla, y `/mcp` marca el servidor como [que necesita autenticación](/docs/es/mcp#authenticate-with-remote-mcp-servers).

1473 1484 

1474Para un servidor en el que inicias sesión desde Claude Code, incluyendo un conector de claude.ai, el inicio de sesión expiró o fue revocado:1485Para un servidor en el que inicias sesión desde Claude Code, incluido un conector de claude.ai, el inicio de sesión expiró o fue revocado:

1475 1486 

1476```text theme={null}1487```text theme={null}

1477MCP server "<name>" needs you to sign in again (run /mcp to re-authenticate)1488MCP server "<name>" needs you to sign in again (run /mcp to re-authenticate)

1478```1489```

1479 1490 

1480Ejecuta `/mcp`, selecciona el servidor, e inicia sesión nuevamente desde su menú.1491Ejecuta `/mcp`, selecciona el servidor y vuelve a iniciar sesión desde su menú.

1481 1492 

1482Para un servidor configurado con un script [`headersHelper`](/docs/es/mcp#use-dynamic-headers-for-custom-authentication), Claude Code ya ha vuelto a ejecutar el helper e reintentado la llamada una vez antes de mostrar esto:1493Para un servidor configurado con un script [`headersHelper`](/docs/es/mcp#use-dynamic-headers-for-custom-authentication), Claude Code ya volvió a ejecutar el helper y reintentó la llamada una vez antes de mostrar esto:

1483 1494 

1484```text theme={null}1495```text theme={null}

1485MCP server "<name>" rejected the credential from its headersHelper (check the helper and run /mcp to reconnect, or to authenticate if the server also uses OAuth)1496MCP server "<name>" rejected the credential from its headersHelper (check the helper and run /mcp to reconnect, or to authenticate if the server also uses OAuth)

1486```1497```

1487 1498 

1488Verifica que el helper devuelva una credencial que el servidor acepte, luego reconecta desde `/mcp`, que vuelve a ejecutar el helper.1499Comprueba que el helper devuelva una credencial que el servidor acepte y luego vuelve a conectar desde `/mcp`, que ejecuta el helper de nuevo.

1489 1500 

1490Para un servidor con un encabezado `Authorization` estático en su configuración:1501Para un servidor con un encabezado `Authorization` estático en su configuración:

1491 1502 


1493MCP server "<name>" rejected the Authorization header in its config (update it, then run /mcp to reconnect)1504MCP server "<name>" rejected the Authorization header in its config (update it, then run /mcp to reconnect)

1494```1505```

1495 1506 

1496Actualiza el valor del encabezado donde el servidor está configurado, luego reconecta desde `/mcp`.1507Actualiza el valor del encabezado donde está configurado el servidor y luego vuelve a conectar desde `/mcp`.

1497 1508 

1498Antes de v2.1.273, los casos de inicio de sesión expirado, `headersHelper`, y encabezado `Authorization` todos mostraban `MCP server "<name>" requires re-authorization (token expired)`.1509Antes de v2.1.273, los casos de inicio de sesión expirado, `headersHelper` y encabezado `Authorization` mostraban todos `MCP server "<name>" requires re-authorization (token expired)`.

1499 1510 

1500Un servidor también puede rechazar una llamada de herramienta con HTTP 403 `insufficient_scope` para pedirte que autorices un alcance, a veces uno que tu token ya enumera. El mensaje nombra ese alcance:1511Un servidor también puede rechazar una llamada a herramienta con HTTP 403 `insufficient_scope` para pedirte que autorices un alcance, a veces uno que tu token ya incluye. El mensaje nombra ese alcance:

1501 1512 

1502```text theme={null}1513```text theme={null}

1503MCP server "<name>" needs additional permissions (scope: "<scope>") — run /mcp to re-authenticate1514MCP server "<name>" needs additional permissions (scope: "<scope>") — run /mcp to re-authenticate

1504```1515```

1505 1516 

1506Ejecuta `/mcp`, selecciona el servidor, y auténticate nuevamente desde su menú.1517Ejecuta `/mcp`, selecciona el servidor y vuelve a autenticarte desde su menú.

1507 1518 

1508Cuando la configuración del servidor no establece ni [`oauth.scopes`](/docs/es/mcp#restrict-oauth-scopes) ni [`authServerMetadataUrl`](/docs/es/mcp#override-oauth-metadata-discovery), Claude Code solicita el alcance que el servidor nombró. Con cualquiera de las dos configuraciones, Claude Code solicita los alcances de esa configuración en su lugar. Si fijaste `oauth.scopes`, agrega el alcance faltante a esa lista antes de autenticarte nuevamente.1519Cuando la configuración del servidor no define ni [`oauth.scopes`](/docs/es/mcp#restrict-oauth-scopes) ni [`authServerMetadataUrl`](/docs/es/mcp#override-oauth-metadata-discovery), Claude Code solicita el alcance que nombró el servidor. Con cualquiera de los dos ajustes, Claude Code solicita en su lugar los alcances de ese ajuste. Si fijaste `oauth.scopes`, añade el alcance que falta a esa lista antes de volver a autenticarte.

1509 1520 

1510Antes de v2.1.274, este caso mostraba el mensaje `needs you to sign in again`, y antes de v2.1.273 mostraba `requires re-authorization (token expired)` como los otros casos.1521Antes de v2.1.274, este caso mostraba el mensaje `needs you to sign in again`, y antes de v2.1.273 mostraba `requires re-authorization (token expired)` como los demás casos.

1511 1522 

1512<h3 id="mcp-server-url-is-missing-or-not-a-valid-url">1523<h3 id="mcp-server-url-is-missing-or-not-a-valid-url">

1513 URL del servidor MCP faltante o no válida1524 Falta la URL del servidor MCP o no es una URL válida

1514</h3>1525</h3>

1515 1526 

1516Claude Code se negó a iniciar un inicio de sesión OAuth para un servidor MCP remoto porque la `url` configurada del servidor no se analiza como una URL. A menos que Claude Code tenga un problema de configuración más específico para reportar para el servidor, ejecutar [`claude mcp login <name>`](/docs/es/mcp#authenticate-from-the-command-line) en tu shell imprime el rechazo como:1527Claude Code se negó a iniciar un inicio de sesión de OAuth para un servidor MCP remoto porque la `url` configurada del servidor no se puede analizar como una URL. A menos que Claude Code tenga un problema de configuración más específico que informar para el servidor, ejecutar [`claude mcp login <name>`](/docs/es/mcp#authenticate-from-the-command-line) en tu shell imprime el rechazo así:

1517 1528 

1518```text theme={null}1529```text theme={null}

1519Couldn't complete authentication for "<name>": This server's URL is missing or not a valid URL, so sign-in can't start. Fix the URL in its MCP config (or set the environment variable it uses) and try again.1530Couldn't complete authentication for "<name>": This server's URL is missing or not a valid URL, so sign-in can't start. Fix the URL in its MCP config (or set the environment variable it uses) and try again.


1521 1532 

1522**Qué hacer:**1533**Qué hacer:**

1523 1534 

1524* Configura la entrada `url` al punto final real del servidor donde el servidor está configurado, o configura la variable de entorno que su referencia [`${VAR}`](/docs/es/mcp#environment-variable-expansion-in-mcp-json) nombra, luego ejecuta el inicio de sesión nuevamente.1535* Define la `url` de la entrada con el endpoint real del servidor donde está configurado el servidor, o define la variable de entorno que nombra su [referencia `${VAR}`](/docs/es/mcp#environment-variable-expansion-in-mcp-json), y luego vuelve a ejecutar el inicio de sesión.

1525 1536 

1526<h3 id="issuer-mismatch-in-authorization-response">1537<h3 id="issuer-mismatch-in-authorization-response">

1527 Desajuste de emisor en la respuesta de autorización1538 Discrepancia del emisor en la respuesta de autorización

1528</h3>1539</h3>

1529 1540 

1530Durante un [inicio de sesión OAuth de MCP](/docs/es/mcp#authenticate-with-remote-mcp-servers), el servidor de autorización redirigió de vuelta a Claude Code con un parámetro `iss` que no nombra al emisor que Claude Code esperaba de los metadatos OAuth del servidor. Un emisor incorrecto en este paso es cómo se ve un ataque de mezcla de servidor de autorización, por lo que Claude Code falla el inicio de sesión en lugar de intercambiar el código de autorización. Claude Code muestra el error en el menú del servidor `/mcp` después del inicio de sesión del navegador:1541Durante un [inicio de sesión de OAuth de MCP](/docs/es/mcp#authenticate-with-remote-mcp-servers), el servidor de autorización redirigió de vuelta a Claude Code con un parámetro `iss` que no nombra el emisor que Claude Code esperaba según los metadatos de OAuth del servidor. Un emisor incorrecto en este paso es el aspecto que tiene un ataque de confusión (mix-up) del servidor de autorización, así que Claude Code hace fallar el inicio de sesión en lugar de intercambiar el código de autorización. Claude Code muestra el error en el menú del servidor de `/mcp` después del inicio de sesión en el navegador:

1531 1542 

1532```text theme={null}1543```text theme={null}

1533Issuer mismatch in authorization response (RFC 9207): expected "https://auth.example.com", received "https://other.example.com"1544Issuer mismatch in authorization response (RFC 9207): expected "https://auth.example.com", received "https://other.example.com"

1534```1545```

1535 1546 

1536`expected` es el emisor de los metadatos OAuth del servidor, y `received` es el valor `iss` que el redireccionamiento llevaba. Un inicio de sesión cuyo redireccionamiento no lleva parámetro `iss` pasa la verificación, a menos que los metadatos del servidor establezcan `authorization_response_iss_parameter_supported`, en cuyo caso Claude Code falla el inicio de sesión.1547`expected` es el emisor de los metadatos de OAuth del servidor, y `received` es el valor `iss` que llevaba la redirección. Un inicio de sesión cuya redirección no lleva ningún parámetro `iss` supera la comprobación, a menos que los metadatos del servidor definan `authorization_response_iss_parameter_supported`, en cuyo caso Claude Code hace fallar el inicio de sesión.

1537 1548 

1538**Qué hacer:**1549**Qué hacer:**

1539 1550 

1540* Intenta el inicio de sesión nuevamente desde `/mcp`1551* Vuelve a intentar el inicio de sesión desde `/mcp`

1541* Si el error se repite, repórtalo al operador del servidor. La solución es del lado del servidor: el servidor de autorización debe devolver el mismo emisor en el parámetro `iss` que anuncia en sus metadatos1552* Si el error se repite, infórmalo al operador del servidor. La solución es del lado del servidor: el servidor de autorización debe devolver en el parámetro `iss` el mismo emisor que anuncia en sus metadatos

1542* Para conectar mientras el servidor se está arreglando, inicia Claude Code con [`MCP_SDK_GENERATION=v1`](/docs/es/env-vars), cuyo [tiempo de ejecución](/docs/es/mcp#mcp-client-runtimes) no ejecuta esta verificación. Esto elimina una protección contra ataques de mezcla, así que prefiere la solución del lado del servidor1553* Para conectarte mientras se corrige el servidor, inicia Claude Code con [`MCP_SDK_GENERATION=v1`](/docs/es/env-vars), cuyo [runtime](/docs/es/mcp#mcp-client-runtimes) no realiza esta comprobación. Esto elimina una protección contra los ataques de confusión, así que es preferible la solución del lado del servidor

1543 1554 

1544Antes de v2.1.232, Claude Code usaba el tiempo de ejecución v2 solo en un lanzamiento gradual o cuando establecías `MCP_SDK_GENERATION=v2`.1555Antes de v2.1.232, Claude Code usaba el runtime v2 solo en un despliegue gradual o cuando definías `MCP_SDK_GENERATION=v2`.

1545 1556 

1546<h3 id="refusing-to-send-credentials-to-non-https-token-endpoint">1557<h3 id="refusing-to-send-credentials-to-non-https-token-endpoint">

1547 Negarse a enviar credenciales a punto final de token no HTTPS1558 Se rechaza enviar credenciales a un endpoint de token que no es https

1548</h3>1559</h3>

1549 1560 

1550En el [tiempo de ejecución v2](/docs/es/mcp#mcp-client-runtimes), Claude Code envía una solicitud de token [OAuth de MCP](/docs/es/mcp#authenticate-with-remote-mcp-servers) solo a un punto final de token servido sobre HTTPS o en `localhost`, `127.0.0.1`, o `::1`. Este mensaje significa que el punto final de token del servidor no es ninguno de estos, por lo que Claude Code se detuvo antes de enviar la solicitud. Eso sucede después del inicio de sesión del navegador, por lo que el paso del navegador tiene éxito primero, y nuevamente cada vez que Claude Code actualiza el token del servidor.1561En el [runtime v2](/docs/es/mcp#mcp-client-runtimes), Claude Code envía una solicitud de token de [OAuth de MCP](/docs/es/mcp#authenticate-with-remote-mcp-servers) solo a un endpoint de token servido por HTTPS o en `localhost`, `127.0.0.1` o `::1`. Este mensaje significa que el endpoint de token del servidor no es ninguno de ellos, así que Claude Code se detuvo antes de enviar la solicitud. Eso ocurre después del inicio de sesión en el navegador, así que el paso del navegador se completa primero, y de nuevo cada vez que Claude Code renueva el token del servidor.

1551 1562 

1552En su forma completa, el mensaje viene del SDK de MCP y cita el punto final de token que rechazó. En el registro de depuración, sigue `Error during auth completion:` para un inicio de sesión o `Token refresh failed:` para una actualización. En tu shell, `claude mcp login <name>` lo imprime después de `Couldn't complete authentication for "<name>":`, y en una sesión, `/mcp` lo muestra bajo el menú del servidor:1563En su forma completa, el mensaje proviene del MCP SDK y cita el endpoint de token que rechazó. En el registro de depuración, sigue a `Error during auth completion:` para un inicio de sesión o a `Token refresh failed:` para una renovación. En tu shell, `claude mcp login <name>` lo imprime después de `Couldn't complete authentication for "<name>":`, y en una sesión, `/mcp` lo muestra en el menú del servidor:

1553 1564 

1554```text theme={null}1565```text theme={null}

1555Refusing to send credentials to non-https token endpoint 'http://192.168.1.50:8123/oauth/token'. OAuth token requests MUST use TLS (localhost / 127.0.0.1 / ::1 are exempt).1566Refusing to send credentials to non-https token endpoint 'http://192.168.1.50:8123/oauth/token'. OAuth token requests MUST use TLS (localhost / 127.0.0.1 / ::1 are exempt).

1556```1567```

1557 1568 

1558Claude Code trata una URL de servidor que tiene una cadena de consulta o un segmento de ruta largo que parece aleatorio como posiblemente secreto. Para tal servidor, redacta los errores de inicio de sesión que el SDK de MCP genera antes de mostrarlos o registrarlos. Este error entonces se lee como un nombre corto que puede cambiar entre versiones, como `io`, seguido de `from the MCP SDK for` y la URL del servidor redactada. Otros errores del SDK de MCP toman la misma forma allí. El mensaje redactado puede ser este error solo cuando el punto final de token del servidor es `http://` simple en una dirección que no sea `localhost`, `127.0.0.1`, o `::1`.1569Claude Code trata como posiblemente secreta una URL de servidor que tiene una cadena de consulta o un segmento de ruta largo con aspecto aleatorio. Para un servidor así, oculta los errores de inicio de sesión que genera el MCP SDK antes de mostrarlos o registrarlos. Este error se lee entonces como un nombre corto que puede cambiar entre versiones, como `io`, seguido de `from the MCP SDK for` y la URL del servidor ocultada. Otros errores del MCP SDK adoptan ahí la misma forma. El mensaje ocultado solo puede ser este error cuando el endpoint de token del servidor es `http://` simple en una dirección distinta de `localhost`, `127.0.0.1` o `::1`.

1559 1570 

1560**Qué hacer:**1571**Qué hacer:**

1561 1572 

1562* Sirve ese punto final de token sobre HTTPS, por ejemplo poniendo el servidor detrás de un proxy inverso o túnel que termina TLS y configurando el servidor para anunciar la dirección `https://`1573* Sirve ese endpoint de token por HTTPS, por ejemplo, colocando el servidor detrás de un proxy inverso o túnel que termine TLS y configurando el servidor para que anuncie la dirección `https://`

1563* Para conectar sin cambiar el servidor, inicia Claude Code con [`MCP_SDK_GENERATION=v1`](/docs/es/env-vars), cuyo [tiempo de ejecución](/docs/es/mcp#mcp-client-runtimes) no aplica esta regla y envía la solicitud de token sobre HTTP simple. Esa opción dura hasta que salgas y se aplica a cada servidor. El tiempo de ejecución v1 también omite la [verificación de emisor](#issuer-mismatch-in-authorization-response), así que prefiere servir el punto final sobre HTTPS1574* Para conectarte sin cambiar el servidor, inicia Claude Code con [`MCP_SDK_GENERATION=v1`](/docs/es/env-vars), cuyo [runtime](/docs/es/mcp#mcp-client-runtimes) no aplica esta regla y envía la solicitud de token por HTTP simple. Esa elección dura hasta que salgas y se aplica a todos los servidores. El runtime v1 también omite la [comprobación del emisor](#issuer-mismatch-in-authorization-response), así que es preferible servir el endpoint por HTTPS

1564 1575 

1565<h3 id="aws-credentials-expired-or-invalid">1576<h3 id="aws-credentials-expired-or-invalid">

1566 Las credenciales de AWS expiraron o son inválidas1577 Credenciales de AWS expiradas o no válidas

1567</h3>1578</h3>

1568 1579 

1569Tu token de sesión de AWS expiró o fue rechazado. Este mensaje aparece en un 401 de [Claude Platform en AWS](/docs/es/claude-platform-on-aws) o el [punto final de Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint), que es cómo esos proveedores reportan un token de seguridad expirado.1580Tu token de sesión de AWS expiró o fue rechazado. Este mensaje aparece ante un 401 de [Claude Platform on AWS](/docs/es/claude-platform-on-aws) o del [endpoint de Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint), que es como esos proveedores informan un token de seguridad expirado.

1570 1581 

1571La sugerencia de acción en el medio varía con tu configuración. La parte estable es el `AWS credentials expired or invalid` inicial:1582La sugerencia de acción en la parte central varía según tu configuración. La parte estable es el comienzo `AWS credentials expired or invalid`:

1572 1583 

1573```text theme={null}1584```text theme={null}

1574AWS credentials expired or invalid · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · API Error: 401 ...1585AWS credentials expired or invalid · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · API Error: 401 ...


1578 1589 

1579**Qué hacer:**1590**Qué hacer:**

1580 1591 

1581* Si la sugerencia dice que las credenciales son administradas por este entorno, la aplicación que lanzó Claude Code es propietaria de la credencial y los otros pasos aquí no aplican: reintenta, o contacta a tu administrador1592* Si la sugerencia dice que las credenciales las gestiona este entorno, la aplicación que inició Claude Code es la propietaria de la credencial y los demás pasos de aquí no se aplican: reintenta o contacta con tu administrador

1582* Si [`awsAuthRefresh`](/docs/es/amazon-bedrock#advanced-credential-configuration) está configurado, ejecuta el comando nombrado en el mensaje, como `aws sso login --profile myprofile`, en otra terminal y completa el inicio de sesión del navegador, luego reintenta. De lo contrario, actualiza la credencial de AWS que usas tú mismo: tu inicio de sesión SSO, claves de acceso, clave API, o token de proxy1593* Si [`awsAuthRefresh`](/docs/es/amazon-bedrock#advanced-credential-configuration) está definido, ejecuta el comando que nombra el mensaje, como `aws sso login --profile myprofile`, en otra terminal y completa el inicio de sesión en el navegador; luego reintenta. De lo contrario, renueva tú mismo la credencial de AWS que usas: tu inicio de sesión de SSO, claves de acceso, clave de API o token de proxy

1583* Con `awsAuthRefresh` configurado en una sesión interactiva, puedes en su lugar ejecutar `/login`, elegir **3rd-party platform**, luego seleccionar **Claude Platform on AWS · refresh credentials** bajo **Using 3rd-party platforms** para ejecutar el mismo comando sin reiniciar Claude Code. Consulta [Configurar credenciales de AWS](/docs/es/claude-platform-on-aws#1-configure-aws-credentials)1594* Con `awsAuthRefresh` definido en una sesión interactiva, puedes ejecutar en su lugar `/login`, elegir **3rd-party platform** y luego seleccionar **Claude Platform on AWS · refresh credentials** en **Using 3rd-party platforms** para ejecutar el mismo comando sin reiniciar Claude Code. Consulta [Configurar credenciales de AWS](/docs/es/claude-platform-on-aws#1-configure-aws-credentials)

1584* Si el error se repite después de que el comando de actualización tenga éxito, confirma que la identidad es válida fuera de Claude Code con `aws sts get-caller-identity` en el mismo shell y perfil1595* Si el error se repite después de que el comando de renovación se complete correctamente, confirma que la identidad es válida fuera de Claude Code con `aws sts get-caller-identity` en el mismo shell y perfil

1585 1596 

1586<h3 id="aws-authentication-failed">1597<h3 id="aws-authentication-failed">

1587 La autenticación de AWS falló1598 Falló la autenticación de AWS

1588</h3>1599</h3>

1589 1600 

1590Tu proveedor de AWS devolvió un 403, o [Amazon Bedrock](/docs/es/amazon-bedrock) devolvió un 401.1601Tu proveedor de AWS devolvió un 403, o [Amazon Bedrock](/docs/es/amazon-bedrock) devolvió un 401.

1591 1602 

1592Amazon Bedrock reporta un token de seguridad expirado como un 403, pero un 403 también es cómo reporta una negación de autorización, como un `AccessDeniedException` de un permiso IAM faltante. Claude Code no puede distinguir esas dos causas.1603Amazon Bedrock informa un token de seguridad expirado como un 403, pero un 403 también es la forma en que informa una denegación de autorización, como una `AccessDeniedException` por falta de un permiso de IAM. Claude Code no puede distinguir esas dos causas.

1593 1604 

1594Un 401 de Amazon Bedrock también llega aquí en lugar de bajo [Las credenciales de AWS expiraron o son inválidas](#aws-credentials-expired-or-invalid), porque Amazon Bedrock no reporta un token expirado como un 401. Un 401 de ese punto final típicamente viene de algo más en la ruta de solicitud, como un proxy corporativo.1605Un 401 de Amazon Bedrock también llega aquí y no a [Credenciales de AWS expiradas o no válidas](#aws-credentials-expired-or-invalid), porque Amazon Bedrock no informa un token expirado como un 401. Un 401 de ese endpoint suele provenir de otra cosa en la ruta de la solicitud, como un proxy corporativo.

1595 1606 

1596Una actualización de credencial arregla un token expirado y no puede arreglar las otras causas, por lo que el mensaje ofrece ambas:1607Una renovación de credenciales corrige un token expirado, pero no puede corregir las otras causas, así que el mensaje ofrece ambas cosas:

1597 1608 

1598```text theme={null}1609```text theme={null}

1599AWS authentication failed · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · if credentials are current, check AWS permissions and model access · API Error: 403 ...1610AWS authentication failed · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · if credentials are current, check AWS permissions and model access · API Error: 403 ...

1600```1611```

1601 1612 

1602La sugerencia de acción en el medio varía con tu configuración. La parte estable es el `AWS authentication failed` inicial.1613La sugerencia de acción en la parte central varía según tu configuración. La parte estable es el comienzo `AWS authentication failed`.

1603 1614 

1604Cuando el 403 es la respuesta de Amazon Bedrock de que no tienes acceso al modelo con el ID de modelo especificado, la sugerencia en su lugar te dice que habilites el modelo para tu cuenta y región en la consola de Amazon Bedrock.1615Cuando el 403 es la respuesta de Amazon Bedrock de que no tienes acceso al modelo con el ID de modelo especificado, la sugerencia te indica en su lugar que habilites el modelo para tu cuenta y región en la consola de Amazon Bedrock.

1605 1616 

1606Antes de v2.1.273, este mensaje aparecía solo cuando `awsAuthRefresh` estaba configurado.1617Antes de v2.1.273, este mensaje aparecía solo cuando `awsAuthRefresh` estaba configurado.

1607 1618 

1608**Qué hacer:**1619**Qué hacer:**

1609 1620 

1610* Si la sugerencia dice que las credenciales son administradas por este entorno, la aplicación que lanzó Claude Code es propietaria de la credencial y los otros pasos aquí no aplican: reintenta, o contacta a tu administrador1621* Si la sugerencia dice que las credenciales las gestiona este entorno, la aplicación que inició Claude Code es la propietaria de la credencial y los demás pasos de aquí no se aplican: reintenta o contacta con tu administrador

1611* Actualiza tus credenciales de AWS en caso de que una credencial expirada sea la causa: ejecuta el comando [`awsAuthRefresh`](/docs/es/amazon-bedrock#advanced-credential-configuration) nombrado en el mensaje cuando uno está configurado, o actualiza tu inicio de sesión SSO, claves de acceso, clave API, o token de proxy tú mismo1622* Renueva tus credenciales de AWS por si la causa es una credencial expirada: ejecuta el comando [`awsAuthRefresh`](/docs/es/amazon-bedrock#advanced-credential-configuration) que nombra el mensaje cuando haya uno definido, o renueva tú mismo tu inicio de sesión de SSO, claves de acceso, clave de API o token de proxy

1612* Si tus credenciales son actuales, confirma que los permisos de IAM en [Configuración de IAM](/docs/es/amazon-bedrock#iam-configuration) están adjuntos a la identidad que estás usando y que el modelo seleccionado está habilitado para tu cuenta y región1623* Si tus credenciales están vigentes, confirma que los permisos de IAM de [Configuración de IAM](/docs/es/amazon-bedrock#iam-configuration) estén asociados a la identidad que usas y que el modelo seleccionado esté habilitado para tu cuenta y región

1613* Ejecuta `aws sts get-caller-identity` para confirmar qué identidad usan tus solicitudes1624* Ejecuta `aws sts get-caller-identity` para confirmar qué identidad usan tus solicitudes

1614 1625 

1615<h3 id="google-cloud-credentials-expired-or-invalid">1626<h3 id="google-cloud-credentials-expired-or-invalid">

1616 Las credenciales de Google Cloud expiraron o son inválidas1627 Credenciales de Google Cloud expiradas o no válidas

1617</h3>1628</h3>

1618 1629 

1619Tus credenciales de Google Cloud para [Plataforma de Agentes de Google Cloud](/docs/es/google-vertex-ai) expiraron o fueron rechazadas: la solicitud devolvió un 401, que es cómo Agent Platform reporta la expiración de credenciales.1630Tus credenciales de Google Cloud para [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) expiraron o fueron rechazadas: la solicitud devolvió un 401, que es como Agent Platform informa la expiración de credenciales.

1620 1631 

1621La sugerencia de acción en el medio varía con tu configuración. La parte estable es el `Google Cloud credentials expired or invalid` inicial:1632La sugerencia de acción en la parte central varía según tu configuración. La parte estable es el comienzo `Google Cloud credentials expired or invalid`:

1622 1633 

1623```text theme={null}1634```text theme={null}

1624Google Cloud credentials expired or invalid · refresh your Google Cloud credentials (application default sign-in, or the key file in GOOGLE_APPLICATION_CREDENTIALS) and retry · API Error: 401 ...1635Google Cloud credentials expired or invalid · refresh your Google Cloud credentials (application default sign-in, or the key file in GOOGLE_APPLICATION_CREDENTIALS) and retry · API Error: 401 ...


1626 1637 

1627**Qué hacer:**1638**Qué hacer:**

1628 1639 

1629* Si la sugerencia dice que las credenciales son administradas por este entorno, la aplicación que lanzó Claude Code es propietaria de la credencial y los otros pasos aquí no aplican: reintenta, o contacta a tu administrador1640* Si la sugerencia dice que las credenciales las gestiona este entorno, la aplicación que inició Claude Code es la propietaria de la credencial y los demás pasos de aquí no se aplican: reintenta o contacta con tu administrador

1630* Si te autenticas con credenciales predeterminadas de aplicación, ejecuta el comando [`gcpAuthRefresh`](/docs/es/google-vertex-ai#advanced-credential-configuration) nombrado en el mensaje, o `gcloud auth application-default login`, y completa el inicio de sesión, luego reintenta1641* Si te autenticas con las credenciales predeterminadas de la aplicación, ejecuta el comando [`gcpAuthRefresh`](/docs/es/google-vertex-ai#advanced-credential-configuration) que nombra el mensaje, o `gcloud auth application-default login`, y completa el inicio de sesión; luego reintenta

1631* Si enrutas a través de una [puerta de enlace LLM](/docs/es/llm-gateway) con `CLAUDE_CODE_SKIP_VERTEX_AUTH` configurado, actualiza el token de puerta de enlace en `ANTHROPIC_AUTH_TOKEN` o `ANTHROPIC_CUSTOM_HEADERS`, luego reintenta1642* Si enrutas a través de un [gateway de LLM](/docs/es/llm-gateway) con `CLAUDE_CODE_SKIP_VERTEX_AUTH` definida, renueva el token del gateway en `ANTHROPIC_AUTH_TOKEN` o `ANTHROPIC_CUSTOM_HEADERS` y luego reintenta

1632* Si te autenticas con un archivo de clave de cuenta de servicio, confirma que `GOOGLE_APPLICATION_CREDENTIALS` apunta a una clave válida. Consulta [Configurar credenciales de GCP](/docs/es/google-vertex-ai#3-configure-gcp-credentials)1643* Si te autenticas con un archivo de clave de cuenta de servicio, confirma que `GOOGLE_APPLICATION_CREDENTIALS` apunte a una clave válida. Consulta [Configurar credenciales de GCP](/docs/es/google-vertex-ai#3-configure-gcp-credentials)

1633* Si el error se repite después de una actualización, confirma que la identidad funciona fuera de Claude Code con `gcloud auth application-default print-access-token` en el mismo shell1644* Si el error se repite después de una renovación, confirma que la identidad funciona fuera de Claude Code con `gcloud auth application-default print-access-token` en el mismo shell

1634 1645 

1635Antes de v2.1.273, un 401 de Agent Platform mostraba el mensaje genérico `Please run /login` o `Failed to authenticate` en su lugar, que no puede actualizar credenciales de Google Cloud.1646Antes de v2.1.273, un 401 de Agent Platform mostraba en su lugar el mensaje genérico `Please run /login` o `Failed to authenticate`, que no puede renovar las credenciales de Google Cloud.

1636 1647 

1637<h3 id="google-cloud-authentication-failed">1648<h3 id="google-cloud-authentication-failed">

1638 La autenticación de Google Cloud falló1649 Falló la autenticación de Google Cloud

1639</h3>1650</h3>

1640 1651 

1641[Plataforma de Agentes de Google Cloud](/docs/es/google-vertex-ai) devolvió un 403, que usa para negaciones de autorización en lugar de credenciales expiradas. Generalmente la identidad con la que te autenticas carece de un permiso de IAM, o el modelo no está habilitado para tu proyecto.1652[Google Cloud's Agent Platform](/docs/es/google-vertex-ai) devolvió un 403, que usa para denegaciones de autorización y no para credenciales expiradas. Normalmente, a la identidad con la que te autenticas le falta un permiso de IAM, o el modelo no está habilitado para tu proyecto.

1642 1653 

1643La sugerencia de acción en el medio varía con tu configuración. La parte estable es el `Google Cloud authentication failed` inicial:1654La sugerencia de acción en la parte central varía según tu configuración. La parte estable es el comienzo `Google Cloud authentication failed`:

1644 1655 

1645```text theme={null}1656```text theme={null}

1646Google Cloud authentication failed · refresh your Google Cloud credentials (application default sign-in, or the key file in GOOGLE_APPLICATION_CREDENTIALS) and retry · if credentials are current, check GCP IAM permissions and Vertex AI model access · API Error: 403 ...1657Google Cloud authentication failed · refresh your Google Cloud credentials (application default sign-in, or the key file in GOOGLE_APPLICATION_CREDENTIALS) and retry · if credentials are current, check GCP IAM permissions and Vertex AI model access · API Error: 403 ...


1648 1659 

1649**Qué hacer:**1660**Qué hacer:**

1650 1661 

1651* Si la sugerencia dice que las credenciales son administradas por este entorno, la aplicación que lanzó Claude Code es propietaria de la credencial y los otros pasos aquí no aplican: reintenta, o contacta a tu administrador1662* Si la sugerencia dice que las credenciales las gestiona este entorno, la aplicación que inició Claude Code es la propietaria de la credencial y los demás pasos de aquí no se aplican: reintenta o contacta con tu administrador

1652* Confirma que los roles en [Configuración de IAM](/docs/es/google-vertex-ai#iam-configuration) están otorgados a la identidad con la que te autenticas1663* Confirma que los roles de [Configuración de IAM](/docs/es/google-vertex-ai#iam-configuration) estén otorgados a la identidad con la que te autenticas

1653* Confirma que el modelo está habilitado para tu proyecto. Consulta [Solicitar acceso al modelo](/docs/es/google-vertex-ai#2-request-model-access)1664* Confirma que el modelo esté habilitado para tu proyecto. Consulta [Solicitar acceso al modelo](/docs/es/google-vertex-ai#2-request-model-access)

1654 1665 

1655Antes de v2.1.273, un 403 de Agent Platform mostraba el mensaje genérico `Please run /login` o `Failed to authenticate` en su lugar, que no puede actualizar credenciales de Google Cloud.1666Antes de v2.1.273, un 403 de Agent Platform mostraba en su lugar el mensaje genérico `Please run /login` o `Failed to authenticate`, que no puede renovar las credenciales de Google Cloud.

1656 1667 

1657<h3 id="microsoft-foundry-authentication-failed">1668<h3 id="microsoft-foundry-authentication-failed">

1658 La autenticación de Microsoft Foundry falló1669 Falló la autenticación de Microsoft Foundry

1659</h3>1670</h3>

1660 1671 

1661[Microsoft Foundry](/docs/es/microsoft-foundry) devolvió un 401 o 403: la credencial de Azure en la solicitud fue rechazada, o la identidad detrás de ella no tiene acceso al recurso de Foundry. `/login` no puede acuñar credenciales de Azure. La sugerencia de acción en el medio varía con tu configuración. La parte estable es el `Microsoft Foundry authentication failed` inicial:1672[Microsoft Foundry](/docs/es/microsoft-foundry) devolvió un 401 o 403: la credencial de Azure de la solicitud fue rechazada, o la identidad detrás de ella no tiene acceso al recurso de Foundry. `/login` no puede generar credenciales de Azure. La sugerencia de acción en el medio varía según tu configuración. La parte estable es el inicio `Microsoft Foundry authentication failed`:

1662 1673 

1663```text theme={null}1674```text theme={null}

1664Microsoft Foundry authentication failed · refresh your Foundry credential (ANTHROPIC_FOUNDRY_AUTH_TOKEN, ANTHROPIC_FOUNDRY_API_KEY, Azure sign-in for Entra, or your proxy token) and retry · if credentials are current, check access to the Foundry resource · API Error: 401 ...1675Microsoft Foundry authentication failed · refresh your Foundry credential (ANTHROPIC_FOUNDRY_AUTH_TOKEN, ANTHROPIC_FOUNDRY_API_KEY, Azure sign-in for Entra, or your proxy token) and retry · if credentials are current, check access to the Foundry resource · API Error: 401 ...


1666 1677 

1667**Qué hacer:**1678**Qué hacer:**

1668 1679 

1669* Si la sugerencia dice que las credenciales son administradas por este entorno, la aplicación que lanzó Claude Code es propietaria de la credencial y los otros pasos aquí no aplican: reintenta, o contacta a tu administrador1680* Si la sugerencia indica que las credenciales las administra este entorno, la aplicación que inició Claude Code es la dueña de la credencial y los demás pasos aquí no aplican: reintenta o comunícate con tu administrador

1670* Actualiza la credencial que configuraste en [Configurar credenciales de Azure](/docs/es/microsoft-foundry#2-configure-azure-credentials): rota `ANTHROPIC_FOUNDRY_API_KEY`, acuña un `ANTHROPIC_FOUNDRY_AUTH_TOKEN` nuevo, o ejecuta `az login` para que la cadena de credencial predeterminada de Microsoft Entra pueda iniciar sesión nuevamente1681* Actualiza la credencial que configuraste en [Configurar credenciales de Azure](/docs/es/microsoft-foundry#2-configure-azure-credentials): rota `ANTHROPIC_FOUNDRY_API_KEY`, genera un `ANTHROPIC_FOUNDRY_AUTH_TOKEN` nuevo o ejecuta `az login` para que la cadena de credenciales predeterminada de Microsoft Entra pueda iniciar sesión de nuevo

1671* Si la credencial es actual, confirma que la identidad tiene acceso al recurso de Foundry. Consulta [Configuración de RBAC de Azure](/docs/es/microsoft-foundry#azure-rbac-configuration)1682* Si la credencial está vigente, confirma que la identidad tenga acceso al recurso de Foundry. Consulta [Configuración de Azure RBAC](/docs/es/microsoft-foundry#azure-rbac-configuration)

1672 1683 

1673Antes de v2.1.273, un 401 o 403 de Microsoft Foundry mostraba el mensaje genérico `Please run /login` o `Failed to authenticate` en su lugar, que no puede actualizar credenciales de Azure.1684Antes de la v2.1.273, un 401 o 403 de Microsoft Foundry mostraba en su lugar el mensaje genérico `Please run /login` o `Failed to authenticate`, que no puede actualizar las credenciales de Azure.

1674 1685 

1675<h3 id="could-not-load-aws-or-google-cloud-credentials">1686<h3 id="could-not-load-aws-or-google-cloud-credentials">

1676 No se pudieron cargar las credenciales de AWS o Google Cloud1687 No se pudieron cargar las credenciales de AWS o Google Cloud

1677</h3>1688</h3>

1678 1689 

1679Claude Code no pudo obtener credenciales utilizables de la cadena de proveedor de credenciales de AWS o de tus credenciales predeterminadas de aplicación de Google en la máquina en la que se ejecuta, por lo que ninguna solicitud llegó a tu proveedor en la nube. Claude Code borra sus credenciales en caché y reintenta dos veces antes de mostrar este mensaje. El detalle después del `·` nombra la causa específica, como una sesión SSO expirada, credenciales predeterminadas faltantes reportadas como `Could not load the default credentials`, o un inicio de sesión revocado reportado como `invalid_grant`:1690Claude Code no pudo obtener credenciales utilizables de la cadena de proveedores de credenciales de AWS ni de tus credenciales predeterminadas de aplicación de Google en la máquina donde se ejecuta, así que ninguna solicitud llegó a tu proveedor de nube. Claude Code borra sus credenciales almacenadas en caché y reintenta dos veces antes de mostrar este mensaje. El detalle después del `·` indica la causa específica, como una sesión de SSO vencida, credenciales predeterminadas de aplicación faltantes informadas como `Could not load the default credentials`, o un inicio de sesión revocado informado como `invalid_grant`:

1680 1691 

1681```text theme={null}1692```text theme={null}

1682API Error: Could not load AWS credentials · Could not load credentials from any providers. Check or refresh your AWS credentials and try again.1693API Error: Could not load AWS credentials · Could not load credentials from any providers. Check or refresh your AWS credentials and try again.

1683API Error: Could not load Google Cloud credentials · invalid_grant. Check or refresh your Google Cloud credentials and try again.1694API Error: Could not load Google Cloud credentials · invalid_grant. Check or refresh your Google Cloud credentials and try again.

1684```1695```

1685 1696 

1686En [modo no interactivo](/docs/es/headless) con `-p` y en [Agent SDK](/docs/es/agent-sdk/overview), el código de error estructurado es `cloud_credential_error`. Antes de v2.1.267, el mensaje mostraba solo el texto de detalle después de `API Error:`, y el código estructurado era `server_error` u `unknown`.1697En el [modo no interactivo](/docs/es/headless) con `-p` y en el [Agent SDK](/docs/es/agent-sdk/overview), el código de error estructurado es `cloud_credential_error`. Antes de la v2.1.267, el mensaje mostraba solo el texto de detalle después de `API Error:`, y el código estructurado era `server_error` o `unknown`.

1687 1698 

1688**Qué hacer:**1699**Qué hacer:**

1689 1700 

1690* Ejecuta el comando de inicio de sesión de tu proveedor, como `aws sso login --profile myprofile` o `gcloud auth application-default login`, luego reintenta. [Las credenciales de Bedrock, Agent Platform, o Foundry no se cargan](/docs/es/troubleshoot-install#bedrock-agent-platform-or-foundry-credentials-not-loading) muestra cómo confirmar las credenciales fuera de Claude Code1701* Ejecuta el comando de inicio de sesión de tu proveedor, como `aws sso login --profile myprofile` o `gcloud auth application-default login`, y luego reintenta. [Las credenciales de Bedrock, Agent Platform o Foundry no se cargan](/docs/es/troubleshoot-install#bedrock-agent-platform-or-foundry-credentials-not-loading) muestra cómo confirmar las credenciales fuera de Claude Code

1691* Si el detalle dice `AWS default-chain credential resolve timed out`, la cadena se colgó en lugar de fallar, así que sigue [Resolución de credenciales de cadena predeterminada de AWS agotada](#aws-default-chain-credential-resolve-timed-out) en su lugar1702* Si el detalle dice `AWS default-chain credential resolve timed out`, la cadena se quedó colgada en lugar de fallar, así que sigue en su lugar [Se agotó el tiempo de espera para resolver las credenciales de la cadena predeterminada de AWS](#aws-default-chain-credential-resolve-timed-out)

1692 1703 

1693<h3 id="aws-default-chain-credential-resolve-timed-out">1704<h3 id="aws-default-chain-credential-resolve-timed-out">

1694 Resolución de credenciales de cadena predeterminada de AWS agotada1705 Se agotó el tiempo de espera para resolver las credenciales de la cadena predeterminada de AWS

1695</h3>1706</h3>

1696 1707 

1697La cadena de proveedor de credenciales predeterminada de AWS no produjo credenciales dentro de 60 segundos, por lo que Claude Code detuvo la resolución y falló la solicitud. Este tiempo de espera es una causa de [No se pudieron cargar las credenciales de AWS o Google Cloud](#could-not-load-aws-or-google-cloud-credentials). El fallo es resolución de credenciales local: la solicitud nunca llegó a [Amazon Bedrock](/docs/es/amazon-bedrock), [Claude Platform en AWS](/docs/es/claude-platform-on-aws), o el [punto final de Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint). Claude Code borra su [caché de credenciales](/docs/es/amazon-bedrock#credential-caching-and-resolution-timeout) e reintenta antes de que este error aparezca, por lo que en el momento en que lo ves la cadena se ha estancado en intentos repetidos.1708La cadena de proveedores de credenciales predeterminada de AWS no produjo credenciales en 60 segundos, así que Claude Code detuvo la resolución e hizo fallar la solicitud. Este tiempo de espera es una de las causas de [No se pudieron cargar las credenciales de AWS o Google Cloud](#could-not-load-aws-or-google-cloud-credentials). La falla está en la resolución local de credenciales: la solicitud nunca llegó a [Amazon Bedrock](/docs/es/amazon-bedrock), [Claude Platform on AWS](/docs/es/claude-platform-on-aws) ni al [endpoint de Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint). Claude Code borra su [caché de credenciales](/docs/es/amazon-bedrock#credential-caching-and-resolution-timeout) y reintenta antes de que aparezca este error, así que para cuando lo ves la cadena se ha estancado en intentos repetidos.

1698 1709 

1699```text theme={null}1710```text theme={null}

1700API Error: Could not load AWS credentials · AWS default-chain credential resolve timed out. Check or refresh your AWS credentials and try again.1711API Error: Could not load AWS credentials · AWS default-chain credential resolve timed out. Check or refresh your AWS credentials and try again.

1701```1712```

1702 1713 

1703Las causas comunes son un comando `credential_process` en tu perfil de AWS que espera entrada que no puede recibir, y un contenedor o VM cuyo servicio de metadatos de instancia (IMDS) nunca responde a la prueba de la cadena.1714Las causas comunes son un comando `credential_process` en tu perfil de AWS que espera una entrada que no puede recibir, y un contenedor o VM cuyo servicio de metadatos de instancia (IMDS) nunca responde al sondeo de la cadena.

1704 1715 

1705Antes de v2.1.267, el mensaje decía `API Error: AWS default-chain credential resolve timed out`.1716Antes de la v2.1.267, el mensaje decía `API Error: AWS default-chain credential resolve timed out`.

1706Antes de v2.1.207, una cadena estancada dejaba la solicitud esperando indefinidamente en lugar de fallar.1717Antes de la v2.1.207, una cadena estancada dejaba la solicitud esperando indefinidamente en lugar de fallar.

1707 1718 

1708**Qué hacer:**1719**Qué hacer:**

1709 1720 

1710* Ejecuta `aws sts get-caller-identity` en el mismo shell con el mismo `AWS_PROFILE`. Si también se cuelga, arregla el perfil; un comando `credential_process` que solicita interactivamente es una causa común.1721* Ejecuta `aws sts get-caller-identity` en el mismo shell con el mismo `AWS_PROFILE`. Si también se queda colgado, corrige el perfil; un comando `credential_process` que pide datos de forma interactiva es una causa común.

1711* Completa el paso de inicio de sesión antes de iniciar Claude Code, por ejemplo `aws sso login --profile myprofile`1722* Completa el paso de inicio de sesión antes de iniciar Claude Code, por ejemplo `aws sso login --profile myprofile`

1712* Si tu cadena ejecuta un inicio de sesión interactivo que legítimamente necesita más de 60 segundos, como SSO con MFA a través de un envoltorio como `aws-vault`, aumenta el límite en milisegundos con [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/es/env-vars)1723* Si tu cadena ejecuta un inicio de sesión interactivo que legítimamente necesita más de 60 segundos, como SSO con MFA a través de un wrapper como `aws-vault`, aumenta el límite en milisegundos con [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/es/env-vars)

1713 1724 

1714<h3 id="bedrock-setup-verification-timed-out-waiting-for-aws">1725<h3 id="bedrock-setup-verification-timed-out-waiting-for-aws">

1715 La verificación de configuración de Bedrock se agotó esperando a AWS1726 Se agotó el tiempo de espera de AWS durante la verificación de la configuración de Bedrock

1716</h3>1727</h3>

1717 1728 

1718Una llamada a AWS durante el [asistente de configuración de Bedrock](/docs/es/amazon-bedrock#sign-in-with-bedrock), como la búsqueda de credenciales o la verificación de identidad, no se completó dentro del límite de 60 segundos. El asistente deja de esperar y falla el paso de verificación:1729Una llamada a AWS durante la verificación de credenciales del [asistente de configuración de Bedrock](/docs/es/amazon-bedrock#sign-in-with-bedrock), como la búsqueda de credenciales o la comprobación de identidad, no terminó dentro del límite de 60 segundos. El asistente deja de esperar y hace fallar el paso de verificación:

1719 1730 

1720```text theme={null}1731```text theme={null}

1721Timed out after 60s waiting for AWS. Check your network and proxy settings; if a credential helper needs longer to prompt you, raise CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS.1732Timed out after 60s waiting for AWS. Check your network and proxy settings; if a credential helper needs longer to prompt you, raise CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS.

1722```1733```

1723 1734 

1724El número refleja tu límite: 60 segundos por defecto, o el valor que estableciste en [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/es/env-vars).1735El número refleja tu límite: 60 segundos de forma predeterminada, o el valor que estableciste en [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/es/env-vars).

1725 1736 

1726Las causas comunes son una red o proxy que estanca solicitudes a AWS, incluyendo la actualización del token SSO, y un ayudante de credenciales aún esperando entrada que no puedes ver. Aumenta el límite solo cuando el ayudante legítimamente necesita más tiempo.1737Las causas comunes son una red o un proxy que estanca las solicitudes a AWS, incluida la actualización del token de SSO, y un asistente de credenciales que sigue esperando una entrada que no puedes ver. Aumenta el límite solo cuando el asistente legítimamente necesite más tiempo.

1727 1738 

1728Una única solicitud estancada a AWS también puede fallar en su propio tiempo de espera por solicitud, que muestra un mensaje más corto en el mismo paso:1739Una sola solicitud estancada a AWS también puede fallar por su propio tiempo de espera por solicitud, que muestra un mensaje más corto en el mismo paso:

1729 1740 

1730```text theme={null}1741```text theme={null}

1731A request to AWS timed out. Check your network and proxy settings, then try again.1742A request to AWS timed out. Check your network and proxy settings, then try again.

1732```1743```

1733 1744 

1734Cuando los mismos tiempos de espera ocurren en el paso de fijación de modelo, el asistente marca un modelo como `unreachable` en lugar de mostrar cualquiera de los dos mensajes.1745Cuando los mismos tiempos de espera se agotan en el paso de fijación del modelo, el asistente marca un modelo como `unreachable` en lugar de mostrar cualquiera de los dos mensajes.

1735 1746 

1736**Qué hacer:**1747**Qué hacer:**

1737 1748 

1738* Ejecuta `aws sts get-caller-identity` en el mismo shell. Si también se cuelga, el estancamiento está fuera de Claude Code, en tu red, tu proxy, o el ayudante de credenciales en tu perfil de AWS; arregla eso primero.1749* Ejecuta `aws sts get-caller-identity` en el mismo shell. Si también se queda colgado, el estancamiento está fuera de Claude Code, en tu red, tu proxy o el asistente de credenciales de tu perfil de AWS; corrige eso primero.

1739* Completa cualquier inicio de sesión interactivo antes de abrir el asistente, por ejemplo `aws sso login --profile myprofile`1750* Completa cualquier inicio de sesión interactivo antes de abrir el asistente, por ejemplo `aws sso login --profile myprofile`

1740* Si un ayudante de credenciales en tu perfil de AWS legítimamente necesita más de 60 segundos para solicitarte, aumenta el límite en milisegundos con [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/es/env-vars)1751* Si un asistente de credenciales de tu perfil de AWS legítimamente necesita más de 60 segundos para pedirte datos, aumenta el límite en milisegundos con [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/es/env-vars)

1741 1752 

1742<h3 id="cloud-gateway-session-expired">1753<h3 id="cloud-gateway-session-expired">

1743 La sesión de puerta de enlace en la nube expiró1754 La sesión del gateway en la nube venció

1744</h3>1755</h3>

1745 1756 

1746Iniciaste sesión a través de una [puerta de enlace de aplicaciones de Claude](/docs/es/claude-apps-gateway), y la sesión de puerta de enlace guardada en esta máquina ha expirado y no se pudo renovar, o la puerta de enlace ya no la acepta, por ejemplo después de que el [secreto JWT de la puerta de enlace se reemplaza](/docs/es/claude-apps-gateway-deploy#jwt-secret-rotation). Si ves esta línea cuando inicias `claude` interactivamente, la sesión ha abierto sin conectarse a la puerta de enlace:1757Iniciaste sesión a través de un [gateway de aplicaciones de Claude](/docs/es/claude-apps-gateway), y la sesión del gateway guardada en esta máquina venció y no se pudo renovar, o el gateway ya no la acepta, por ejemplo después de que se [reemplaza el secreto JWT](/docs/es/claude-apps-gateway-deploy#jwt-secret-rotation) del gateway. Si ves esta línea al iniciar `claude` de forma interactiva, la sesión se abrió sin haber iniciado sesión en el gateway:

1747 1758 

1748```text theme={null}1759```text theme={null}

1749Cloud gateway session expired — run /login to reconnect.1760Cloud gateway session expired — run /login to reconnect.

1750```1761```

1751 1762 

1752La misma línea puede aparecer a mitad de sesión cuando la credencial de puerta de enlace expira y Claude Code no puede renovarla.1763La misma línea puede aparecer a mitad de sesión cuando la credencial del gateway vence y Claude Code no puede renovarla.

1753 1764 

1754En una ejecución [no interactiva](/docs/es/headless), una sesión en segundo plano u otra desatendida, o un subcomando `claude` que no sea `claude auth`, Claude Code sale con este mensaje en su lugar cuando la puerta de enlace ya no acepta la sesión:1765En una ejecución [no interactiva](/docs/es/headless), una sesión en segundo plano u otra sesión desatendida, o un subcomando de `claude` distinto de `claude auth`, Claude Code termina con este mensaje en su lugar cuando el gateway ya no acepta la sesión:

1755 1766 

1756```text theme={null}1767```text theme={null}

1757Cloud gateway <url> no longer accepts this session. Start `claude` and sign in again with /login.1768Cloud gateway <url> no longer accepts this session. Start `claude` and sign in again with /login.


1759 1770 

1760**Qué hacer:**1771**Qué hacer:**

1761 1772 

1762* Ejecuta `/login` en la sesión y completa el inicio de sesión del navegador1773* Ejecuta `/login` en la sesión y completa el inicio de sesión en el navegador

1763* Para un lanzamiento no interactivo, inicia `claude` en el mismo entorno, ejecuta `/login`, luego reejecutar tu comando1774* Para un inicio no interactivo, inicia `claude` en el mismo entorno, ejecuta `/login` y luego vuelve a ejecutar tu comando

1764 1775 

1765<h3 id="sign-in-timed-out-while-waiting-for-you-to-continue">1776<h3 id="sign-in-timed-out-while-waiting-for-you-to-continue">

1766 El inicio de sesión se agotó mientras esperaba que continúes1777 Se agotó el tiempo de espera del inicio de sesión mientras esperaba que continuaras

1767</h3>1778</h3>

1768 1779 

1769Durante un inicio de sesión de [puerta de enlace de aplicaciones de Claude](/docs/es/claude-apps-gateway), la puerta de enlace nombró la cuenta que inició sesión, y Claude Code te pidió que la confirmaras antes de guardar la credencial. Dejaste la confirmación abierta después de la expiración del inicio de sesión, y la puerta de enlace no emitió un token de actualización que pudiera renovarlo, por lo que Claude Code no almacenó nada cuando continuaste:1780Durante un inicio de sesión en un [gateway de aplicaciones de Claude](/docs/es/claude-apps-gateway), el gateway indicó la cuenta que inició sesión y Claude Code te pidió confirmarla antes de guardar la credencial. Dejaste la confirmación abierta más allá del vencimiento del propio inicio de sesión, y el gateway no emitió ningún token de actualización que pudiera renovarlo, así que Claude Code no guardó nada cuando continuaste:

1770 1781 

1771```text theme={null}1782```text theme={null}

1772Sign-in timed out while waiting for you to continue. Try again.1783Sign-in timed out while waiting for you to continue. Try again.


1774 1785 

1775**Qué hacer:**1786**Qué hacer:**

1776 1787 

1777* Ejecuta `/login` nuevamente y confirma la cuenta antes de que el inicio de sesión expire1788* Ejecuta `/login` de nuevo y confirma la cuenta antes de que venza el inicio de sesión

1778 1789 

1779<h3 id="gateway-refused-the-request">1790<h3 id="gateway-refused-the-request">

1780 La puerta de enlace rechazó la solicitud1791 El gateway rechazó la solicitud

1781</h3>1792</h3>

1782 1793 

1783Estás conectado a través de una [puerta de enlace de aplicaciones de Claude](/docs/es/claude-apps-gateway), y una solicitud devolvió un 403: la puerta de enlace, o lo que está detrás de ella, la rechazó. Iniciar sesión nuevamente no cambia un rechazo, por lo que el mensaje apunta a tu administrador de puerta de enlace:1794Iniciaste sesión a través de un [gateway de aplicaciones de Claude](/docs/es/claude-apps-gateway), y una solicitud devolvió un 403: el gateway, o el servicio upstream detrás de él, la rechazó. Volver a iniciar sesión no cambia un rechazo, así que el mensaje te dirige a tu administrador del gateway:

1784 1795 

1785```text theme={null}1796```text theme={null}

1786Gateway refused the request · signing in again won't change this — check with your gateway administrator · API Error: 403 ...1797Gateway refused the request · signing in again won't change this — check with your gateway administrator · API Error: 403 ...


1788 1799 

1789**Qué hacer:**1800**Qué hacer:**

1790 1801 

1791* Pide a tu administrador de puerta de enlace que busque la solicitud. La cola `API Error:` lleva el rechazo que la puerta de enlace devolvió1802* Pídele a tu administrador del gateway que busque la solicitud. La parte final `API Error:` contiene el rechazo que devolvió el gateway

1792* Para administradores: una [regla de control de acceso](/docs/es/claude-apps-gateway-config#http-tuning) en la puerta de enlace devuelve un 403 que el [registro de auditoría](/docs/es/claude-apps-gateway-deploy#logs) registra con su razón, y una negación de autorización de un upstream pasa a través por [Mensajes de error de upstream](/docs/es/claude-apps-gateway-config#upstream-error-messages)1803* Para administradores: una [regla de control de acceso](/docs/es/claude-apps-gateway-config#http-tuning) en el gateway devuelve un 403 que el [registro de auditoría](/docs/es/claude-apps-gateway-deploy#logs) registra con su motivo, y la denegación de autorización de un servicio upstream se transmite según [Mensajes de error del upstream](/docs/es/claude-apps-gateway-config#upstream-error-messages)

1793 1804 

1794Antes de v2.1.273, un 403 en una sesión de puerta de enlace mostraba el mensaje genérico `Please run /login` o `Failed to authenticate` en su lugar, e iniciar sesión nuevamente no borraba el rechazo.1805Antes de la v2.1.273, un 403 en una sesión del gateway mostraba en su lugar el mensaje genérico `Please run /login` o `Failed to authenticate`, y volver a iniciar sesión no eliminaba el rechazo.

1795 1806 

1796<h2 id="network-and-connection-errors">1807<h2 id="network-and-connection-errors">

1797 Errores de red y conexión1808 Errores de red y conexión


2849* Ejecute `claude doctor` desde su shell para diagnósticos de instalación2860* Ejecute `claude doctor` desde su shell para diagnósticos de instalación

2850 2861 

2851<h2 id="command-line-errors">2862<h2 id="command-line-errors">

2852 Errores de línea de comandos2863 Errores de la línea de comandos

2853</h2>2864</h2>

2854 2865 

2855Estos errores provienen del comando `claude` de línea de comandos y sus subcomandos, de un nombre de comando que envía en el símbolo del sistema, y de comandos como `/security-review` que recopilan contexto ejecutando comandos de shell antes de que se ejecute su símbolo del sistema. También provienen de `/tui`, que relanza la CLI.2866Estos errores provienen de la línea de comandos de `claude` y sus subcomandos, de un nombre de comando que envías en el prompt y de comandos como `/security-review` que recopilan contexto ejecutando comandos de shell antes de que se ejecute su prompt. También provienen de `/tui`, que vuelve a iniciar la CLI.

2856 2867 

2857<h3 id="conflict-between-bg-and-print">2868<h3 id="conflict-between-bg-and-print">

2858 Conflicto entre `--bg` y `--print`2869 Conflicto entre `--bg` y `--print`

2859</h3>2870</h3>

2860 2871 

2861Este mensaje requiere Claude Code v2.1.198 o posterior. Combinó `--bg` con `-p` o `--print` en la misma invocación de `claude`. `--bg` inicia una [sesión en segundo plano](/docs/es/agent-view#from-your-shell) a la que se conecta posteriormente con `claude agents`, mientras que `--print` se ejecuta [de forma no interactiva](/docs/es/headless) y nunca inicia la sesión interactiva a la que `claude agents` se conecta. Antes de v2.1.198, esta combinación creaba silenciosamente un trabajo en segundo plano que nunca podría ser conectado.2872Este mensaje requiere Claude Code v2.1.198 o posterior. Combinaste `--bg` con `-p` o `--print` en la misma invocación de `claude`. `--bg` inicia una [sesión en segundo plano](/docs/es/agent-view#from-your-shell) a la que luego te conectas con `claude agents`, mientras que `--print` se ejecuta de forma [no interactiva](/docs/es/headless) y nunca inicia la sesión interactiva a la que se conecta `claude agents`. Antes de v2.1.198, esta combinación creaba silenciosamente un trabajo en segundo plano al que nunca era posible conectarse.

2862 2873 

2863```text theme={null}2874```text theme={null}

2864--bg and --print conflict: --print never starts the interactive session that `claude agents` attaches to, so the job would be unattachable. The prompt is the positional — drop --print: `claude --bg '<task>'`.2875--bg and --print conflict: --print never starts the interactive session that `claude agents` attaches to, so the job would be unattachable. The prompt is the positional — drop --print: `claude --bg '<task>'`.


2866 2877 

2867**Qué hacer:**2878**Qué hacer:**

2868 2879 

2869* Elimine `-p` o `--print`. `--bg` toma el símbolo del sistema como su argumento posicional, por lo que `claude --bg "<task>"` es el comando completo. Consulte [Enviar nuevos agentes desde su shell](/docs/es/agent-view#from-your-shell).2880* Quita `-p` o `--print`. `--bg` toma el prompt como su argumento posicional, así que `claude --bg "<task>"` es el comando completo. Consulta [Despachar nuevos agentes desde tu shell](/docs/es/agent-view#from-your-shell).

2870* Para ejecutar el símbolo del sistema de forma no interactiva e imprimir el resultado en lugar de crear una sesión en segundo plano, elimine `--bg` y ejecute `claude -p "<task>"`2881* Para ejecutar el prompt de forma no interactiva e imprimir el resultado en lugar de crear una sesión en segundo plano, quita `--bg` y ejecuta `claude -p "<task>"`

2882 

2883<h3 id="conflict-between-a-system-prompt-flag-and-its-file-form">

2884 Conflicto entre un flag de prompt del sistema y su forma de archivo

2885</h3>

2886 

2887Pasaste [`--append-subagent-system-prompt`](/docs/es/cli-reference#cli-flags) junto con `--append-subagent-system-prompt-file` en una misma invocación de `claude`, así que `claude` termina con el código 1 en lugar de iniciar la sesión:

2888 

2889```text theme={null}

2890Error: Cannot use both --append-subagent-system-prompt and --append-subagent-system-prompt-file. Please use only one.

2891```

2892 

2893Antes de v2.1.283, `claude` terminaba de la misma forma cuando pasabas `--system-prompt` con `--system-prompt-file`, o `--append-system-prompt` con `--append-system-prompt-file`, porque esos pares entraban en conflicto en lugar de [combinarse](/docs/es/cli-reference#system-prompt-flags). En esas versiones, el mensaje nombra el par que combinaste.

2894 

2895**Qué hacer:**

2896 

2897* Conserva una forma del flag y quita la otra. Para combinar un archivo de prompt fijo con texto específico de cada ejecución, fusiona el texto en el archivo antes de iniciar en lugar de pasar ambos flags

2871 2898 

2872<h3 id="invalid-agents-configuration">2899<h3 id="invalid-agents-configuration">

2873 Configuración de `--agents` inválida2900 Configuración de `--agents` no válida

2874</h3>2901</h3>

2875 2902 

2876El valor que pasó a `--agents` es inválido, por lo que `claude` sale con código 1 en lugar de iniciar la sesión. Cuando pasa `--safe-mode` o establece [`CLAUDE_CODE_SAFE_MODE`](/docs/es/env-vars#variables), Claude Code ignora `--agents` completamente. Con `--resume` o `--continue`, un valor JSON en línea no se verifica y la sesión se inicia; un valor leído de un archivo se verifica en cada lanzamiento. Antes de v2.1.242, Claude Code iniciaba la sesión de todas formas.2903El valor que pasaste a `--agents` no es válido, así que `claude` termina con el código 1 en lugar de iniciar la sesión. Cuando pasas `--safe-mode` o estableces [`CLAUDE_CODE_SAFE_MODE`](/docs/es/env-vars#variables), Claude Code ignora `--agents` por completo. Con `--resume` o `--continue`, un valor JSON en línea no se verifica y la sesión se inicia; un valor leído desde un archivo se verifica en cada inicio. Antes de v2.1.242, Claude Code iniciaba la sesión de todos modos.

2877 2904 

2878```text theme={null}2905```text theme={null}

2879Error: Invalid --agents configuration:2906Error: Invalid --agents configuration:

2880<what failed>2907<what failed>

2881```2908```

2882 2909 

2883Lo que sigue a la primera línea depende de cómo falló el valor. Claude Code ejecuta estas comprobaciones en orden y se detiene en la primera que falla. Si su valor tiene dos tipos de problema, verá el segundo solo después de corregir el primero:2910Lo que sigue a la primera línea depende de cómo falló el valor. Claude Code ejecuta estas verificaciones en orden y se detiene en la primera que falla. Si tu valor tiene dos tipos de problema, solo ves el segundo después de corregir el primero:

2884 2911 

28851. Cuando el valor comienza con `{` pero no se analiza como JSON, o el contenido de un archivo `--agents` no se analiza, Claude Code imprime una línea `invalid JSON:` que lleva el mensaje propio del analizador JSON29121. Cuando el valor comienza con `{` pero no se puede analizar como JSON, o el contenido de un archivo de `--agents` no se puede analizar, Claude Code imprime una línea `invalid JSON:` con el propio mensaje del analizador de JSON

28862. Cuando se analiza pero una definición de agente no coincide con el esquema para [subagentes definidos por CLI](/docs/es/sub-agents#choose-the-subagent-scope), Claude Code imprime una línea por problema29132. Cuando se puede analizar pero una definición de agente no coincide con el esquema de los [subagentes definidos por CLI](/docs/es/sub-agents#choose-the-subagent-scope), Claude Code imprime una línea por problema

28873. Cuando un nombre de agente comienza con `-`, Claude Code imprime `<name>: agent names must not start with '-'`29143. Cuando el nombre de un agente comienza con `-`, Claude Code imprime `<name>: agent names must not start with '-'`

2888 2915 

2889Cuando hay más de 20 líneas de problema, Claude Code imprime las primeras 20 y reemplaza el resto con `…and N more`.2916Cuando hay más de 20 líneas de problemas, Claude Code imprime las primeras 20 y reemplaza el resto con `…and N more`.

2890 2917 

2891Con `--print`, `--agents` también acepta [la ruta a un archivo JSON](/docs/es/sub-agents#choose-the-subagent-scope) en lugar del objeto en línea. Antes de v2.1.281, `--agents` aceptaba solo JSON en línea y trataba una ruta de archivo como JSON inválido. La forma de archivo tiene rechazos propios, impresos en lugar de este mensaje, incluidos estos:2918Con `--print`, `--agents` también acepta [la ruta a un archivo JSON](/docs/es/sub-agents#choose-the-subagent-scope) en lugar del objeto en línea. Antes de v2.1.281, `--agents` aceptaba solo JSON en línea y trataba una ruta de archivo como JSON no válido. La forma de archivo tiene sus propios rechazos, que se imprimen en lugar de este mensaje, entre ellos estos:

2892 2919 

2893* **`Error: --agents takes a JSON object, or a file path only with --print (-p)`**: Claude Code leyó el valor como una ruta de archivo en una sesión interactiva. Pase las definiciones como JSON en línea, o agregue `-p` para leerlas de un archivo.2920* **`Error: --agents takes a JSON object, or a file path only with --print (-p)`**: Claude Code leyó el valor como una ruta de archivo en una sesión interactiva. Pasa las definiciones como JSON en línea, o agrega `-p` para leerlas desde un archivo.

2894* **`Error: --agents file not found: <path>`**: no existe ningún archivo en esa ruta. Un valor que no comienza con `{` y no es JSON válido se lee como una ruta, por lo que JSON en línea que su shell alteró puede fallar de esta manera también. Verifique la ruta o las comillas y ejecute el comando nuevamente.2921* **`Error: --agents file not found: <path>`**: no existe ningún archivo en esa ruta. Un valor que no comienza con `{` y no es JSON válido se lee como una ruta, así que un JSON en línea que tu shell alteró también puede fallar de esta forma. Revisa la ruta o las comillas y vuelve a ejecutar el comando.

2895 2922 

2896**Qué hacer:**2923**Qué hacer:**

2897 2924 

2898* Corrija cada problema que enumera el mensaje, luego ejecute el comando nuevamente. Consulte [los campos que toma un subagente definido por CLI](/docs/es/sub-agents#choose-the-subagent-scope).2925* Corrige cada problema que enumera el mensaje y vuelve a ejecutar el comando. Consulta [los campos que acepta un subagente definido por CLI](/docs/es/sub-agents#choose-the-subagent-scope).

2899 2926 

2900<h3 id="cloud-sessions-cannot-be-created-from-a-restricted-session">2927<h3 id="cloud-sessions-cannot-be-created-from-a-restricted-session">

2901 Las sesiones en la nube no se pueden crear desde una sesión `--restricted`2928 No se pueden crear sesiones en la nube desde una sesión `--restricted`

2902</h3>2929</h3>

2903 2930 

2904Cuando inicia una sesión con [`--restricted`](/docs/es/cli-reference#cli-flags), Claude Code se niega a crear [sesiones en la nube](/docs/es/claude-code-on-the-web#from-terminal-to-cloud) desde ella, porque la nueva sesión se ejecutaría fuera del proceso restringido y no haría cumplir el modo restringido. Claude Code se niega en el cliente, antes de contactar al servidor, por lo que no se crea ninguna sesión en la nube:2931Cuando inicias una sesión con [`--restricted`](/docs/es/cli-reference#cli-flags), Claude Code se niega a crear [sesiones en la nube](/docs/es/claude-code-on-the-web#from-terminal-to-cloud) desde ella, porque la nueva sesión se ejecutaría fuera del proceso restringido y no aplicaría el modo restringido. Claude Code se niega en el cliente, antes de contactar al servidor, así que no se crea ninguna sesión en la nube:

2905 2932 

2906```text theme={null}2933```text theme={null}

2907Cloud sessions cannot be created from a --restricted session: they would not enforce it.2934Cloud sessions cannot be created from a --restricted session: they would not enforce it.


2909 2936 

2910**Qué hacer:**2937**Qué hacer:**

2911 2938 

2912* Ejecute la tarea localmente en la sesión restringida2939* Ejecuta la tarea localmente en la sesión restringida

2913* Si controla cómo se lanzó la sesión, inicie una nueva sesión `claude` sin `--restricted` y cree la sesión en la nube desde allí2940* Si controlas cómo se inició la sesión, inicia una nueva sesión de `claude` sin `--restricted` y crea la sesión en la nube desde ahí

2914 2941 

2915Antes de v2.1.248, Claude Code no tenía la bandera `--restricted`; las versiones anteriores rechazan la bandera en sí con un error de opción desconocida.2942Antes de v2.1.248, Claude Code no tenía el flag `--restricted`; las versiones anteriores rechazan el propio flag con un error de opción desconocida.

2916 2943 

2917<h3 id="cloud-sessions-are-disabled-by-your-organizations-policy">2944<h3 id="cloud-sessions-are-disabled-by-your-organizations-policy">

2918 Las sesiones en la nube están deshabilitadas por la política de su organización2945 Las sesiones en la nube están deshabilitadas por la política de tu organización

2919</h3>2946</h3>

2920 2947 

2921La política `allow_remote_sessions` de su organización está desactivada, por lo que [sesiones en la nube](/docs/es/claude-code-on-the-web) y los comandos que las utilizan no están disponibles:2948La política `allow_remote_sessions` de tu organización está desactivada, así que las [sesiones en la nube](/docs/es/claude-code-on-the-web) y los comandos que las usan no están disponibles:

2922 2949 

2923```text theme={null}2950```text theme={null}

2924Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.2951Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.

2925```2952```

2926 2953 

2927El mensaje aparece cuando [crea una sesión en la nube desde la terminal](/docs/es/claude-code-on-the-web#from-terminal-to-cloud) y cuando envía un comando que necesita sesiones en la nube, como `/teleport`, `/remote-env`, o `/web-setup`. Antes de v2.1.268, enviar uno de esos comandos devolvía [`Unknown command`](#unknown-command) en su lugar.2954El mensaje aparece cuando [creas una sesión en la nube desde la terminal](/docs/es/claude-code-on-the-web#from-terminal-to-cloud) y cuando envías un comando que necesita sesiones en la nube, como `/teleport`, `/remote-env` o `/web-setup`. Antes de v2.1.268, enviar uno de esos comandos devolvía [`Unknown command`](#unknown-command) en su lugar.

2928 2955 

2929Esta es una política de organización del lado del servidor, por lo que no se puede anular desde la configuración local, variables de entorno o banderas de CLI.2956Esta es una política de organización del lado del servidor, así que no se puede sobrescribir desde la configuración local, las variables de entorno ni los flags de la CLI.

2930 2957 

2931Si Claude Code aún no ha cargado la política de su organización o no puede obtenerla, esos comandos responden `Couldn't verify your organization's policy for cloud sessions. Check your network connection, then restart Claude Code and try again.` en su lugar.2958Si Claude Code aún no ha cargado la política de tu organización o no puede obtenerla, esos comandos responden `Couldn't verify your organization's policy for cloud sessions. Check your network connection, then restart Claude Code and try again.` en su lugar.

2932 2959 

2933**Qué hacer:**2960**Qué hacer:**

2934 2961 

2935* Pida a un [Propietario](/docs/es/server-managed-settings#access-control) en su organización que habilite las sesiones en la nube en la configuración de administrador de Claude Code en [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)2962* Pide a un [Owner](/docs/es/server-managed-settings#access-control) de tu organización que habilite las sesiones en la nube en la configuración de administración de Claude Code en [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)

2936* Si el mensaje dice que no pudo verificar la política, verifique su conexión de red, luego reinicie Claude Code e intente nuevamente2963* Si el mensaje dice que no pudo verificar la política, revisa tu conexión de red, luego reinicia Claude Code e inténtalo de nuevo

2937 2964 

2938<h3 id="the-json-schema-value-is-not-a-valid-json-schema">2965<h3 id="the-json-schema-value-is-not-a-valid-json-schema">

2939 El valor de `--json-schema` no es un JSON Schema válido2966 El valor de `--json-schema` no es un JSON Schema válido

2940</h3>2967</h3>

2941 2968 

2942El esquema que pasó a [`--json-schema`](/docs/es/cli-reference#cli-flags) en [modo no interactivo](/docs/es/headless#get-structured-output) falló en la compilación de JSON Schema, por lo que `claude` sale con código 1 en lugar de ejecutar el símbolo del sistema. Antes de v2.1.205, un esquema inválido producía salida no estructurada sin error, y cualquier esquema que usara la palabra clave `format` se trataba como inválido.2969El esquema que pasaste a [`--json-schema`](/docs/es/cli-reference#cli-flags) en [modo no interactivo](/docs/es/headless#get-structured-output) falló la compilación de JSON Schema, así que `claude` termina con el código 1 en lugar de ejecutar el prompt. Antes de v2.1.205, un esquema no válido producía una salida no estructurada sin ningún error, y cualquier esquema que usara la palabra clave `format` se trataba como no válido.

2943 2970 

2944```text theme={null}2971```text theme={null}

2945Error: --json-schema is not a valid JSON Schema: data/type must be equal to one of the allowed values2972Error: --json-schema is not a valid JSON Schema: data/type must be equal to one of the allowed values

2946```2973```

2947 2974 

2948El texto después del segundo colon es el diagnóstico del validador y nombra la palabra clave o ubicación que falló. Los esquemas que usan la palabra clave `format`, como `"format": "email"`, son válidos: Claude Code acepta `format` como una anotación y no la hace cumplir.2975El texto después de los segundos dos puntos es el diagnóstico del validador y nombra la palabra clave o la ubicación que falló. Los esquemas que usan la palabra clave `format`, como `"format": "email"`, son válidos: Claude Code acepta `format` como anotación y no lo aplica.

2949 2976 

2950Claude Code ejecuta dos comprobaciones antes de la compilación del esquema: rechaza un valor que no es JSON analizable con `Error: --json-schema is not valid JSON`, y JSON válido que no es un objeto con `Error: --json-schema must be a JSON object`.2977Claude Code ejecuta dos verificaciones antes de compilar el esquema: rechaza un valor que no se puede analizar como JSON con `Error: --json-schema is not valid JSON`, y un JSON válido que no es un objeto con `Error: --json-schema must be a JSON object`.

2951 2978 

2952**Qué hacer:**2979**Qué hacer:**

2953 2980 

2954* Corrija la parte del esquema que nombra el diagnóstico, luego vuelva a ejecutar el comando2981* Corrige la parte del esquema que nombra el diagnóstico y vuelve a ejecutar el comando

2955* Consulte [Obtener salida estructurada](/docs/es/headless#get-structured-output) para un esquema y comando que funcionen2982* Consulta [Obtener salida estructurada](/docs/es/headless#get-structured-output) para ver un esquema y un comando que funcionan

2956 2983 

2957<h3 id="settings-file-exceeds-the-2mib-limit">2984<h3 id="settings-file-exceeds-the-2mib-limit">

2958 El archivo de configuración excede el límite de 2MiB2985 El archivo de configuración supera el límite de 2MiB

2959</h3>2986</h3>

2960 2987 

2961El archivo que pasó a [`--settings`](/docs/es/cli-reference#cli-flags) es más grande que 2 MiB, por lo que `claude` sale con código 1 al inicio en lugar de cargarlo. Antes de v2.1.214, Claude Code leía el archivo sin verificación de tamaño, y un archivo de varios gigabytes o un archivo de dispositivo como `/dev/zero` crecía en memoria sin límite.2988El archivo que pasaste a [`--settings`](/docs/es/cli-reference#cli-flags) es mayor de 2 MiB, así que `claude` termina con el código 1 al iniciar en lugar de cargarlo. Antes de v2.1.214, Claude Code leía el archivo sin verificar su tamaño, y un archivo de varios gigabytes o un archivo de dispositivo como `/dev/zero` hacía crecer la memoria sin límite.

2962 2989 

2963```text theme={null}2990```text theme={null}

2964Error: Settings file exceeds the 2MiB limit: /path/to/settings.json2991Error: Settings file exceeds the 2MiB limit: /path/to/settings.json

2965```2992```

2966 2993 

2967Claude Code rechaza una ruta `--settings` que no es un archivo regular de la misma manera: un dispositivo, FIFO o socket reporta `Error: Cannot use settings file (Not a regular file (device, FIFO, or socket))` seguido de la ruta, y un directorio reporta una razón `EISDIR`.2994Claude Code rechaza de la misma forma una ruta de `--settings` que no es un archivo normal: un dispositivo, FIFO o socket informa `Error: Cannot use settings file (Not a regular file (device, FIFO, or socket))` seguido de la ruta, y un directorio informa un motivo `EISDIR`.

2968 2995 

2969**Qué hacer:**2996**Qué hacer:**

2970 2997 

2971* Apunte `--settings` a un archivo JSON de configuración regular menor a 2 MiB. Consulte [Configuración](/docs/es/settings) para el formato.2998* Apunta `--settings` a un archivo de configuración JSON normal de menos de 2 MiB. Consulta [Configuración](/docs/es/settings) para ver el formato.

2972 2999 

2973<h3 id="the-current-directory-no-longer-exists">3000<h3 id="the-current-directory-no-longer-exists">

2974 El directorio actual ya no existe3001 El directorio actual ya no existe

2975</h3>3002</h3>

2976 3003 

2977Inició `claude` desde un directorio que fue eliminado o movido después de que su shell lo ingresara, por ejemplo un worktree o directorio temporal que otro shell eliminó. Claude Code no puede leer su directorio de trabajo, por lo que sale con código 1 antes de iniciar la sesión, tanto en modo interactivo como en [modo no interactivo](/docs/es/headless). Antes de v2.1.239, Claude Code se bloqueaba con fuente de paquete minificada y un `ENOENT ... uv_cwd` sin procesar en stderr en lugar de este mensaje.3004Iniciaste `claude` desde un directorio que se eliminó o movió después de que tu shell entrara en él, por ejemplo un worktree o un directorio temporal que otro shell eliminó. Claude Code no puede leer su directorio de trabajo, así que termina con el código 1 antes de iniciar la sesión, tanto en modo interactivo como [no interactivo](/docs/es/headless). Antes de v2.1.239, Claude Code fallaba mostrando código fuente minificado del paquete y una pila `ENOENT ... uv_cwd` sin procesar en stderr en lugar de este mensaje.

2978 3005 

2979```text theme={null}3006```text theme={null}

2980The current directory no longer exists (it was deleted or moved). Start Claude Code from an existing directory.3007The current directory no longer exists (it was deleted or moved). Start Claude Code from an existing directory.


2983 3010 

2984La causa y la solución son las mismas para ambas formas.3011La causa y la solución son las mismas para ambas formas.

2985 3012 

2986Cuando Claude Code no puede leer el directorio de trabajo por una razón diferente, como un cambio de permisos, el mensaje nombra el código de error en su lugar: `Can't read the current directory (EACCES). Start Claude Code from a different directory.`3013Cuando Claude Code no puede leer el directorio de trabajo por otro motivo, como un cambio de permisos, el mensaje nombra el código de error en su lugar: `Can't read the current directory (EACCES). Start Claude Code from a different directory.`

2987 3014 

2988En macOS, `EPERM` para un directorio en `~/Desktop`, `~/Documents`, `~/Downloads`, o iCloud Drive generalmente significa que macOS está bloqueando su aplicación de terminal desde esa carpeta. Otros comandos que leen esa carpeta fallan de la misma manera: `ls` allí reporta `Operation not permitted`, incluso con `sudo`.3015En macOS, `EPERM` para un directorio en `~/Desktop`, `~/Documents`, `~/Downloads` o iCloud Drive suele significar que macOS está bloqueando el acceso de tu aplicación de terminal a esa carpeta. Otros comandos que leen esa carpeta fallan de la misma forma: `ls` ahí informa `Operation not permitted`, incluso con `sudo`.

2989 3016 

2990**Qué hacer:**3017**Qué hacer:**

2991 3018 

2992* Cambie a un directorio que exista, como su directorio de inicio o directorio de proyecto, luego ejecute `claude` nuevamente3019* Cámbiate a un directorio que exista, como tu directorio home o el de tu proyecto, y vuelve a ejecutar `claude`

2993* Si el directorio fue recreado en la misma ruta, su shell aún mantiene el eliminado. Ejecute `cd "$PWD"` o salga y vuelva a ingresar al directorio, luego ejecute `claude` nuevamente3020* Si el directorio se volvió a crear en la misma ruta, tu shell todavía conserva el que se eliminó. Ejecuta `cd "$PWD"` o sal del directorio y vuelve a entrar, y luego vuelve a ejecutar `claude`

2994* Para `EPERM` en macOS, cierre su aplicación de terminal con Cmd+Q, ábrala nuevamente, regrese a esa carpeta y ejecute `claude`. Si `ls` en esa carpeta aún falla, abra **System Settings > Privacy & Security > Files and Folders**, active la carpeta para su aplicación de terminal, luego reabre la terminal3021* Para `EPERM` en macOS, cierra tu aplicación de terminal con Cmd+Q, ábrela de nuevo, regresa a esa carpeta y ejecuta `claude`. Si `ls` en esa carpeta sigue fallando, abre **System Settings > Privacy & Security > Files and Folders**, activa la carpeta para tu aplicación de terminal y vuelve a abrir la terminal

2995 3022 

2996<h3 id="temp-directory-refused-or-cannot-be-created">3023<h3 id="temp-directory-refused-or-cannot-be-created">

2997 El directorio temporal fue rechazado o no se puede crear3024 Directorio temporal rechazado o que no se puede crear

2998</h3>3025</h3>

2999 3026 

3000En macOS y Linux, Claude Code crea un directorio temporal privado al inicio, `claude-<uid>` bajo el directorio temporal del sistema o la anulación [`CLAUDE_CODE_TMPDIR`](/docs/es/env-vars). Cuando el directorio no se puede crear, o una entrada ya en esa ruta falla las verificaciones de seguridad, Claude Code imprime el fallo en stderr y sale con código 1 en lugar de iniciar la sesión:3027En macOS y Linux, Claude Code crea un directorio temporal privado al iniciar, `claude-<uid>`, dentro del directorio temporal del sistema o de la sobrescritura [`CLAUDE_CODE_TMPDIR`](/docs/es/env-vars). Cuando el directorio no se puede crear, o una entrada que ya existe en esa ruta no supera las verificaciones de seguridad, Claude Code imprime el fallo en stderr y termina con el código 1 en lugar de iniciar la sesión:

3001 3028 

3002```text wrap theme={null}3029```text wrap theme={null}

3003ENOSPC: no space left on device, mkdir '/tmp/claude-501'3030ENOSPC: no space left on device, mkdir '/tmp/claude-501'


3011 3038 

3012**Qué hacer:**3039**Qué hacer:**

3013 3040 

3014* Para `ENOSPC`, libere espacio en disco en el volumen que contiene el directorio temporal3041* Para `ENOSPC`, libera espacio en disco en el volumen que contiene el directorio temporal

3015* Para las formas `Refusing to use it`, elimine la entrada nombrada en sí, no lo que apunta un enlace, e inicie Claude Code nuevamente; para la forma `owned by uid`, solo un administrador o ese usuario puede eliminarlo3042* Para las formas `Refusing to use it`, elimina la propia entrada nombrada, no aquello a lo que apunta un enlace, y vuelve a iniciar Claude Code; para la forma `owned by uid`, solo un administrador o ese usuario puede eliminarla

3016* Para `is not readable`, ejecute `chmod 0700` en el directorio nombrado, o elimínelo e inicie nuevamente3043* Para `is not readable`, ejecuta `chmod 0700` sobre el directorio nombrado, o elimínalo y vuelve a iniciar

3017* En cualquiera de estos casos, establezca [`CLAUDE_CODE_TMPDIR`](/docs/es/env-vars) en un directorio que controle e inicie Claude Code nuevamente, dejando la ruta rechazada sola3044* En cualquiera de estos casos, establece [`CLAUDE_CODE_TMPDIR`](/docs/es/env-vars) en un directorio que controles y vuelve a iniciar Claude Code, sin tocar la ruta rechazada

3018 3045 

3019<h3 id="directory-couldnt-be-resolved-to-a-real-location">3046<h3 id="directory-couldnt-be-resolved-to-a-real-location">

3020 El directorio no se pudo resolver a una ubicación real3047 No se pudo resolver el directorio a una ubicación real

3021</h3>3048</h3>

3022 3049 

3023Ejecutó `/add-dir` para un subdirectorio de su directorio de trabajo, y Claude Code no pudo resolver el directorio a su ubicación real.3050Ejecutaste `/add-dir` para un subdirectorio de tu directorio de trabajo, y Claude Code no pudo resolver el directorio a su ubicación real.

3024 3051 

3025Ya tiene acceso a archivos en un subdirectorio del directorio de trabajo, por lo que `/add-dir` solo carga sus skills, comandos y agentes. Antes de cargarlos, Claude Code verifica que la ubicación real del directorio, con cualquier enlace simbólico resuelto, esté dentro del directorio de trabajo. Cuando Claude Code no puede resolver esa ubicación, no carga nada y muestra este mensaje:3052Ya tienes acceso a los archivos de un subdirectorio del directorio de trabajo, así que `/add-dir` solo carga sus skills, comandos y agentes. Antes de cargarlos, Claude Code verifica que la ubicación real del directorio, con los enlaces simbólicos resueltos, esté dentro del directorio de trabajo. Cuando Claude Code no puede resolver esa ubicación, no carga nada y muestra este mensaje:

3026 3053 

3027```text theme={null}3054```text theme={null}

3028packages/app couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded. Check that it is a directory inside the working directory and try again.3055packages/app couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded. Check that it is a directory inside the working directory and try again.


3030 3057 

3031**Qué hacer:**3058**Qué hacer:**

3032 3059 

3033* Verifique que la ruta nombre un directorio real dentro del directorio de trabajo, luego ejecute `/add-dir` nuevamente3060* Verifica que la ruta nombre un directorio real dentro del directorio de trabajo y vuelve a ejecutar `/add-dir`

3034* El mensaje no cambia su acceso a archivos; solo reporta que el contenido `.claude/` del directorio no fue cargado3061* El mensaje no cambia tu acceso a los archivos; solo informa que el contenido `.claude/` del directorio no se cargó

3035 3062 

3036Antes de v2.1.261, este mensaje también aparecía para cada `/add-dir <subdirectory>` cuando el directorio de trabajo estaba en un automontaje `/net/<host>`, donde Claude Code se niega a resolver rutas por diseño; el directorio estaba bien y reintentar no podía ayudar.3063Antes de v2.1.261, este mensaje también aparecía en cada `/add-dir <subdirectory>` cuando el directorio de trabajo estaba en un montaje automático `/net/<host>`, donde Claude Code, por diseño, no resuelve rutas; el directorio estaba bien y reintentar no podía ayudar.

3037 3064 

3038<h3 id="workspace-not-trusted-when-starting-remote-control">3065<h3 id="workspace-not-trusted-when-starting-remote-control">

3039 Espacio de trabajo no confiable al iniciar Remote Control3066 Espacio de trabajo no confiable al iniciar Remote Control

3040</h3>3067</h3>

3041 3068 

3042Inició el modo servidor de [Remote Control](/docs/es/remote-control) con `claude remote-control` o su alias `claude rc` en un directorio que no ha confiado, y el comando no pudo preguntarle si confiar en él. Por ejemplo, la entrada estándar o la salida estándar del comando no es una terminal porque una de ellas se redirige o se canaliza. El comando sale con código 1:3069Iniciaste el modo servidor de [Remote Control](/docs/es/remote-control) con `claude remote-control` o su alias `claude rc` en un directorio en el que no has confiado, y el comando no pudo preguntarte si confiar en él. Por ejemplo, la entrada estándar o la salida estándar del comando no es una terminal porque una de ellas está redirigida o canalizada. El comando termina con el código 1:

3043 3070 

3044```text theme={null}3071```text theme={null}

3045Error: Workspace not trusted. Please run `claude` in /Users/you/project first to review and accept the workspace trust dialog.3072Error: Workspace not trusted. Please run `claude` in /Users/you/project first to review and accept the workspace trust dialog.

3046```3073```

3047 3074 

3048Dos variantes que también comienzan con `Error: Workspace not trusted.` aparecen en una terminal también demasiado pequeña para mostrar qué confiar en el directorio activa, o una que no reportó su tamaño. Amplíe la ventana o cambie a una ventana de terminal normal, luego ejecute `claude rc` nuevamente.3075Dos variantes que también comienzan con `Error: Workspace not trusted.` aparecen en una terminal demasiado pequeña para mostrar lo que activa confiar en el directorio, o en una que no informó su tamaño. Agranda la ventana o cambia a una ventana de terminal normal, y vuelve a ejecutar `claude rc`.

3049 3076 

3050En su directorio de inicio el mensaje es diferente, porque el diálogo de confianza del espacio de trabajo nunca guarda confianza para el directorio de inicio, por lo que aceptarlo allí no puede satisfacer esta verificación. Antes de v2.1.214, el directorio de inicio mostraba el mensaje anterior, cuyo consejo no puede tener éxito allí.3077En tu directorio home el mensaje es diferente, porque el diálogo de confianza del espacio de trabajo nunca guarda la confianza para el directorio home, así que aceptarlo ahí no puede satisfacer esta verificación. Antes de v2.1.214, el directorio home mostraba el mensaje anterior, cuyo consejo no puede funcionar ahí.

3051 3078 

3052```text theme={null}3079```text theme={null}

3053Error: Workspace not trusted. /Users/you is your home directory, and for security home-directory trust is never saved, so running `claude` here first won't help. Run `claude rc` from a project directory instead (run `claude` there once to accept the trust dialog).3080Error: Workspace not trusted. /Users/you is your home directory, and for security home-directory trust is never saved, so running `claude` here first won't help. Run `claude rc` from a project directory instead (run `claude` there once to accept the trust dialog).

3054```3081```

3055 3082 

3056Si responde `n` o presiona Enter en la [pregunta `Trust <directory>?`](/docs/es/remote-control#requirements), el comando imprime un mensaje `Remote Control did not start` que nombra el directorio y sale con código 1. Ejecute `claude rc` nuevamente para responder `y`.3083Si respondes `n` o presionas Enter en la [pregunta `Trust <directory>?`](/docs/es/remote-control#requirements), el comando imprime un mensaje `Remote Control did not start` que nombra el directorio y termina con el código 1. Vuelve a ejecutar `claude rc` para responder `y`.

3057 3084 

3058**Qué hacer:**3085**Qué hacer:**

3059 3086 

3060* Confíe en el directorio desde una terminal primero: ejecute `claude rc` allí y responda `y`, o ejecute `claude` allí y acepte el [diálogo de confianza del espacio de trabajo](/docs/es/permissions#project-allow-rules-and-workspace-trust), luego ejecute su comando original nuevamente3087* Primero confía en el directorio desde una terminal: ejecuta `claude rc` ahí y responde `y`, o ejecuta `claude` ahí y acepta el [diálogo de confianza del espacio de trabajo](/docs/es/permissions#project-allow-rules-and-workspace-trust), y luego vuelve a ejecutar tu comando original

3061* En su directorio de inicio, cambie a un directorio de proyecto e inicie Remote Control allí3088* En tu directorio home, cámbiate a un directorio de proyecto e inicia Remote Control ahí

3062 3089 

3063Antes de v2.1.284, el comando nunca preguntó, incluso en una terminal.3090Antes de v2.1.284, el comando nunca preguntaba, ni siquiera en una terminal.

3064 3091 

3065<h3 id="not-carried-over-to-the-sessions-remote-control-starts">3092<h3 id="not-carried-over-to-the-sessions-remote-control-starts">

3066 No se trasladó a las sesiones que inicia Remote Control3093 No se transfiere a las sesiones que inicia Remote Control

3067</h3>3094</h3>

3068 3095 

3069Inició [Remote Control](/docs/es/remote-control) con una bandera global `claude` antes del verbo `remote-control`, una que restringiría o configuraría las sesiones que inicia Remote Control, como `--settings`, `--setting-sources`, `--permission-mode`, `--disallowed-tools`, o `--mcp-config`. Una bandera colocada antes del verbo nunca llega a esas sesiones. Claude Code se niega a iniciar en su lugar, nombrando la bandera:3096Iniciaste [Remote Control](/docs/es/remote-control) con un flag global de `claude` antes del verbo `remote-control`, uno que restringiría o configuraría las sesiones que inicia Remote Control, como `--settings`, `--setting-sources`, `--permission-mode`, `--disallowed-tools` o `--mcp-config`. Un flag colocado antes del verbo nunca llega a esas sesiones. En su lugar, Claude Code se niega a iniciar y nombra el flag:

3070 3097 

3071```text theme={null}3098```text theme={null}

3072Error: `--settings` before `remote-control` is not carried over to the sessions Remote Control starts, so Remote Control refuses to start rather than drop it — remove it, and give Remote Control's own options after the verb (see `claude remote-control --help`).3099Error: `--settings` before `remote-control` is not carried over to the sessions Remote Control starts, so Remote Control refuses to start rather than drop it — remove it, and give Remote Control's own options after the verb (see `claude remote-control --help`).

3073```3100```

3074 3101 

3075Claude Code no se niega a banderas globales que son inofensivas de descartar, como `--verbose`, `--model`, o un `--session-id` inyectado por envoltorio o `--plugin-dir`: las ignora e inicia Remote Control.3102Claude Code no rechaza los flags globales que son inofensivos de descartar, como `--verbose`, `--model`, o un `--session-id` o `--plugin-dir` inyectado por un wrapper: los ignora y Remote Control se inicia.

3076 3103 

3077Claude Code también se niega a iniciar para una bandera global que aún no reconoce como inofensiva, por lo que una bandera agregada en una versión más nueva puede aparecer en este mensaje hasta que una versión posterior la marque como inofensiva.3104Claude Code también se niega a iniciar con un flag global que todavía no reconoce como inofensivo, así que un flag agregado en una versión más reciente puede aparecer en este mensaje hasta que una versión posterior lo marque como inofensivo.

3078 3105 

3079**Qué hacer:**3106**Qué hacer:**

3080 3107 

3081* Elimine la bandera de antes del verbo y pase [las opciones propias de Remote Control](/docs/es/remote-control#start-a-remote-control-session) después de él; `claude remote-control --help` las enumera3108* Quita el flag de antes del verbo y pasa las [opciones propias de Remote Control](/docs/es/remote-control#start-a-remote-control-session) después de él; `claude remote-control --help` las enumera

3082* Cuando la bandera rechazada es `--permission-mode`, ejecute `claude remote-control --permission-mode <mode>` para establecer el modo de permiso para las sesiones que inicia Remote Control3109* Cuando el flag rechazado es `--permission-mode`, ejecuta `claude remote-control --permission-mode <mode>` para establecer el modo de permisos de las sesiones que inicia Remote Control

3083 3110 

3084Antes de v2.1.248, `claude remote-control` no aceptaba sus propias banderas cuando una bandera global venía primero, y el comando falló con un error de `unknown option`.3111Antes de v2.1.248, `claude remote-control` no aceptaba sus propios flags cuando un flag global iba primero, y el comando fallaba con un error `unknown option`.

3085 3112 

3086<h3 id="claude-import-is-not-yet-available-in-this-build">3113<h3 id="claude-import-is-not-yet-available-in-this-build">

3087 claude import aún no está disponible en esta compilación3114 claude import todavía no está disponible en esta compilación

3088</h3>3115</h3>

3089 3116 

3090Ejecutó [`claude import`](/docs/es/cli-reference#cli-commands), y Claude Code encontró el flujo de importación desactivado, por lo que el comando sale con código 1 en lugar de iniciar la importación. Antes de v2.1.222, una compilación con el flujo de importación desactivado trataba `import` como un símbolo del sistema e iniciaba una sesión interactiva en lugar de imprimir este mensaje.3117Ejecutaste [`claude import`](/docs/es/cli-reference#cli-commands), y Claude Code encontró el flujo de importación desactivado, así que el comando termina con el código 1 en lugar de iniciar la importación. Antes de v2.1.222, una compilación con el flujo de importación desactivado trataba `import` como un prompt e iniciaba una sesión interactiva en lugar de imprimir este mensaje.

3091 3118 

3092```text theme={null}3119```text theme={null}

3093`claude import` is not yet available in this build. Run `claude` and use /mcp or edit ~/.claude/settings.json directly.3120`claude import` is not yet available in this build. Run `claude` and use /mcp or edit ~/.claude/settings.json directly.

3094```3121```

3095 3122 

3096Claude Code activa `claude import` a través de una bandera de característica que obtiene de Anthropic y almacena en caché en disco. Este mensaje significa que el valor almacenado en caché está desactivado. La causa es generalmente una de las siguientes:3123Claude Code activa `claude import` mediante un feature flag que obtiene de Anthropic y almacena en caché en el disco. Este mensaje significa que el valor en caché está desactivado. La causa suele ser una de las siguientes:

3097 3124 

3098* No ha iniciado una sesión desde la instalación, por lo que Claude Code aún no ha obtenido la bandera. El primer `claude import` puede imprimir esto incluso cuando la característica está disponible para usted.3125* No has iniciado una sesión desde la instalación, así que Claude Code todavía no ha obtenido el flag. El primer `claude import` puede imprimir esto incluso cuando la función está disponible para ti.

3099* Usa Claude Code a través de Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, o Claude Platform en AWS, o a través de una [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway#availability-and-limitations). Claude Code no obtiene banderas de características en estas sesiones, por lo que `claude import` permanece no disponible.3126* Usas Claude Code a través de Amazon Bedrock, Agent Platform de Google Cloud, Microsoft Foundry o Claude Platform en AWS, o a través de un [gateway de aplicaciones de Claude](/docs/es/claude-apps-gateway#availability-and-limitations). Claude Code no obtiene feature flags en estas sesiones, así que `claude import` sigue sin estar disponible.

3100* Estableció `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, `DISABLE_GROWTHBOOK`, o [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/es/env-vars), que desactivan la obtención de banderas de características, por lo que `claude import` permanece no disponible.3127* Estableciste `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, `DISABLE_GROWTHBOOK` o [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/es/env-vars), que desactivan la obtención de feature flags, así que `claude import` sigue sin estar disponible.

3101 3128 

3102**Qué hacer:**3129**Qué hacer:**

3103 3130 

3104* En una instalación nueva, inicie `claude`, espere a que la sesión se cargue, salga y ejecute `claude import` nuevamente3131* En una instalación nueva, inicia `claude`, espera a que la sesión cargue, sal y vuelve a ejecutar `claude import`

3105* Donde la obtención de banderas de características permanece desactivada, configure la configuración usted mismo: agregue servidores MCP con [`claude mcp add`](/docs/es/mcp#installing-mcp-servers), y cree los [archivos `CLAUDE.md`](/docs/es/memory#how-claude-md-files-load), [skills y comandos](/docs/es/skills#where-skills-live), y [subagentes](/docs/es/sub-agents#choose-the-subagent-scope) que desea trasladar. El mensaje también nombra `~/.claude/settings.json`. De la configuración que `claude import` traslada, ese archivo contiene solo el [modo de permiso](/docs/es/settings-reference#permission-settings); Claude Code no lee servidores MCP de él.3132* Donde la obtención de feature flags permanece desactivada, prepara la configuración tú mismo: agrega servidores MCP con [`claude mcp add`](/docs/es/mcp#installing-mcp-servers), y crea los [archivos `CLAUDE.md`](/docs/es/memory#how-claude-md-files-load), [skills y comandos](/docs/es/skills#where-skills-live) y [subagentes](/docs/es/sub-agents#choose-the-subagent-scope) que quieras transferir. El mensaje también nombra `~/.claude/settings.json`. De la configuración que transfiere `claude import`, ese archivo contiene solo el [modo de permisos](/docs/es/settings-reference#permission-settings); Claude Code no lee servidores MCP desde él.

3106 3133 

3107<h3 id="could-not-read-claude-code-config">3134<h3 id="could-not-read-claude-code-config">

3108 No se pudo leer la configuración de Claude Code3135 No se pudo leer la configuración de Claude Code

3109</h3>3136</h3>

3110 3137 

3111Ejecutó [`claude import`](/docs/es/cli-reference#cli-commands) mientras Claude Code no podía analizar `~/.claude.json`, el archivo donde almacena su inicio de sesión y estado por proyecto. El subcomando lee ese archivo para verificar disponibilidad pero no muestra el diálogo de recuperación que muestra la sesión interactiva, por lo que sale con código 1. Antes de v2.1.222, `claude import` con un archivo de configuración ilegible iniciaba una sesión interactiva, cuyo diálogo de recuperación manejaba el archivo.3138Ejecutaste [`claude import`](/docs/es/cli-reference#cli-commands) mientras Claude Code no podía analizar `~/.claude.json`, el archivo donde almacena tu inicio de sesión y el estado de cada proyecto. El subcomando lee ese archivo para verificar la disponibilidad, pero no muestra el diálogo de recuperación que muestra la sesión interactiva, así que termina con el código 1. Antes de v2.1.222, `claude import` con un archivo de configuración ilegible iniciaba una sesión interactiva, cuyo diálogo de recuperación se encargaba del archivo.

3112 3139 

3113```text theme={null}3140```text theme={null}

3114Could not read Claude Code config — run `claude` with no arguments to recover it.3141Could not read Claude Code config — run `claude` with no arguments to recover it.


3116 3143 

3117**Qué hacer:**3144**Qué hacer:**

3118 3145 

3119* Ejecute `claude` sin argumentos. Claude Code detecta el archivo inválido y ofrece restablecerlo. Luego ejecute `claude import` nuevamente.3146* Ejecuta `claude` sin argumentos. Claude Code detecta el archivo no válido y ofrece restablecerlo. Luego vuelve a ejecutar `claude import`.

3120* Para mantener ediciones manuales que ha realizado, corrija la sintaxis JSON en `~/.claude.json` en un editor en su lugar, luego vuelva a ejecutar `claude import`3147* Para conservar las ediciones manuales que hayas hecho, corrige en su lugar la sintaxis JSON de `~/.claude.json` en un editor y vuelve a ejecutar `claude import`

3121 3148 

3122<h3 id="could-not-import-a-server-from-claude-desktop">3149<h3 id="could-not-import-a-server-from-claude-desktop">

3123 No se pudo importar un servidor desde Claude Desktop3150 No se pudo importar un servidor desde Claude Desktop

3124</h3>3151</h3>

3125 3152 

3126Claude Code no pudo agregar uno de los servidores que seleccionó en `claude mcp add-from-claude-desktop`. El comando aún importa los otros servidores seleccionados e imprime una línea por servidor que no pudo agregar. Antes de v2.1.205, el primer servidor que falló detuvo la importación.3153Claude Code no pudo agregar uno de los servidores que seleccionaste en `claude mcp add-from-claude-desktop`. El comando igualmente importa los demás servidores seleccionados e imprime una línea por cada servidor que no pudo agregar. Antes de v2.1.205, el primer servidor que fallaba detenía la importación.

3127 3154 

3128```text theme={null}3155```text theme={null}

3129Could not import my server: Invalid name my server. Names can only contain letters, numbers, hyphens, and underscores.3156Could not import my server: Invalid name my server. Names can only contain letters, numbers, hyphens, and underscores.

3130```3157```

3131 3158 

3132El texto después del nombre del servidor es la razón. La más común es la verificación de nombre: Claude Desktop permite caracteres en nombres de servidor, como espacios y períodos, que `claude mcp` restringe a letras, números, guiones y guiones bajos. Otras razones incluyen una configuración de servidor que falla en la validación y un servidor bloqueado por la [política MCP](/docs/es/managed-mcp) de su organización.3159El texto después del nombre del servidor es el motivo. El más común es la verificación del nombre: Claude Desktop permite en los nombres de servidor caracteres, como espacios y puntos, que `claude mcp` restringe a letras, números, guiones y guiones bajos. Otros motivos incluyen una configuración de servidor que no supera la validación y un servidor bloqueado por la [política de MCP](/docs/es/managed-mcp) de tu organización.

3133 3160 

3134**Qué hacer:**3161**Qué hacer:**

3135 3162 

3136* Cambie el nombre del servidor en `claude_desktop_config.json` para usar solo letras, números, guiones y guiones bajos, luego ejecute `claude mcp add-from-claude-desktop` nuevamente3163* Cambia el nombre del servidor en `claude_desktop_config.json` para que use solo letras, números, guiones y guiones bajos, y vuelve a ejecutar `claude mcp add-from-claude-desktop`

3137* Agregue ese servidor directamente con `claude mcp add` o `claude mcp add-json` bajo un nombre válido. Consulte [Importar servidores MCP desde Claude Desktop](/docs/es/mcp#import-mcp-servers-from-claude-desktop).3164* Agrega ese servidor directamente con `claude mcp add` o `claude mcp add-json` con un nombre válido. Consulta [Importar servidores MCP desde Claude Desktop](/docs/es/mcp#import-mcp-servers-from-claude-desktop).

3138 3165 

3139<h3 id="cannot-add-mcp-server-to-the-managed-scope">3166<h3 id="cannot-add-mcp-server-to-the-managed-scope">

3140 No se puede agregar servidor MCP al alcance administrado3167 No se puede agregar el servidor MCP al alcance managed

3141</h3>3168</h3>

3142 3169 

3143Ejecutó `claude mcp add` o `claude mcp add-json` con `--scope managed`. Ese alcance contiene los servidores que su organización proporciona a través de la configuración administrada [`managedMcpServers`](/docs/es/settings-reference#managedmcpservers). Claude Code los lee solo desde configuraciones administradas, por lo que el comando no puede escribir un servidor en ese alcance.3170Ejecutaste `claude mcp add` o `claude mcp add-json` con `--scope managed`. Ese alcance contiene los servidores que tu organización proporciona mediante el ajuste administrado [`managedMcpServers`](/docs/es/settings-reference#managedmcpservers). Claude Code los lee solo desde la configuración administrada, así que el comando no puede escribir un servidor en ese alcance.

3144 3171 

3145```text theme={null}3172```text theme={null}

3146Cannot add MCP server to scope: managed3173Cannot add MCP server to scope: managed


3148 3175 

3149**Qué hacer:**3176**Qué hacer:**

3150 3177 

3151* Agregue el servidor a un alcance en el que pueda escribir: `local`, `user`, o `project`. Sin `--scope`, el comando usa `local`. Consulte [Alcances de instalación de MCP](/docs/es/mcp#mcp-installation-scopes)3178* Agrega el servidor a un alcance en el que puedas escribir: `local`, `user` o `project`. Sin `--scope`, el comando usa `local`. Consulta [Alcances de instalación de MCP](/docs/es/mcp#mcp-installation-scopes)

3152* Para proporcionar el servidor a cada usuario en su organización, agréguelo a [`managedMcpServers`](/docs/es/settings-reference#managedmcpservers) en la configuración administrada que implementa3179* Para proporcionar el servidor a todos los usuarios de tu organización, agrégalo a [`managedMcpServers`](/docs/es/settings-reference#managedmcpservers) en la configuración administrada que despliegas

3153 3180 

3154<h3 id="cant-read-mcp-json">3181<h3 id="cant-read-mcp-json">

3155 No se puede leer .mcp.json3182 No se puede leer .mcp.json

3156</h3>3183</h3>

3157 3184 

3158Un comando que lee el [`.mcp.json`](/docs/es/mcp#project-scope) del proyecto, como `claude mcp add` o `claude mcp add-json` con `--scope project`, o `claude mcp remove`, encontró que el archivo en su directorio actual no es un archivo regular o es más grande que 2 MiB, por lo que sale con este error en lugar de leer el archivo.3185Un comando que lee el [`.mcp.json`](/docs/es/mcp#project-scope) del proyecto, como `claude mcp add` o `claude mcp add-json` con `--scope project`, o `claude mcp remove`, encontró que el archivo en tu directorio actual no es un archivo normal o es mayor de 2 MiB, así que termina con este error en lugar de leer el archivo.

3159 3186 

3160```text theme={null}3187```text theme={null}

3161Can't read .mcp.json: it isn't a regular file or is larger than 2097152 bytes. Fix or remove it, then run the command again.3188Can't read .mcp.json: it isn't a regular file or is larger than 2097152 bytes. Fix or remove it, then run the command again.

3162```3189```

3163 3190 

3164Antes de v2.1.257, un FIFO en `.mcp.json` dejaba el comando esperando para siempre sin salida, y un enlace simbólico a un archivo de dispositivo como `/dev/zero` crecía en memoria hasta que el proceso fue eliminado.3191Antes de v2.1.257, un FIFO en `.mcp.json` dejaba el comando esperando para siempre sin salida, y un enlace simbólico a un archivo de dispositivo como `/dev/zero` hacía crecer la memoria hasta que el proceso se terminaba.

3165 3192 

3166**Qué hacer:**3193**Qué hacer:**

3167 3194 

3168* Verifique qué se encuentra en `.mcp.json` en su directorio actual. Reemplácelo con un archivo JSON ordinario en el [formato de alcance de proyecto](/docs/es/mcp#project-scope), o elimínelo, luego ejecute el comando nuevamente.3195* Revisa qué hay en `.mcp.json` en tu directorio actual. Reemplázalo por un archivo JSON común en el [formato de alcance de proyecto](/docs/es/mcp#project-scope), o elimínalo, y vuelve a ejecutar el comando.

3169 3196 

3170<h3 id="mcp-server-was-not-saved-or-removed">3197<h3 id="mcp-server-was-not-saved-or-removed">

3171 El servidor MCP no se guardó ni se eliminó3198 El servidor MCP no se guardó ni se eliminó

3172</h3>3199</h3>

3173 3200 

3174Ejecutó `claude mcp add`, `claude mcp add-json`, o `claude mcp remove` para un servidor en el alcance `user` o `local` [scope](/docs/es/mcp#mcp-installation-scopes). Ambos alcances se almacenan en `~/.claude.json`, y el cambio no está en ese archivo cuando Claude Code lo lee después de escribir. El comando sale con este error en lugar de su línea de éxito.3201Ejecutaste `claude mcp add`, `claude mcp add-json` o `claude mcp remove` para un servidor en el [alcance](/docs/es/mcp#mcp-installation-scopes) `user` o `local`. Ambos alcances se almacenan en `~/.claude.json`, y el cambio no está en ese archivo cuando Claude Code lo vuelve a leer después de escribirlo. El comando termina con este error en lugar de su línea de éxito.

3175 3202 

3176```text theme={null}3203```text theme={null}

3177MCP server "example" was not saved to /home/user/.claude.json. If that file is read-only or protected by a sandbox, make it writable or run the command outside the sandbox, then add the server again.3204MCP server "example" was not saved to /home/user/.claude.json. If that file is read-only or protected by a sandbox, make it writable or run the command outside the sandbox, then add the server again.

3178```3205```

3179 3206 

3180Después de una eliminación, el mensaje lee `was not removed from` y termina con `then remove the server again`. Para un servidor de alcance `local`, la ruta es seguida por el directorio del proyecto al que pertenece la entrada, como `(local scope for /path/to/project)`.3207Después de una eliminación, el mensaje dice `was not removed from` y termina con `then remove the server again`. Para un servidor de alcance `local`, la ruta va seguida del directorio de proyecto al que pertenece la entrada, como `(local scope for /path/to/project)`.

3181 3208 

3182Antes de v2.1.283, `claude mcp add`, `claude mcp add-json`, y `claude mcp remove` reportaban éxito incluso cuando el cambio no llegaba al archivo.3209Antes de v2.1.283, `claude mcp add`, `claude mcp add-json` y `claude mcp remove` informaban éxito incluso cuando el cambio no llegaba al archivo.

3183 3210 

3184**Qué hacer:**3211**Qué hacer:**

3185 3212 

3186* Haga que el archivo que nombra el mensaje sea escribible, o ejecute el comando fuera del sandbox, luego ejecute el mismo comando de agregar o eliminar nuevamente.3213* Haz que el archivo que nombra el mensaje se pueda escribir, o ejecuta el comando fuera del sandbox, y luego vuelve a ejecutar el mismo comando de agregar o eliminar.

3187 3214 

3188<h3 id="mcp-server-may-not-have-been-saved-or-removed">3215<h3 id="mcp-server-may-not-have-been-saved-or-removed">

3189 El servidor MCP puede no haber sido guardado o eliminado3216 Es posible que el servidor MCP no se haya guardado ni eliminado

3190</h3>3217</h3>

3191 3218 

3192Ejecutó `claude mcp add`, `claude mcp add-json`, o `claude mcp remove` para un servidor en el alcance `user` o `local` [scope](/docs/es/mcp#mcp-installation-scopes), y Claude Code no pudo leer `~/.claude.json` de vuelta para confirmar el cambio. El cambio puede o no estar en el disco. El texto entre paréntesis es el error de esa lectura.3219Ejecutaste `claude mcp add`, `claude mcp add-json` o `claude mcp remove` para un servidor en el [alcance](/docs/es/mcp#mcp-installation-scopes) `user` o `local`, y Claude Code no pudo volver a leer `~/.claude.json` para confirmar el cambio. Puede que el cambio esté en el disco o puede que no. El texto entre paréntesis es el error de esa lectura.

3193 3220 

3194```text theme={null}3221```text theme={null}

3195MCP server "example" may not have been saved: /home/user/.claude.json could not be read to confirm the change (EACCES: permission denied, open '/home/user/.claude.json'). Run `claude mcp get example` to check, then add the server again if it is missing.3222MCP server "example" may not have been saved: /home/user/.claude.json could not be read to confirm the change (EACCES: permission denied, open '/home/user/.claude.json'). Run `claude mcp get example` to check, then add the server again if it is missing.

3196```3223```

3197 3224 

3198Después de una eliminación, el mensaje lee `may not have been removed` y termina con `then remove the server again if it is still listed`.3225Después de una eliminación, el mensaje dice `may not have been removed` y termina con `then remove the server again if it is still listed`.

3199 3226 

3200Antes de v2.1.283, los comandos reportaban éxito incluso cuando el cambio no podía ser confirmado.3227Antes de v2.1.283, los comandos informaban éxito incluso cuando el cambio no se podía confirmar.

3201 3228 

3202**Qué hacer:**3229**Qué hacer:**

3203 3230 

3204* Ejecute `claude mcp get <name>` para verificar si el cambio está en el disco. Para un servidor de alcance `local`, ejecútelo desde el directorio del proyecto al que pertenece el servidor, ya que el alcance local es por proyecto.3231* Ejecuta `claude mcp get <name>` para verificar si el cambio está en el disco. Para un servidor de alcance `local`, ejecútalo desde el directorio de proyecto al que pertenece el servidor, ya que el alcance local es por proyecto.

3205* Si el servidor falta después de un agregar, o aún está listado después de una eliminación, ejecute el mismo comando de agregar o eliminar nuevamente.3232* Si el servidor falta después de agregarlo, o sigue en la lista después de eliminarlo, vuelve a ejecutar el mismo comando de agregar o eliminar.

3206 3233 

3207<h3 id="anthropic-hosted-and-doesnt-support-local-oauth">3234<h3 id="anthropic-hosted-and-doesnt-support-local-oauth">

3208 El servidor está alojado por Anthropic y no admite OAuth local3235 El servidor está alojado por Anthropic y no admite OAuth local

3209</h3>3236</h3>

3210 3237 

3211Inició un inicio de sesión para un servidor MCP cuya URL apunta a un host de conector alojado por Anthropic que se autentica a través de un proveedor de identidad de terceros. Estos hosts incluyen `microsoft365.mcp.claude.com`, `gmail.mcp.claude.com`, y `gcal.mcp.claude.com`. Claude Code se niega a iniciar su flujo OAuth local para estos hosts tanto desde el panel `/mcp` como desde `claude mcp login`, porque [su inicio de sesión funciona solo a través de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai).3238Iniciaste un inicio de sesión para un servidor MCP cuya URL apunta a un host de conectores alojado por Anthropic que autentica mediante un proveedor de identidad de terceros. Estos hosts incluyen `microsoft365.mcp.claude.com`, `gmail.mcp.claude.com` y `gcal.mcp.claude.com`. Claude Code se niega a iniciar su flujo OAuth local para estos hosts tanto desde el panel `/mcp` como desde `claude mcp login`, porque [su inicio de sesión solo funciona a través de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai).

3212 3239 

3213```text theme={null}3240```text theme={null}

3214"gmail" is Anthropic-hosted and doesn't support local OAuth. Connect it via Settings → Connectors on claude.ai (requires `claude login`), then it'll be available here automatically.3241"gmail" is Anthropic-hosted and doesn't support local OAuth. Connect it via Settings → Connectors on claude.ai (requires `claude login`), then it'll be available here automatically.

3215```3242```

3216 3243 

3217Claude Code coincide con estos hosts por URL, por lo que el mensaje aparece cuando un servidor que agregó con `claude mcp add` o en `.mcp.json` apunta a uno de ellos.

3218 

3219**Qué hacer:**3244**Qué hacer:**

3220 3245 

3221* Elimine su entrada con `claude mcp remove <name>`, para que no pueda ocultar el conector de claude.ai en la misma URL3246* Elimina tu entrada con `claude mcp remove <name>`, para que no pueda ocultar el conector de claude.ai en la misma URL

3222* Después de eliminarlo, conecte el servicio en [claude.ai/customize/connectors](https://claude.ai/customize/connectors), mientras está conectado a la cuenta que usa en Claude Code. Una vez conectado, [el conector aparece en Claude Code automáticamente](/docs/es/mcp#use-mcp-servers-from-claude-ai) si su método de autenticación activo es un inicio de sesión de suscripción de claude.ai3247* Después de eliminarla, conecta el servicio en [claude.ai/customize/connectors](https://claude.ai/customize/connectors), con la sesión iniciada en la cuenta que usas en Claude Code. Una vez conectado, [el conector aparece en Claude Code automáticamente](/docs/es/mcp#use-mcp-servers-from-claude-ai) si tu método de autenticación activo es un inicio de sesión con una suscripción de claude.ai

3223 3248 

3224<h3 id="server-rejected-the-authorization-header-minted-by-the-configured-headershelper">3249<h3 id="server-rejected-the-authorization-header-minted-by-the-configured-headershelper">

3225 El servidor rechazó el encabezado de autorización acuñado por el headersHelper configurado3250 El servidor rechazó el encabezado Authorization generado por el headersHelper configurado

3226</h3>3251</h3>

3227 3252 

3228Un servidor MCP cuyo [`headersHelper`](/docs/es/mcp#use-dynamic-headers-for-custom-authentication) proporciona el encabezado `Authorization` respondió la conexión con HTTP 401 o 403, por lo que Claude Code reporta la conexión como fallida. Porque el helper proporciona el encabezado `Authorization`, Claude Code [no recurre a OAuth](/docs/es/mcp#authenticate-with-remote-mcp-servers) para el servidor:3253Un servidor MCP cuyo [`headersHelper`](/docs/es/mcp#use-dynamic-headers-for-custom-authentication) proporciona el encabezado `Authorization` respondió a la conexión con HTTP 401 o 403, así que Claude Code informa la conexión como fallida. Como el helper proporciona el encabezado `Authorization`, Claude Code [no recurre a OAuth](/docs/es/mcp#authenticate-with-remote-mcp-servers) para el servidor:

3229 3254 

3230```text theme={null}3255```text theme={null}

3231Server rejected the Authorization header minted by the configured headersHelper (HTTP 401). Check that the helper command returns a valid credential for this MCP endpoint — OAuth fallback is disabled when the helper supplies Authorization.3256Server rejected the Authorization header minted by the configured headersHelper (HTTP 401). Check that the helper command returns a valid credential for this MCP endpoint — OAuth fallback is disabled when the helper supplies Authorization.

3232```3257```

3233 3258 

3234Claude Code vuelve a ejecutar el helper en cada intento de conexión, por lo que un reintento después de un rechazo transitorio, como una carrera de rotación de token, puede tener éxito con una credencial nueva.3259Claude Code vuelve a ejecutar el helper en cada intento de conexión, así que un reintento después de un rechazo transitorio, como una condición de carrera en la rotación de tokens, puede tener éxito con una credencial nueva.

3235 3260 

3236**Qué hacer:**3261**Qué hacer:**

3237 3262 

3238* Ejecute el comando `headersHelper` usted mismo de la manera que Claude Code lo ejecuta: desde el [directorio en el que Claude Code lo ejecuta](/docs/es/mcp#where-the-helper-runs), con las [variables de entorno que Claude Code establece para él](/docs/es/mcp#use-dynamic-headers-for-custom-authentication), y sin las [variables de credencial que Claude Code elimina](/docs/es/mcp#which-variables-a-helper-can-read) para un servidor de un `.mcp.json` de proyecto, un plugin, o un archivo de agente de proyecto. Verifique que imprima un valor `Authorization` que el punto final del servidor acepte3263* Ejecuta tú mismo el comando `headersHelper` de la forma en que lo ejecuta Claude Code: desde el [directorio en el que Claude Code lo ejecuta](/docs/es/mcp#where-the-helper-runs), con las [variables de entorno que Claude Code establece para él](/docs/es/mcp#use-dynamic-headers-for-custom-authentication), y sin las [variables de credenciales que Claude Code quita](/docs/es/mcp#which-variables-a-helper-can-read) para un servidor de un `.mcp.json` de proyecto, un plugin o un archivo de agente de proyecto. Verifica que imprima un valor de `Authorization` que el endpoint del servidor acepte

3239* Después de corregir el helper o su fuente de credencial, seleccione el servidor en `/mcp` y elija **Reconnect**3264* Después de corregir el helper o la fuente de su credencial, selecciona el servidor en `/mcp` y elige **Reconnect**

3240 3265 

3241Antes de v2.1.248, Claude Code ejecutaba descubrimiento OAuth para un servidor cuyo helper proporcionaba el encabezado `Authorization`. Ese descubrimiento podría fallar con `Incompatible auth server: does not support dynamic client registration` en lugar de reportar la credencial rechazada.3266Antes de v2.1.248, Claude Code ejecutaba la detección de OAuth para un servidor cuyo helper proporcionaba el encabezado `Authorization`. Esa detección podía fallar con `Incompatible auth server: does not support dynamic client registration` en lugar de informar la credencial rechazada.

3242 3267 

3243<h3 id="mcp-permission-prompt-tool-not-found">3268<h3 id="mcp-permission-prompt-tool-not-found">

3244 Herramienta de solicitud de permiso MCP no encontrada3269 No se encontró la herramienta de solicitud de permisos de MCP

3245</h3>3270</h3>

3246 3271 

3247La herramienta que pasó a [`--permission-prompt-tool`](/docs/es/cli-reference#cli-flags) no estaba entre las herramientas MCP conectadas cuando la ejecución primero necesitó una decisión de permiso, ya sea porque su servidor nunca se conectó o porque ningún servidor conectado expone una herramienta con ese nombre. Claude Code aún envía su símbolo del sistema: la ejecución [no interactiva](/docs/es/headless) sale con este error, y código de salida 1, en la primera llamada de herramienta que necesita aprobación, por lo que no produce respuesta aunque la solicitud fue realizada. Antes del primer símbolo del sistema, Claude Code espera hasta el tiempo de espera de conexión por servidor de 30 segundos establecido por [`MCP_TIMEOUT`](/docs/es/env-vars) para que ese servidor se conecte. Antes de v2.1.206, el inicio no esperaba a que el servidor terminara de conectarse, por lo que un servidor que se inicia lentamente pero saludable producía este error también.3272La herramienta que pasaste a [`--permission-prompt-tool`](/docs/es/cli-reference#cli-flags) no estaba entre las herramientas MCP conectadas cuando la ejecución necesitó por primera vez una decisión de permisos, ya sea porque su servidor nunca se conectó o porque ningún servidor conectado expone una herramienta con ese nombre. Claude Code igualmente envía tu prompt: la ejecución [no interactiva](/docs/es/headless) termina con este error, y el código de salida 1, en la primera llamada a herramienta, así que no produce ninguna respuesta aunque la solicitud se haya hecho. Antes del primer prompt, Claude Code espera hasta el tiempo de espera de conexión por servidor de 30 segundos establecido por [`MCP_TIMEOUT`](/docs/es/env-vars) a que ese servidor se conecte. Antes de v2.1.206, el inicio no esperaba a que el servidor terminara de conectarse, así que un servidor sano pero lento en iniciar también producía este error.

3248 3273 

3249```text theme={null}3274```text theme={null}

3250Error: MCP tool mcp__permissions__approve (passed via --permission-prompt-tool) not found. Available MCP tools: none3275Error: MCP tool mcp__permissions__approve (passed via --permission-prompt-tool) not found. Available MCP tools: none

3251```3276```

3252 3277 

3253La lista después de `Available MCP tools:` nombra las herramientas MCP que estaban conectadas cuando terminó la espera.3278La lista después de `Available MCP tools:` nombra las herramientas MCP que estaban conectadas.

3254 3279 

3255**Qué hacer:**3280**Qué hacer:**

3256 3281 

3257* Verifique que el servidor se inicie y permanezca conectado: ejecute `claude mcp list` en el mismo directorio y confirme que el servidor está listado como conectado3282* Verifica que el servidor se inicie y permanezca conectado: ejecuta `claude mcp list` en el mismo directorio y confirma que el servidor aparece como conectado

3258* Confirme que el nombre de la herramienta coincida con el nombre `mcp__<server>__<tool>` que expone el servidor3283* Confirma que el nombre de la herramienta coincida con el nombre `mcp__<server>__<tool>` que expone el servidor

3259* Si el servidor necesita más de 30 segundos para iniciarse, aumente [`MCP_TIMEOUT`](/docs/es/env-vars)3284* Si el servidor necesita más de 30 segundos para iniciar, aumenta [`MCP_TIMEOUT`](/docs/es/env-vars)

3260 3285 

3261<h3 id="oauth-callback-port-is-already-in-use">3286<h3 id="oauth-callback-port-is-already-in-use">

3262 El puerto de devolución de llamada OAuth ya está en uso3287 El puerto de callback de OAuth ya está en uso

3263</h3>3288</h3>

3264 3289 

3265Cuando inicia sesión en un servidor MCP remoto con OAuth, Claude Code inicia un oyente local para recibir la devolución de llamada de inicio de sesión. Si el puerto que necesita ese oyente está siendo utilizado por otro proceso, el inicio de sesión falla con este mensaje. Esto sucede principalmente con un [puerto de devolución de llamada fijo](/docs/es/mcp#use-a-fixed-oauth-callback-port) establecido a través de la variable [`MCP_OAUTH_CALLBACK_PORT`](/docs/es/env-vars) o `--callback-port`, ya que sin uno Claude Code elige un puerto disponible.3290Cuando inicias sesión en un servidor MCP remoto con OAuth, Claude Code inicia un listener local para recibir el callback del inicio de sesión. Si otro proceso ocupa el puerto que necesita ese listener, el inicio de sesión falla con este mensaje. Esto ocurre principalmente con un [puerto de callback fijo](/docs/es/mcp#use-a-fixed-oauth-callback-port) establecido mediante la variable [`MCP_OAUTH_CALLBACK_PORT`](/docs/es/env-vars) o `--callback-port`, ya que sin uno Claude Code elige un puerto disponible.

3266 3291 

3267```text theme={null}3292```text theme={null}

3268OAuth callback port <port> is already in use — another process may be holding it. Run `lsof -ti:<port> -sTCP:LISTEN` to find it.3293OAuth callback port <port> is already in use — another process may be holding it. Run `lsof -ti:<port> -sTCP:LISTEN` to find it.


3272 3297 

3273**Qué hacer:**3298**Qué hacer:**

3274 3299 

3275* Ejecute el comando del mensaje para encontrar el proceso que mantiene el puerto, y deténgalo o espere a que termine3300* Ejecuta el comando del mensaje para encontrar el proceso que ocupa el puerto, y detenlo o espera a que termine

3276* Si otro programa necesita ese puerto permanentemente, registre un URI de redirección diferente con el servidor y establezca su puerto con `MCP_OAUTH_CALLBACK_PORT` o `--callback-port`, el que use3301* Si otro programa necesita ese puerto de forma permanente, registra un URI de redirección diferente en el servidor y establece su puerto con `MCP_OAUTH_CALLBACK_PORT` o `--callback-port`, el que uses

3277* Luego inicie el inicio de sesión nuevamente, por ejemplo seleccionando el servidor en `/mcp`3302* Luego vuelve a iniciar el inicio de sesión, por ejemplo seleccionando el servidor en `/mcp`

3278 3303 

3279<h3 id="no-available-ports-for-oauth-redirect">3304<h3 id="no-available-ports-for-oauth-redirect">

3280 No hay puertos disponibles para redirección OAuth3305 No hay puertos disponibles para la redirección de OAuth

3281</h3>3306</h3>

3282 3307 

3283Cuando inicia sesión en un servidor MCP remoto con [OAuth](/docs/es/mcp#authenticate-with-remote-mcp-servers), Claude Code inicia un oyente local para recibir la devolución de llamada de inicio de sesión. El inicio de sesión falla con este mensaje cuando Claude Code no puede vincular un puerto local para él. Algo en la máquina está impidiendo que escuche en `127.0.0.1`, por ejemplo software de seguridad o una política de sandbox que deniega oyentes locales.3308Cuando inicias sesión en un servidor MCP remoto con [OAuth](/docs/es/mcp#authenticate-with-remote-mcp-servers), Claude Code inicia un listener local para recibir el callback del inicio de sesión. El inicio de sesión falla con este mensaje cuando Claude Code no puede vincular un puerto local para él. Algo en la máquina le impide escuchar en `127.0.0.1`, por ejemplo software de seguridad o una política de sandbox que deniega los listeners locales.

3284 3309 

3285```text theme={null}3310```text theme={null}

3286No available ports for OAuth redirect3311No available ports for OAuth redirect

3287```3312```

3288 3313 

3289Antes de v2.1.268, Claude Code no recurría a un puerto asignado por el sistema operativo, por lo que el mensaje también aparecía cuando solo sus puertos autopickados no podían ser vinculados. Esto puede suceder en hosts Windows donde Hyper-V reserva rangos de puertos que cubren los puertos que Claude Code elige.3314Antes de v2.1.268, Claude Code no recurría a un puerto asignado por el sistema operativo, así que el mensaje también aparecía cuando solo los puertos que elegía por sí mismo no se podían vincular. Eso puede ocurrir en hosts Windows donde Hyper-V reserva rangos de puertos que cubren los puertos entre los que elige Claude Code.

3290 3315 

3291**Qué hacer:**3316**Qué hacer:**

3292 3317 

3293* Verifique si el software de seguridad o una política de sandbox bloquea procesos de escuchar en `127.0.0.1`, y permita que Claude Code vincule un puerto local3318* Verifica si algún software de seguridad o una política de sandbox impide que los procesos escuchen en `127.0.0.1`, y permite que Claude Code vincule un puerto local

3294* Luego inicie el inicio de sesión nuevamente, por ejemplo seleccionando el servidor en `/mcp`3319* Luego vuelve a iniciar el inicio de sesión, por ejemplo seleccionando el servidor en `/mcp`

3295 3320 

3296<h3 id="security-review-fails-without-origin-head">3321<h3 id="security-review-fails-without-origin-head">

3297 /security-review falla sin origin/HEAD3322 /security-review falla sin origin/HEAD

3298</h3>3323</h3>

3299 3324 

3300[`/security-review`](/docs/es/commands#all-commands) construye su contexto de revisión comparando su rama contra `origin/HEAD`, la ref local que registra qué rama es la predeterminada en su remoto `origin`. Cuando esa ref no existe, los comandos git que recopilan la comparación fallan y la revisión se detiene antes de comenzar.3325[`/security-review`](/docs/es/commands#all-commands) construye el contexto de su revisión haciendo un diff de tu rama contra `origin/HEAD`, la referencia local que registra qué rama es la predeterminada en tu remoto `origin`. Cuando esa referencia no existe, los comandos de git que recopilan el diff fallan y la revisión se detiene antes de empezar.

3301 3326 

3302```text theme={null}3327```text theme={null}

3303Error: Shell command failed for pattern "!`git diff --name-only origin/HEAD...`": [stderr]3328Error: Shell command failed for pattern "!`git diff --name-only origin/HEAD...`": [stderr]


3306'git <command> [<revision>...] -- [<file>...]'3331'git <command> [<revision>...] -- [<file>...]'

3307```3332```

3308 3333 

3309El mensaje puede citar `git log` o una `git diff` diferente en su lugar. Git crea `origin/HEAD` solo cuando el remoto anuncia una rama predeterminada y su refspec de obtención la cubre, que un `git clone` completo de un remoto con commits hace. La ref falta en estas configuraciones:3334El mensaje puede citar `git log` o un `git diff` diferente en su lugar. Git crea `origin/HEAD` solo cuando el remoto anuncia una rama predeterminada y tu refspec de fetch la cubre, lo que ocurre con un `git clone` completo de un remoto con commits. La referencia falta en estas configuraciones:

3310 3335 

3311* Un checkout de rama única o CI, que obtiene un refspec demasiado estrecho3336* Un checkout de una sola rama o de CI, que obtiene un refspec demasiado limitado

3312* Un remoto cuyo HEAD del lado del servidor apunta a una rama que nadie envió3337* Un remoto cuyo HEAD del lado del servidor apunta a una rama que nadie ha subido

3313* Un repositorio sin remoto `origin`, o uno del que nunca obtuvo3338* Un repositorio sin remoto `origin`, o uno del que nunca hiciste fetch

3314 3339 

3315Claude Code muestra el mismo error para cualquier skill que [inyecta contexto dinámico](/docs/es/skills#when-an-injected-command-fails), y un comando inyectado fallido aborta la invocación de ese skill. Dos cadenas hermanas se activan antes de que el comando se ejecute en absoluto:3340Claude Code muestra el mismo error para cualquier skill que [inyecta contexto dinámico](/docs/es/skills#when-an-injected-command-fails), y un comando inyectado que falla aborta la invocación de ese skill. Dos cadenas hermanas se activan antes de que el comando llegue a ejecutarse:

3316 3341 

3317* `Shell command permission check failed for pattern "..."`: la verificación de permiso del comando no lo permitió. [Las verificaciones de permiso en comandos inyectados](/docs/es/skills#permission-checks-on-injected-commands) cubre qué resultados abortan en cada modo de permiso y cómo pre-aprobar un comando con `allowed-tools`3342* `Shell command permission check failed for pattern "..."`: la verificación de permisos del comando no lo permitió. [Verificaciones de permisos en comandos inyectados](/docs/es/skills#permission-checks-on-injected-commands) explica qué resultados abortan en cada modo de permisos y cómo aprobar previamente un comando con `allowed-tools`

3318* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: el frontmatter del skill exige bash en una máquina sin él. Instale Git para Windows o cambie el frontmatter a `shell: powershell`. Consulte [Cómo se ejecutan los comandos inyectados](/docs/es/skills#how-injected-commands-run)3343* ``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](/docs/es/skills#how-injected-commands-run)

3319 3344 

3320**Qué hacer:**3345**Qué hacer:**

3321 3346 

3322* Cree la ref nombrando la rama predeterminada de su remoto: `git remote set-head origin <default-branch>`. Esto funciona siempre que exista la ref de seguimiento local `origin/<default-branch>`. Si no existe, como en clones de rama única, obtenga la rama primero: ejecute `git remote set-branches --add origin <branch>`, luego `git fetch origin`, luego vuelva a ejecutar el comando set-head. Vuelva a ejecutar `/security-review`.3347* Crea la referencia nombrando la rama predeterminada de tu remoto: `git remote set-head origin <default-branch>`. Esto funciona siempre que exista la referencia de seguimiento local `origin/<default-branch>`. Si no existe, como en los clones de una sola rama, primero obtén la rama: ejecuta `git remote set-branches --add origin <branch>`, luego `git fetch origin`, y luego vuelve a ejecutar el comando set-head. Vuelve a ejecutar `/security-review`.

3323* Si prefiere no nombrar la rama, ejecute `git fetch origin` y luego `git remote set-head origin --auto`, que pregunta al remoto qué rama es su predeterminada. Falla con `error: Cannot determine remote HEAD` cuando el remoto no anuncia una rama predeterminada, porque está vacío o su HEAD apunta a una rama que nadie envió; nombre la rama explícitamente en su lugar. Falla con `error: Not a valid ref` cuando su clon no obtiene esa rama; amplíe el refspec como se indicó anteriormente primero.3348* Si prefieres no nombrar la rama, ejecuta `git fetch origin` y luego `git remote set-head origin --auto`, que pregunta al remoto cuál es su rama predeterminada. Falla con `error: Cannot determine remote HEAD` cuando el remoto no anuncia ninguna rama predeterminada, porque está vacío o su HEAD apunta a una rama que nadie ha subido; en ese caso, nombra la rama explícitamente. Falla con `error: Not a valid ref` cuando tu clon no obtiene esa rama; primero amplía el refspec como se indicó arriba.

3324* Si el repositorio no tiene remoto, agregue uno con `git remote add origin <url>` y obtenga antes de crear la ref. Si el remoto está vacío, envíe su rama primero con `git push -u origin HEAD` y nombre esa rama en el comando set-head; `origin/HEAD` luego apunta a la rama que acaba de enviar, por lo que `/security-review` ve una comparación vacía hasta que la rama diverja de ella.3349* Si el repositorio no tiene remoto, agrega uno con `git remote add origin <url>` y haz fetch antes de crear la referencia. Si el remoto está vacío, primero sube tu rama con `git push -u origin HEAD` y nombra esa rama en el comando set-head; `origin/HEAD` apunta entonces a la rama que acabas de subir, así que `/security-review` ve un diff vacío hasta que la rama diverja de ella.

3325 3350 

3326<h3 id="input-must-be-provided-when-using-print">3351<h3 id="input-must-be-provided-when-using-print">

3327 Se debe proporcionar entrada cuando se usa `--print`3352 Se debe proporcionar una entrada al usar `--print`

3328</h3>3353</h3>

3329 3354 

3330`claude` desnudo necesita que stdout sea una terminal para iniciar la interfaz de usuario interactiva. Cuando stdout se redirige, o la consola no es una terminal real, como PowerShell ISE y algunos paneles de salida de IDE, `claude` se ejecuta en [modo no interactivo](/docs/es/headless) en su lugar. Ese es el mismo modo que `claude -p`, que requiere un símbolo del sistema, por lo que el mensaje nombra `--print` incluso cuando no pasó la bandera. Pasar `-p`/`--print` sin símbolo del sistema y nada canalizando en stdin produce el mismo error en cualquier lugar.3355`claude` sin argumentos necesita que stdout sea una terminal para iniciar la interfaz interactiva. Cuando stdout está redirigido, o la consola no es una terminal real, como PowerShell ISE y algunos paneles de salida de IDE, `claude` se ejecuta de forma [no interactiva](/docs/es/headless). Ese es el mismo modo que `claude -p`, que requiere un prompt, así que el mensaje nombra `--print` aunque no hayas pasado el flag. Pasar `-p`/`--print` sin prompt y sin nada canalizado en stdin produce el mismo error en cualquier lugar.

3331 3356 

3332```text theme={null}3357```text theme={null}

3333Error: Input must be provided either through stdin or as a prompt argument when using --print3358Error: Input must be provided either through stdin or as a prompt argument when using --print


3335 3360 

3336**Qué hacer:**3361**Qué hacer:**

3337 3362 

3338* Para uso interactivo, ejecute `claude` en una terminal real: Windows Terminal o la consola de PowerShell en lugar de ISE, y la terminal integrada de su IDE en lugar de un panel de salida3363* Para uso interactivo, ejecuta `claude` en una terminal real: Windows Terminal o la consola de PowerShell en lugar de ISE, y la terminal integrada de tu IDE en lugar de un panel de salida

3339* Para uso de una sola vez, pase el símbolo del sistema: `claude -p "your question"`, o canalícelo con `echo "your question" | claude -p`3364* Para uso puntual, pasa el prompt: `claude -p "your question"`, o canalízalo con `echo "your question" | claude -p`

3340 3365 

3341<h3 id="input-contained-only-whitespace">3366<h3 id="input-contained-only-whitespace">

3342 La entrada contenía solo espacios en blanco3367 La entrada contenía solo espacios en blanco

3343</h3>3368</h3>

3344 3369 

3345En [modo no interactivo](/docs/es/headless), Claude Code rechaza un símbolo del sistema compuesto enteramente por espacios, tabulaciones o saltos de línea en lugar de enviarlo, porque la API rechaza mensajes sin texto visible. Qué mensaje ve depende de dónde vino el símbolo del sistema en blanco:3370En [modo no interactivo](/docs/es/headless), Claude Code rechaza un prompt compuesto por completo de espacios, tabulaciones o saltos de línea en lugar de enviarlo, porque la API rechaza los mensajes sin texto visible. El mensaje que ves depende de dónde provino el prompt en blanco:

3346 3371 

3347* **Argumento de símbolo del sistema o stdin canalizado para `claude -p`**: `claude` sale con `Error: Input contained only whitespace. Provide a prompt with text through stdin or as a prompt argument when using --print`3372* **Argumento de prompt o stdin canalizado para `claude -p`**: `claude` termina con `Error: Input contained only whitespace. Provide a prompt with text through stdin or as a prompt argument when using --print`

3348* **Mensaje enviado a una sesión `--input-format stream-json` en ejecución o [Agent SDK](/docs/es/agent-sdk/overview)**: Claude Code termina el turno sin llamar al modelo y la sesión permanece usable. El rechazo llega como un mensaje informativo y como el texto de resultado del turno: `Blank prompt — the message was only whitespace, so nothing was sent to the model.`3373* **Mensaje enviado a una sesión en ejecución con `--input-format stream-json` o del [Agent SDK](/docs/es/agent-sdk/overview)**: Claude Code termina el turno sin llamar al modelo y la sesión sigue siendo utilizable. El rechazo llega como un mensaje informativo y como el texto del resultado del turno: `Blank prompt — the message was only whitespace, so nothing was sent to the model.`

3349 3374 

3350Antes de v2.1.229, Claude Code enviaba el mensaje solo con espacios en blanco a la API, que rechazaba la solicitud con un error 400.3375Antes de v2.1.229, Claude Code enviaba el mensaje compuesto solo de espacios en blanco a la API, que rechazaba la solicitud con un error 400.

3351 3376 

3352**Qué hacer:**3377**Qué hacer:**

3353 3378 

3354* Incluya texto visible en el símbolo del sistema. Si un script construye el símbolo del sistema a partir de una variable o archivo, verifique que la fuente no esté vacía antes de llamar a Claude Code.3379* Incluye texto visible en el prompt. Si un script construye el prompt a partir de una variable o un archivo, verifica que la fuente no esté vacía antes de llamar a Claude Code.

3355 3380 

3356<h3 id="stream-json-input-carried-over-256m-characters-with-no-newline">3381<h3 id="stream-json-input-carried-over-256m-characters-with-no-newline">

3357 stream-json input llevaba más de 256M caracteres sin salto de línea3382 La entrada stream-json contenía más de 256M caracteres sin salto de línea

3358</h3>3383</h3>

3359 3384 

3360Su programa envió más de 268,435,456 caracteres en stdin sin un salto de línea a una ejecución `claude -p --input-format stream-json`, por lo que Claude Code imprime este error en stderr y sale con código 1 en lugar de almacenar más entrada en búfer. El mensaje establece ese presupuesto como `256M`. Antes de v2.1.257, Claude Code almacenaba tal entrada en búfer sin límite, creciendo en memoria hasta que el proceso se bloqueaba o era eliminado.3385Tu programa envió más de 268,435,456 caracteres por stdin sin un salto de línea a una ejecución de `claude -p --input-format stream-json`, así que Claude Code imprime este error en stderr y termina con el código 1 en lugar de almacenar más entrada en búfer. El mensaje expresa ese límite como `256M`. Antes de v2.1.257, Claude Code almacenaba esa entrada en búfer sin límite, haciendo crecer la memoria hasta que el proceso fallaba o se terminaba.

3361 3386 

3362```text theme={null}3387```text theme={null}

3363Error: stream-json input carried over 256M characters with no newline. Each stream-json message must be a single newline-terminated JSON line: either the producer is not newline-terminating its messages, or one message exceeded this budget.3388Error: stream-json input carried over 256M characters with no newline. Each stream-json message must be a single newline-terminated JSON line: either the producer is not newline-terminating its messages, or one message exceeded this budget.

3364```3389```

3365 3390 

3366La entrada de esta longitud sin un salto de línea generalmente significa que el productor no es un productor stream-json en absoluto, como un archivo binario o salida de registro simple canalizada por accidente. Un único mensaje sobre el presupuesto falla la misma verificación.3391Una entrada tan larga sin salto de línea suele significar que el productor no es en absoluto un productor de stream-json, como un archivo binario o una salida de registro de texto plano canalizada por accidente. Un único mensaje que supera el límite falla la misma verificación.

3367 3392 

3368**Qué hacer:**3393**Qué hacer:**

3369 3394 

3370* Verifique qué se canaliza a stdin. Con [`--input-format stream-json`](/docs/es/cli-reference#cli-flags), cada mensaje debe ser una línea JSON terminada por salto de línea3395* Revisa qué se está canalizando a stdin. Con [`--input-format stream-json`](/docs/es/cli-reference#cli-flags), cada mensaje debe ser una línea JSON terminada en salto de línea

3371* Para enviar texto sin formato en su lugar, elimine `--input-format stream-json`; `claude -p` lee un símbolo del sistema de texto sin formato desde stdin de forma predeterminada3396* Para enviar texto plano en su lugar, quita `--input-format stream-json`; `claude -p` lee un prompt de texto plano desde stdin de forma predeterminada

3372 3397 

3373<h3 id="unknown-command">3398<h3 id="unknown-command">

3374 Comando desconocido3399 Comando desconocido

3375</h3>3400</h3>

3376 3401 

3377En una sesión de terminal interactiva, envió un nombre `/` que no coincide con ningún comando en esta sesión, por lo que Claude Code reporta el nombre en lugar de ejecutar cualquier cosa:3402En una sesión interactiva de terminal, enviaste un nombre con `/` que no coincide con ningún comando de esta sesión, así que Claude Code informa el nombre en lugar de ejecutar algo:

3378 3403 

3379```text theme={null}3404```text theme={null}

3380Unknown command: /hepl. Did you mean /help?3405Unknown command: /hepl. Did you mean /help?

3381```3406```

3382 3407 

3383Claude Code sugiere el nombre de comando o alias más cercano que el menú enumera en esta sesión. Cuando nada está cerca, el mensaje termina después del nombre. La causa es generalmente una de las siguientes:3408Claude Code sugiere el nombre o alias de comando más cercano que el menú enumera en esta sesión. Cuando no hay nada cercano, el mensaje termina después del nombre. La causa suele ser una de las siguientes:

3384 3409 

3385* Un error tipográfico, como `/hepl` para `/help`. [Cómo el menú de comandos coincide con lo que escribe](/docs/es/commands#how-the-command-menu-matches-what-you-type) cubre elegir una coincidencia cercana antes de enviar3410* Un error de tipeo, como `/hepl` en lugar de `/help`. [Cómo el menú de comandos hace coincidir lo que escribes](/docs/es/commands#how-the-command-menu-matches-what-you-type) explica cómo elegir una coincidencia cercana antes de enviar

3386* Un comando que existe pero no está disponible en esta sesión porque no se cumple un requisito, como su plataforma, plan o método de autenticación. Las entradas de solución de problemas para [`/web-setup`](/docs/es/web-quickstart#web-setup-shows-no-commands-match-or-unknown-command) y [`/schedule`](/docs/es/routines#schedule-returns-unknown-command) recorren dos casos comunes. Algunos comandos responden con su propio mensaje cuando la política de su organización los desactiva, como [`Cloud sessions are disabled by your organization's policy`](#cloud-sessions-are-disabled-by-your-organizations-policy)3411* Un comando que existe pero no está disponible en esta sesión porque no se cumple un requisito, como tu plataforma, tu plan o tu método de autenticación. Las entradas de solución de problemas de [`/web-setup`](/docs/es/web-quickstart#web-setup-shows-no-commands-match-or-unknown-command) y [`/schedule`](/docs/es/routines#schedule-returns-unknown-command) explican dos casos comunes. Algunos comandos responden con su propio mensaje cuando la política de tu organización los deshabilita, como [`Cloud sessions are disabled by your organization's policy`](#cloud-sessions-are-disabled-by-your-organizations-policy)

3387* Un comando de un [plugin](/docs/es/plugins/overview) o [servidor MCP](/docs/es/mcp#use-mcp-prompts-as-commands) que no está instalado o conectado en esta sesión3412* Un comando de un [plugin](/docs/es/plugins/overview) o de un [servidor MCP](/docs/es/mcp#use-mcp-prompts-as-commands) que no está instalado o conectado en esta sesión

3388 3413 

3389Claude Code responde a un nombre `/` que no coincide con ningún comando de esta manera solo en una sesión de terminal interactiva. En todas las otras sesiones, envía el símbolo del sistema a Claude como un mensaje normal en su lugar, con una nota de que el comando no se ejecutó y una lista de comandos que Claude puede ejecutar en la sesión. Esas sesiones incluyen:3414Claude Code responde de esta forma a un nombre con `/` sin coincidencia solo en una sesión interactiva de terminal. En cualquier otra sesión, envía el prompt a Claude como un mensaje normal, con una nota de que el comando no se ejecutó y una lista de los comandos que Claude puede ejecutar en la sesión. Esas sesiones incluyen:

3390 3415 

3391* Ejecuciones `-p`3416* Ejecuciones con `-p`

3392* Aplicaciones [Agent SDK](/docs/es/agent-sdk/overview)3417* Aplicaciones del [Agent SDK](/docs/es/agent-sdk/overview)

3393* La pestaña Code de la [aplicación Desktop](/docs/es/desktop)3418* La pestaña Code de la [aplicación de escritorio](/docs/es/desktop)

3394* El panel de chat de la [extensión VS Code](/docs/es/vs-code)3419* El panel de chat de la [extensión de VS Code](/docs/es/vs-code)

3395* [Sesiones en la nube](/docs/es/claude-code-on-the-web) y [rutinas](/docs/es/routines)3420* [Sesiones en la nube](/docs/es/claude-code-on-the-web) y [rutinas](/docs/es/routines)

3396 3421 

3397Para un comando integrado que no puede ejecutarse en una de esas sesiones, Claude Code aún responde que el comando no está disponible en su lugar de enviarlo a Claude. Antes de v2.1.274, solo las sesiones en la nube y las rutinas enviaban un nombre que no coincidía a Claude. Antes de v2.1.273, también respondían `Unknown command`.3422Para un comando integrado que no se puede ejecutar en una de esas sesiones, Claude Code sigue respondiendo que el comando no está disponible en lugar de enviarlo a Claude. Antes de v2.1.274, solo las sesiones en la nube y las rutinas enviaban a Claude un nombre sin coincidencia. Antes de v2.1.273, también respondían `Unknown command`.

3398 3423 

3399Claude Code no trata cada símbolo del sistema que comienza con `/` como un comando. Envía el símbolo del sistema a Claude como un mensaje normal cuando la primera palabra después del `/` comienza con puntuación, como el `/--` que abre un comentario de documento Lean, o es una ruta como `/var/log/syslog`.3424Claude Code no trata como comando todo prompt que comienza con `/`. Envía el prompt a Claude como un mensaje normal cuando la primera palabra después de la `/` comienza con un signo de puntuación, como el `/--` que abre un comentario de documentación de Lean, o es una ruta como `/var/log/syslog`.

3400 3425 

3401Antes de v2.1.236, si presionaba `Enter` mientras el menú de comandos enumeraba una coincidencia cercana para el nombre que escribió, Claude Code ejecutaba esa coincidencia, por lo que un error tipográfico como `/hepl` ejecutaba `/help` en lugar de producir este mensaje.3426Antes de v2.1.236, si presionabas `Enter` mientras el menú de comandos mostraba una coincidencia cercana al nombre que escribiste, Claude Code ejecutaba esa coincidencia, así que un error de tipeo como `/hepl` ejecutaba `/help` en lugar de producir este mensaje.

3402 3427 

3403**Qué hacer:**3428**Qué hacer:**

3404 3429 

3405* Ejecute el nombre sugerido, o escriba `/` seguido de parte del nombre para ver qué está disponible en esta sesión3430* Ejecuta el nombre sugerido, o escribe `/` seguido de parte del nombre para ver qué está disponible en esta sesión

3406* Si Claude Code reporta un comando documentado como desconocido, verifique su fila en la [referencia de comandos](/docs/es/commands) para el requisito que nombra3431* Si Claude Code informa como desconocido un comando documentado, revisa su fila en la [referencia de comandos](/docs/es/commands) para ver el requisito que nombra

3407 3432 

3408<h3 id="diff-is-too-large-for-ultrareview">3433<h3 id="diff-is-too-large-for-ultrareview">

3409 La comparación es demasiado grande para ultrareview3434 El diff es demasiado grande para ultrareview

3410</h3>3435</h3>

3411 3436 

3412La comparación entre su rama y la rama base, incluidos los cambios no confirmados y preparados, excede los límites de tamaño para una [ultrareview](/docs/es/ultrareview), por lo que `/code-review ultra` y el subcomando `claude ultrareview` rechazan la revisión antes de que comience la sesión en la nube. Una revisión rechazada no usa una ejecución gratuita y no factura créditos de uso. El mensaje nombra los límites en vigor, el tamaño de su comparación y los archivos que contribuyen la mayoría de líneas cambiadas. Antes de v2.1.216, el mensaje mostraba solo las estadísticas de comparación sin procesar.3437El diff entre tu rama y la rama base, incluidos los cambios sin commit y los preparados, supera los límites de tamaño de un [ultrareview](/docs/es/ultrareview), así que `/code-review ultra` y el subcomando `claude ultrareview` rechazan la revisión antes de que se inicie la sesión en la nube. Una revisión rechazada no usa una ejecución gratuita ni cobra créditos de uso. El mensaje nombra los límites vigentes, el tamaño de tu diff y los archivos que aportan más líneas modificadas. Antes de v2.1.216, el mensaje mostraba solo las estadísticas sin procesar del diff.

3413 3438 

3414```text theme={null}3439```text theme={null}

3415Diff is too large for ultrareview: 812 files, 96,410 lines changed (limits: 500 files, 8,000 lines). Largest files: package-lock.json (41,904 lines), dist/bundle.js (18,210 lines), src/generated/api.ts (9,876 lines). Pass a closer base branch (`/code-review ultra <branch>`) to narrow the scope, or split the change.3440Diff is too large for ultrareview: 812 files, 96,410 lines changed (limits: 500 files, 8,000 lines). Largest files: package-lock.json (41,904 lines), dist/bundle.js (18,210 lines), src/generated/api.ts (9,876 lines). Pass a closer base branch (`/code-review ultra <branch>`) to narrow the scope, or split the change.

3416```3441```

3417 3442 

3418Revisar una solicitud de extracción aplica los mismos límites; esa forma del mensaje comienza `PR #<N> is too large for ultrareview` y nombra los recuentos de archivo y línea de la PR.3443La revisión de un pull request aplica los mismos límites; esa forma del mensaje comienza con `PR #<N> is too large for ultrareview` y nombra las cantidades de archivos y líneas del PR.

3419 3444 

3420**Qué hacer:**3445**Qué hacer:**

3421 3446 

3422* Pase una rama base más cercana a su trabajo, como `/code-review ultra develop`, para que la revisión cubra solo la comparación contra esa rama3447* Pasa una rama base más cercana a tu trabajo, como `/code-review ultra develop`, para que la revisión cubra solo el diff contra esa rama

3423* Divida el cambio en ramas más pequeñas y revise cada una. Los archivos que el mensaje nombra contribuyen la mayoría de líneas cambiadas, así que comience moviendo esos a su propia rama.3448* Divide el cambio en ramas más pequeñas y revisa cada una. Los archivos que nombra el mensaje aportan más líneas modificadas, así que empieza por mover esos a su propia rama.

3424 3449 

3425<h3 id="could-not-find-merge-base-with-the-base-branch">3450<h3 id="could-not-find-merge-base-with-the-base-branch">

3426 No se pudo encontrar merge-base con la rama base3451 No se pudo encontrar el merge-base con la rama base

3427</h3>3452</h3>

3428 3453 

3429`/code-review ultra` y el subcomando `claude ultrareview` revisan la comparación entre su rama y una rama base, que necesita un commit que ambas compartan. Cuando `git merge-base` no encuentra ninguno, Claude Code rechaza la revisión antes de que comience la sesión en la nube. En un clon que Claude Code puede verificar que está completo, con al menos una rama, recurre a [revisar cada archivo rastreado](/docs/es/ultrareview#diff-limits-and-fallbacks) en su lugar de rechazar. Ve este rechazo cuando la rama base no se puede encontrar en absoluto, cuando Claude Code no puede verificar que su clon está completo, o en el raro repositorio donde la comparación de árbol completo no es posible, como el formato de objeto SHA-256.3454`/code-review ultra` y el subcomando `claude ultrareview` revisan el diff entre tu rama y una rama base, lo que requiere un commit que ambas compartan. Cuando `git merge-base` no encuentra ninguno, Claude Code rechaza la revisión antes de que se inicie la sesión en la nube. En un clon que Claude Code puede verificar como completo, con al menos una rama, recurre a [revisar todos los archivos con seguimiento](/docs/es/ultrareview#diff-limits-and-fallbacks) en lugar de rechazarla. Ves este rechazo cuando la rama base no se encuentra en absoluto, cuando Claude Code no puede verificar que tu clon esté completo, o en el raro repositorio donde el diff del árbol completo no es posible, como con el formato de objetos SHA-256.

3430 3455 

3431```text theme={null}3456```text theme={null}

3432Could not find merge-base with main. Pass the base branch explicitly (e.g. `/code-review ultra develop`) or make sure you're in a git repo with a main branch.3457Could not find merge-base with main. Pass the base branch explicitly (e.g. `/code-review ultra develop`) or make sure you're in a git repo with a main branch.


3434 3459 

3435La sugerencia después de la primera oración depende de lo que Claude Code observó:3460La sugerencia después de la primera oración depende de lo que Claude Code observó:

3436 3461 

3437* **No pasó una rama base**: Claude Code comparó contra la rama predeterminada del repositorio y sugiere pasar su base explícitamente, como en el ejemplo anterior3462* **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

3438* **Pasó una rama base que ya estaba en su clon**: la sugerencia lee ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``3463* **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>`)``

3439* **Pasó una rama base que no estaba en su clon**: Claude Code la obtuvo de origin antes de comparar. La sugerencia lee ``<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 su clon es superficial, sugiere `git fetch --unshallow origin` en su lugar. Antes de v2.1.221, la sugerencia sugerí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`.3464* **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 saber si tu clon es superficial, sugiere `git fetch --unshallow origin` en su lugar. Antes de 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`.

3440 3465 

3441**Qué hacer:**3466**Qué hacer:**

3442 3467 

3443* Si otra rama es su base real, pásela explícitamente: `/code-review ultra <branch>`3468* Si otra rama es tu base real, pásala explícitamente: `/code-review ultra <branch>`

3444* Si su clon podría no tener historial completo, ejecute `git fetch --unshallow origin` y vuelva a ejecutar la revisión3469* Si es posible que tu clon no tenga el historial completo, ejecuta `git fetch --unshallow origin` y vuelve a ejecutar la revisión

3445 3470 

3446<h3 id="your-checkout-has-no-branches">3471<h3 id="your-checkout-has-no-branches">

3447 Su checkout no tiene ramas3472 Tu checkout no tiene ramas

3448</h3>3473</h3>

3449 3474 

3450Un checkout puede tener commits pero sin ramas: si ejecuta `git init` seguido de `git fetch <url>` y `git checkout FETCH_HEAD`, obtiene un HEAD desconectado sin refs. Claude Code empaqueta su repositorio como un paquete git para cargarlo para una [ultrareview](/docs/es/ultrareview), y no puede empaquetar un repositorio que no tiene ramas u otras refs, por lo que `/code-review ultra` y el subcomando `claude ultrareview` rechazan la revisión antes de que comience la sesión en la nube.3475Un checkout puede tener commits pero no ramas: si ejecutas `git init` seguido de `git fetch <url>` y `git checkout FETCH_HEAD`, obtienes un HEAD desacoplado sin referencias. Claude Code empaqueta tu repositorio como un bundle de git para subirlo para un [ultrareview](/docs/es/ultrareview), y no puede empaquetar un repositorio que no tiene ramas ni otras referencias, así que `/code-review ultra` y el subcomando `claude ultrareview` rechazan la revisión antes de que se inicie la sesión en la nube.

3451 3476 

3452```text theme={null}3477```text theme={null}

3453Your checkout has no branches (detached HEAD only), which cloud review can't bundle. Create one first — `git checkout -b <name>` — then rerun /code-review ultra.3478Your checkout has no branches (detached HEAD only), which cloud review can't bundle. Create one first — `git checkout -b <name>` — then rerun /code-review ultra.

3454```3479```

3455 3480 

3456Antes de v2.1.221, Claude Code intentaba revisar cada archivo rastreado en este checkout, y la carga fallaba.3481Antes de v2.1.221, Claude Code intentaba revisar todos los archivos con seguimiento de este checkout, y la subida fallaba.

3457 3482 

3458**Qué hacer:**3483**Qué hacer:**

3459 3484 

3460* Cree una rama en su commit actual con `git checkout -b <name>`, luego vuelva a ejecutar la revisión3485* Crea una rama en tu commit actual con `git checkout -b <name>` y vuelve a ejecutar la revisión

3461 3486 

3462<h3 id="no-github-account-is-connected-to-your-claude-account">3487<h3 id="no-github-account-is-connected-to-your-claude-account">

3463 Ninguna cuenta de GitHub está conectada a su cuenta de Claude3488 No hay ninguna cuenta de GitHub conectada a tu cuenta de Claude

3464</h3>3489</h3>

3465 3490 

3466Ejecutó `/code-review ultra <PR#>` o `claude ultrareview <PR#>`, y antes de crear la sesión en la nube Claude Code pregunta al servidor si [la cuenta de GitHub conectada a su cuenta de Claude](/docs/es/ultrareview#review-a-pull-request) puede alcanzar el repositorio de la PR. Ninguna cuenta está conectada, o la conexión expiró, por lo que el clon en la nube fallaría y Claude Code rechaza el lanzamiento. Claude Code no gasta una ejecución gratuita ni factura créditos de uso para un lanzamiento rechazado.3491Ejecutaste `/code-review ultra <PR#>` o `claude ultrareview <PR#>`, y antes de crear la sesión en la nube Claude Code pregunta al servidor si [la cuenta de GitHub conectada a tu cuenta de Claude](/docs/es/ultrareview#review-a-pull-request) puede acceder al repositorio del PR. No hay ninguna cuenta conectada, o la conexión caducó, así que el clon en la nube fallaría y Claude Code rechaza el inicio. Claude Code no gasta una ejecución gratuita ni cobra créditos de uso por un inicio rechazado.

3467 3492 

3468```text theme={null}3493```text theme={null}

3469Ultrareview clones <owner>/<repo> in the cloud with the GitHub account connected to your Claude account, and none is connected (or the connection expired). To fix: run /web-setup to reuse your GitHub CLI login, or connect an account at https://claude.ai/connect-github — then re-run /code-review ultra 1234 (allow a minute after connecting).3494Ultrareview clones <owner>/<repo> in the cloud with the GitHub account connected to your Claude account, and none is connected (or the connection expired). To fix: run /web-setup to reuse your GitHub CLI login, or connect an account at https://claude.ai/connect-github — then re-run /code-review ultra 1234 (allow a minute after connecting).

3470```3495```

3471 3496 

3472Cuando [`/web-setup`](/docs/es/web-quickstart#connect-from-your-terminal) no está disponible en su sesión, el mensaje nombra solo el enlace de claude.ai.3497Cuando [`/web-setup`](/docs/es/web-quickstart#connect-from-your-terminal) no está disponible en tu sesión, el mensaje nombra solo el enlace de claude.ai.

3473 3498 

3474**Qué hacer:**3499**Qué hacer:**

3475 3500 

3476* Ejecute `/web-setup` para conectar su inicio de sesión de GitHub CLI a su cuenta de Claude, o conecte una cuenta en [claude.ai/connect-github](https://claude.ai/connect-github)3501* Ejecuta `/web-setup` para conectar tu inicio de sesión de la CLI de GitHub a tu cuenta de Claude, o conecta una cuenta en [claude.ai/connect-github](https://claude.ai/connect-github)

3477* Vuelva a ejecutar la revisión un minuto después de conectar3502* Vuelve a ejecutar la revisión un minuto después de conectarte

3478 3503 

3479Antes de v2.1.248, Claude Code no verificaba esto antes del lanzamiento.3504Antes de v2.1.248, Claude Code no verificaba esto antes del inicio.

3480 3505 

3481<h3 id="your-connected-github-account-cant-see-the-repository">3506<h3 id="your-connected-github-account-cant-see-the-repository">

3482 Su cuenta de GitHub conectada no puede ver el repositorio3507 Tu cuenta de GitHub conectada no puede ver el repositorio

3483</h3>3508</h3>

3484 3509 

3485Ejecutó `/code-review ultra <PR#>` o `claude ultrareview <PR#>`, y [la cuenta de GitHub conectada a su cuenta de Claude](/docs/es/ultrareview#review-a-pull-request) no puede leer el repositorio de la PR, por lo que el clon en la nube fallaría y Claude Code rechaza el lanzamiento. Claude Code no gasta una ejecución gratuita ni factura créditos de uso para un lanzamiento rechazado.3510Ejecutaste `/code-review ultra <PR#>` o `claude ultrareview <PR#>`, y [la cuenta de GitHub conectada a tu cuenta de Claude](/docs/es/ultrareview#review-a-pull-request) no puede leer el repositorio del PR, así que el clon en la nube fallaría y Claude Code rechaza el inicio. Claude Code no gasta una ejecución gratuita ni cobra créditos de uso por un inicio rechazado.

3486 3511 

3487```text theme={null}3512```text theme={null}

3488Your connected GitHub account can't see <owner>/<repo> — usually the Claude GitHub app isn't installed on <owner> or wasn't granted this repo (web-connected accounts need it for private repos), or a different GitHub account is connected. To fix: run /web-setup to reuse your GitHub CLI login, or install the app at https://github.com/apps/claude/installations/new — then re-run /code-review ultra 1234.3513Your connected GitHub account can't see <owner>/<repo> — usually the Claude GitHub app isn't installed on <owner> or wasn't granted this repo (web-connected accounts need it for private repos), or a different GitHub account is connected. To fix: run /web-setup to reuse your GitHub CLI login, or install the app at https://github.com/apps/claude/installations/new — then re-run /code-review ultra 1234.

3489```3514```

3490 3515 

3491Cuando [`/web-setup`](/docs/es/web-quickstart#connect-from-your-terminal) no está disponible en su sesión, el mensaje nombra solo la instalación de la aplicación.3516Cuando [`/web-setup`](/docs/es/web-quickstart#connect-from-your-terminal) no está disponible en tu sesión, el mensaje nombra solo la instalación de la aplicación.

3492 3517 

3493**Qué hacer:**3518**Qué hacer:**

3494 3519 

3495* Si su CLI `gh` local puede leer el repositorio, ejecute `/web-setup` para conectar ese inicio de sesión a su cuenta de Claude3520* Si tu CLI `gh` local puede leer el repositorio, ejecuta `/web-setup` para conectar ese inicio de sesión a tu cuenta de Claude

3496* Vuelva a ejecutar la revisión después del cambio3521* Vuelve a ejecutar la revisión después del cambio

3497 3522 

3498Antes de v2.1.248, Claude Code no verificaba esto antes del lanzamiento.3523Antes de v2.1.248, Claude Code no verificaba esto antes del inicio.

3499 3524 

3500<h3 id="the-github-app-preflight-failed-transiently">3525<h3 id="the-github-app-preflight-failed-transiently">

3501 La verificación previa de la aplicación de GitHub falló transitoriamente3526 La verificación previa de la GitHub App falló de forma transitoria

3502</h3>3527</h3>

3503 3528 

3504Inició una [sesión en la nube](/docs/es/claude-code-on-the-web) desde un repositorio local, y dos pasos fallaron juntos. Claude Code no pudo construir o cargar el paquete de su repositorio. Antes de la carga, verificó si el servicio en la nube puede clonar el repositorio desde GitHub, y en lugar de una respuesta definitiva, esa verificación terminó en un error que un reintento podría aclarar, como un error de red, un tiempo de espera, o un error temporal del servidor. El mensaje completo comienza con lo que detuvo el paquete, por ejemplo `Could not upload repo bundle (<error>)`, y termina con la oración de verificación previa:3529Iniciaste una [sesión en la nube](/docs/es/claude-code-on-the-web) desde un repositorio local, y dos pasos fallaron a la vez. Claude Code no pudo construir ni subir el bundle de tu repositorio. Antes de la subida, verificó si el servicio en la nube puede clonar el repositorio desde GitHub, y en lugar de una respuesta definitiva, esa verificación terminó en un error que un reintento podría resolver, como un error de red, un tiempo de espera agotado o un error temporal del servidor. El mensaje completo comienza con lo que detuvo el bundle, por ejemplo `Could not upload repo bundle (<error>)`, y termina con la oración de la verificación previa:

3505 3530 

3506```text theme={null}3531```text theme={null}

3507Could not upload repo bundle (<error>). The GitHub App preflight failed transiently (network or service hiccup) — retry in a moment to start from GitHub instead3532Could not upload repo bundle (<error>). The GitHub App preflight failed transiently (network or service hiccup) — retry in a moment to start from GitHub instead


3509 3534 

3510**Qué hacer:**3535**Qué hacer:**

3511 3536 

3512* Vuelva a ejecutar el comando después de un momento. Cuando la verificación de GitHub pasa, Claude Code puede iniciar la sesión desde un clon de GitHub, por lo que la carga fallida ya no bloquea el lanzamiento3537* Vuelve a ejecutar el comando después de un momento. Cuando la verificación de GitHub pasa, Claude Code puede iniciar la sesión desde un clon de GitHub, así que la subida fallida ya no bloquea el inicio

3513* Si los reintentos siguen fallando, el inicio del mensaje nombra lo que detuvo la carga. Cuando esa causa es algo que puede corregir, corríjalo para que la sesión pueda iniciarse desde su repositorio local en su lugar3538* Si los reintentos siguen fallando, el inicio del mensaje nombra lo que detuvo la subida. Cuando esa causa es algo que puedes corregir, corrígela para que la sesión pueda iniciarse desde tu repositorio local en su lugar

3514 3539 

3515Antes de v2.1.251, Claude Code terminaba el mensaje con `Please set up GitHub on https://claude.ai/code` incluso cuando la verificación de GitHub falló solo transitoriamente, y el consejo de configuración no puede aclarar una falla transitoria.3540Antes de v2.1.251, Claude Code terminaba el mensaje con `Please set up GitHub on https://claude.ai/code` incluso cuando la verificación de GitHub fallaba solo de forma transitoria, y un consejo de configuración no puede resolver un fallo transitorio.

3516 3541 

3517<h3 id="the-repository-upload-cant-follow-a-git-setting">3542<h3 id="the-repository-upload-cant-follow-a-git-setting">

3518 La carga del repositorio no puede seguir una configuración de git3543 La subida del repositorio no puede seguir un ajuste de git

3519</h3>3544</h3>

3520 3545 

3521Inició una [sesión en la nube que carga su repositorio local](/docs/es/claude-code-on-the-web#send-local-repositories-without-github), o una [ultrareview](/docs/es/ultrareview) de una rama, y la carga no puede seguir una de las configuraciones de git que deciden qué reglas de atributo se aplican a sus archivos. Si la carga continuara y perdiera una regla, un archivo que git transforma antes de almacenarlo, como uno que un filtro limpio cifra, podría llegar a la nube tal como está en el disco. Claude Code rechaza la carga en su lugar, y nada se carga:3546Iniciaste una [sesión en la nube que sube tu repositorio local](/docs/es/claude-code-on-the-web#send-local-repositories-without-github), o un [ultrareview](/docs/es/ultrareview) de una rama, y la subida no puede seguir uno de los ajustes de git que deciden qué reglas de atributos se aplican a tus archivos. Si la subida continuara y se saltara una regla, un archivo que git transforma antes de almacenarlo, como uno que un filtro clean cifra, podría llegar a la nube tal como está en el disco. En su lugar, Claude Code rechaza la subida y no se sube nada:

3522 3547 

3523```text theme={null}3548```text theme={null}

3524Not uploading this working tree: core.ignoreCase (which decides whether .gitattributes patterns match file names regardless of letter case) is set in <file>, and the upload cannot follow that setting, so a file git would change before storing it (to encrypt it, for example) could be uploaded as it is on disk. Move the core.ignoreCase line into this repository's .git/config or directly into your ~/.gitconfig, then retry.3549Not uploading this working tree: core.ignoreCase (which decides whether .gitattributes patterns match file names regardless of letter case) is set in <file>, and the upload cannot follow that setting, so a file git would change before storing it (to encrypt it, for example) could be uploaded as it is on disk. Move the core.ignoreCase line into this repository’s .git/config or directly into your ~/.gitconfig, then retry.

3525```3550```

3526 3551 

3527El mensaje nombra la configuración y dónde está establecida, y termina con la solución para el caso que golpeó. El mismo rechazo aparece para `core.attributesFile` y `attr.tree`, cada uno con su propia solución.3552El mensaje nombra el ajuste y dónde está establecido, y termina con la solución para el caso que encontraste. El mismo rechazo aparece para `core.attributesFile` y `attr.tree`, cada uno con su propia solución.

3528 3553 

3529El mensaje puede nombrar un archivo de configuración que su configuración de git extrae a través de una directiva `include` o `includeIf`, incluso cuando esa condición de directiva no se aplica a este repositorio.3554El mensaje puede nombrar un archivo de configuración que tu configuración de git incorpora mediante una directiva `include` o `includeIf`, incluso cuando la condición de esa directiva no se aplica a este repositorio.

3530 3555 

3531**Qué hacer:**3556**Qué hacer:**

3532 3557 

3533* Aplique la solución en la oración final del mensaje3558* Aplica la solución de la oración final del mensaje

3534 3559 

3535<h3 id="github-isnt-connected-to-your-claude-account">3560<h3 id="github-isnt-connected-to-your-claude-account">

3536 GitHub no está conectado a su cuenta de Claude3561 GitHub no está conectado a tu cuenta de Claude

3537</h3>3562</h3>

3538 3563 

3539Inició una [sesión en la nube](/docs/es/claude-code-on-the-web) desde su repositorio local, por ejemplo con `/autofix-pr`. Ninguna cuenta de GitHub está conectada a su cuenta de Claude, o la conexión expiró, por lo que Claude Code rechaza el lanzamiento:3564Iniciaste una [sesión en la nube](/docs/es/claude-code-on-the-web) desde tu repositorio local, por ejemplo con `/autofix-pr`. No hay ninguna cuenta de GitHub conectada a tu cuenta de Claude, o la conexión caducó, así que Claude Code rechaza el inicio:

3540 3565 

3541```text theme={null}3566```text theme={null}

3542GitHub isn't connected to your Claude account, so this repository can't be cloned in the cloud. Run /web-setup to connect with your GitHub CLI login, or connect on the web at https://claude.ai/connect-github3567GitHub isn't connected to your Claude account, so this repository can't be cloned in the cloud. Run /web-setup to connect with your GitHub CLI login, or connect on the web at https://claude.ai/connect-github

3543```3568```

3544 3569 

3545Cuando crea una rutina con [`/schedule`](/docs/es/routines), el mismo mensaje aparece como una nota de configuración que nombra el repositorio; la nota no bloquea la creación de la rutina.3570Cuando creas una rutina con [`/schedule`](/docs/es/routines), el mismo mensaje aparece como una nota de configuración que nombra el repositorio; la nota no impide crear la rutina.

3546 3571 

3547**Qué hacer:**3572**Qué hacer:**

3548 3573 

3549* Ejecute `/web-setup` para conectar su inicio de sesión de GitHub CLI a su cuenta de Claude, o conecte una cuenta en [claude.ai/connect-github](https://claude.ai/connect-github). Consulte [Opciones de autenticación de GitHub](/docs/es/claude-code-on-the-web#github-authentication-options) para ver cómo difieren los dos.3574* Ejecuta `/web-setup` para conectar tu inicio de sesión de la CLI de GitHub a tu cuenta de Claude, o conecta una cuenta en [claude.ai/connect-github](https://claude.ai/connect-github). Consulta [Opciones de autenticación de GitHub](/docs/es/claude-code-on-the-web#github-authentication-options) para ver en qué se diferencian.

3550* Vuelva a ejecutar el comando un minuto después de conectar3575* Vuelve a ejecutar el comando un minuto después de conectarte

3551 3576 

3552Antes de v2.1.268, Claude Code reportaba esto como una falla temporal de la verificación de la aplicación de GitHub de Claude y sugería reintentar o instalar la aplicación; ninguno conecta una cuenta de GitHub.3577Antes de v2.1.268, Claude Code informaba esto como un fallo temporal de la verificación de la Claude GitHub App y sugería reintentar o instalar la aplicación; ninguna de las dos opciones conecta una cuenta de GitHub.

3553 3578 

3554<h3 id="single-sign-on-authorization-needed">3579<h3 id="single-sign-on-authorization-needed">

3555 Autorización de inicio de sesión único necesaria3580 Se necesita autorización de inicio de sesión único

3556</h3>3581</h3>

3557 3582 

3558Ejecutó [`/install-github-app`](/docs/es/github-actions#quick-setup) y eligió un repositorio cuya organización aplica inicio de sesión único SAML. Antes de la configuración, Claude Code verifica su acceso al repositorio con la CLI de GitHub, y GitHub rechazó esa verificación porque su token `gh` aún no está autorizado para la organización. El asistente muestra la advertencia con los pasos para autorizar:3583Ejecutaste [`/install-github-app`](/docs/es/github-actions#quick-setup) y elegiste un repositorio cuya organización exige el inicio de sesión único SAML. Antes de la configuración, Claude Code verifica tu acceso al repositorio con la CLI de GitHub, y GitHub rechazó esa verificación porque tu token de `gh` todavía no está autorizado para la organización. El asistente muestra la advertencia con los pasos para autorizarlo:

3559 3584 

3560```text theme={null}3585```text theme={null}

3561Single sign-on authorization needed3586Single sign-on authorization needed


3564 3589 

3565**Qué hacer:**3590**Qué hacer:**

3566 3591 

3567* Vuelva a autorizar su inicio de sesión de GitHub CLI con los alcances `repo` y `workflow` ejecutando `gh auth refresh -h github.com -s repo,workflow`, y autorice la organización cuando GitHub solicite inicio de sesión único3592* Vuelve a autorizar tu inicio de sesión de la CLI de GitHub con los alcances `repo` y `workflow` ejecutando `gh auth refresh -h github.com -s repo,workflow`, y autoriza la organización cuando GitHub solicite el inicio de sesión único

3568* Si se autentica con un token de acceso personal en `GH_TOKEN`, abra [github.com/settings/tokens](https://github.com/settings/tokens), seleccione **Configure SSO** en el token, y autorice la organización3593* Si te autenticas con un token de acceso personal en `GH_TOKEN`, abre [github.com/settings/tokens](https://github.com/settings/tokens), selecciona **Configure SSO** en el token y autoriza la organización

3569* Ejecute `/install-github-app` nuevamente3594* Vuelve a ejecutar `/install-github-app`

3570 3595 

3571Antes de v2.1.273, Claude Code mostraba la advertencia `Admin permissions required` para esta condición en su lugar.3596Antes de v2.1.273, Claude Code mostraba la advertencia `Admin permissions required` para esta condición en su lugar.

3572 3597 


3574 No se pudo reanudar la conversación3599 No se pudo reanudar la conversación

3575</h3>3600</h3>

3576 3601 

3577Claude Code no pudo leer o procesar la transcripción guardada para la sesión que seleccionó del [selector `claude --resume`](/docs/es/sessions#use-the-session-picker), por lo que termina el proceso en lugar de continuar en un estado parcialmente cargado. El mensaje incluye el comando para reintentar:3602Claude Code no pudo leer ni procesar la transcripción guardada de la sesión que seleccionaste en el [selector de `claude --resume`](/docs/es/sessions#use-the-session-picker), así que termina el proceso en lugar de continuar en un estado cargado parcialmente. El mensaje incluye el comando para reintentar:

3578 3603 

3579```text theme={null}3604```text theme={null}

3580Failed to resume the conversation.3605Failed to resume the conversation.

3581Run claude --resume <session-id> to retry, or claude to start a new session.3606Run claude --resume <session-id> to retry, or claude to start a new session.

3582```3607```

3583 3608 

3584Claude Code sale con código 1 después de mostrar el mensaje. El selector `/resume` dentro de una sesión en ejecución reporta `Failed to resume conversation` en la conversación en su lugar, y su sesión actual sigue ejecutándose. Antes de v2.1.216, un reintento fallido desde el selector `claude --resume` permanecía en el spinner `Resuming conversation…` indefinidamente en lugar de mostrar este mensaje.3609Claude Code termina con el código 1 después de mostrar el mensaje. El selector de `/resume` dentro de una sesión en ejecución informa `Failed to resume conversation` en la conversación en su lugar, y tu sesión actual sigue ejecutándose. Antes de v2.1.216, una reanudación fallida desde el selector de `claude --resume` se quedaba indefinidamente en el indicador giratorio `Resuming conversation…` en lugar de mostrar este mensaje.

3585 3610 

3586**Qué hacer:**3611**Qué hacer:**

3587 3612 

3588* Ejecute `claude --resume <session-id>` con el ID de sesión del mensaje para reintentar3613* Ejecuta `claude --resume <session-id>` con el ID de sesión del mensaje para reintentar

3589* Si cada reintento falla de la misma manera, ejecute `claude update` y reanude nuevamente. Las versiones anteriores a v2.1.275 fallan en la reanudación cuando la transcripción guardada contiene una entrada que no pueden leer.3614* Si todos los reintentos fallan de la misma forma, ejecuta `claude update` y vuelve a reanudar. Las versiones anteriores a v2.1.275 hacen fallar la reanudación cuando la transcripción guardada contiene una entrada que no pueden leer.

3590* Si el reintento falla nuevamente, ejecute `claude` para iniciar una nueva sesión3615* Si el reintento vuelve a fallar, ejecuta `claude` para iniciar una nueva sesión

3591 3616 

3592<h3 id="no-conversation-found-with-the-session-id">3617<h3 id="no-conversation-found-with-the-session-id">

3593 No se encontró conversación con el ID de sesión3618 No se encontró ninguna conversación con el ID de sesión

3594</h3>3619</h3>

3595 3620 

3596Pasó un ID de sesión a `claude --resume <session-id>` y ninguna transcripción guardada coincidió:3621Pasaste un ID de sesión a `claude --resume <session-id>` y ninguna transcripción guardada coincidió con él:

3597 3622 

3598```text theme={null}3623```text theme={null}

3599No conversation found with session ID: <session-id>3624No conversation found with session ID: <session-id>

3600```3625```

3601 3626 

3602Claude Code sale con código 1 después de mostrar el mensaje. Claude Code [busca el proyecto actual primero, luego cada otro proyecto en esta máquina](/docs/es/sessions#resume-a-session) para el ID. Antes de v2.1.223, la búsqueda se detuvo en el directorio del proyecto actual y sus worktrees de git, por lo que reanude desde el directorio donde la sesión trabajó por última vez.3627Claude Code termina con el código 1 después de mostrar el mensaje. Claude Code [busca el ID primero en el proyecto actual y luego en todos los demás proyectos de esta máquina](/docs/es/sessions#resume-a-session). Antes de v2.1.223, la búsqueda se detenía en el directorio del proyecto actual y sus worktrees de git, así que debías reanudar desde el directorio en el que la sesión trabajó por última vez.

3603 3628 

3604Las causas comunes:3629Causas comunes:

3605 3630 

3606* **ID mal escrito**: para una ejecución no interactiva, el ID es el campo `session_id` de la salida [`--output-format json`](/docs/es/headless#get-structured-output)3631* **ID mal escrito**: para una ejecución no interactiva, el ID es el campo `session_id` de la [salida de `--output-format json`](/docs/es/headless#get-structured-output)

3607* **Transcripción eliminada**: Claude Code elimina transcripciones después del [período de retención](/docs/es/sessions#where-transcripts-are-stored), 30 días de forma predeterminada, siguiendo las [reglas de barrido de retención](/docs/es/claude-directory#cleaned-up-automatically)3632* **Transcripción eliminada**: Claude Code elimina las transcripciones después del [período de retención](/docs/es/sessions#where-transcripts-are-stored), 30 días de forma predeterminada, siguiendo las [reglas de limpieza por retención](/docs/es/claude-directory#cleaned-up-automatically)

3608* **Máquina diferente**: Claude Code almacena transcripciones localmente, por lo que reanude la sesión en la máquina donde se ejecutó3633* **Otra máquina**: Claude Code almacena las transcripciones localmente, así que reanuda la sesión en la máquina donde se ejecutó

3609* **Copias duplicadas**: si copió un directorio de proyecto bajo `~/.claude/projects` para que dos transcripciones lleven el mismo ID, Claude Code reporta este mensaje en lugar de reanudar una copia arbitrariamente3634* **Copias duplicadas**: si copiaste un directorio de proyecto dentro de `~/.claude/projects` de modo que dos transcripciones tienen el mismo ID, Claude Code informa este mensaje en lugar de reanudar una copia de forma arbitraria

3610 3635 

3611**Qué hacer:**3636**Qué hacer:**

3612 3637 

3613* Para una sesión interactiva, abra el [selector de sesión](/docs/es/sessions#use-the-session-picker) con `claude --resume` y presione `Ctrl+A` para ampliarlo a cada proyecto en esta máquina, luego seleccione la sesión3638* Para una sesión interactiva, abre el [selector de sesiones](/docs/es/sessions#use-the-session-picker) con `claude --resume` y presiona `Ctrl+A` para ampliarlo a todos los proyectos de esta máquina, y luego selecciona la sesión

3614* Las sesiones creadas con `claude -p` o el [Agent SDK](/docs/es/agent-sdk/overview) no aparecen en el selector, por lo que vuelva a verificar el ID contra el `session_id` que su ejecución original imprimió3639* Las sesiones creadas con `claude -p` o con el [Agent SDK](/docs/es/agent-sdk/overview) no aparecen en el selector, así que vuelve a comprobar el ID con el `session_id` que imprimió tu ejecución original

3615 3640 

3616<h3 id="windows-reported-an-error-ebadf">3641<h3 id="windows-reported-an-error-ebadf">

3617 Windows reportó un error (EBADF) cuando Claude Code leyó el archivo de transcripción de esta sesión3642 Windows informó un error (EBADF) cuando Claude Code leyó el archivo de transcripción de esta sesión

3618</h3>3643</h3>

3619 3644 

3620Reanudó una sesión en Windows, su archivo de [transcripción](/docs/es/sessions#where-transcripts-are-stored) guardado se abrió normalmente, y la lectura falló con el error del sistema EBADF. El error del sistema no dice por qué la lectura falló, por lo que el mensaje sugiere causas probables y qué intentar:3645Reanudaste una sesión en Windows, su [archivo de transcripción](/docs/es/sessions#where-transcripts-are-stored) guardado se abrió normalmente y luego la lectura falló con el error del sistema EBADF. El error del sistema no dice por qué falló la lectura, así que el mensaje sugiere causas probables y qué intentar:

3621 3646 

3622```text theme={null}3647```text theme={null}

3623Windows reported an error (EBADF) when Claude Code read this session's transcript file, although the file had opened normally. This can happen when other software intercepts file reads — security, encryption or endpoint-management tools, for example. If it keeps happening for this conversation, try excluding the folder that holds Claude Code's session transcripts from such software (the .claude folder in your user profile, unless the app or CLAUDE_CONFIG_DIR points Claude Code elsewhere), or adding Claude Code to its allowed applications, then resume again.3648Windows reported an error (EBADF) when Claude Code read this session's transcript file, although the file had opened normally. This can happen when other software intercepts file reads — security, encryption or endpoint-management tools, for example. If it keeps happening for this conversation, try excluding the folder that holds Claude Code's session transcripts from such software (the .claude folder in your user profile, unless the app or CLAUDE_CONFIG_DIR points Claude Code elsewhere), or adding Claude Code to its allowed applications, then resume again.

3624```3649```

3625 3650 

3626El mensaje sigue la línea de fallo propio del comando, como `Failed to resume session <session-id>`. Un comando `claude --resume` o [`claude -p`](/docs/es/headless) sale con código 1 después de mostrarlo. Después de `/resume` dentro de una sesión, su sesión actual sigue ejecutándose.3651El mensaje aparece después de la propia línea de error del comando, como `Failed to resume session <session-id>`. Un comando `claude --resume` o [`claude -p`](/docs/es/headless) termina con el código 1 después de mostrarlo. Después de `/resume` dentro de una sesión, tu sesión actual sigue ejecutándose.

3627 3652 

3628**Qué hacer:**3653**Qué hacer:**

3629 3654 

3630* Excluya la carpeta que contiene sus transcripciones de sesión del software que escanea o intercepta lecturas de archivos, como herramientas de seguridad, cifrado o gestión de puntos finales. Las transcripciones viven bajo `%USERPROFILE%\.claude\projects` de forma predeterminada, o bajo el directorio que [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars) nombra3655* Excluye la carpeta que contiene las transcripciones de tus sesiones del software que analiza o intercepta lecturas de archivos, como herramientas de seguridad, cifrado o administración de endpoints. Las transcripciones se encuentran en `%USERPROFILE%\.claude\projects` de forma predeterminada, o en el directorio que indique [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars)

3631* Si no puede agregar una exclusión, agregue Claude Code a las aplicaciones permitidas de ese software en su lugar3656* Si no puedes agregar una exclusión, agrega Claude Code a las aplicaciones permitidas de ese software

3632* Reanude la sesión nuevamente3657* Reanuda la sesión de nuevo

3633 3658 

3634Antes de v2.1.282, el fallo vino sin explicación: `claude --resume <session-id>` terminó en `Failed to resume session <session-id>`, y una ejecución `-p` imprimió solo el texto de error del sistema, como `Failed to resume session: EBADF: bad file descriptor, read`.3659Antes de la v2.1.282, el error aparecía sin explicación: `claude --resume <session-id>` terminaba en `Failed to resume session <session-id>`, y una ejecución con `-p` imprimía solo el texto del error del sistema, como `Failed to resume session: EBADF: bad file descriptor, read`.

3635 3660 

3636<h3 id="cannot-switch-renderers-in-this-session">3661<h3 id="cannot-switch-renderers-in-this-session">

3637 No se puede cambiar renderizadores en esta sesión3662 No se pueden cambiar los renderizadores en esta sesión

3638</h3>3663</h3>

3639 3664 

3640Cuando cambia renderizadores, Claude Code reinicia su proceso. Ejecutó [`/tui`](/docs/es/fullscreen#enable-fullscreen-rendering) en una sesión que Claude Code se niega a reiniciar, por lo que no cambia y no guarda nada. Qué mensaje ve le dice la causa:3665Cuando cambias de renderizador, Claude Code reinicia su proceso. Ejecutaste [`/tui`](/docs/es/fullscreen#enable-fullscreen-rendering) en una sesión que Claude Code se niega a reiniciar, así que no cambia y no guarda nada. El mensaje que ves te indica la causa:

3641 3666 

3642* `Cannot switch renderers while work is running in the background`: tiene trabajo en segundo plano ejecutándose que un reinicio abandonaría, como un shell en segundo plano o un subagente. Espere a que el trabajo termine o deténgalo con [`/tasks`](/docs/es/commands), luego ejecute `/tui fullscreen` o `/tui default` nuevamente3667* `Cannot switch renderers while work is running in the background`: tienes trabajo en segundo plano en ejecución que un reinicio abandonaría, como un shell en segundo plano o un subagente. Espera a que el trabajo termine o detenlo con [`/tasks`](/docs/es/commands), y luego ejecuta `/tui fullscreen` o `/tui default` de nuevo

3643* `Cannot switch renderers in this session`: la sesión tiene restricciones que Claude Code no puede pasar al proceso reiniciado. Antes de v2.1.234, Claude Code reiniciaba de todas formas y la sesión relanzada se ejecutaba sin ellas3668* `Cannot switch renderers in this session`: la sesión tiene restricciones que Claude Code no puede pasar al proceso reiniciado. Antes de la v2.1.234, Claude Code reiniciaba de todos modos y la sesión relanzada se ejecutaba sin ellas

3644 3669 

3645En el mensaje de restricciones, la parte entre paréntesis nombra las restricciones que Claude Code encontró:3670En el mensaje de restricciones, la parte entre paréntesis nombra las restricciones que Claude Code encontró:

3646 3671 


3648Cannot switch renderers in this session — it has restrictions a restart can't carry over (permission rules set for this session only). Nothing was changed. Running /tui fullscreen in a session started without them switches every later session too.3673Cannot switch renderers in this session — it has restrictions a restart can't carry over (permission rules set for this session only). Nothing was changed. Running /tui fullscreen in a session started without them switches every later session too.

3649```3674```

3650 3675 

3651Cada razón que el mensaje puede mostrar entre paréntesis:3676Cada motivo que el mensaje puede mostrar entre paréntesis:

3652 3677 

3653* `launch flags: a custom system prompt, a tool allowlist, or restricted settings`: inició la sesión con una bandera que Claude Code no pasa de vuelta al proceso reiniciado. Estas banderas incluyen [`--system-prompt`](/docs/es/cli-reference#cli-flags), `--system-prompt-file`, `--append-system-prompt-file`, una lista de permitidos [`--tools`](/docs/es/cli-reference#cli-flags), [`--setting-sources`](/docs/es/cli-reference#cli-flags), y [`--permission-prompt-tool`](/docs/es/cli-reference#cli-flags)3678* `launch flags: a custom system prompt, a tool allowlist, or restricted settings`: iniciaste la sesión con un flag que Claude Code no vuelve a pasar al proceso reiniciado. Estos flags incluyen [`--system-prompt`](/docs/es/cli-reference#cli-flags), `--system-prompt-file`, `--append-system-prompt-file`, una lista de herramientas permitidas con [`--tools`](/docs/es/cli-reference#cli-flags), [`--setting-sources`](/docs/es/cli-reference#cli-flags) y [`--permission-prompt-tool`](/docs/es/cli-reference#cli-flags)

3654* `permission rules set for this session only`: una [actualización de permiso](/docs/es/hooks#permission-update-entries) de un hook o llamador SDK agregó reglas de denegación o solicitud con el destino `session`. Las reglas de permiso de alcance de sesión no desencadenan el rechazo. Un reinicio las elimina, y Claude Code solicita nuevamente en su lugar3679* `permission rules set for this session only`: una [actualización de permisos](/docs/es/hooks#permission-update-entries) de un hook o de un llamador del SDK agregó reglas deny o ask con el destino `session`. Las reglas allow con alcance de sesión no provocan el rechazo. Un reinicio las descarta, y Claude Code vuelve a pedir permiso en su lugar

3655* `ask-before-running rules with no command-line form`: una actualización de permiso agregó reglas de solicitud junto con las reglas que Claude Code pasa de vuelta como `--allowed-tools` y `--disallowed-tools`. No existe bandera para reglas de solicitud3680* `ask-before-running rules with no command-line form`: una actualización de permisos de un hook o de un llamador del SDK agregó reglas ask junto con las reglas que Claude Code vuelve a pasar como `--allowed-tools` y `--disallowed-tools`. No existe ningún flag para las reglas ask

3656* `permission rules a command line cannot carry intact` y `added directories a command line cannot carry intact`: una actualización de permiso agregó una regla o ruta de directorio a mitad de sesión. La línea de comandos del proceso reiniciado no puede llevar su texto como el mismo valor3681* `permission rules a command line cannot carry intact` y `added directories a command line cannot carry intact`: una actualización de permisos agregó una regla o una ruta de directorio a mitad de la sesión. La línea de comandos del proceso reiniciado no puede transportar su texto como el mismo valor

3657 3682 

3658**Qué hacer:**3683**Qué hacer:**

3659 3684 

3660* En una sesión iniciada sin esas restricciones, ejecute `/tui fullscreen`, o `/tui default` para cambiar de vuelta. Claude Code guarda la [configuración `tui`](/docs/es/settings-reference#tui) allí3685* En una sesión iniciada sin esas restricciones, ejecuta `/tui fullscreen`, o `/tui default` para volver atrás. Claude Code guarda ahí el [ajuste `tui`](/docs/es/settings-reference#tui)

3661 3686 

3662<h3 id="couldnt-open-claude-desktop">3687<h3 id="couldnt-open-claude-desktop">

3663 No se pudo abrir Claude Desktop3688 No se pudo abrir Claude Desktop

3664</h3>3689</h3>

3665 3690 

3666Ejecutó [`/desktop`](/docs/es/desktop#coming-from-the-cli) o su alias `/app` en una sesión, o [`claude --desktop`](/docs/es/cli-reference#cli-flags) en su shell, y el comando del sistema que Claude Code usa para abrir Claude Desktop falló. Después de `/desktop`, la sesión permanece en la terminal; `claude --desktop` imprime el mensaje sin el prefijo `Error:` y sale con estado 1.3691Ejecutaste [`/desktop`](/docs/es/desktop#coming-from-the-cli) o su alias `/app` en una sesión, o [`claude --desktop`](/docs/es/cli-reference#cli-flags) en tu shell, y el comando del sistema que Claude Code usa para abrir Claude Desktop falló. Después de `/desktop`, la sesión permanece en la terminal; `claude --desktop` imprime el mensaje sin el prefijo `Error:` y termina con el estado 1.

3667 3692 

3668El texto entre paréntesis nombra el comando que falló, con su estado de salida y la primera línea de su salida de error cuando la produjo. En macOS ese comando es `open`, como en este ejemplo; en Windows es `rundll32`:3693El texto entre paréntesis nombra el comando que falló, con su estado de salida y la primera línea de su salida de error cuando los produjo. En macOS ese comando es `open`, como en este ejemplo; en Windows es `rundll32`:

3669 3694 

3670```text theme={null}3695```text theme={null}

3671Error: Couldn't open Claude Desktop (`open` exited 1: LSOpenURLsWithRole() failed for the URL claude://resume?session=<session-id> with error -10814). Open Claude Desktop and try again.3696Error: Couldn't open Claude Desktop (`open` exited 1: LSOpenURLsWithRole() failed for the URL claude://resume?session=<session-id> with error -10814). Open Claude Desktop and try again.


3673 3698 

3674**Qué hacer:**3699**Qué hacer:**

3675 3700 

3676* Abra Claude Desktop usted mismo, luego ejecute `/desktop` o `claude --desktop` nuevamente3701* Abre Claude Desktop tú mismo y luego ejecuta `/desktop` o `claude --desktop` de nuevo

3677* Para leer la salida de error completa del comando fallido, active el registro de depuración con `/debug` y ejecute `/desktop` nuevamente, o ejecute `claude --desktop --debug-file <path>`, luego verifique el registro de depuración3702* Para leer la salida de error completa del comando que falló, activa el registro de depuración con `/debug` y ejecuta `/desktop` de nuevo, o ejecuta `claude --desktop --debug-file <path>`, y luego revisa el registro de depuración

3678 3703 

3679Antes de v2.1.285, el mensaje terminaba `Open Claude Desktop and run /desktop again.` Antes de v2.1.275, era `Failed to open Claude Desktop. Please try opening it manually.` y no decía qué falló.3704Antes de la v2.1.285, el mensaje terminaba con `Open Claude Desktop and run /desktop again.` Antes de la v2.1.275, era `Failed to open Claude Desktop. Please try opening it manually.` y no decía qué había fallado.

3680 3705 

3681<h3 id="terminal-setup-left-your-zed-keymap-unchanged">3706<h3 id="terminal-setup-left-your-zed-keymap-unchanged">

3682 /terminal-setup dejó su mapa de atajos de teclado de Zed sin cambios3707 /terminal-setup dejó tu keymap de Zed sin cambios

3683</h3>3708</h3>

3684 3709 

3685Ejecutó [`/terminal-setup`](/docs/es/terminal-config#enter-multiline-prompts) en Zed, y Claude Code no pudo completar la actualización a su `keymap.json` de Zed, por lo que lo dejó como estaba.3710Ejecutaste [`/terminal-setup`](/docs/es/terminal-config#enter-multiline-prompts) en Zed y Claude Code no pudo completar la actualización de tu `keymap.json` de Zed, así que dejó el archivo como estaba.

3686 3711 

3687Cada mensaje nombra la ruta a su mapa de atajos de teclado y termina con el bloque de atajos de teclado para agregar usted mismo:3712Cada mensaje nombra la ruta a tu keymap y termina con el bloque de atajo de teclado que debes agregar tú mismo:

3688 3713 

3689```text theme={null}3714```text theme={null}

3690Couldn't update your Zed keymap, so it was left unchanged.3715Couldn't update your Zed keymap, so it was left unchanged.


3694 3719 

3695La primera línea del mensaje nombra la causa:3720La primera línea del mensaje nombra la causa:

3696 3721 

3697* `Couldn't read your Zed keymap, so it was left unchanged.`: Claude Code no pudo leer el archivo, por ejemplo debido a permisos de archivo3722* `Couldn't read your Zed keymap, so it was left unchanged.`: Claude Code no pudo leer el archivo, por ejemplo debido a los permisos del archivo

3698* `Your Zed keymap isn't a readable list of keybindings, so it was left unchanged.`: el archivo se leyó bien pero no se analiza como una matriz de bloques de atajos de teclado, incluso con comentarios `//` y comas finales permitidas3723* `Your Zed keymap isn't a readable list of keybindings, so it was left unchanged.`: el archivo se leyó bien, pero no se analiza como un array de bloques de atajos de teclado, incluso permitiendo comentarios `//` y comas finales

3699* `Couldn't back up your Zed keymap; not modifying it.`: Claude Code no pudo copiar el archivo a una copia de seguridad `.bak` junto a él, por lo que no cambió nada3724* `Couldn't back up your Zed keymap; not modifying it.`: Claude Code no pudo copiar el archivo a una copia de seguridad `.bak` junto a él, así que no cambió nada

3700* `Couldn't update your Zed keymap, so it was left unchanged.`: el resultado fusionado no se verificó como un mapa de atajos de teclado válido que lleve el atajo de teclado, por lo que Claude Code lo descartó en lugar de escribir. Un bloque de atajos de teclado con una clave duplicada puede causar esto3725* `Couldn't update your Zed keymap, so it was left unchanged.`: el resultado combinado no se verificó como un keymap válido que contuviera el atajo, así que Claude Code lo descartó en lugar de escribirlo. Un bloque de atajos de teclado con una clave duplicada puede causar esto

3701 3726 

3702**Qué hacer:**3727**Qué hacer:**

3703 3728 

3704* Copie el bloque del mensaje en la matriz de nivel superior en su `keymap.json` en la ruta que nombra el mensaje3729* Copia el bloque del mensaje en el array de nivel superior de tu `keymap.json`, en la ruta que indica el mensaje

3705* Para `isn't a readable list of keybindings`, corrija el error de sintaxis, o haga que el valor de nivel superior del archivo sea una matriz, luego ejecute `/terminal-setup` nuevamente3730* Para `isn't a readable list of keybindings`, corrige el error de sintaxis o haz que el valor de nivel superior del archivo sea un array, y luego ejecuta `/terminal-setup` de nuevo

3706 3731 

3707Antes de v2.1.247, `/terminal-setup` no podía analizar un mapa de atajos de teclado de Zed que usara comentarios `//` o comas finales, y reemplazó el archivo completo con solo su propio atajo de teclado mientras reportaba el atajo de teclado como instalado. Para restaurar un mapa de atajos de teclado que una versión anterior reemplazó, use el archivo de copia de seguridad `.bak` descrito en [Ingrese indicadores de varias líneas](/docs/es/terminal-config#enter-multiline-prompts).3732Antes de la v2.1.247, `/terminal-setup` no podía analizar un keymap de Zed que usara comentarios `//` o comas finales, y reemplazaba el archivo completo solo con su propio atajo mientras informaba que el atajo estaba instalado. Para restaurar un keymap que una versión anterior reemplazó, usa el archivo de copia de seguridad `.bak` descrito en [Ingresar prompts de varias líneas](/docs/es/terminal-config#enter-multiline-prompts).

3708 3733 

3709<h3 id="skill-usage-reports-are-not-available-on-this-connection">3734<h3 id="skill-usage-reports-are-not-available-on-this-connection">

3710 Los reportes de uso de skills no están disponibles en esta conexión3735 Los informes de uso de skills no están disponibles en esta conexión

3711</h3>3736</h3>

3712 3737 

3713Ejecutó [`/skill-doctor`](/docs/es/skills#find-unused-skills) sobre [Remote Control](/docs/es/remote-control), desde su teléfono o navegador. Claude Code no envía el informe de uso de skills sobre Remote Control y responde con este mensaje en su lugar:3738Ejecutaste [`/skill-doctor`](/docs/es/skills#find-unused-skills) a través de [Remote Control](/docs/es/remote-control), desde tu teléfono o navegador. Claude Code no envía el informe de uso de skills a través de Remote Control y responde con este mensaje en su lugar:

3714 3739 

3715```text theme={null}3740```text theme={null}

3716Skill usage reports are not available on this connection.3741Skill usage reports are not available on this connection.


3718 3743 

3719**Qué hacer:**3744**Qué hacer:**

3720 3745 

3721* Ejecute `/skill-doctor` en la terminal en la máquina donde se ejecuta la sesión, o ejecute `claude -p "/skill-doctor"` allí3746* Ejecuta `/skill-doctor` en la terminal de la máquina donde se está ejecutando la sesión, o ejecuta `claude -p "/skill-doctor"` allí

3722 3747 

3723<h3 id="custom-output-styles-cant-be-selected-over-remote-control">3748<h3 id="custom-output-styles-cant-be-selected-over-remote-control">

3724 Los estilos de salida personalizados no se pueden seleccionar sobre Remote Control3749 Los estilos de salida personalizados no se pueden seleccionar a través de Remote Control

3725</h3>3750</h3>

3726 3751 

3727Ejecutó [`/output-style`](/docs/es/output-styles#change-your-output-style) desde la aplicación móvil o web a través de [Remote Control](/docs/es/remote-control), o el comando llegó en un mensaje retransmitido a la sesión. Porque tal turno puede no provenir del propietario de la cuenta, Claude Code enumera y selecciona solo [estilos integrados](/docs/es/output-styles#built-in-output-styles) en él, y agrega este aviso siempre que el comando enumera los estilos o no reconoce el nombre que dio. Un nombre de [estilo personalizado](/docs/es/output-styles#create-a-custom-output-style) obtiene la misma respuesta que un nombre que no existe:3752Ejecutaste [`/output-style`](/docs/es/output-styles#change-your-output-style) desde la aplicación móvil o la web a través de [Remote Control](/docs/es/remote-control), o el comando llegó en un mensaje retransmitido a la sesión. Como un turno así podría no provenir del propietario de la cuenta, Claude Code solo lista y selecciona [estilos integrados](/docs/es/output-styles#built-in-output-styles) en él, y agrega este aviso cada vez que el comando lista los estilos o no reconoce el nombre que indicaste. El nombre de un [estilo personalizado](/docs/es/output-styles#create-a-custom-output-style) recibe la misma respuesta que un nombre que no existe:

3728 3753 

3729```text theme={null}3754```text theme={null}

3730Custom output styles can't be selected over Remote Control or from a relayed message. Select one in the session itself, or pick a built-in style here.3755Custom output styles can't be selected over Remote Control or from a relayed message. Select one in the session itself, or pick a built-in style here.


3732 3757 

3733**Qué hacer:**3758**Qué hacer:**

3734 3759 

3735* Elija un estilo integrado, por ejemplo `/output-style concise`3760* Elige un estilo integrado, por ejemplo `/output-style concise`

3736* Para usar un estilo personalizado, establezca [`outputStyle`](/docs/es/settings-reference#outputstyle) en `.claude/settings.local.json` del proyecto, o ejecute `/output-style <style>` en la terminal de la sesión si tiene una3761* Para usar un estilo personalizado, establece [`outputStyle`](/docs/es/settings-reference#outputstyle) en el `.claude/settings.local.json` del proyecto, o ejecuta `/output-style <style>` en la propia terminal de la sesión, si tiene una

3737 3762 

3738<h3 id="output-styles-are-saved-to-local-settings-which-this-session-doesnt-load">3763<h3 id="output-styles-are-saved-to-local-settings-which-this-session-doesnt-load">

3739 Los estilos de salida se guardan en la configuración local que esta sesión no carga3764 Los estilos de salida se guardan en la configuración local, que esta sesión no carga

3740</h3>3765</h3>

3741 3766 

3742Intentó cambiar [estilos de salida](/docs/es/output-styles) con `/output-style <style>` o `/config outputStyle=<style>` en una sesión cuyas fuentes de configuración excluyen `local`. Los ejemplos son una sesión [Agent SDK](/docs/es/agent-sdk/typescript) cuyo [`settingSources`](/docs/es/agent-sdk/typescript#options) deja fuera `"local"` y una sesión CLI iniciada con un valor [`--setting-sources`](/docs/es/cli-reference#cli-flags) que deja fuera `local`. Ambos comandos guardan el estilo en `.claude/settings.local.json`, un archivo que tal sesión nunca vuelve a leer, por lo que Claude Code se niega en lugar de escribir una configuración que no tendría efecto:3767Intentaste cambiar de [estilo de salida](/docs/es/output-styles) con `/output-style <style>` o `/config outputStyle=<style>` en una sesión cuyas fuentes de configuración excluyen `local`. Algunos ejemplos son una sesión del [Agent SDK](/docs/es/agent-sdk/typescript) cuyo [`settingSources`](/docs/es/agent-sdk/typescript#options) omite `"local"` y una sesión de la CLI iniciada con un valor de [`--setting-sources`](/docs/es/cli-reference#cli-flags) que omite `local`. Ambos comandos guardan el estilo en `.claude/settings.local.json`, un archivo que una sesión así nunca vuelve a leer, por lo que Claude Code se niega en lugar de escribir un ajuste que no tendría ningún efecto:

3743 3768 

3744```text theme={null}3769```text theme={null}

3745Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load, so the style can't be changed here.3770Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load, so the style can't be changed here.


3747 3772 

3748**Qué hacer:**3773**Qué hacer:**

3749 3774 

3750* Agregue `local` a las fuentes de configuración de la sesión y cambie nuevamente3775* Agrega `local` a las fuentes de configuración de la sesión y cambia de nuevo

3751* Establezca la clave [`outputStyle`](/docs/es/settings-reference#outputstyle) en un archivo de configuración que la sesión sí carga, como `.claude/settings.json` en el proyecto o `~/.claude/settings.json`. En el SDK de TypeScript, establezca `outputStyle` dentro del objeto `settings` en línea en su lugar; consulte [Activar un estilo de salida](/docs/es/agent-sdk/modifying-system-prompts#activate-an-output-style)3776* Establece la clave [`outputStyle`](/docs/es/settings-reference#outputstyle) en un archivo de configuración que la sesión sí cargue, como `.claude/settings.json` en el proyecto o `~/.claude/settings.json`. En el SDK de TypeScript, establece `outputStyle` dentro del objeto `settings` en línea; consulta [Activar un estilo de salida](/docs/es/agent-sdk/modifying-system-prompts#activate-an-output-style)

3752 3777 

3753<h2 id="plugin-errors">3778<h2 id="plugin-errors">

3754 Errores de plugins3779 Errores de plugins


4476 Errores de sesión en segundo plano4501 Errores de sesión en segundo plano

4477</h2>4502</h2>

4478 4503 

4479Las [sesiones en segundo plano](/docs/es/agent-view) se ejecutan sin su propia terminal interactiva, por lo que los comandos que necesitan una se comportan de manera diferente allí. Estos mensajes aparecen en la transcripción de una sesión en segundo plano, en la terminal que se conecta a una, en la sesión o shell desde la que se envía, o, para las [entradas de protección de worktree](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) a continuación, en cualquier sesión aislada en un worktree o ejecutando un subagente aislado en worktree; cuando un mensaje es específico de una superficie, su entrada lo indica.4504Las [sesiones en segundo plano](/docs/es/agent-view) se ejecutan sin su propia terminal interactiva, por lo que los comandos que necesitan una se comportan de manera diferente allí. Estos mensajes aparecen en la transcripción de una sesión en segundo plano, en la terminal que se conecta a una, en la sesión o shell desde la que haces el envío, o, para las [entradas de protección de worktree](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) a continuación, en cualquier sesión aislada en un worktree o que ejecute un subagente aislado en worktree; cuando un mensaje es específico de una superficie, su entrada lo indica.

4480 4505 

4481<h3 id="commands-refused-in-a-background-session">4506<h3 id="commands-refused-in-a-background-session">

4482 Comandos rechazados en una sesión en segundo plano4507 Comandos rechazados en una sesión en segundo plano

4483</h3>4508</h3>

4484 4509 

4485Los comandos que abren un diálogo interactivo no pueden hacerlo mientras no hay terminal conectada a una sesión en segundo plano. `/install-github-app`, la lista de configuración `/mcp`, y las acciones de autenticación en el menú del servidor MCP responden con un mensaje. Para `/install-github-app` y la lista de configuración `/mcp`, la sesión también aparece bajo **Needs input** en [agent view](/docs/es/agent-view) para que pueda encontrarla, conectarse y ejecutar el comando nuevamente. Mientras una terminal está conectada, estos comandos funcionan normalmente.4510Los comandos que abren un diálogo interactivo no pueden hacerlo mientras no hay terminal conectada a una sesión en segundo plano. `/install-github-app`, la lista de configuración `/mcp` y las acciones de autenticación en el menú del servidor MCP responden con un mensaje. Para `/install-github-app` y la lista de configuración `/mcp`, la sesión también aparece bajo **Needs input** en [agent view](/docs/es/agent-view) para que puedas encontrarla, conectarte y ejecutar el comando nuevamente. Mientras una terminal está conectada, estos comandos funcionan normalmente.

4486 4511 

4487Antes de v2.1.216, la sesión no aparecía bajo **Needs input** después de que `/install-github-app` o la lista de configuración `/mcp` se rechazara. En v2.1.213 a v2.1.215, los comandos seguían funcionando mientras una terminal estaba conectada, y el mensaje de rechazo le indicaba que se conectara y ejecutara el comando nuevamente. De v2.1.208 a v2.1.212, Claude Code los rechazaba incluso mientras una terminal estaba conectada, con un mensaje como `Can't open MCP settings in a background session`; en esas versiones, ejecute el comando desde una sesión `claude` normal en su lugar, o actualice. Antes de v2.1.208, abrían su diálogo dentro de la sesión en segundo plano. En v2.1.208 solamente, Claude Code también rechazó el selector `/model` en una sesión en segundo plano, y `/upgrade` imprimió la URL de actualización en lugar de abrir un navegador.4512Antes de v2.1.216, la sesión no aparecía bajo **Needs input** después de que `/install-github-app` o la lista de configuración `/mcp` se rechazara. En v2.1.213 a v2.1.215, los comandos seguían funcionando mientras una terminal estaba conectada, y el mensaje de rechazo te indicaba que te conectaras y ejecutaras el comando nuevamente. De v2.1.208 a v2.1.212, Claude Code los rechazaba incluso mientras una terminal estaba conectada, con un mensaje como `Can't open MCP settings in a background session`; en esas versiones, ejecuta el comando desde una sesión `claude` normal en su lugar, o actualiza. Antes de v2.1.208, abrían su diálogo dentro de la sesión en segundo plano. Solo en v2.1.208, Claude Code también rechazaba el selector `/model` en una sesión en segundo plano, y `/upgrade` imprimía la URL de actualización en lugar de abrir un navegador.

4488 4513 

4489La redacción nombra el comando. La lista de configuración `/mcp` reporta:4514La redacción nombra el comando. La lista de configuración `/mcp` reporta:

4490 4515 


4494 4519 

4495**Qué hacer:**4520**Qué hacer:**

4496 4521 

4497* Conéctese a la sesión desde agent view y ejecute el comando nuevamente4522* Conéctate a la sesión desde agent view y ejecuta el comando nuevamente

4498* O use la forma que el mensaje nombra, como `/mcp reconnect <server>`, `/mcp enable`, o `/mcp disable`, que funcionan sin conectarse4523* O usa la forma que el mensaje nombra, como `/mcp reconnect <server>`, `/mcp enable` o `/mcp disable`, que funcionan sin conectarse

4499 4524 

4500<h3 id="write-or-command-blocked-because-the-path-cannot-be-safely-resolved">4525<h3 id="write-or-command-blocked-because-the-path-cannot-be-safely-resolved">

4501 Escritura o comando bloqueado porque la ruta no se puede resolver de forma segura4526 Escritura o comando bloqueado porque la ruta no se puede resolver de forma segura

4502</h3>4527</h3>

4503 4528 

4504Claude dirigió un archivo o directorio de trabajo a través de una ortografía que el [protector de aislamiento de worktree](/docs/es/agent-view#how-file-edits-are-isolated) no puede resolver a una ubicación verificable. El protector verifica escrituras y directorios de trabajo de comandos en [cualquier sesión aislada en un worktree](/docs/es/worktrees#how-claude-code-enforces-isolation), interactiva o en segundo plano, y en [subagentes aislados en worktree](/docs/es/worktrees#isolate-subagents-with-worktrees). Resuelve enlaces simbólicos antes de verificar que la operación no llegue al checkout compartido, y cuando la resolución falla, bloquea la operación en lugar de permitir que llegue allí. El mensaje nombra las formas de ruta que rechaza y cómo reintentar:4529Claude se refirió a un archivo o directorio de trabajo mediante una escritura de ruta que el [protector de aislamiento de worktree](/docs/es/agent-view#how-file-edits-are-isolated) no puede resolver a una única ubicación verificable. El protector verifica escrituras y directorios de trabajo de comandos en [cualquier sesión aislada en un worktree](/docs/es/worktrees#how-claude-code-enforces-isolation), interactiva o en segundo plano, y en [subagentes aislados en worktree](/docs/es/worktrees#isolate-subagents-with-worktrees). Resuelve enlaces simbólicos antes de verificar que la operación no llegue al checkout compartido, y cuando la resolución falla, bloquea la operación en lugar de permitir que llegue allí. El mensaje nombra las formas de ruta que rechaza y cómo reintentar:

4505 4530 

4506```text theme={null}4531```text theme={null}

4507This write was blocked because the path is spelled in a form that cannot be safely resolved (for example through a symlink storing a raw dot segment, a network-share or device-namespace shape, or an unreadable ancestor directory). If the file is inside the worktree /path/to/worktree, address it by its direct symlink-free path instead.4532This write was blocked because the path is spelled in a form that cannot be safely resolved (for example through a symlink storing a raw dot segment, a network-share or device-namespace shape, or an unreadable ancestor directory). If the file is inside the worktree /path/to/worktree, address it by its direct symlink-free path instead.

4508```4533```

4509 4534 

4510Un comando bloqueado reporta la misma causa para su directorio de trabajo y termina con `re-run the command from its direct symlink-free path`. Antes de v2.1.217, el protector comparaba ortografías de ruta sin resolver enlaces simbólicos, por lo que estas ortografías no se bloqueaban y una escritura enrutada a través de un enlace simbólico podría llegar al checkout compartido.4535Un comando bloqueado reporta la misma causa para su directorio de trabajo y termina con `re-run the command from its direct symlink-free path`. Antes de v2.1.217, el protector comparaba las escrituras de ruta sin resolver enlaces simbólicos, por lo que estas escrituras no se bloqueaban y una escritura enrutada a través de un enlace simbólico podía llegar al checkout compartido.

4511 4536 

4512**Qué hacer:**4537**Qué hacer:**

4513 4538 

4514* Generalmente nada: el mensaje completo va a Claude como un error de herramienta, y Claude reintenta con la ruta directa que nombra. Para una edición de archivo bloqueada, la vista de conversación muestra solo una línea corta `Error editing file`; el mensaje completo aparece en la vista de transcripción, que abre con `Ctrl+O`. Un comando bloqueado lo imprime en su salida.4539* Generalmente nada: el mensaje completo va a Claude como un error de herramienta, y Claude reintenta con la ruta directa que nombra. Para una edición de archivo bloqueada, la vista de conversación muestra solo una línea corta `Error editing file`; el mensaje completo aparece en la vista de transcripción, que abres con `Ctrl+O`. Un comando bloqueado lo imprime en su salida.

4515* Si el bloqueo se repite en el mismo archivo, la ruta probablemente se ejecuta a través de un enlace simbólico confirmado cuyo destino contiene `..`, como `docs/current -> ../README.md`; pida a Claude que edite el archivo de destino por su ruta real en lugar de a través del enlace4540* Si el bloqueo se repite en el mismo archivo, la ruta probablemente pasa por un enlace simbólico incluido en un commit cuyo destino contiene `..`, como `docs/current -> ../README.md`; pide a Claude que edite el archivo de destino por su ruta real en lugar de a través del enlace

4516 4541 

4517<h3 id="write-or-command-blocked-because-the-path-names-a-network-location">4542<h3 id="write-or-command-blocked-because-the-path-names-a-network-location">

4518 Escritura o comando bloqueado porque la ruta nombra una ubicación de red4543 Escritura o comando bloqueado porque la ruta nombra una ubicación de red

4519</h3>4544</h3>

4520 4545 

4521Claude dirigió un archivo o directorio de trabajo a través de una ruta que nombra una unidad que no está en su máquina, una compartición UNC como `\\server\share\file` o una ruta de automontaje `/net`, mientras que el checkout de la sesión está en un disco local. El mismo [protector de aislamiento de worktree](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) no puede verificar que tal ruta se mantenga fuera del checkout compartido, por lo que bloquea la operación. Aislar la sesión en un worktree no levanta el bloqueo. El mensaje nombra la forma de ruta a usar en su lugar:4546Claude se refirió a un archivo o directorio de trabajo mediante una ruta que nombra una unidad que no está en tu máquina, un recurso compartido UNC como `\\server\share\file` o una ruta de automontaje `/net`, mientras que el checkout de la sesión está en un disco local. El mismo [protector de aislamiento de worktree](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) no puede verificar que tal ruta se mantenga fuera del checkout compartido, por lo que bloquea la operación. Aislar la sesión en un worktree no levanta el bloqueo. El mensaje nombra la forma de ruta a usar en su lugar:

4522 4547 

4523```text theme={null}4548```text theme={null}

4524This write was blocked because the path is network-shaped (a UNC share or /net automount spelling) while this session's checkout is local. Isolating cannot unblock it. If the file is genuinely inside the worktree /path/to/worktree, address it by its local, plainly-spelled path instead.4549This write was blocked because the path is network-shaped (a UNC share or /net automount spelling) while this session's checkout is local. Isolating cannot unblock it. If the file is genuinely inside the worktree /path/to/worktree, address it by its local, plainly-spelled path instead.

4525```4550```

4526 4551 

4527Un comando bloqueado reporta la misma causa para su directorio de trabajo y termina con `re-run the command from its local, plainly-spelled path`. Antes de v2.1.217, el protector comparaba solo texto de ruta, por lo que dirigir un archivo dentro del checkout a través de una ruta UNC o `/net` no se bloqueaba.4552Un comando bloqueado reporta la misma causa para su directorio de trabajo y termina con `re-run the command from its local, plainly-spelled path`. Antes de v2.1.217, el protector comparaba solo el texto de la ruta, por lo que referirse a un archivo dentro del checkout mediante una ruta UNC o `/net` no se bloqueaba.

4528 4553 

4529**Qué hacer:**4554**Qué hacer:**

4530 4555 

4531* Generalmente nada: Claude reintenta con la ortografía local que el mensaje solicita4556* Generalmente nada: Claude reintenta con la escritura local que el mensaje solicita

4532 4557 

4533<h3 id="command-blocked-by-the-worktree-isolation-checks">4558<h3 id="command-blocked-by-the-worktree-isolation-checks">

4534 Comando bloqueado por las verificaciones de aislamiento de worktree4559 Comando bloqueado por las verificaciones de aislamiento de worktree


4539* El comando apunta git al checkout principal.4564* El comando apunta git al checkout principal.

4540* Claude Code no puede verificar a partir del texto del comando que cualquier git que ejecute el comando se mantenga dentro del worktree. Un comando que nunca nombra git aún puede ser rechazado por esta razón, porque expandir una indirección de variable como `${!name}` o ejecutar una sustitución de función Bash como `${ command; }` produce un valor en tiempo de ejecución que en sí mismo puede ser un comando.4565* Claude Code no puede verificar a partir del texto del comando que cualquier git que ejecute el comando se mantenga dentro del worktree. Un comando que nunca nombra git aún puede ser rechazado por esta razón, porque expandir una indirección de variable como `${!name}` o ejecutar una sustitución de función Bash como `${ command; }` produce un valor en tiempo de ejecución que en sí mismo puede ser un comando.

4541 4566 

4542El medio del mensaje nombra lo que no se pudo verificar:4567La parte central del mensaje nombra lo que no se pudo verificar:

4543 4568 

4544```text wrap theme={null}4569```text wrap theme={null}

4545This session is isolated in the worktree /path/to/worktree, but this command evaluates ${!x@P} arithmetically inside a construct too complex to verify, which can run a command hidden in a variable's value. Refusing to run it — a worktree-isolated session's git operations must target its own worktree. Split it into plain, separate commands and run them from /path/to/worktree.4570This session is isolated in the worktree /path/to/worktree, but this command evaluates ${!x@P} arithmetically inside a construct too complex to verify, which can run a command hidden in a variable's value. Refusing to run it — a worktree-isolated session's git operations must target its own worktree. Split it into plain, separate commands and run them from /path/to/worktree.


4548**Qué hacer:**4573**Qué hacer:**

4549 4574 

4550* Generalmente nada: Claude lee el mensaje y reescribe el comando de la manera que su oración final solicita4575* Generalmente nada: Claude lee el mensaje y reescribe el comando de la manera que su oración final solicita

4551* Si un comando que solicitó sigue siendo rechazado, deletree el valor marcado literalmente: reemplace la indirección o sustitución con su valor, y ejecute git como su propio comando simple desde dentro del worktree4576* Si un comando que pediste sigue siendo rechazado, escribe el valor marcado literalmente: reemplaza la indirección o sustitución con su valor, y ejecuta git como su propio comando simple desde dentro del worktree

4552* Para actuar en el checkout principal a propósito, ejecute el comando usted mismo en una terminal fuera de la sesión4577* Para actuar en el checkout principal a propósito, ejecuta el comando tú mismo en una terminal fuera de la sesión

4553 4578 

4554<h3 id="this-session-has-no-saved-transcript">4579<h3 id="this-session-has-no-saved-transcript">

4555 Esta sesión no tiene transcripción guardada4580 Esta sesión no tiene transcripción guardada

4556</h3>4581</h3>

4557 4582 

4558Se conectó a una [sesión en segundo plano](/docs/es/agent-view) detenida que fue enviada a segundo plano desde otra conversación con `←` o `/background` y se detuvo antes de que su primera respuesta terminara. Hasta que esa primera respuesta termine, la conversación aún vive solo en la sesión desde la que fue enviada a segundo plano, por lo que `claude attach` rechaza iniciar la sesión detenida en lugar de comenzar una conversación en blanco bajo el mismo ID de sesión. El mensaje termina con el comando `claude respawn` para esta sesión:4583Te conectaste a una [sesión en segundo plano](/docs/es/agent-view) detenida que fue enviada a segundo plano desde otra conversación con `←` o `/background` y se detuvo antes de que su primera respuesta terminara. Hasta que esa primera respuesta termine, la conversación aún vive solo en la sesión desde la que fue enviada a segundo plano, por lo que `claude attach` se niega a iniciar la sesión detenida en lugar de comenzar una conversación en blanco bajo el mismo ID de sesión. El mensaje termina con el comando `claude respawn` para esta sesión:

4559 4584 

4560```text theme={null}4585```text theme={null}

4561This session has no saved transcript — it was stopped before its first response finished. If it was backgrounded from another conversation, that one is still intact; `claude respawn <id>` starts this one fresh.4586This session has no saved transcript — it was stopped before its first response finished. If it was backgrounded from another conversation, that one is still intact; `claude respawn <id>` starts this one fresh.

4562```4587```

4563 4588 

4564Abrir la fila de la misma sesión en [agent view](/docs/es/agent-view) muestra `Press enter again to restart this session fresh` debajo de la lista en su lugar, y un segundo `Enter` en la fila reinicia la sesión con una conversación vacía. Antes de v2.1.212, abrir la fila mostraba el mensaje de rechazo sin forma de reiniciar desde agent view. Antes de v2.1.211, abrir la sesión detenida iniciaba silenciosamente esa conversación en blanco y podría volver a ejecutar el prompt original de la sesión.4589Abrir la fila de la misma sesión en [agent view](/docs/es/agent-view) muestra `Press enter again to restart this session fresh` debajo de la lista en su lugar, y un segundo `Enter` en la fila reinicia la sesión con una conversación vacía. Antes de v2.1.212, abrir la fila mostraba el mensaje de rechazo sin forma de reiniciar desde agent view. Antes de v2.1.211, abrir la sesión detenida iniciaba silenciosamente esa conversación en blanco y podía volver a ejecutar el prompt original de la sesión.

4565 4590 

4566**Qué hacer:**4591**Qué hacer:**

4567 4592 

4568* La conversación que envió a segundo plano está intacta: reanúdela con [`claude --resume`](/docs/es/sessions) o continúe trabajando en ella4593* La conversación desde la que enviaste a segundo plano está intacta: reanúdala con [`claude --resume`](/docs/es/sessions) o sigue trabajando en ella

4569* Para iniciar la sesión detenida de todas formas, ejecute `claude respawn <id>` con el ID del mensaje, o presione `Enter` dos veces en su fila en agent view4594* Para iniciar la sesión detenida desde cero de todas formas, ejecuta `claude respawn <id>` con el ID del mensaje, o presiona `Enter` dos veces en su fila en agent view

4570* Si la sesión terminó una respuesta y aún ve este rechazo en una versión anterior a v2.1.214, una carpeta ilegible en `~/.claude/projects` podría hacer que el escaneo de transcripción pierda la conversación guardada; actualice a v2.1.214 o posterior, que tolera carpetas ilegibles durante el escaneo4595* Si la sesión sí terminó una respuesta y aún ves este rechazo en una versión anterior a v2.1.214, una carpeta ilegible en `~/.claude/projects` podía hacer que el escaneo de transcripciones no encontrara la conversación guardada; actualiza a v2.1.214 o posterior, que tolera carpetas ilegibles durante el escaneo

4571 4596 

4572<h3 id="this-session-is-running-in-another-terminal">4597<h3 id="this-session-is-running-in-another-terminal">

4573 Esta sesión se está ejecutando en otra terminal4598 Esta sesión se está ejecutando en otra terminal

4574</h3>4599</h3>

4575 4600 

4576Abrió la fila de una sesión detenida en [agent view](/docs/es/agent-view), y su conversación guardada ya está abierta en otro proceso Claude Code activo en esta máquina, por lo que Claude Code rechaza iniciar un segundo proceso que escribiría en la misma transcripción. Qué mensaje ve depende de [qué mantiene la conversación](/docs/es/agent-view#opening-a-session-says-the-conversation-is-already-open):4601Abriste la fila de una sesión detenida en [agent view](/docs/es/agent-view), y su conversación guardada ya está abierta en otro proceso activo de Claude Code en esta máquina, por lo que Claude Code se niega a iniciar un segundo proceso que escribiría en la misma transcripción. El mensaje que ves depende de [qué mantiene la conversación](/docs/es/agent-view#opening-a-session-says-the-conversation-is-already-open):

4577 4602 

4578```text theme={null}4603```text theme={null}

4579Can't open — this session is running in another terminal4604Can't open — this session is running in another terminal

4580This conversation is already open in another running Claude session — use that one, or close it and try again4605This conversation is already open in another running Claude session — use that one, or close it and try again

4581```4606```

4582 4607 

4583* **`running in another terminal`**: una terminal mantiene la conversación, por ejemplo una donde la reanudó con `claude --resume` o `/resume`. La fila también muestra `Open in a terminal`.4608* **`running in another terminal`**: una terminal mantiene la conversación, por ejemplo una donde la reanudaste con `claude --resume` o `/resume`. La fila también muestra `Open in a terminal`.

4584* **`already open in another running Claude session`**: otro proceso Claude Code no interactivo la mantiene, por ejemplo un proceso de [sesión en segundo plano](/docs/es/agent-view#the-supervisor-process) para la misma conversación que aún no ha salido.4609* **`already open in another running Claude session`**: otro proceso no interactivo de Claude Code la mantiene, por ejemplo un proceso de [sesión en segundo plano](/docs/es/agent-view#the-supervisor-process) para la misma conversación que aún no ha salido.

4585 4610 

4586Claude Code guarda una respuesta que escribió al abrir la fila y la envía como el siguiente prompt de la sesión cuando la sesión se inicia nuevamente.4611Claude Code guarda una respuesta que escribiste al abrir la fila y la envía como el siguiente prompt de la sesión la próxima vez que la sesión se inicie.

4587 4612 

4588**Qué hacer:**4613**Qué hacer:**

4589 4614 

4590* Continúe la conversación en el proceso que la tiene abierta, o salga de ese proceso y abra la fila nuevamente4615* Continúa la conversación en el proceso que la tiene abierta, o sal de ese proceso y abre la fila nuevamente

4591 4616 

4592Antes de v2.1.248, solo existía el rechazo `already open in another running Claude session`: una conversación reanudada en una terminal no contaba como abierta, y abrir la fila iniciaba un segundo proceso Claude Code escribiendo en la misma conversación.4617Antes de v2.1.248, solo existía el rechazo `already open in another running Claude session`: una conversación reanudada en una terminal no contaba como abierta, y abrir la fila iniciaba un segundo proceso de Claude Code que escribía en la misma conversación.

4593 4618 

4594<h3 id="this-sessions-saved-conversation-is-no-longer-on-disk">4619<h3 id="this-sessions-saved-conversation-is-no-longer-on-disk">

4595 La conversación guardada de esta sesión ya no está en el disco4620 La conversación guardada de esta sesión ya no está en el disco

4596</h3>4621</h3>

4597 4622 

4598Abrió una [sesión en segundo plano](/docs/es/agent-view) que terminó mientras el servicio en segundo plano estaba apagado, y [la limpieza de transcripción](/docs/es/settings-reference#cleanupperioddays) ha eliminado desde entonces su conversación guardada, por ejemplo después de que la máquina estuvo apagada durante semanas. Abrir tal fila normalmente [reanuda su conversación guardada](/docs/es/agent-view#sessions-show-as-failed-after-shutdown). Sin nada que reanudar, Claude Code rechaza en lugar de volver a ejecutar el prompt original de la sesión sin preguntar:4623Abriste una [sesión en segundo plano](/docs/es/agent-view) que terminó mientras el servicio en segundo plano estaba apagado, y [la limpieza de transcripciones](/docs/es/settings-reference#cleanupperioddays) ha eliminado desde entonces su conversación guardada, por ejemplo después de que la máquina estuvo apagada durante semanas. Abrir una fila así normalmente [reanuda su conversación guardada](/docs/es/agent-view#sessions-show-as-failed-after-shutdown). Sin nada que reanudar, Claude Code se niega en lugar de volver a ejecutar el prompt original de la sesión sin preguntar:

4599 4624 

4600```text theme={null}4625```text theme={null}

4601This session's saved conversation is no longer on disk (it ended while the background service was off, and old transcripts are cleaned up), so there is nothing to resume. `claude rm 7c5dcf5d` deletes the row; `claude respawn 7c5dcf5d` runs its original prompt again instead.4626This session's saved conversation is no longer on disk (it ended while the background service was off, and old transcripts are cleaned up), so there is nothing to resume. `claude rm 7c5dcf5d` deletes the row; `claude respawn 7c5dcf5d` runs its original prompt again instead.


4605 4630 

4606**Qué hacer:**4631**Qué hacer:**

4607 4632 

4608* Ejecute `claude rm <id>` para eliminar la fila. Cuando se aplica uno de los [casos mantenidos](/docs/es/agent-view#what-deleting-a-session-removes), `claude rm` mantiene la fila y el worktree en su lugar y nombra la razón4633* Ejecuta `claude rm <id>` para eliminar la fila. Cuando se aplica uno de los [casos conservados](/docs/es/agent-view#what-deleting-a-session-removes), `claude rm` conserva la fila y el worktree en su lugar e indica la razón

4609* Para ejecutar el prompt original de la sesión nuevamente como una conversación nueva, ejecute `claude respawn <id>`4634* Para ejecutar el prompt original de la sesión nuevamente como una conversación nueva, ejecuta `claude respawn <id>`

4610 4635 

4611Antes de v2.1.248, abrir tal fila volvía a ejecutar el prompt original de la sesión en lugar de rechazar, trayendo una tarea de hace semanas al primer plano.4636Antes de v2.1.248, abrir una fila así volvía a ejecutar el prompt original de la sesión en lugar de rechazarlo, trayendo de vuelta al primer plano una tarea de hace semanas.

4612 4637 

4613<h3 id="worktree-has-commits-that-are-not-pushed-anywhere">4638<h3 id="worktree-has-commits-that-are-not-pushed-anywhere">

4614 Worktree tiene commits que no se han enviado a ningún lugar4639 El worktree tiene commits que no se han enviado a ningún lugar

4615</h3>4640</h3>

4616 4641 

4617Intentó eliminar una [sesión en segundo plano](/docs/es/agent-view#what-deleting-a-session-removes) cuyo worktree contiene commits que Claude Code no puede confirmar que se guardan en otro lugar. Claude Code mantiene el worktree y la fila de sesión en lugar de destruir los commits sin verlos. `claude rm` nombra la rama y los commits no enviados, y dice cómo proceder:4642Intentaste eliminar una [sesión en segundo plano](/docs/es/agent-view#what-deleting-a-session-removes) cuyo worktree contiene commits que Claude Code no puede confirmar que estén guardados en otro lugar. Claude Code conserva el worktree y la fila de la sesión en lugar de destruir los commits sin que los veas. `claude rm` nombra la rama y los commits no enviados, e indica cómo proceder:

4618 4643 

4619```text theme={null}4644```text theme={null}

4620kept 7c5dcf5d — its worktree is still at "/home/you/project/.claude/worktrees/fix-login"4645kept 7c5dcf5d — its worktree is still at “/home/you/project/.claude/worktrees/fix-login”

4621 2 unpushed commits on "claude/fix-login": a1b2c3d "Fix login flow" and 1 more. They exist on no remote, so deleting the worktree would lose them.4646 2 unpushed commits on “claude/fix-login”: a1b2c3d “Fix login flow” and 1 more. They exist on no remote, so deleting the worktree would lose them.

4622 push them and run 'claude rm 7c5dcf5d' again, or discard the worktree and its commits: claude rm 7c5dcf5d --discard-unpushed a1b2c3d000000000000000000000000000000000@0123456789abcdef0123456789abcdef4647 push them and run 'claude rm 7c5dcf5d' again, or discard the worktree and its commits: claude rm 7c5dcf5d --discard-unpushed a1b2c3d000000000000000000000000000000000@0123456789abcdef0123456789abcdef

4623```4648```

4624 4649 

4625Cuando Claude Code no puede resumir los commits, la línea de detalle lee `The worktree has unpushed commits` en su lugar. En [agent view](/docs/es/agent-view), la fila de la sesión muestra `not deleted` con la misma razón.4650Cuando Claude Code no puede resumir los commits, la línea de detalle dice `The worktree has unpushed commits` en su lugar. En [agent view](/docs/es/agent-view), la fila de la sesión muestra `not deleted` con la misma razón.

4626 4651 

4627Los commits en un remoto no bloquean la eliminación. Tampoco los commits en la copia local de la rama predeterminada de su remoto `origin`, siempre que esa rama esté desprotegida en su checkout principal, el directorio del repositorio en sí en lugar de un worktree.4652Los commits en un remoto no bloquean la eliminación. Tampoco los commits en la copia local de la rama predeterminada de tu remoto `origin`, siempre que esa rama esté activa en tu checkout principal, es decir, el propio directorio del repositorio en lugar de un worktree.

4628 4653 

4629**Qué hacer:**4654**Qué hacer:**

4630 4655 

4631* Para mantener los commits, envíe la rama del worktree, o fusionela en la rama predeterminada desprotegida en su checkout principal, luego elimine la sesión nuevamente4656* 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

4632* Para descartar los commits, ejecute el comando `claude rm <id> --discard-unpushed` que el mensaje imprimió, o presione `Ctrl+X` dos veces en la fila de la sesión en agent view nuevamente. Esto elimina la sesión y el worktree junto con su rama, los commits no enviados, y cualquier cambio no confirmado. Si el worktree ha ganado un commit desde el rechazo, Claude Code lo mantiene nuevamente y muestra el estado actualizado4657* 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 actualizado

4633* Cuando el mensaje dice que el worktree también está registrado por otra sesión terminada, eliminar nuevamente no lo descarta: envíe los commits, luego elimine la sesión nuevamente4658* 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

4634 4659 

4635Antes de v2.1.268, `claude rm` ponía el resumen de commits en la línea `kept` en sí. Cuando `claude rm` no podía resumir los commits, la línea `kept` leía `worktree has commits that are not pushed anywhere` en lugar del resumen.4660Antes 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.

4636 4661 

4637Antes de v2.1.260, el mensaje no nombraba la rama o los commits, y eliminar nuevamente se rechazaba de la misma manera: eliminar la sesión sin enviar significaba eliminar el worktree usted mismo con `git worktree remove --force <path>`, luego ejecutar `claude rm <id>` nuevamente.4662Antes 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.

4638 4663 

4639Antes de v2.1.248, la rama predeterminada desprotegida en su checkout principal no contaba: una rama que ya había fusionado allí aún activaba este rechazo hasta que sus commits llegaran a un remoto.4664Antes 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.

4640 4665 

4641<h3 id="terminal-host-process-died">4666<h3 id="terminal-host-process-died">

4642 El proceso host de la terminal murió4667 El proceso host de la terminal murió

4643</h3>4668</h3>

4644 4669 

4645Cada terminal de [sesión en segundo plano](/docs/es/agent-view) se ejecuta en un proceso host bajo el servicio en segundo plano, y ese proceso murió mientras el servicio aún mantenía su conexión, por lo que no se pudo acceder a la sesión.4670La terminal de cada [sesión en segundo plano](/docs/es/agent-view) se ejecuta en un proceso host bajo el servicio en segundo plano, y ese proceso murió mientras el servicio aún mantenía su conexión, por lo que no se pudo acceder a la sesión.

4646 4671 

4647En Linux y WSL, el servicio en segundo plano verifica cada proceso host cada pocos segundos, marca la sesión como fallida cuando el proceso ha salido pero su conexión al servicio nunca se cerró, y muestra la razón en su fila en [agent view](/docs/es/agent-view#read-session-state):4672En Linux y WSL, el servicio en segundo plano verifica cada proceso host cada pocos segundos, marca la sesión como fallida cuando el proceso ha salido pero su conexión con el servicio nunca se cerró, y muestra la razón en su fila en [agent view](/docs/es/agent-view#read-session-state):

4648 4673 

4649```text theme={null}4674```text theme={null}

4650terminal host process died — press Enter to restart4675terminal host process died — press Enter to restart

4651```4676```

4652 4677 

4653Desde el shell, `claude attach <id>` reinicia una sesión ya marcada como fallida por un host muerto, y de lo contrario imprime la causa y sale:4678Desde el shell, `claude attach <id>` reinicia una sesión ya marcada como fallida por un host muerto, y en caso contrario imprime la causa y sale:

4654 4679 

4655```text theme={null}4680```text theme={null}

4656Couldn't attach to <id> — This session's terminal host process died (the conversation is saved) — run `claude attach <id>` again to restart it on a fresh host.4681Couldn't attach to <id> — This session's terminal host process died (the conversation is saved) — run `claude attach <id>` again to restart it on a fresh host.

4657```4682```

4658 4683 

4659La conversación se guarda de cualquier forma.4684La conversación se guarda en cualquier caso.

4660 4685 

4661Una fila que ejecuta un [comando shell](/docs/es/agent-view#run-a-shell-command) en su lugar muestra `terminal host process died — its output is gone; the command was not run again`, y `claude attach` imprime `This command's terminal host process died — its output is gone and the command was not run again`. Claude Code nunca vuelve a ejecutar el comando para usted.4686Una fila que ejecuta un [comando de shell](/docs/es/agent-view#run-a-shell-command) muestra en cambio `terminal host process died — its output is gone; the command was not run again`, y `claude attach` imprime `This command's terminal host process died — its output is gone and the command was not run again`. Claude Code nunca vuelve a ejecutar el comando por ti.

4662 4687 

4663**Qué hacer:**4688**Qué hacer:**

4664 4689 

4665* En agent view, presione `Enter` en la fila fallida; la sesión se reinicia en un nuevo proceso host y la conversación se reanuda4690* En agent view, presiona `Enter` en la fila fallida; la sesión se reinicia en un nuevo proceso host y la conversación se reanuda

4666* Desde el shell, ejecute `claude attach <id>` nuevamente. Claude Code imprime `Session <id>'s terminal host died — restarting it on a fresh one…` y reabre la sesión4691* Desde el shell, ejecuta `claude attach <id>` nuevamente. Claude Code imprime `Session <id>'s terminal host died — restarting it on a fresh one…` y vuelve a abrir la sesión

4667* No puede reiniciar una fila de comando shell de esta manera; envíe el comando nuevamente para volver a ejecutarlo4692* No puedes reiniciar una fila de comando de shell de esta manera; envía el comando nuevamente para volver a ejecutarlo

4668 4693 

4669Antes de v2.1.247, un proceso host muerto podría pasar cada verificación de vivacidad que ejecutaba el servicio en segundo plano, por lo que abrir la sesión mostraba `opening… · esc to cancel` indefinidamente y `claude attach <id>` esperaba sin reportar un error.4694Antes de v2.1.247, un proceso host muerto podía pasar todas las verificaciones de actividad que ejecutaba el servicio en segundo plano, por lo que abrir la sesión mostraba `opening… · esc to cancel` indefinidamente y `claude attach <id>` esperaba sin reportar un error.

4670 4695 

4671<h3 id="session-isnt-responding">4696<h3 id="session-isnt-responding">

4672 La sesión no responde4697 La sesión no responde

4673</h3>4698</h3>

4674 4699 

4675Abrió una [sesión en segundo plano](/docs/es/agent-view) y el servicio en segundo plano aceptó la apertura, pero no llegó salida durante aproximadamente diez segundos, por lo que Claude Code concluye que el proceso que retransmite la terminal de la sesión no puede entregar salida, y termina el intento en lugar de esperar.4700Abriste una [sesión en segundo plano](/docs/es/agent-view) y el servicio en segundo plano aceptó la apertura, pero no llegó ninguna salida durante unos diez segundos, por lo que Claude Code concluye que el proceso que retransmite la terminal de la sesión no puede entregar salida, y termina el intento en lugar de seguir esperando.

4676 4701 

4677En agent view, Claude Code ofrece un reinicio en el pie de página:4702En agent view, Claude Code ofrece un reinicio en el pie de página:

4678 4703 


4686Couldn't attach to <id> — Session isn't responding — `claude stop <id>`, then `claude attach <id>` restarts it (the conversation is saved).4711Couldn't attach to <id> — Session isn't responding — `claude stop <id>`, then `claude attach <id>` restarts it (the conversation is saved).

4687```4712```

4688 4713 

4689Claude Code nunca reinicia una fila que ejecuta un [comando shell](/docs/es/agent-view#run-a-shell-command) para usted, porque un reinicio volvería a ejecutar el comando.4714Claude Code nunca reinicia por ti una fila que ejecuta un [comando de shell](/docs/es/agent-view#run-a-shell-command), porque un reinicio volvería a ejecutar el comando.

4690 4715 

4691**Qué hacer:**4716**Qué hacer:**

4692 4717 

4693* En agent view, presione `Enter` en la misma fila nuevamente. Claude Code detiene el proceso que no responde y reinicia la sesión, y la conversación se reanuda. Nada se detiene sin ese segundo presión4718* En agent view, presiona `Enter` nuevamente en la misma fila. Claude Code detiene el proceso que no responde y reinicia la sesión, y la conversación se reanuda. No se detiene nada sin esa segunda pulsación

4694* Desde el shell, ejecute `claude stop <id>`, luego `claude attach <id>`4719* Desde el shell, ejecuta `claude stop <id>` y luego `claude attach <id>`

4695* Para una fila de comando shell, presione `Ctrl+X` en agent view o ejecute `claude stop <id>` para detenerla; envíe el comando nuevamente para volver a ejecutarlo4720* Para una fila de comando de shell, presiona `Ctrl+X` en agent view o ejecuta `claude stop <id>` para detenerla; envía el comando nuevamente para volver a ejecutarlo

4696 4721 

4697<h3 id="session-was-stopped-while-the-respawn-was-in-flight">4722<h3 id="session-was-stopped-while-the-respawn-was-in-flight">

4698 La sesión se detuvo mientras el respawn estaba en vuelo4723 La sesión se detuvo mientras el respawn estaba en curso

4699</h3>4724</h3>

4700 4725 

4701Abrió una [sesión en segundo plano](/docs/es/agent-view) cuyo proceso no se estaba ejecutando, y mientras Claude Code la estaba reiniciando, otro proceso Claude Code la detuvo, por ejemplo `claude stop` en otra terminal. Claude Code mantiene la sesión detenida:4726Abriste una [sesión en segundo plano](/docs/es/agent-view) cuyo proceso no se estaba ejecutando, y mientras Claude Code la reiniciaba, otro proceso de Claude Code la detuvo, por ejemplo `claude stop` en otra terminal. Claude Code mantiene la sesión detenida:

4702 4727 

4703```text theme={null}4728```text theme={null}

4704Session <id> was stopped while the respawn was in flight4729Session <id> was stopped while the respawn was in flight

4705```4730```

4706 4731 

4707Abrir una sesión que acaba de enviar, mientras su proceso aún se está iniciando, espera al proceso en su lugar. Antes de v2.1.246, abrirla en ese momento podría detenerla y mostrar este mensaje.4732Abrir una sesión que acabas de enviar, mientras su proceso aún se está iniciando, espera al proceso en su lugar. Antes de v2.1.246, abrirla en ese momento podía detenerla y mostrar este mensaje.

4708 4733 

4709**Qué hacer:**4734**Qué hacer:**

4710 4735 

4711* Si no detuvo la sesión, abra su fila nuevamente en agent view o ejecute `claude respawn <id>` para reiniciarla4736* Si no detuviste la sesión, abre su fila nuevamente en agent view o ejecuta `claude respawn <id>` para reiniciarla

4712* Si la detuvo usted mismo, no queda nada por hacer: la sesión permanece detenida4737* Si la detuviste tú mismo, no queda nada por hacer: la sesión permanece detenida

4713 4738 

4714<h3 id="session-agent-no-longer-available">4739<h3 id="session-agent-no-longer-available">

4715 Agente de sesión ya no disponible4740 El agente de la sesión ya no está disponible

4716</h3>4741</h3>

4717 4742 

4718Reanudó una sesión que estaba ejecutando un [agente personalizado](/docs/es/sub-agents#invoke-subagents-explicitly), iniciado con `--agent` o la configuración `agent`, y Claude Code no encontró un agente con ese nombre. Busca primero en el directorio original de la sesión, cuando ha [confiado en ese espacio de trabajo](/docs/es/permissions#project-allow-rules-and-workspace-trust), luego en el directorio desde el que reanuda. La sesión aún se reanuda, pero con las herramientas predeterminadas, por lo que las restricciones de herramientas del agente ya no se aplican:4743Reanudaste una sesión que estaba ejecutando un [agente personalizado](/docs/es/sub-agents#invoke-subagents-explicitly), iniciado con `--agent` o el ajuste `agent`, y Claude Code no encontró un agente con ese nombre. Busca primero en el directorio original de la sesión, cuando has [confiado en ese espacio de trabajo](/docs/es/permissions#project-allow-rules-and-workspace-trust), y luego en el directorio desde el que reanudas. La sesión se reanuda de todos modos, pero con las herramientas predeterminadas, por lo que las restricciones de herramientas del agente ya no se aplican:

4719 4744 

4720```text theme={null}4745```text theme={null}

4721This session was running agent 'code-reviewer', which is no longer available (no agent by that name in /home/you/project). Continuing with the default tools and system prompt — the agent's tool restrictions no longer apply. To restore it, re-create the agent, or resume with an explicit --agent <name>.4746This session was running agent 'code-reviewer', which is no longer available (no agent by that name in /home/you/project). Continuing with the default tools and system prompt — the agent's tool restrictions no longer apply. To restore it, re-create the agent, or resume with an explicit --agent <name>.

4722```4747```

4723 4748 

4724La advertencia nombra solo los directorios que Claude Code buscó, y aparece en la conversación reanudada ya sea que despierte una [sesión en segundo plano](/docs/es/agent-view), ejecute `/resume` o `claude --resume`, o reanude en [modo no interactivo](/docs/es/headless), donde también va a stderr. Las sesiones que usan `--input-format stream-json` no la muestran, porque el Agent SDK proporciona agentes después del inicio.4749La advertencia nombra solo los directorios en los que Claude Code buscó, y aparece en la conversación reanudada ya sea que despiertes una [sesión en segundo plano](/docs/es/agent-view), ejecutes `/resume` o `claude --resume`, o reanudes en [modo no interactivo](/docs/es/headless), donde también va a stderr. Las sesiones que usan `--input-format stream-json` no la muestran, porque el Agent SDK proporciona los agentes después del inicio.

4725 4750 

4726Claude Code no guarda la alternativa en la sesión, por lo que la advertencia se repite en cada reanudación hasta que actúe. El agente `claude` integrado no activa la advertencia, ya que volver a la herramienta predeterminada no cambia nada para él. Antes de v2.1.216, Claude Code continuaba silenciosamente como el agente predeterminado, y la búsqueda cubría solo el directorio desde el que reanudaba, por lo que un agente con alcance de proyecto se perdía en cualquier reanudación desde otro directorio.4751Claude Code no guarda la alternativa en la sesión, por lo que la advertencia se repite en cada reanudación hasta que actúes. El agente integrado `claude` no activa la advertencia, ya que recurrir al conjunto de herramientas predeterminado no cambia nada para él. Antes de v2.1.216, Claude Code continuaba silenciosamente como el agente predeterminado, y la búsqueda cubría solo el directorio desde el que reanudabas, por lo que un agente con alcance de proyecto se perdía en cualquier reanudación desde otro directorio.

4727 4752 

4728**Qué hacer:**4753**Qué hacer:**

4729 4754 

4730* Vuelva a crear el archivo de agente en `.claude/agents/<name>.md` en el proyecto de la sesión, o en `~/.claude/agents/<name>.md` para un agente personal, luego reanude nuevamente4755* Vuelve a crear el archivo del agente en `.claude/agents/<name>.md` en el proyecto de la sesión, o en `~/.claude/agents/<name>.md` para un agente personal, y luego reanuda nuevamente

4731* O reanude con `--agent <name>` nombrando un agente que sí existe, para ejecutar la sesión como ese agente en su lugar4756* O reanuda con `--agent <name>` nombrando un agente que sí exista, para ejecutar la sesión como ese agente en su lugar

4732* Si el agente tiene alcance de proyecto y no ha confiado en el directorio original de la sesión, ejecute Claude Code allí una vez, acepte el diálogo de confianza, luego reanude nuevamente4757* Si el agente tiene alcance de proyecto y no has confiado en el directorio original de la sesión, ejecuta Claude Code allí una vez, acepta el diálogo de confianza y luego reanuda nuevamente

4733 4758 

4734<h3 id="claude_code_process_wrapper-launcher-errors">4759<h3 id="claude_code_process_wrapper-launcher-errors">

4735 Errores del lanzador CLAUDE\_CODE\_PROCESS\_WRAPPER4760 Errores del lanzador CLAUDE\_CODE\_PROCESS\_WRAPPER

4736</h3>4761</h3>

4737 4762 

4738[`CLAUDE_CODE_PROCESS_WRAPPER`](/docs/es/corporate-launcher) está configurado, y su valor no se puede usar, por lo que Claude Code rechaza iniciar el proceso afectado en lugar de ejecutarlo sin el lanzador. Los problemas de configuración se reportan con un mensaje que comienza con el nombre de la variable y establece la razón, por ejemplo:4763[`CLAUDE_CODE_PROCESS_WRAPPER`](/docs/es/corporate-launcher) está configurado y su valor no se puede usar, por lo que Claude Code se niega a iniciar el proceso afectado en lugar de ejecutarlo sin el lanzador. Los problemas de configuración se reportan con un mensaje que comienza con el nombre de la variable e indica la razón, por ejemplo:

4739 4764 

4740```text theme={null}4765```text theme={null}

4741CLAUDE_CODE_PROCESS_WRAPPER: launcher `/opt/corp/launcher` is not an executable regular file4766CLAUDE_CODE_PROCESS_WRAPPER: launcher `/opt/corp/launcher` is not an executable regular file

4742```4767```

4743 4768 

4744Un lanzador que se inicia pero sale sin reemplazarse a sí mismo con Claude Code falla la sesión que estaba iniciando, y la fila de la sesión en agent view reporta que el lanzador `must exec, not daemonize`, seguido de cualquier cosa que el lanzador imprimió. Una sesión que no puede iniciarse o alcanzar el servicio en segundo plano debido al lanzador reporta el problema del lanzador como la razón dentro de `Couldn't reach the background service (...)`.4769Un lanzador que se inicia pero sale sin reemplazarse a sí mismo con Claude Code hace fallar la sesión que estaba iniciando, y la fila de la sesión en agent view reporta que el lanzador `must exec, not daemonize`, seguido de lo que el lanzador haya impreso. Una sesión que no puede iniciarse o comunicarse con el servicio en segundo plano debido al lanzador reporta el problema del lanzador como la razón dentro de `Couldn't reach the background service (...)`.

4745 4770 

4746**Qué hacer:**4771**Qué hacer:**

4747 4772 

4748* Configure la variable a la ruta absoluta de un ejecutable que termine llamando a `exec "$@"`. Vea [el contrato del lanzador](/docs/es/corporate-launcher#the-launcher-contract) para el contrato completo4773* Configura la variable con la ruta absoluta de un ejecutable que termine llamando a `exec "$@"`. Consulta [el contrato del lanzador](/docs/es/corporate-launcher#the-launcher-contract) para ver el contrato completo

4749* Verifique `/status`, que muestra el comando de lanzamiento resuelto en su entrada Self-exec y advierte cuando el servicio en segundo plano en ejecución no coincide con él, o ejecute `claude daemon status` desde un shell4774* Revisa `/status`, que muestra el comando de lanzamiento resuelto en su entrada Self-exec y advierte cuando el servicio en segundo plano en ejecución no coincide con él, o ejecuta `claude daemon status` desde un shell

4750* Después de corregir el valor en el bloque `env` de [configuración](/docs/es/corporate-launcher#set-up-the-launcher), reinicie el servicio en segundo plano con `claude daemon stop --any` para que el siguiente envío inicie uno envuelto4775* Después de corregir el valor en el bloque `env` de la [configuración](/docs/es/corporate-launcher#set-up-the-launcher), reinicia el servicio en segundo plano con `claude daemon stop --any` para que el siguiente envío inicie uno envuelto por el lanzador

4751 4776 

4752<h3 id="eunknown-when-starting-a-background-session">4777<h3 id="eunknown-when-starting-a-background-session">

4753 EUNKNOWN al iniciar una sesión en segundo plano4778 EUNKNOWN al iniciar una sesión en segundo plano

4754</h3>4779</h3>

4755 4780 

4756Windows rechazó iniciar un programa con un código de error que no tiene nombre estándar, por lo que el fallo aparece como `EUNKNOWN`. El disparador habitual es una política de restricción de software, como Group Policy o AppLocker, bloqueando el programa que se está iniciando. El error aparece cuando inicia una [sesión en segundo plano](/docs/es/agent-view) con `/background` o `claude --bg`:4781Windows se negó a iniciar un programa con un código de error que no tiene nombre estándar, por lo que el fallo aparece como `EUNKNOWN`. La causa habitual es una política de restricción de software, como Group Policy o AppLocker, que bloquea el programa que se está iniciando. El error aparece cuando inicias una [sesión en segundo plano](/docs/es/agent-view) con `/background` o `claude --bg`:

4757 4782 

4758```text theme={null}4783```text theme={null}

4759Couldn't reach the background service (spawn background service: EUNKNOWN: unknown error, uv_spawn) — run 'claude daemon status'4784Couldn't reach the background service (spawn background service: EUNKNOWN: unknown error, uv_spawn) — run 'claude daemon status'


4761 4786 

4762En algunas cuentas el mensaje dice `daemon` en lugar de `background service`.4787En algunas cuentas el mensaje dice `daemon` en lugar de `background service`.

4763 4788 

4764En una instalación npm, un `EUNKNOWN` que aparece mientras `npm install -g @anthropic-ai/claude-code` está reemplazando el binario tiene la misma causa que [`EACCES` durante una reinstalación](#eacces-when-starting-a-background-session) y se borra cuando reintenta después de que la instalación termina.4789En una instalación con npm, un `EUNKNOWN` que aparece mientras `npm install -g @anthropic-ai/claude-code` está reemplazando el binario tiene la misma causa que [`EACCES` durante una reinstalación](#eacces-when-starting-a-background-session) y desaparece cuando reintentas después de que la instalación termina.

4765 4790 

4766Claude Code inicia el servicio en segundo plano a través de PowerShell para que el servicio sobreviva al cierre de la terminal, usando PowerShell 7 cuando está instalado y Windows PowerShell 5.1 de lo contrario. Cuando ningún PowerShell puede ejecutarse, Claude Code inicia el servicio directamente en su lugar, por lo que una política que bloquea solo PowerShell no causa este error.4791Claude Code inicia el servicio en segundo plano a través de PowerShell para que el servicio sobreviva al cierre de la terminal, usando PowerShell 7 cuando está instalado y Windows PowerShell 5.1 en caso contrario. Cuando ninguno de los dos PowerShell puede ejecutarse, Claude Code inicia el servicio directamente, por lo que una política que bloquea solo PowerShell no causa este error.

4767 4792 

4768Antes de v2.1.212, Claude Code usaba solo Windows PowerShell 5.1 para iniciar el servicio, por lo que cualquier máquina donde Group Policy bloqueaba PowerShell 5.1 fallaba con `Couldn't start the session — EUNKNOWN: unknown error, uv_spawn`, incluso con PowerShell 7 instalado.4793Antes de v2.1.212, Claude Code usaba solo Windows PowerShell 5.1 para iniciar el servicio, por lo que cualquier máquina donde Group Policy bloqueaba PowerShell 5.1 fallaba con `Couldn't start the session — EUNKNOWN: unknown error, uv_spawn`, incluso con PowerShell 7 instalado.

4769 4794 

4770**Qué hacer:**4795**Qué hacer:**

4771 4796 

4772* Si el mensaje lee `Couldn't start the session`, actualice a v2.1.212 o posterior. En versiones anteriores también puede ejecutar `claude daemon run` en una terminal separada primero, luego iniciar la sesión en segundo plano nuevamente. Ese comando ejecuta el servicio en segundo plano en el primer plano de la terminal, por lo que el servicio dura solo mientras esa terminal permanece abierta.4797* Si el mensaje dice `Couldn't start the session`, actualiza a v2.1.212 o posterior. En versiones anteriores también puedes ejecutar primero `claude daemon run` en una terminal aparte y luego iniciar la sesión en segundo plano nuevamente. Ese comando ejecuta el servicio en segundo plano en primer plano en la terminal, por lo que el servicio dura solo mientras esa terminal permanezca abierta.

4773* Si una instalación npm estaba reemplazando el binario, espere a que termine, luego inicie la sesión en segundo plano nuevamente4798* Si una instalación con npm estaba reemplazando el binario, espera a que termine y luego inicia la sesión en segundo plano nuevamente

4774* Si el error aparece en v2.1.212 o posterior mientras no se ejecuta ninguna instalación npm, pida al administrador de Windows que permita el ejecutable de Claude Code en la política de restricción4799* Si el error aparece en v2.1.212 o posterior sin que se esté ejecutando ninguna instalación con npm, consulta con tu administrador de Windows si una política de restricción bloquea el ejecutable de Claude Code

4775* Si el servicio en segundo plano se detiene cuando cierra la terminal, Claude Code lo inició sin PowerShell. Instale PowerShell 7, o pida al administrador que desbloquee PowerShell, para que el servicio pueda sobrevivir a la terminal.4800* Si el servicio en segundo plano se detiene cuando cierras la terminal, Claude Code lo inició sin PowerShell. Instala PowerShell 7, o pide a tu administrador que desbloquee PowerShell, para que el servicio pueda sobrevivir a la terminal.

4776 4801 

4777<h3 id="eacces-when-starting-a-background-session">4802<h3 id="eacces-when-starting-a-background-session">

4778 EACCES al iniciar una sesión en segundo plano4803 EACCES al iniciar una sesión en segundo plano

4779</h3>4804</h3>

4780 4805 

4781Claude Code no pudo ejecutar su propio binario para iniciar el [servicio en segundo plano](/docs/es/agent-view#the-supervisor-process) que aloja sesiones en segundo plano. En una instalación npm, esto generalmente significa que `npm install -g @anthropic-ai/claude-code` estaba reemplazando el binario en ese momento, ya sea que lo ejecutara o el [actualizador automático](/docs/es/setup#auto-updates) lo hizo. El error aparece cuando abre una sesión desde [agent view](/docs/es/agent-view):4806Claude Code no pudo ejecutar su propio binario para iniciar el [servicio en segundo plano](/docs/es/agent-view#the-supervisor-process) que aloja las sesiones en segundo plano. En una instalación con npm, esto generalmente significa que `npm install -g @anthropic-ai/claude-code` estaba reemplazando el binario en ese momento, ya sea que lo ejecutaras tú o el [actualizador automático](/docs/es/setup#auto-updates). El error aparece cuando abres una sesión desde [agent view](/docs/es/agent-view):

4782 4807 

4783```text theme={null}4808```text theme={null}

4784Couldn't start the background service — spawn background service: EACCES: permission denied, posix_spawn '/usr/local/lib/node_modules/@anthropic-ai/claude-code/bin/claude'4809Couldn't start the background service — spawn background service: EACCES: permission denied, posix_spawn '/usr/local/lib/node_modules/@anthropic-ai/claude-code/bin/claude'

4785```4810```

4786 4811 

4787Cuando inicia una sesión con `/background` o `claude --bg`, la misma razón aparece dentro de `Couldn't reach the background service (...)`. Durante la misma ventana de reinstalación el error puede nombrar otro código en su lugar, como `ENOENT` o `ENOEXEC`, o `EUNKNOWN` o `EPERM` en Windows; un `EUNKNOWN` que persiste en reintentos tiene una [causa diferente](#eunknown-when-starting-a-background-session).4812Cuando inicias una sesión con `/background` o `claude --bg`, la misma razón aparece dentro de `Couldn't reach the background service (...)`. Durante el mismo periodo de reinstalación el error puede nombrar otro código, como `ENOENT` o `ENOEXEC`, o `EUNKNOWN` o `EPERM` en Windows; un `EUNKNOWN` que persiste tras varios reintentos tiene una [causa diferente](#eunknown-when-starting-a-background-session).

4788 4813 

4789En una instalación npm, Claude Code espera a que la reinstalación termine y reintenta por su cuenta: hasta diez segundos, y hasta dos minutos mientras una instalación npm de Claude Code aún se está ejecutando visiblemente en la máquina, lo que cubre otro proceso Claude Code descargando una actualización. Cuando la instalación supera esa espera, el fallo nombra la actualización en lugar del código de error simple:4814En una instalación con npm, Claude Code espera a que la reinstalación termine y reintenta por su cuenta: hasta diez segundos, y hasta dos minutos mientras una instalación de Claude Code con npm siga visiblemente en ejecución en la máquina, lo que cubre el caso de otro proceso de Claude Code que descarga una actualización. Cuando la instalación supera esa espera, el fallo nombra la actualización en lugar del código de error sin más:

4790 4815 

4791```text theme={null}4816```text theme={null}

4792Claude Code is being updated by npm on this machine (still not runnable after 2 min, EACCES) — try again when the update finishes4817Claude Code is being updated by npm on this machine (still not runnable after 2 min, EACCES) — try again when the update finishes

4793```4818```

4794 4819 

4795Antes de v2.1.257, la espera se detuvo a los diez segundos en todos los casos, por lo que este error apareció mientras otro proceso Claude Code aún estaba descargando una actualización. Antes de v2.1.246, Claude Code falló de inmediato, sin esperar.4820Antes de v2.1.257, la espera terminaba a los diez segundos en todos los casos, por lo que este error aparecía mientras otro proceso de Claude Code aún estaba descargando una actualización. Antes de v2.1.246, Claude Code fallaba de inmediato, sin esperar.

4796 4821 

4797**Qué hacer:**4822**Qué hacer:**

4798 4823 

4799* Espere unos segundos, luego abra la sesión o envíe nuevamente. Cuando el mensaje dice que Claude Code se está actualizando, reintente después de que la actualización termine.4824* Espera unos segundos y luego abre la sesión o haz el envío nuevamente. Cuando el mensaje dice que Claude Code se está actualizando, reintenta después de que la actualización termine.

4800* Si el error persiste mientras no se ejecuta ninguna instalación npm, su usuario no puede ejecutar el binario instalado. Verifique sus permisos y los de su directorio, o reinstale Claude Code.4825* Si el error persiste sin que se esté ejecutando ninguna instalación con npm, tu usuario no puede ejecutar el binario instalado. Revisa sus permisos y los de su directorio, o reinstala Claude Code.

4801 4826 

4802<h3 id="background-service-exited-before-it-became-reachable">4827<h3 id="background-service-exited-before-it-became-reachable">

4803 El servicio en segundo plano salió antes de que fuera alcanzable4828 El servicio en segundo plano salió antes de estar disponible

4804</h3>4829</h3>

4805 4830 

4806El proceso que Claude Code inició como el [servicio en segundo plano](/docs/es/agent-view#the-supervisor-process) salió antes de aceptar conexiones, por lo que Claude Code no pudo abrir su sesión. Cuando el servicio imprimió un error antes de salir, la razón entre paréntesis da el código de salida o señal y la primera línea que el servicio imprimió, que nombra lo que lo detuvo:4831El proceso que Claude Code inició como el [servicio en segundo plano](/docs/es/agent-view#the-supervisor-process) salió antes de aceptar conexiones, por lo que Claude Code no pudo abrir tu sesión. Cuando el servicio imprimió un error antes de salir, la razón entre paréntesis indica el código de salida o la señal y la primera línea que imprimió el servicio, que nombra lo que lo detuvo:

4807 4832 

4808```text theme={null}4833```text theme={null}

4809Couldn't reach the background service (background service exited before it became reachable (exit code N): <the service's first error line>) — run 'claude daemon status'4834Couldn't reach the background service (background service exited before it became reachable (exit code N): <the service's first error line>) — run 'claude daemon status'

4810```4835```

4811 4836 

4812Cuando abre una sesión desde [agent view](/docs/es/agent-view), la misma razón sigue a `Couldn't start the background service —`. Cuando el servicio no imprimió nada antes de salir, el mensaje dice `nothing on stderr` en su lugar.4837Cuando abres una sesión desde [agent view](/docs/es/agent-view), la misma razón aparece después de `Couldn't start the background service —`. Cuando el servicio no imprimió nada antes de salir, el mensaje dice `nothing on stderr` en su lugar.

4813 4838 

4814Claude Code reporta el fallo con la línea de error del servicio. Antes de v2.1.246, el fallo aparecía solo después de una espera de 45 segundos, como `background service did not become reachable within 45s`, sin la línea de error del servicio.4839Claude Code reporta el fallo con la línea de error del servicio. Antes de v2.1.246, el fallo aparecía solo después de una espera de 45 segundos, como `background service did not become reachable within 45s`, sin la línea de error del servicio.

4815 4840 

4816Dos razones entrecomilladas tienen causas conocidas:4841Dos razones citadas tienen causas conocidas:

4817 4842 

4818* `Error: claude native binary not installed.`: una instalación npm estaba reemplazando el binario de Claude Code en ese momento, por lo que el servicio ejecutó el marcador de posición de npm en su lugar. Reintente después de que la instalación termine; si la línea persiste sin instalación en ejecución, [complete la instalación npm](/docs/es/troubleshoot-install#native-binary-not-found-after-npm-install). Antes de v2.1.257, una actualización automática de npm en macOS produjo este fallo en cada inicio durante la ventana de instalación.4843* `Error: claude native binary not installed.`: una instalación con npm estaba reemplazando el binario de Claude Code en ese momento, por lo que el servicio ejecutó el marcador de posición de npm en su lugar. Reintenta después de que la instalación termine; si la línea persiste sin ninguna instalación en ejecución, [completa la instalación con npm](/docs/es/troubleshoot-install#native-binary-not-found-after-npm-install). Antes de v2.1.257, una autoactualización con npm en macOS producía este fallo en cada inicio durante el periodo de instalación.

4819* `nothing on stderr` con código de salida 1, en cada inicio, en Windows: `daemon.lock` nombra un proceso que Claude Code no puede señalar ni probar que se ha ido, por lo que cada nuevo servicio concluye que otro mantiene el bloqueo y sale. Un bloqueo cuyo escritor Claude Code puede probar que se ha ido se reemplaza por su cuenta y no produce este fallo. Cuando el fallo se repite en cada inicio, elimine `~/.claude/daemon.lock`, luego abra la sesión o envíe nuevamente. Antes de v2.1.257, tal bloqueo bloqueaba cada inicio hasta que eliminara el archivo.4844* `nothing on stderr` con código de salida 1, en cada inicio, en Windows: `daemon.lock` nombra un proceso al que Claude Code no puede enviar señales ni demostrar que ya no existe, por lo que cada nuevo servicio concluye que otro mantiene el bloqueo y sale. Un bloqueo cuyo escritor Claude Code puede demostrar que ya no existe se reemplaza automáticamente y no produce este fallo. Cuando el fallo se repite en cada inicio, elimina `~/.claude/daemon.lock` y luego abre la sesión o haz el envío nuevamente. Antes de v2.1.257, un bloqueo así impedía cada inicio hasta que eliminaras el archivo.

4820 4845 

4821**Qué hacer:**4846**Qué hacer:**

4822 4847 

4823* Si el mensaje cita una línea, corrija lo que nombra, luego abra la sesión o envíe nuevamente. El siguiente intento inicia el servicio nuevamente4848* Si el mensaje cita una línea, corrige lo que nombra y luego abre la sesión o haz el envío nuevamente. El siguiente intento vuelve a iniciar el servicio

4824* Ejecute `claude daemon status` para verificar si un servicio se está ejecutando ahora4849* Ejecuta `claude daemon status` para verificar si hay un servicio en ejecución ahora

4825 4850 

4826<h3 id="working-directory-no-longer-exists-when-starting-a-background-session">4851<h3 id="working-directory-no-longer-exists-when-starting-a-background-session">

4827 El directorio de trabajo ya no existe al iniciar una sesión en segundo plano4852 El directorio de trabajo ya no existe al iniciar una sesión en segundo plano

4828</h3>4853</h3>

4829 4854 

4830El directorio en el que intentó iniciar una [sesión en segundo plano](/docs/es/agent-view) fue removido mientras la sesión se estaba iniciando. Claude Code no inicia la sesión, y el mensaje nombra el directorio faltante:4855El directorio en el que iniciaste una [sesión en segundo plano](/docs/es/agent-view) se eliminó mientras la sesión se estaba iniciando. Claude Code no inicia la sesión, y el mensaje nombra el directorio faltante:

4831 4856 

4832```text theme={null}4857```text theme={null}

4833Couldn't start a background session (working directory no longer exists or is not accessible: /tmp/demo)4858Couldn't start a background session (working directory no longer exists or is not accessible: /tmp/demo)


4835 4860 

4836Antes de v2.1.257, la sesión parecía iniciarse y luego se mostraba en agent view como una fila fallida con la misma razón.4861Antes de v2.1.257, la sesión parecía iniciarse y luego se mostraba en agent view como una fila fallida con la misma razón.

4837 4862 

4838Antes de v2.1.281, este mensaje también aparecía cuando el directorio ya se había ido antes de que iniciara la sesión. Ese caso reporta [`could not be resolved on disk`](#workspace-not-trusted-when-dispatching-a-background-session).4863Antes de v2.1.281, este mensaje también aparecía cuando el directorio ya no existía antes de que iniciaras la sesión. Ese caso reporta [`could not be resolved on disk`](#workspace-not-trusted-when-dispatching-a-background-session).

4839 4864 

4840**Qué hacer:**4865**Qué hacer:**

4841 4866 

4842* Recree el directorio que el mensaje nombra, o envíe desde un directorio que existe, luego intente nuevamente4867* Vuelve a crear el directorio que nombra el mensaje, o haz el envío desde un directorio que exista, y luego inténtalo de nuevo

4843 4868 

4844<h3 id="workspace-not-trusted-when-dispatching-a-background-session">4869<h3 id="workspace-not-trusted-when-dispatching-a-background-session">

4845 Espacio de trabajo no confiable al enviar una sesión en segundo plano4870 Espacio de trabajo no confiable al enviar una sesión en segundo plano

4846</h3>4871</h3>

4847 4872 

4848Inició o reinició una [sesión en segundo plano](/docs/es/agent-view) en un directorio que no ha [confiado](/docs/es/permissions#project-allow-rules-and-workspace-trust), y el diálogo de confianza del espacio de trabajo no pudo aparecer para preguntarle. Claude Code no inicia la sesión:4873Iniciaste o reiniciaste una [sesión en segundo plano](/docs/es/agent-view) en un directorio en el que no has [confiado](/docs/es/permissions#project-allow-rules-and-workspace-trust), y el diálogo de confianza del espacio de trabajo no pudo aparecer para preguntarte. Claude Code no inicia la sesión:

4849 4874 

4850```text theme={null}4875```text theme={null}

4851Workspace not trusted. Run `claude` in /path/to/project once and accept the trust prompt, then retry.4876Workspace not trusted. Run `claude` in /path/to/project once and accept the trust prompt, then retry.

4852```4877```

4853 4878 

4854Desde una terminal en el directorio de la sesión, el mismo comando muestra el diálogo de confianza en su lugar e inicia la sesión una vez que acepta. Este mensaje aparece donde no puede haber diálogo, como en un script, o cuando reinicia una sesión desde un directorio diferente al suyo.4879Desde una terminal en el propio directorio de la sesión, el mismo comando muestra el diálogo de confianza en su lugar e inicia la sesión una vez que aceptas. Este mensaje aparece donde no puede mostrarse ningún diálogo, como en un script, o cuando reinicias una sesión desde un directorio distinto al suyo.

4855 4880 

4856Dos variantes nombran una causa diferente:4881Dos variantes nombran una causa diferente:

4857 4882 

4858* **`The home directory is trusted one session at a time`**: el directorio de la sesión es su directorio de inicio. Claude Code nunca guarda confianza para el directorio de inicio, por lo que aceptar el diálogo allí en una sesión anterior no cuenta.4883* **`The home directory is trusted one session at a time`**: el directorio de la sesión es tu directorio home. Claude Code nunca guarda la confianza para el directorio home, por lo que haber aceptado el diálogo allí en una sesión anterior no cuenta.

4859* **`<path> could not be resolved on disk`**: Claude Code no pudo encontrar el directorio de la sesión en el disco.4884* **`<path> could not be resolved on disk`**: Claude Code no pudo encontrar el directorio de la sesión en el disco.

4860 4885 

4886Antes de v2.1.286, en Windows, este mensaje también podía aparecer en un directorio en el que ya habías confiado, si su registro de confianza se había guardado con la ruta en mayúsculas y minúsculas diferentes. Actualiza a v2.1.286 o posterior.

4887 

4861**Qué hacer:**4888**Qué hacer:**

4862 4889 

4863* Ejecute `claude` en el directorio que el mensaje nombra y acepte el diálogo de confianza, luego ejecute el comando nuevamente4890* Ejecuta `claude` en el directorio que nombra el mensaje y acepta el diálogo de confianza, y luego ejecuta el comando nuevamente

4864* Para el mensaje del directorio de inicio, ejecute el comando desde una terminal en su directorio de inicio para que el diálogo pueda aparecer, o inicie la sesión desde un directorio de proyecto en su lugar4891* Para el mensaje del directorio home, ejecuta el comando desde una terminal en tu directorio home para que el diálogo pueda aparecer, o inicia la sesión desde un directorio de proyecto en su lugar

4865* Para el mensaje `could not be resolved on disk`, recree el directorio, o inicie una nueva sesión desde un directorio que existe4892* Para el mensaje `could not be resolved on disk`, vuelve a crear el directorio, o inicia una nueva sesión desde un directorio que exista

4866 4893 

4867<h2 id="wrapper-and-ide-errors">4894<h2 id="wrapper-and-ide-errors">

4868 Errores de wrapper e IDE4895 Errores de wrapper e IDE

fullscreen.md +3 −1

Details

104* **Haga clic en una opción en un menú de selección múltiple** para alternarla, y haga clic en el botón de envío para confirmar sus opciones. Hacer clic en una fila de texto libre, como la fila `Other` en una pregunta de opción múltiple, enfoca su campo de entrada para que pueda escribir una respuesta. Requiere Claude Code v2.1.208 o posterior.104* **Haga clic en una opción en un menú de selección múltiple** para alternarla, y haga clic en el botón de envío para confirmar sus opciones. Hacer clic en una fila de texto libre, como la fila `Other` en una pregunta de opción múltiple, enfoca su campo de entrada para que pueda escribir una respuesta. Requiere Claude Code v2.1.208 o posterior.

105* **Haga clic en un valor de configuración en el panel `/config`** para cambiarlo, y desplácese por la lista de configuración con la rueda del ratón. Requiere Claude Code v2.1.271 o posterior.105* **Haga clic en un valor de configuración en el panel `/config`** para cambiarlo, y desplácese por la lista de configuración con la rueda del ratón. Requiere Claude Code v2.1.271 o posterior.

106* **Desplace un menú de selección o selección múltiple con la rueda del ratón** cuando tenga más opciones de las que muestra a la vez, como la lista `/model` en una ventana de terminal corta. La rueda desplaza la lista mientras el puntero está sobre sus opciones. Requiere Claude Code v2.1.280 o posterior.106* **Desplace un menú de selección o selección múltiple con la rueda del ratón** cuando tenga más opciones de las que muestra a la vez, como la lista `/model` en una ventana de terminal corta. La rueda desplaza la lista mientras el puntero está sobre sus opciones. Requiere Claude Code v2.1.280 o posterior.

107* **Desplace una lista que se desborda con su barra de desplazamiento.** En paneles de lista como `/skills`, `/mcp` y la lista Instalado de `/plugin`, aparece una barra de desplazamiento junto a una lista con más filas de las que caben mientras el puntero está sobre ella. Haga clic en la pista para saltar a ese punto, o arrastre el pulgar. Requiere Claude Code v2.1.281 o posterior.107* **Desplaza una lista que se desborda con su barra de desplazamiento.** En paneles de lista como `/skills`, `/mcp` y la lista Instalado de `/plugin`, aparece una barra de desplazamiento junto a una lista con más filas de las que caben mientras el puntero está sobre ella. Haz clic en la pista para saltar a ese punto, o arrastra el pulgar. Requiere Claude Code v2.1.281 o posterior.

108 * Donde la barra tiene flechas `↑` y `↓` en sus extremos, haz clic en una flecha para desplazarte una sola fila, o mantenla presionada para seguir desplazándote. Las flechas requieren Claude Code v2.1.286 o posterior.

109* **Haz clic en la fila `↑ N more` o `↓ N more` en el borde de una lista** para saltar a ese extremo de la lista sin elegir una opción. Requiere Claude Code v2.1.286 o posterior.

108* **Haga clic en un resultado de herramienta contraído** para expandirlo y ver la salida completa. Haga clic de nuevo para contraerlo. La llamada de herramienta y su resultado se expanden juntos. Solo los mensajes que tienen más para mostrar son clicables.110* **Haga clic en un resultado de herramienta contraído** para expandirlo y ver la salida completa. Haga clic de nuevo para contraerlo. La llamada de herramienta y su resultado se expanden juntos. Solo los mensajes que tienen más para mostrar son clicables.

109 * Hacer clic también expande la salida de un comando shell `!`, ya sea un resultado truncado anterior o la fila de progreso en vivo mientras se ejecuta el comando. Requiere Claude Code v2.1.257 o posterior.111 * Hacer clic también expande la salida de un comando shell `!`, ya sea un resultado truncado anterior o la fila de progreso en vivo mientras se ejecuta el comando. Requiere Claude Code v2.1.257 o posterior.

110 * Hacer clic también expande una línea `Message from @<sender>` atenuada cuando el remitente es un [compañero de equipo](/docs/es/agent-teams) u otro agente ejecutándose en su sesión. La línea de un mensaje de [una de sus otras sesiones](/docs/es/cross-session-messaging#what-a-message-looks-like) también muestra la primera línea del mensaje y no es clicable, así que presione `Ctrl+o` para leer esa.112 * Hacer clic también expande una línea `Message from @<sender>` atenuada cuando el remitente es un [compañero de equipo](/docs/es/agent-teams) u otro agente ejecutándose en su sesión. La línea de un mensaje de [una de sus otras sesiones](/docs/es/cross-session-messaging#what-a-message-looks-like) también muestra la primera línea del mensaje y no es clicable, así que presione `Ctrl+o` para leer esa.

headless.md +8 −0

Details

62| Agentes personalizados | `--agents <json>` |62| Agentes personalizados | `--agents <json>` |

63| Un plugin | `--plugin-dir <path>`, `--plugin-url <url>` |63| Un plugin | `--plugin-dir <path>`, `--plugin-url <url>` |

64 64 

65El modo bare también limita lo que ocurre mientras se ejecuta la sesión:

66 

67* **Servidores MCP**: solo se conectan los servidores proporcionados en la línea de comandos, por ejemplo con `--mcp-config`. En una sesión interactiva, Claude Code también omite la conexión automática con el IDE a menos que pases `--ide`.

68* **Recordatorios del sistema**: Claude recibe tus prompts y los resultados de las herramientas sin los [recordatorios del sistema](/docs/es/glossary#system-reminder) que Claude Code agregaría junto a ellos. Por ejemplo, a Claude no se le informa cuando un archivo que leyó antes cambia en el disco, y no recibe la lista de skills disponibles, incluidos los skills de una carpeta de `--add-dir`.

69* **Tareas en segundo plano**: no se ejecuta ninguna. Un comando que alcanza su [tiempo de espera](/docs/es/tools-reference#timeout-and-output-limits) se detiene en lugar de [pasar a segundo plano](/docs/es/tools-reference#background-commands).

70 

71Antes de la v2.1.286, estos límites se aplicaban solo en parte: una sesión interactiva con `--bare` conectaba los servidores MCP que conectaría una sesión normal, cada sesión con `--bare` enviaba recordatorios del sistema y las tareas en segundo plano seguían disponibles.

72 

65<Note>73<Note>

66 `--bare` es el modo recomendado para llamadas con scripts y SDK, y se convertirá en el predeterminado para `-p` en una versión futura.74 `--bare` es el modo recomendado para llamadas con scripts y SDK, y se convertirá en el predeterminado para `-p` en una versión futura.

67</Note>75</Note>

hooks.md +4 −10

Details

731 El menú `/hooks`731 El menú `/hooks`

732</h3>732</h3>

733 733 

734Escribe `/hooks` en Claude Code para abrir un navegador de solo lectura para tus hooks configurados. El menú muestra cada evento de hook con un recuento de hooks configurados, te permite profundizar en matchers y muestra los detalles completos de cada manejador de hook. Úsalo para verificar la configuración, comprobar desde qué archivo de configuración vino un hook o inspeccionar el comando, prompt o URL de un hook.734Escribe `/hooks` en Claude Code para abrir un navegador de solo lectura para tus hooks configurados. La lista etiqueta cada hook con su procedencia, como la configuración de usuario, la configuración de proyecto, la configuración local, un plugin o la sesión actual.

735 735 

736El menú muestra los cinco tipos de hook: `command`, `prompt`, `agent`, `http` y `mcp_tool`. Cada hook está etiquetado con un prefijo `[type]` y una fuente que indica dónde fue definido:736Selecciona un hook para ver el texto completo de lo que ejecuta y dónde está definido, como la ruta de su archivo de configuración o el nombre de su plugin.

737 737 

738* `User Settings`: de `~/.claude/settings.json`738Para explorar todos los eventos de hook, incluidos los que no tienen hooks configurados, selecciona `All events` al final de la lista.

739* `Project Settings`: de `.claude/settings.json`

740* `Local Settings`: de `.claude/settings.local.json`

741* `Plugin Hooks`: de `hooks/hooks.json` de un plugin

742* `Session Hooks`: registrado en memoria para la sesión actual

743 

744Seleccionar un hook abre una vista de detalle que muestra su evento, matcher, tipo, archivo de fuente y el comando, prompt o URL completo. El menú es de solo lectura: para añadir, modificar o eliminar hooks, edita el JSON de configuración directamente o pide a Claude que haga el cambio.

745 739 

746<h3 id="disable-or-remove-hooks">740<h3 id="disable-or-remove-hooks">

747 Deshabilitar o eliminar hooks741 Deshabilitar o eliminar hooks

748</h3>742</h3>

749 743 

750Para eliminar un hook, borra su entrada del archivo de configuración JSON.744Para eliminar un hook definido en un archivo de configuración, borra su entrada de ese archivo.

751 745 

752Para deshabilitar temporalmente todos los hooks sin eliminarlos, establece `"disableAllHooks": true` en tu archivo de configuración. Claude Code lee el valor que queda después de que se aplica la [precedencia de configuración](/docs/es/settings#settings-precedence), así que un `"disableAllHooks": false` en `.claude/settings.json` de un proyecto anula un `true` en tu configuración de usuario. Para desactivar hooks para una ejecución sin importar lo que diga la configuración del proyecto, pasa `--settings '{"disableAllHooks": true}'`, que tiene precedencia sobre la configuración de proyecto y local. No hay forma de deshabilitar un hook individual mientras lo mantienes en la configuración.746Para deshabilitar temporalmente todos los hooks sin eliminarlos, establece `"disableAllHooks": true` en tu archivo de configuración. Claude Code lee el valor que queda después de que se aplica la [precedencia de configuración](/docs/es/settings#settings-precedence), así que un `"disableAllHooks": false` en `.claude/settings.json` de un proyecto anula un `true` en tu configuración de usuario. Para desactivar hooks para una ejecución sin importar lo que diga la configuración del proyecto, pasa `--settings '{"disableAllHooks": true}'`, que tiene precedencia sobre la configuración de proyecto y local. No hay forma de deshabilitar un hook individual mientras lo mantienes en la configuración.

753 747 

hooks-guide.md +12 −9

Details

69 </Step>69 </Step>

70 70 

71 <Step title="Verifica la configuración">71 <Step title="Verifica la configuración">

72 Escribe `/hooks` para abrir el navegador de hooks. Verás una lista de todos los eventos de hook disponibles, con un contador junto a cada evento que tiene hooks configurados. Selecciona `Notification` para confirmar que tu nuevo hook aparece en la lista. Seleccionar el hook muestra sus detalles: el evento, matcher, tipo, archivo de origen y comando.72 Escribe `/hooks` en el prompt de Claude Code para abrir el navegador de hooks. Tu nuevo hook aparece en la lista bajo `Notification`.

73 </Step>73 </Step>

74 74 

75 <Step title="Prueba el hook">75 <Step title="Prueba el hook">


77 </Step>77 </Step>

78</Steps>78</Steps>

79 79 

80<Tip>

81 El menú `/hooks` es de solo lectura. Para añadir, modificar o eliminar hooks, edita tu JSON de configuración directamente o pídele a Claude que haga el cambio.

82</Tip>

83 

84<h2 id="what-you-can-automate">80<h2 id="what-you-can-automate">

85 Qué puedes automatizar81 Qué puedes automatizar

86</h2>82</h2>


97 93 

98Obtén una notificación de escritorio cada vez que Claude termine de trabajar y necesite tu entrada, para que puedas cambiar a otras tareas sin verificar la terminal.94Obtén una notificación de escritorio cada vez que Claude termine de trabajar y necesite tu entrada, para que puedas cambiar a otras tareas sin verificar la terminal.

99 95 

100Este hook usa el evento `Notification`, que Claude Code activa cuando Claude está esperando entrada o permiso. Consulta [cuándo se activa cada tipo de notificación](/docs/es/hooks#notification) para el momento exacto. Cada pestaña a continuación usa el comando de notificación nativo de la plataforma. Añade esto a `~/.claude/settings.json`:96Este hook usa el evento `Notification`, que Claude Code activa cuando Claude está esperando entrada o permiso. Consulta [cuándo se activa cada tipo de notificación](/docs/es/hooks#notification) para el momento exacto.

97 

98Cada pestaña a continuación usa el comando de notificación nativo de la plataforma. Añade esto a `~/.claude/settings.json`:

101 99 

102<Tabs>100<Tabs>

103 <Tab title="macOS">101 <Tab title="macOS">


120 ```118 ```

121 119 

122 <Accordion title="Si no aparece ninguna notificación">120 <Accordion title="Si no aparece ninguna notificación">

123 `osascript` enruta notificaciones a través de la aplicación Script Editor integrada. Si Script Editor no tiene permiso de notificación, el comando falla silenciosamente, y macOS no te pedirá que lo otorgues. Ejecuta esto en Terminal una vez para que Script Editor aparezca en tu configuración de notificaciones:121 `osascript` enruta notificaciones a través de la aplicación Script Editor integrada. Si Script Editor no tiene permiso de notificación, el comando falla silenciosamente, y macOS no te pedirá que lo otorgues.

122 

123 Ejecuta esto en Terminal una vez para que Script Editor aparezca en tu configuración de notificaciones:

124 124 

125 ```bash theme={null}125 ```bash theme={null}

126 osascript -e 'display notification "test"'126 osascript -e 'display notification "test"'


180 ```180 ```

181 181 

182 <Accordion title="Si no aparece ningún diálogo">182 <Accordion title="Si no aparece ningún diálogo">

183 Este comando abre un cuadro de diálogo en lugar de una notificación en la esquina de tu pantalla, por lo que el diálogo puede abrirse detrás de tu ventana de terminal. Prueba el comando directamente en PowerShell primero. Si ejecutas Claude Code dentro de WSL, `powershell.exe` debe estar disponible en tu `PATH` a través de interoperabilidad de Windows.183 Este comando abre un cuadro de diálogo en lugar de una notificación en la esquina de tu pantalla, por lo que el diálogo puede abrirse detrás de tu ventana de terminal. Prueba el comando directamente en PowerShell primero.

184 

185 Si ejecutas Claude Code dentro de WSL, `powershell.exe` debe estar disponible en tu `PATH` a través de interoperabilidad de Windows.

184 </Accordion>186 </Accordion>

185 </Tab>187 </Tab>

186</Tabs>188</Tabs>


212 214 

213`agent_needs_input` para una pregunta de configuración de terminal de un compañero de equipo requiere Claude Code v2.1.248 o posterior.215`agent_needs_input` para una pregunta de configuración de terminal de un compañero de equipo requiere Claude Code v2.1.248 o posterior.

214 216 

215Escribe `/hooks` y selecciona `Notification` para confirmar que el hook está registrado. Para el esquema de evento completo, consulta la [referencia de Notification](/docs/es/hooks#notification).217Escribe `/hooks` en el prompt de Claude Code y confirma que el hook aparece en `Notification`.

216 218 

217<h3 id="auto-format-code-after-edits">219<h3 id="auto-format-code-after-edits">

218 Formatea automáticamente el código después de ediciones220 Formatea automáticamente el código después de ediciones


1055* Las ediciones de archivos normalmente se recogen automáticamente. Si no han aparecido después de unos segundos, el observador de archivos puede haber perdido el cambio: reinicia tu sesión para forzar una recarga.1057* Las ediciones de archivos normalmente se recogen automáticamente. Si no han aparecido después de unos segundos, el observador de archivos puede haber perdido el cambio: reinicia tu sesión para forzar una recarga.

1056* Verifique que su JSON sea válido: las comas finales y comentarios no están permitidos1058* Verifique que su JSON sea válido: las comas finales y comentarios no están permitidos

1057* Confirma que el archivo de configuración está en la ubicación correcta: `.claude/settings.json` para hooks de proyecto, `~/.claude/settings.json` para hooks globales1059* Confirma que el archivo de configuración está en la ubicación correcta: `.claude/settings.json` para hooks de proyecto, `~/.claude/settings.json` para hooks globales

1060* Si el menú muestra `Only hooks from managed settings run here`, tu organización ha establecido [`allowManagedHooksOnly`](/docs/es/settings-reference#allowmanagedhooksonly). Los hooks en tus archivos de configuración de usuario, de proyecto y local no se ejecutan ni aparecen en la lista

1058 1061 

1059<h3 id="stop-hook-hits-the-block-cap">1062<h3 id="stop-hook-hits-the-block-cap">

1060 El hook Stop alcanza el límite de bloqueo1063 El hook Stop alcanza el límite de bloqueo

Details

394* Salga con `Escape`, `Backspace`, o `Ctrl+U` en un indicador vacío394* Salga con `Escape`, `Backspace`, o `Ctrl+U` en un indicador vacío

395* Pegar texto que comienza con `!` en un indicador vacío entra en modo shell automáticamente, coincidiendo con el comportamiento de `!` escrito395* Pegar texto que comienza con `!` en un indicador vacío entra en modo shell automáticamente, coincidiendo con el comportamiento de `!` escrito

396 396 

397A menos que su sesión sea una de las enumeradas en [modo sandbox estricto](/docs/es/sandboxing#the-unsandboxed-retry-escape-hatch), los comandos que escribe en modo shell se ejecutan fuera del [sandbox](/docs/es/sandboxing) incluso cuando ha habilitado sandboxing, porque el sandbox se aplica a los comandos que ejecuta Claude.397A menos que tu sesión sea una de las enumeradas en [modo sandbox estricto](/docs/es/sandboxing#turn-off-the-retry-with-strict-sandbox-mode), los comandos que escribes en modo shell se ejecutan fuera del [sandbox](/docs/es/sandboxing) incluso cuando has habilitado el sandboxing, porque el sandbox se aplica a los comandos que ejecuta Claude.

398 398 

399Claude responde automáticamente a la salida del comando una vez que llega a la transcripción, por lo que puede ejecutar `! npm test` y obtener una explicación de los errores sin un segundo indicador. La respuesta cuesta lo mismo que enviar un indicador normal. Para restaurar el comportamiento anterior donde la salida se agrega al contexto sin una respuesta, establezca [`respondToBashCommands`](/docs/es/settings-reference#respondtobashcommands) en `false` en `settings.json`. Antes de v2.1.186, el modo shell siempre agregaba salida al contexto sin una respuesta.399Claude responde automáticamente a la salida del comando una vez que llega a la transcripción, por lo que puede ejecutar `! npm test` y obtener una explicación de los errores sin un segundo indicador. La respuesta cuesta lo mismo que enviar un indicador normal. Para restaurar el comportamiento anterior donde la salida se agrega al contexto sin una respuesta, establezca [`respondToBashCommands`](/docs/es/settings-reference#respondtobashcommands) en `false` en `settings.json`. Antes de v2.1.186, el modo shell siempre agregaba salida al contexto sin una respuesta.

400 400 

Details

73 73 

74Transmita respuestas de inferencia. Claude Code lee la transmisión a medida que llega, por lo que si su puerta de enlace almacena en búfer respuestas completas antes de retransmitirlas, Claude Code se detiene.74Transmita respuestas de inferencia. Claude Code lee la transmisión a medida que llega, por lo que si su puerta de enlace almacena en búfer respuestas completas antes de retransmitirlas, Claude Code se detiene.

75 75 

76Entregue la secuencia de eventos completa de cada respuesta sin descartar, duplicar ni reordenar eventos. Cuando un evento hace referencia a un bloque de contenido cuyo `content_block_start` nunca llegó, o a un bloque cuyo `content_block_stop` ya llegó, Claude Code deja de leer la transmisión en ese evento en lugar de aplicarlo, por lo que un `content_block_stop` duplicado no puede ejecutar la misma llamada de herramienta dos veces. [La respuesta anterior puede estar incompleta](/docs/es/errors#the-response-above-may-be-incomplete) describe lo que el usuario ve, bajo las variantes `Part of the response never arrived` y `The response stream was malformed`.76Entrega la secuencia completa de eventos de cada respuesta sin descartar, duplicar ni reordenar eventos. Cuando una barrera de protección (guardrail) de Amazon Bedrock bloquea una respuesta, reenvía sin cambios los eventos que envía, incluso cuando hacen referencia a un bloque de contenido cuyo `content_block_stop` ya llegó. [AWS Guardrails](/docs/es/amazon-bedrock#aws-guardrails) describe cómo termina esa respuesta. Cuando cualquier otro evento hace referencia a un bloque de contenido cuyo `content_block_start` nunca llegó, o a un bloque cuyo `content_block_stop` ya llegó, Claude Code deja de leer el stream en ese evento en lugar de aplicarlo, de modo que un `content_block_stop` duplicado no puede ejecutar la misma llamada a herramienta dos veces. [La respuesta anterior puede estar incompleta](/docs/es/errors#the-response-above-may-be-incomplete) describe lo que ve el usuario, en las variantes `Part of the response never arrived` y `The response stream was malformed`.

77 77 

78Retransmita cada respuesta a través de sus eventos finales `message_delta` y `message_stop` antes de terminar el cuerpo. Un cuerpo que termina después de un `message_delta` que lleva un `stop_reason`, sin bloque de contenido aún abierto y sin evento de bloque de contenido después de ese fotograma, se cuenta como completo incluso cuando falta `message_stop`. Un cuerpo que su puerta de enlace termina limpiamente antes, una vez que ha comenzado un bloque de contenido, se trata igual que una conexión caída: [Reintentos automáticos](/docs/es/errors#automatic-retries) dice cuándo Claude Code vuelve a emitir la solicitud, y [La respuesta anterior puede estar incompleta](/docs/es/errors#the-response-above-may-be-incomplete) cubre lo que mantiene una vez que ha llegado contenido visible. Claude Code mantiene el `stop_reason` que entrega un `message_delta`, por lo que un `message_delta` posterior solo de uso cuyo `delta` tiene `stop_reason: null` o no tiene clave `stop_reason` no lo borra.78Retransmita cada respuesta a través de sus eventos finales `message_delta` y `message_stop` antes de terminar el cuerpo. Un cuerpo que termina después de un `message_delta` que lleva un `stop_reason`, sin bloque de contenido aún abierto y sin evento de bloque de contenido después de ese fotograma, se cuenta como completo incluso cuando falta `message_stop`. Un cuerpo que su puerta de enlace termina limpiamente antes, una vez que ha comenzado un bloque de contenido, se trata igual que una conexión caída: [Reintentos automáticos](/docs/es/errors#automatic-retries) dice cuándo Claude Code vuelve a emitir la solicitud, y [La respuesta anterior puede estar incompleta](/docs/es/errors#the-response-above-may-be-incomplete) cubre lo que mantiene una vez que ha llegado contenido visible. Claude Code mantiene el `stop_reason` que entrega un `message_delta`, por lo que un `message_delta` posterior solo de uso cuyo `delta` tiene `stop_reason: null` o no tiene clave `stop_reason` no lo borra.

79 79 

Details

470| [`wslInheritsWindowsSettings`](/docs/es/settings-reference#wslinheritswindowssettings) | Cuando se establece en el registro HKLM o un archivo bajo `C:\Program Files\ClaudeCode`, haga que WSL lea la cadena de política de Windows, y lea `/etc/claude-code` solo cuando [no hay ningún documento de administrador presente](#present-admin-documents); la entrada da el orden |470| [`wslInheritsWindowsSettings`](/docs/es/settings-reference#wslinheritswindowssettings) | Cuando se establece en el registro HKLM o un archivo bajo `C:\Program Files\ClaudeCode`, haga que WSL lea la cadena de política de Windows, y lea `/etc/claude-code` solo cuando [no hay ningún documento de administrador presente](#present-admin-documents); la entrada da el orden |

471 471 

472<Note>472<Note>

473 En planes de Team y Enterprise, un Owner habilita o deshabilita [Remote Control](/docs/es/remote-control) y [sesiones en la nube](/docs/es/claude-code-on-the-web) en toda la organización en [configuración de administrador de Claude Code](https://claude.ai/admin-settings/claude-code). Remote Control también se puede deshabilitar por dispositivo con la configuración [`disableRemoteControl`](/docs/es/settings-reference#disableremotecontrol). Las sesiones en la nube no tienen clave de configuración administrada por dispositivo.473 En los planes Team y Enterprise, un Owner habilita o deshabilita [Remote Control](/docs/es/remote-control) y las [sesiones en la nube](/docs/es/claude-code-on-the-web) en toda la organización desde la [configuración de administración de Claude Code](https://claude.ai/admin-settings/claude-code). Cuando un Owner desactiva Remote Control, las sesiones ya conectadas que ejecutan Claude Code v2.1.286 o posterior también se desconectan. Cada una se desconecta la próxima vez que actualiza la política de tu organización, aproximadamente una vez por hora. Para saber qué sucede en esas sesiones, consulta [`Remote Control was turned off by your organization's policy`](/docs/es/remote-control#remote-control-was-turned-off-by-your-organizations-policy).

474 

475 Además, Remote Control se puede deshabilitar por dispositivo con el ajuste [`disableRemoteControl`](/docs/es/settings-reference#disableremotecontrol). Las sesiones en la nube no tienen una clave de configuración administrada por dispositivo.

474 476 

475 Para verificar si estas configuraciones de organización llegaron a una máquina determinada, ejecute `claude doctor` allí y lea la línea `Organization policy`, que dice dónde Claude Code cargó la política o por qué no la cargó. Requiere Claude Code v2.1.261 o posterior. En una sesión en ejecución, `/status` muestra la misma línea cuando la política no se cargó.477 Para verificar si estas configuraciones de organización llegaron a una máquina determinada, ejecute `claude doctor` allí y lea la línea `Organization policy`, que dice dónde Claude Code cargó la política o por qué no la cargó. Requiere Claude Code v2.1.261 o posterior. En una sesión en ejecución, `/status` muestra la misma línea cuando la política no se cargó.

476</Note>478</Note>

memory.md +98 −96

Details

41 Archivos CLAUDE.md41 Archivos CLAUDE.md

42</h2>42</h2>

43 43 

44Los archivos CLAUDE.md son archivos markdown que proporcionan a Claude instrucciones persistentes para un proyecto, su flujo de trabajo personal o toda su organización. Usted escribe estos archivos en texto plano; Claude los lee al inicio de cada sesión. Si su repositorio utiliza `AGENTS.md` en su lugar, consulte [AGENTS.md](#agents-md).44Los archivos CLAUDE.md son archivos markdown que proporcionan a Claude instrucciones persistentes para un proyecto, tu flujo de trabajo personal o toda tu organización. Tú escribes estos archivos en texto plano; Claude los lee al inicio de cada sesión. Si tu repositorio utiliza `AGENTS.md` en su lugar, consulta [AGENTS.md](#agents-md).

45 45 

46<h3 id="when-to-add-to-claude-md">46<h3 id="when-to-add-to-claude-md">

47 Cuándo agregar a CLAUDE.md47 Cuándo agregar a CLAUDE.md

48</h3>48</h3>

49 49 

50Trate CLAUDE.md como el lugar donde escribe lo que de otro modo tendría que re-explicar. Agregue contenido cuando:50Trata CLAUDE.md como el lugar donde escribes lo que de otro modo tendrías que volver a explicar. Agrega contenido cuando:

51 51 

52* Claude comete el mismo error una segunda vez52* Claude comete el mismo error una segunda vez

53* Una revisión de código detecta lo que sí llega al PR que Claude debería haber sabido sobre esta base de código53* Una revisión de código detecta algo que Claude debería haber sabido sobre esta base de código

54* Usted escribe la misma corrección o aclaración en el chat que escribió en la sesión anterior54* Escribes en el chat la misma corrección o aclaración que escribiste en la sesión anterior

55* Un nuevo compañero de equipo necesitaría el mismo contexto para ser productivo55* Un nuevo compañero de equipo necesitaría el mismo contexto para ser productivo

56 56 

57Manténgalo en hechos que Claude debe retener en cada sesión: comandos de compilación, convenciones, diseño del proyecto, reglas "siempre haga X". Si una entrada es un procedimiento de varios pasos o solo importa para una parte de la base de código, muévala a un [skill](/docs/es/skills) o a una [regla con alcance de ruta](#organize-rules-with-claude/rules/) en su lugar. La [descripción general de extensiones](/docs/es/features-overview#build-your-setup-over-time) cubre cuándo usar cada mecanismo.57Limítalo a hechos que Claude debe retener en cada sesión: comandos de compilación, convenciones, estructura del proyecto, reglas de "siempre haz X". Si una entrada es un procedimiento de varios pasos o solo importa para una parte de la base de código, muévela a un [skill](/docs/es/skills) o a una [regla con alcance de ruta](#organize-rules-with-claude/rules/) en su lugar. La [descripción general de extensiones](/docs/es/features-overview#build-your-setup-over-time) cubre cuándo usar cada mecanismo.

58 58 

59<h3 id="choose-where-to-put-claude-md-files">59<h3 id="choose-where-to-put-claude-md-files">

60 Elija dónde colocar los archivos CLAUDE.md60 Elige dónde colocar los archivos CLAUDE.md

61</h3>61</h3>

62 62 

63Los archivos CLAUDE.md pueden vivir en varios lugares, cada uno con un alcance diferente. La tabla a continuación los enumera en orden de carga, desde el alcance más amplio hasta el más específico, por lo que una instrucción de proyecto aparece en contexto después de una instrucción de usuario.63Los archivos CLAUDE.md pueden vivir en varios lugares, cada uno con un alcance diferente. La tabla a continuación los enumera en orden de carga, desde el alcance más amplio hasta el más específico, por lo que una instrucción de proyecto aparece en contexto después de una instrucción de usuario.


65| Alcance | Ubicación | Propósito | Ejemplos de casos de uso | Compartido con |65| Alcance | Ubicación | Propósito | Ejemplos de casos de uso | Compartido con |

66| - | - | - | - | - |66| - | - | - | - | - |

67| **Política administrada** | • macOS: `/Library/Application Support/ClaudeCode/CLAUDE.md`<br />• Linux y WSL: `/etc/claude-code/CLAUDE.md`<br />• Windows: `C:\Program Files\ClaudeCode\CLAUDE.md` | Instrucciones de toda la organización administradas por TI/DevOps | Estándares de codificación de la empresa, políticas de seguridad, requisitos de cumplimiento | Todos los usuarios de la organización |67| **Política administrada** | • macOS: `/Library/Application Support/ClaudeCode/CLAUDE.md`<br />• Linux y WSL: `/etc/claude-code/CLAUDE.md`<br />• Windows: `C:\Program Files\ClaudeCode\CLAUDE.md` | Instrucciones de toda la organización administradas por TI/DevOps | Estándares de codificación de la empresa, políticas de seguridad, requisitos de cumplimiento | Todos los usuarios de la organización |

68| **Instrucciones de usuario** | `~/.claude/CLAUDE.md` | Preferencias personales para todos los proyectos | Preferencias de estilo de código, atajos de herramientas personales | Solo usted (todos los proyectos) |68| **Instrucciones de usuario** | `~/.claude/CLAUDE.md` | Preferencias personales para todos los proyectos | Preferencias de estilo de código, atajos de herramientas personales | Solo tú (todos los proyectos) |

69| **Instrucciones de proyecto** | `./CLAUDE.md` o `./.claude/CLAUDE.md`. Consulte [AGENTS.md](#agents-md) para saber cuándo `./AGENTS.md` se carga en su lugar o junto con ellos | Instrucciones compartidas por el equipo para el proyecto | Arquitectura del proyecto, estándares de codificación, flujos de trabajo comunes | Miembros del equipo a través del control de versiones |69| **Instrucciones de proyecto** | `./CLAUDE.md` o `./.claude/CLAUDE.md`. Consulta [AGENTS.md](#agents-md) para saber cuándo `./AGENTS.md` se carga en su lugar o junto con ellos | Instrucciones compartidas por el equipo para el proyecto | Arquitectura del proyecto, estándares de codificación, flujos de trabajo comunes | Miembros del equipo a través del control de versiones |

70| **Instrucciones locales** | `./CLAUDE.local.md` | Preferencias personales específicas del proyecto; agregue a `.gitignore` | Sus URLs de sandbox, datos de prueba preferidos | Solo usted (proyecto actual) |70| **Instrucciones locales** | `./CLAUDE.local.md` | Preferencias personales específicas del proyecto; agrégalo a `.gitignore` | Tus URLs de sandbox, datos de prueba preferidos | Solo tú (proyecto actual) |

71 71 

72Los archivos CLAUDE.md y CLAUDE.local.md en la jerarquía de directorios por encima del directorio de trabajo se cargan al iniciar. Los archivos en subdirectorios se cargan bajo demanda cuando Claude lee archivos en esos directorios. Consulte [Cómo se cargan los archivos CLAUDE.md](#how-claude-md-files-load) para el orden de resolución completo.72Los archivos CLAUDE.md y CLAUDE.local.md en la jerarquía de directorios por encima del directorio de trabajo se cargan al iniciar. Los archivos en subdirectorios se cargan bajo demanda cuando Claude lee archivos en esos directorios. Consulta [Cómo se cargan los archivos CLAUDE.md](#how-claude-md-files-load) para ver el orden de resolución completo.

73 73 

74Para proyectos grandes, puede dividir las instrucciones en archivos específicos de temas utilizando [reglas de proyecto](#organize-rules-with-claude/rules/). Las reglas le permiten limitar el alcance de las instrucciones a tipos de archivo específicos o subdirectorios.74Para proyectos grandes, puedes dividir las instrucciones en archivos específicos por tema utilizando [reglas de proyecto](#organize-rules-with-claude/rules/). Las reglas te permiten limitar las instrucciones a tipos de archivo o subdirectorios específicos.

75 75 

76<h3 id="set-up-a-project-claude-md">76<h3 id="set-up-a-project-claude-md">

77 Configure un CLAUDE.md de proyecto77 Configura un CLAUDE.md de proyecto

78</h3>78</h3>

79 79 

80Un CLAUDE.md de proyecto puede almacenarse en `./CLAUDE.md` o `./.claude/CLAUDE.md`. Cree este archivo y agregue instrucciones que se apliquen a cualquiera que trabaje en el proyecto: comandos de compilación y prueba, estándares de codificación, decisiones arquitectónicas, convenciones de nomenclatura y flujos de trabajo comunes. Estas instrucciones se comparten con su equipo a través del control de versiones, por lo que enfóquese en estándares a nivel de proyecto en lugar de preferencias personales. Para confirmar que el archivo se cargó, ejecute `/context` en una sesión y verifique la lista bajo **Memory files**.80Un CLAUDE.md de proyecto puede almacenarse en `./CLAUDE.md` o `./.claude/CLAUDE.md`. Crea este archivo y agrega instrucciones que se apliquen a cualquiera que trabaje en el proyecto: comandos de compilación y prueba, estándares de codificación, decisiones arquitectónicas, convenciones de nomenclatura y flujos de trabajo comunes. Estas instrucciones se comparten con tu equipo a través del control de versiones, así que enfócate en estándares a nivel de proyecto en lugar de preferencias personales. Para confirmar que el archivo se cargó, ejecuta `/context` en una sesión y revisa la lista bajo **Memory files**.

81 81 

82<Tip>82<Tip>

83 Ejecute `/init` para generar un CLAUDE.md inicial automáticamente. Claude analiza su base de código y crea un archivo con comandos de compilación, instrucciones de prueba y convenciones de proyecto que descubre. Si ya existe un CLAUDE.md, `/init` sugiere mejoras en lugar de sobrescribirlo. Refine desde allí con instrucciones que Claude no descubriría por sí solo.83 Ejecuta `/init` para generar automáticamente un CLAUDE.md inicial. Claude analiza tu base de código y crea un archivo con los comandos de compilación, las instrucciones de prueba y las convenciones del proyecto que descubre. Si ya existe un CLAUDE.md, `/init` sugiere mejoras en lugar de sobrescribirlo. Refínalo a partir de ahí con instrucciones que Claude no descubriría por sí solo.

84 84 

85 Para un flujo interactivo de múltiples fases en su lugar, configure la variable de entorno `CLAUDE_CODE_NEW_INIT` a `1` antes de ejecutar `/init`. Configúrela en su shell o en el bloque `env` de un archivo de configuración, como se muestra en [Establecer variables de entorno](/docs/es/env-vars#set-environment-variables). Con ella configurada, `/init` pregunta qué artefactos configurar: archivos CLAUDE.md, skills y hooks. Luego explora su base de código con un subagente, llena los vacíos mediante preguntas de seguimiento y presenta una propuesta revisable antes de escribir cualquier archivo. La variable solo cambia cómo se ejecuta `/init`, por lo que puede dejarla configurada.85 Para un flujo interactivo de múltiples fases en su lugar, establece la variable de entorno `CLAUDE_CODE_NEW_INIT` en `1` antes de ejecutar `/init`. Configúrala en tu shell o en el bloque `env` de un archivo de configuración, como se muestra en [Establecer variables de entorno](/docs/es/env-vars#set-environment-variables). Con ella configurada, `/init` pregunta qué artefactos configurar: archivos CLAUDE.md, skills y hooks. Luego explora tu base de código con un subagente, llena los vacíos mediante preguntas de seguimiento y presenta una propuesta revisable antes de escribir cualquier archivo. La variable solo cambia cómo se ejecuta `/init`, así que puedes dejarla configurada.

86</Tip>86</Tip>

87 87 

88<h3 id="write-effective-instructions">88<h3 id="write-effective-instructions">

89 Escriba instrucciones efectivas89 Escribe instrucciones efectivas

90</h3>90</h3>

91 91 

92Claude trata los archivos CLAUDE.md como contexto, no como configuración forzada, por lo que la forma en que escribe las instrucciones afecta la confiabilidad con la que Claude las sigue. Escriba instrucciones que sean lo suficientemente concretas para verificar:92Claude trata los archivos CLAUDE.md como contexto, no como configuración forzada, por lo que la forma en que escribes las instrucciones afecta la confiabilidad con la que Claude las sigue. Escribe instrucciones lo suficientemente concretas para poder verificarlas:

93 93 

94* "Usar indentación de 2 espacios" en lugar de "Formatear código correctamente"94* "Usar indentación de 2 espacios" en lugar de "Formatear código correctamente"

95* "Ejecutar `npm test` antes de hacer commit" en lugar de "Probar sus cambios"95* "Ejecutar `npm test` antes de hacer commit" en lugar de "Probar tus cambios"

96* "Los controladores de API viven en `src/api/handlers/`" en lugar de "Mantener los archivos organizados"96* "Los controladores de API viven en `src/api/handlers/`" en lugar de "Mantener los archivos organizados"

97 97 

98Mantenga sus archivos cortos, organizados y consistentes:98Mantén tus archivos cortos, organizados y consistentes:

99 99 

100* **Tamaño**: apunte a menos de 200 líneas por archivo CLAUDE.md. Los archivos más largos consumen más contexto y reducen la adherencia. Mueva las instrucciones que importan solo para parte de la base de código a [reglas con alcance de ruta](#path-specific-rules), que se cargan solo cuando Claude trabaja con archivos coincidentes. Las [importaciones](#import-additional-files) le ayudan a organizar un archivo largo pero no reducen su costo de contexto, porque los archivos importados también se cargan al iniciar.100* **Tamaño**: apunta a menos de 200 líneas por archivo CLAUDE.md. Los archivos más largos consumen más contexto y reducen la adherencia. Mueve las instrucciones que importan solo para parte de la base de código a [reglas con alcance de ruta](#path-specific-rules), que se cargan solo cuando Claude trabaja con archivos coincidentes. Las [importaciones](#import-additional-files) te ayudan a organizar un archivo largo pero no reducen su costo de contexto, porque los archivos importados también se cargan al iniciar.

101* **Estructura**: agrupe las instrucciones relacionadas bajo encabezados y viñetas markdown. Las secciones organizadas son más fáciles de seguir para Claude que los párrafos densos.101* **Estructura**: agrupa las instrucciones relacionadas bajo encabezados y viñetas markdown. Las secciones organizadas son más fáciles de seguir para Claude que los párrafos densos.

102* **Consistencia**: si dos instrucciones se contradicen entre sí, Claude puede elegir una arbitrariamente. Revise sus archivos CLAUDE.md, archivos CLAUDE.md anidados en subdirectorios y [`.claude/rules/`](#organize-rules-with-claude/rules/) periódicamente para eliminar instrucciones obsoletas o conflictivas. Para que Claude las encuentre por usted, [ejecute una auditoría de solicitud](#audit-your-instruction-files).102* **Consistencia**: si dos instrucciones se contradicen entre sí, Claude puede elegir una arbitrariamente. Revisa periódicamente tus archivos CLAUDE.md, los archivos CLAUDE.md anidados en subdirectorios y [`.claude/rules/`](#organize-rules-with-claude/rules/) para eliminar instrucciones obsoletas o conflictivas. Para que Claude las encuentre por ti, [ejecuta una auditoría de prompts](#audit-your-instruction-files).

103 103 

104<h4 id="audit-your-instruction-files">104<h4 id="audit-your-instruction-files">

105 Audite sus archivos de instrucciones105 Audita tus archivos de instrucciones

106</h4>106</h4>

107 107 

108Para que Claude verifique sus archivos de instrucciones en busca de contenido obsoleto o conflictivo, ejecute `/doctor prompt-audit` en una sesión. Claude busca problemas como instrucciones escritas para modelos más antiguos, referencias a archivos o comandos que no existen y archivos que se contradicen entre sí. Obtiene un informe de hallazgos con ediciones propuestas, y nada en sus archivos cambia hasta que le pida a Claude que las aplique.108Para que Claude revise tus archivos de instrucciones en busca de contenido obsoleto o conflictivo, ejecuta `/doctor prompt-audit` en una sesión. Claude busca problemas como instrucciones escritas para modelos más antiguos, referencias a archivos o comandos que no existen y archivos que se contradicen entre sí. Obtienes un informe de hallazgos con ediciones propuestas, y nada en tus archivos cambia hasta que le pidas a Claude que las aplique.

109 109 

110De forma predeterminada, la auditoría cubre sus archivos CLAUDE.md, CLAUDE.local.md y AGENTS.md, más las reglas, skills, comandos, subagentes y estilos de salida bajo `.claude/` y `~/.claude/`. Para auditar un archivo o directorio en su lugar, pase su ruta, por ejemplo `/doctor prompt-audit .claude/skills/deploy`.110De forma predeterminada, la auditoría cubre tus archivos CLAUDE.md, CLAUDE.local.md y AGENTS.md, además de las reglas, skills, comandos, subagentes y estilos de salida bajo `.claude/` y `~/.claude/`. Para auditar un solo archivo o directorio en su lugar, pasa su ruta, por ejemplo `/doctor prompt-audit .claude/skills/deploy`.

111 111 

112La auditoría se ejecuta a través del skill `/claude-api` incluido. No está disponible mientras ese skill está desactivado en [`skillOverrides`](/docs/es/skills#override-skill-visibility-from-settings) o con [`disableBundledSkills`](/docs/es/settings-reference#disablebundledskills). `/doctor prompt-audit` requiere Claude Code v2.1.283 o posterior.112La auditoría se ejecuta a través del skill incluido `/claude-api`. No está disponible mientras ese skill esté desactivado en [`skillOverrides`](/docs/es/skills#override-skill-visibility-from-settings) o con [`disableBundledSkills`](/docs/es/settings-reference#disablebundledskills). `/doctor prompt-audit` requiere Claude Code v2.1.283 o posterior.

113 113 

114<h3 id="import-additional-files">114<h3 id="import-additional-files">

115 Importe archivos adicionales115 Importa archivos adicionales

116</h3>116</h3>

117 117 

118Los archivos CLAUDE.md pueden importar archivos adicionales usando la sintaxis `@path/to/import`. Los archivos importados se expanden y se cargan en contexto al iniciar junto con el CLAUDE.md que los referencia.118Los archivos CLAUDE.md pueden importar archivos adicionales usando la sintaxis `@path/to/import`. Los archivos importados se expanden y se cargan en contexto al iniciar junto con el CLAUDE.md que los referencia.

119 119 

120Se permiten rutas relativas y absolutas. Las rutas relativas se resuelven en relación con el archivo que contiene la importación, no con el directorio de trabajo. Los archivos importados pueden importar recursivamente otros archivos, con una profundidad máxima de cuatro saltos.120Se permiten rutas relativas y absolutas. Las rutas relativas se resuelven en relación con el archivo que contiene la importación, no con el directorio de trabajo. Los archivos importados pueden importar recursivamente otros archivos, con una profundidad máxima de cuatro saltos.

121 121 

122Para importar un archivo cuya ruta contiene espacios, coloque una barra invertida antes de cada espacio. Sin las barras invertidas, la ruta termina en el primer espacio, incluso cuando la importación está en una línea por sí sola. Una ruta envuelta en comillas no se importa en absoluto, con o sin las barras invertidas. Esta importación carga un archivo desde una carpeta llamada `Design Docs`:122Para importar un archivo cuya ruta contiene espacios, coloca una barra invertida antes de cada espacio. Sin las barras invertidas, la ruta termina en el primer espacio, incluso cuando la importación está sola en una línea. Una ruta entre comillas no se importa en absoluto, con o sin las barras invertidas. Esta importación carga un archivo desde una carpeta llamada `Design Docs`:

123 123 

124```text theme={null}124```text theme={null}

125- API conventions @Design\ Docs/api-conventions.md125- API conventions @Design\ Docs/api-conventions.md

126```126```

127 127 

128El análisis de importación omite espacios de código Markdown y bloques de código delimitados. Para mencionar una ruta en su CLAUDE.md sin importarla, envuélvala en backticks: escribir `` `@README` `` mantiene el texto literal, mientras que `@README` fuera de backticks importa el archivo.128El análisis de importaciones omite los fragmentos de código en línea y los bloques de código delimitados de Markdown. Para mencionar una ruta en tu CLAUDE.md sin importarla, envuélvela en backticks: escribir `` `@README` `` mantiene el texto literal, mientras que `@README` fuera de backticks importa el archivo.

129 129 

130Para incluir un README, package.json y una guía de flujo de trabajo, haga referencia a ellos con la sintaxis `@` en cualquier lugar de su CLAUDE.md:130Para incluir un README, package.json y una guía de flujo de trabajo, haz referencia a ellos con la sintaxis `@` en cualquier lugar de tu CLAUDE.md:

131 131 

132```text theme={null}132```text theme={null}

133Consulte @README para obtener una descripción general del proyecto y @package.json para los comandos npm disponibles para este proyecto.133Consulta @README para obtener una descripción general del proyecto y @package.json para los comandos npm disponibles para este proyecto.

134 134 

135# Instrucciones adicionales135# Instrucciones adicionales

136- flujo de trabajo de git @docs/git-instructions.md136- flujo de trabajo de git @docs/git-instructions.md

137```137```

138 138 

139Para preferencias personales privadas por proyecto que no deben verificarse en el control de versiones, cree un `CLAUDE.local.md` en la raíz del proyecto. Se carga junto con `CLAUDE.md` y se trata de la misma manera. Agregue `CLAUDE.local.md` a su `.gitignore` para que no se confirme. Con `CLAUDE_CODE_NEW_INIT=1` configurado, ejecutar `/init` y elegir la opción personal lo hace por usted.139Para preferencias personales privadas por proyecto que no deben subirse al control de versiones, crea un `CLAUDE.local.md` en la raíz del proyecto. Se carga junto con `CLAUDE.md` y se trata de la misma manera. Agrega `CLAUDE.local.md` a tu `.gitignore` para que no se incluya en ningún commit. Con `CLAUDE_CODE_NEW_INIT=1` configurado, ejecutar `/init` y elegir la opción personal lo hace por ti.

140 140 

141Si trabaja en múltiples git worktrees del mismo repositorio, un `CLAUDE.local.md` ignorado por git solo existe en el worktree donde lo creó. Para compartir instrucciones personales entre worktrees, importe un archivo desde su directorio de inicio en su lugar:141Si trabajas en múltiples git worktrees del mismo repositorio, un `CLAUDE.local.md` ignorado por git solo existe en el worktree donde lo creaste. Para compartir instrucciones personales entre worktrees, importa en su lugar un archivo desde tu directorio home:

142 142 

143```text theme={null}143```text theme={null}

144# Preferencias individuales144# Preferencias individuales


146```146```

147 147 

148<Warning>148<Warning>

149 Una importación en un archivo de memoria a nivel de proyecto es externa cuando su ruta se resuelve fuera de su directorio de trabajo, como la importación del directorio de inicio anterior. La primera vez que Claude Code encuentra importaciones externas en un proyecto, muestra un diálogo de aprobación que enumera los archivos. Si rechaza, las importaciones permanecen deshabilitadas y el diálogo no aparece nuevamente.149 Una importación en un archivo de memoria a nivel de proyecto es externa cuando su ruta se resuelve fuera de tu directorio de trabajo, como la importación desde el directorio home anterior. La primera vez que Claude Code encuentra importaciones externas en un proyecto, muestra un diálogo de aprobación que enumera los archivos. Si lo rechazas, las importaciones permanecen deshabilitadas y el diálogo no vuelve a aparecer.

150 150 

151 Claude Code muestra el diálogo para protegerlo de archivos que otras personas confirmen en un proyecto compartido. Los archivos de memoria con alcance de usuario, como `~/.claude/CLAUDE.md` y `~/.claude/rules/`, son archivos que usted escribió. Excepto en sesiones de [Cowork](https://claude.com/product/cowork) en su escritorio, Claude Code carga sus importaciones sin el diálogo y las confía como el resto de su configuración personal.151 Claude Code muestra el diálogo para protegerte de archivos que otras personas suben a un proyecto compartido. Los archivos de memoria con alcance de usuario, como `~/.claude/CLAUDE.md` y `~/.claude/rules/`, son archivos que escribiste tú mismo. Excepto en sesiones de [Cowork](https://claude.com/product/cowork) en tu escritorio, Claude Code carga sus importaciones sin el diálogo y confía en ellas como en el resto de tu configuración personal.

152 152 

153 En sesiones de Cowork en su escritorio, Claude Code omite cualquier importación en un archivo con alcance de usuario que se resuelva a una ruta fuera del directorio de trabajo de la sesión y carga el resto del archivo. En esas sesiones también omite un `~/.claude/CLAUDE.md` que es en sí mismo un enlace simbólico o un enlace duro, y un directorio `~/.claude/rules/` enlazado simbólicamente o un archivo de regla que apunta fuera del directorio de trabajo.153 En sesiones de Cowork en tu escritorio, Claude Code omite cualquier importación en un archivo con alcance de usuario que se resuelva a una ruta fuera del directorio de trabajo de la sesión y carga el resto del archivo. En esas sesiones también omite un `~/.claude/CLAUDE.md` que sea en sí mismo un enlace simbólico o un enlace duro, y un directorio `~/.claude/rules/` o archivo de regla enlazado simbólicamente que apunte fuera del directorio de trabajo.

154</Warning>154</Warning>

155 155 

156<h3 id="how-claude-md-files-load">156<h3 id="how-claude-md-files-load">

157 Cómo se cargan los archivos CLAUDE.md157 Cómo se cargan los archivos CLAUDE.md

158</h3>158</h3>

159 159 

160Claude Code carga `CLAUDE.md` y `CLAUDE.local.md` desde su directorio de trabajo actual y cada directorio por encima de él. Ejecute Claude Code en `foo/bar/` y cargará instrucciones desde `foo/bar/CLAUDE.md`, `foo/CLAUDE.md` y cualquier archivo `CLAUDE.local.md` junto a ellos.160Claude Code carga `CLAUDE.md` y `CLAUDE.local.md` desde tu directorio de trabajo actual y cada directorio por encima de él. Si ejecutas Claude Code en `foo/bar/`, carga instrucciones desde `foo/bar/CLAUDE.md`, `foo/CLAUDE.md` y cualquier archivo `CLAUDE.local.md` junto a ellos.

161 161 

162Todos los archivos descubiertos se concatenan en contexto en lugar de anularse entre sí. En el árbol de directorios, el contenido se ordena desde la raíz del sistema de archivos hasta su directorio de trabajo. Para el ejemplo `foo/bar/`, `foo/CLAUDE.md` aparece en contexto antes de `foo/bar/CLAUDE.md`, por lo que las instrucciones más cercanas a donde lanzó Claude se leen al final. Dentro de cada directorio, `CLAUDE.local.md` se añade después de `CLAUDE.md`, por lo que sus notas personales son lo último que Claude lee en ese nivel.162Todos los archivos descubiertos se concatenan en contexto en lugar de sobrescribirse entre sí. A lo largo del árbol de directorios, el contenido se ordena desde la raíz del sistema de archivos hasta tu directorio de trabajo. En el ejemplo de `foo/bar/`, `foo/CLAUDE.md` aparece en contexto antes que `foo/bar/CLAUDE.md`, por lo que las instrucciones más cercanas a donde iniciaste Claude se leen al final. Dentro de cada directorio, `CLAUDE.local.md` se añade después de `CLAUDE.md`, por lo que tus notas personales son lo último que Claude lee en ese nivel.

163 163 

164Claude también descubre archivos `CLAUDE.md` y `CLAUDE.local.md` en subdirectorios bajo su directorio de trabajo actual. En lugar de cargarlos al iniciar, se incluyen cuando Claude lee archivos en esos subdirectorios.164Claude también descubre archivos `CLAUDE.md` y `CLAUDE.local.md` en subdirectorios bajo tu directorio de trabajo actual. En lugar de cargarse al iniciar, se incluyen cuando Claude lee archivos en esos subdirectorios. Para archivos dentro de un worktree bajo `.claude/worktrees/`, consulta [Aislar subagentes con worktrees](/docs/es/worktrees#isolate-subagents-with-worktrees).

165 165 

166Si trabaja en un monorepo grande donde se recogen archivos CLAUDE.md de otros equipos, use [`claudeMdExcludes`](#exclude-specific-claude-md-files) para omitirlos. Para el diseño completo de archivos CLAUDE.md raíz y por directorio y reglas, consulte [Monorepos y repositorios grandes](/docs/es/large-codebases).166Si trabajas en un monorepo grande donde se recogen archivos CLAUDE.md de otros equipos, usa [`claudeMdExcludes`](#exclude-specific-claude-md-files) para omitirlos. Para ver la estructura completa de archivos CLAUDE.md raíz y por directorio y de las reglas, consulta [Monorepos y repositorios grandes](/docs/es/large-codebases).

167 167 

168Los comentarios HTML a nivel de bloque (`<!-- maintainer notes -->`) en archivos CLAUDE.md se eliminan antes de que el contenido se inyecte en el contexto de Claude. Úselos para dejar notas para los mantenedores humanos sin gastar tokens de contexto en ellas. Los comentarios dentro de bloques de código se conservan. Cuando abre un archivo CLAUDE.md directamente con la herramienta Read, los comentarios permanecen visibles.168Los comentarios HTML a nivel de bloque (`<!-- maintainer notes -->`) en archivos CLAUDE.md se eliminan antes de que el contenido se inyecte en el contexto de Claude. Úsalos para dejar notas a los mantenedores humanos sin gastar tokens de contexto en ellas. Los comentarios dentro de bloques de código se conservan. Cuando abres un archivo CLAUDE.md directamente con la herramienta Read, los comentarios siguen visibles.

169 169 

170<h4 id="load-from-additional-directories">170<h4 id="load-from-additional-directories">

171 Cargue desde directorios adicionales171 Carga desde directorios adicionales

172</h4>172</h4>

173 173 

174La bandera `--add-dir` proporciona a Claude acceso a directorios adicionales fuera de su directorio de trabajo principal. De forma predeterminada, los archivos CLAUDE.md de estos directorios no se cargan.174El flag `--add-dir` le da a Claude acceso a directorios adicionales fuera de tu directorio de trabajo principal. De forma predeterminada, los archivos CLAUDE.md de estos directorios no se cargan.

175 175 

176Para cargar también archivos de memoria desde directorios adicionales, configure la variable de entorno `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD`:176Para cargar también archivos de memoria desde directorios adicionales, establece la variable de entorno `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD`:

177 177 

178```bash theme={null}178```bash theme={null}

179CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared-config179CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared-config

180```180```

181 181 

182La forma en línea configura la variable para ese único lanzamiento en Bash o Zsh. Para mantenerla activada para cada sesión, agréguela al bloque `env` en `~/.claude/settings.json` como se muestra en [Establecer variables de entorno](/docs/es/env-vars#set-environment-variables).182La forma en línea establece la variable solo para ese inicio en Bash o Zsh. Para mantenerla activada en cada sesión, agrégala al bloque `env` en `~/.claude/settings.json` como se muestra en [Establecer variables de entorno](/docs/es/env-vars#set-environment-variables).

183 183 

184Esto carga `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md` y `CLAUDE.local.md` desde el directorio adicional. `CLAUDE.local.md` se omite si excluye `local` de [`--setting-sources`](/docs/es/cli-reference).184Esto carga `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md` y `CLAUDE.local.md` desde el directorio adicional. `CLAUDE.local.md` se omite si excluyes `local` de [`--setting-sources`](/docs/es/cli-reference).

185 185 

186<h3 id="organize-rules-with-claude/rules/">186<h3 id="organize-rules-with-claude/rules/">

187 Organice reglas con `.claude/rules/`187 Organiza reglas con `.claude/rules/`

188</h3>188</h3>

189 189 

190Para proyectos más grandes, puede organizar instrucciones en múltiples archivos usando el directorio `.claude/rules/`. Esto mantiene las instrucciones modulares y más fáciles de mantener para los equipos. Las reglas también pueden ser [limitadas a rutas de archivo específicas](#path-specific-rules), por lo que solo se cargan en contexto cuando Claude trabaja con archivos coincidentes, reduciendo el ruido y ahorrando espacio de contexto.190Para proyectos más grandes, puedes organizar las instrucciones en múltiples archivos usando el directorio `.claude/rules/`. Esto mantiene las instrucciones modulares y más fáciles de mantener para los equipos. Las reglas también pueden [limitarse a rutas de archivo específicas](#path-specific-rules), de modo que solo se cargan en contexto cuando Claude trabaja con archivos coincidentes, lo que reduce el ruido y ahorra espacio de contexto.

191 191 

192<Note>192<Note>

193 Las reglas se cargan en contexto cada sesión o cuando se abren archivos coincidentes. Para instrucciones específicas de tareas que no necesitan estar en contexto todo el tiempo, use [skills](/docs/es/skills) en su lugar, que solo se cargan cuando las invoca o cuando Claude determina que son relevantes para su solicitud.193 Las reglas se cargan en contexto en cada sesión o cuando se abren archivos coincidentes. Para instrucciones específicas de tareas que no necesitan estar en contexto todo el tiempo, usa [skills](/docs/es/skills) en su lugar, que solo se cargan cuando los invocas o cuando Claude determina que son relevantes para tu prompt.

194</Note>194</Note>

195 195 

196<h4 id="set-up-rules">196<h4 id="set-up-rules">

197 Configure reglas197 Configura reglas

198</h4>198</h4>

199 199 

200Coloque archivos markdown en el directorio `.claude/rules/` de su proyecto. Cada archivo debe cubrir un tema, con un nombre de archivo descriptivo como `testing.md` o `api-design.md`. Todos los archivos `.md` se descubren recursivamente, por lo que puede organizar reglas en subdirectorios como `frontend/` o `backend/`:200Coloca archivos markdown en el directorio `.claude/rules/` de tu proyecto. Cada archivo debe cubrir un tema, con un nombre de archivo descriptivo como `testing.md` o `api-design.md`. Todos los archivos `.md` se descubren recursivamente, por lo que puedes organizar las reglas en subdirectorios como `frontend/` o `backend/`:

201 201 

202```text theme={null}202```text theme={null}

203your-project/203your-project/


211 211 

212Las reglas sin [frontmatter `paths`](#path-specific-rules) se cargan al iniciar con la misma prioridad que `.claude/CLAUDE.md`.212Las reglas sin [frontmatter `paths`](#path-specific-rules) se cargan al iniciar con la misma prioridad que `.claude/CLAUDE.md`.

213 213 

214Las reglas de proyecto se omiten si excluye `project` de [`--setting-sources`](/docs/es/cli-reference). Antes de v2.1.211, las reglas que se cargan bajo demanda, incluidas las reglas con alcance de ruta y las reglas en directorios `.claude/rules/` anidados, se cargaban incluso cuando `project` estaba excluido.214Las reglas de proyecto se omiten si excluyes `project` de [`--setting-sources`](/docs/es/cli-reference). Antes de v2.1.211, las reglas que se cargan bajo demanda, incluidas las reglas con alcance de ruta y las reglas en directorios `.claude/rules/` anidados, se cargaban incluso cuando `project` estaba excluido.

215 215 

216<h4 id="path-specific-rules">216<h4 id="path-specific-rules">

217 Reglas específicas de ruta217 Reglas específicas de ruta


227 227 

228# Reglas de desarrollo de API228# Reglas de desarrollo de API

229 229 

230- Todos los puntos finales de API deben incluir validación de entrada230- Todos los endpoints de API deben incluir validación de entrada

231- Usar el formato de respuesta de error estándar231- Usar el formato de respuesta de error estándar

232- Incluir comentarios de documentación OpenAPI232- Incluir comentarios de documentación OpenAPI

233```233```

234 234 

235Las reglas sin un campo `paths` se cargan incondicionalmente y se aplican a todos los archivos. Las reglas con alcance de ruta se activan cuando Claude lee archivos que coinciden con el patrón, no en cada uso de herramienta. A partir de v2.1.198, la coincidencia también funciona cuando Claude alcanza un archivo a través de una ruta enlazada simbólicamente al directorio del proyecto, por ejemplo en un checkout enlazado simbólicamente.235Las reglas sin un campo `paths` se cargan incondicionalmente y se aplican a todos los archivos. Las reglas con alcance de ruta se activan cuando Claude lee archivos que coinciden con el patrón, no en cada uso de herramienta. La coincidencia también funciona cuando Claude llega a un archivo a través de una ruta enlazada simbólicamente al directorio del proyecto, por ejemplo en un checkout enlazado simbólicamente.

236 236 

237Use patrones glob en el campo `paths` para hacer coincidir archivos por extensión, directorio o cualquier combinación:237Usa patrones glob en el campo `paths` para hacer coincidir archivos por extensión, directorio o cualquier combinación:

238 238 

239| Patrón | Coincide |239| Patrón | Coincide con |

240| - | - |240| - | - |

241| `**/*.ts` | Todos los archivos TypeScript en cualquier directorio |241| `**/*.ts` | Todos los archivos TypeScript en cualquier directorio |

242| `src/**/*` | Todos los archivos bajo el directorio `src/` |242| `src/**/*` | Todos los archivos bajo el directorio `src/` |

243| `*.md` | Archivos Markdown en la raíz del proyecto |243| `*.md` | Archivos Markdown en la raíz del proyecto |

244| `src/components/*.tsx` | Componentes React en un directorio específico |244| `src/components/*.tsx` | Componentes React en un directorio específico |

245 245 

246Puede especificar múltiples patrones y usar expansión de llaves para hacer coincidir múltiples extensiones en un patrón:246Puedes especificar múltiples patrones y usar expansión de llaves para hacer coincidir múltiples extensiones en un solo patrón:

247 247 

248```markdown theme={null}248```markdown theme={null}

249---249---


254---254---

255```255```

256 256 

257Cada 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, la lista `paths` completa de una regla comparte un presupuesto de 1.000 patrones expandidos y 4 MiB, y los patrones sin llaves no cuentan contra él.257Cada 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.

258 258 

259Claude Code usa cualquier patrón que excedería el presupuesto sin expandir, 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.259Claude 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.

260 260 

261La 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 una expresión de corchetes, como `photos [2024/**`, es inválido: no coincide con nada, y los otros patrones de la regla siguen funcionando. Para hacer coincidir un `[` literal en un nombre de archivo, escápelo como `photos \[2024/**`. Antes de v2.1.207, un patrón inválido hacía que la herramienta Read fallara para cada archivo contra el cual se evaluaba la regla, en lugar de no coincidir con nada.261La 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/**`. Antes de v2.1.207, un patrón inválido hacía que la herramienta Read fallara para cada archivo contra el que se evaluaba la regla, en lugar de no coincidir con nada.

262 262 

263<h4 id="rules-frontmatter-reference">263<h4 id="rules-frontmatter-reference">

264 Referencia de frontmatter de reglas264 Referencia de frontmatter de reglas

265</h4>265</h4>

266 266 

267Configure una regla con [frontmatter](/docs/es/glossary#frontmatter) YAML entre marcadores `---` en la parte superior del archivo. `paths` es el único campo que Claude Code lee de una regla; cualquier otro campo se ignora sin un error. Claude Code elimina el frontmatter antes de cargar la regla en contexto.267Configura una regla con [frontmatter](/docs/es/glossary#frontmatter) YAML entre marcadores `---` en la parte superior del archivo. `paths` es el único campo que Claude Code lee de una regla; cualquier otro campo se ignora sin error. Claude Code elimina el frontmatter antes de cargar la regla en contexto.

268 268 

269| Campo | Requerido | Descripción |269| Campo | Requerido | Descripción |

270| :- | :- | :- |270| :- | :- | :- |

271| `paths` | No | Patrones glob que [limitan la regla a archivos coincidentes](#path-specific-rules). Acepta una lista YAML o una cadena separada por comas |271| `paths` | No | Patrones glob que [limitan la regla a los archivos coincidentes](#path-specific-rules). Acepta una lista YAML o una cadena separada por comas |

272 272 

273Si el YAML entre los marcadores no se analiza, Claude Code ignora el frontmatter y carga la regla como si no tuviera `paths`. Ejecute `claude --debug` para ver el error de análisis.273Si el YAML entre los marcadores no se puede analizar, Claude Code ignora el frontmatter y carga la regla como si no tuviera `paths`. Ejecuta `claude --debug` para ver el error de análisis.

274 274 

275<h4 id="share-rules-across-projects-with-symlinks">275<h4 id="share-rules-across-projects-with-symlinks">

276 Comparta reglas entre proyectos con enlaces simbólicos276 Comparte reglas entre proyectos con enlaces simbólicos

277</h4>277</h4>

278 278 

279El directorio `.claude/rules/` admite enlaces simbólicos, por lo que puede mantener un conjunto compartido de reglas y vincularlas en múltiples proyectos. Los enlaces simbólicos circulares se detectan y se manejan correctamente.279El directorio `.claude/rules/` admite enlaces simbólicos, por lo que puedes mantener un conjunto compartido de reglas y enlazarlas en múltiples proyectos. Los enlaces simbólicos circulares se detectan y se manejan correctamente.

280 280 

281Claude Code trata un enlace simbólico cuyo destino está fuera de su directorio de trabajo como una [importación externa](#import-additional-files). Las reglas vinculadas no se cargan hasta que apruebe importaciones externas para el proyecto, y después de eso solo se cargan las que no tienen un [campo `paths`](#path-specific-rules). Claude Code solo solicita esa aprobación cuando un archivo de memoria de proyecto importa un archivo fuera del directorio de trabajo con `@path`, no para enlaces simbólicos solos. Para cargar reglas compartidas sin esa aprobación, manténgalas en [`~/.claude/rules/`](#user-level-rules), donde se aplican a cada proyecto en su máquina.281Claude Code trata un enlace simbólico cuyo destino está fuera de tu directorio de trabajo como una [importación externa](#import-additional-files). Las reglas enlazadas no se cargan hasta que apruebes las importaciones externas para el proyecto, y después de eso solo se cargan las que no tienen un [campo `paths`](#path-specific-rules). Claude Code solo solicita esa aprobación cuando un archivo de memoria de proyecto importa con `@path` un archivo fuera del directorio de trabajo, no por los enlaces simbólicos por sí solos. Para cargar reglas compartidas sin esa aprobación, mantenlas en [`~/.claude/rules/`](#user-level-rules), donde se aplican a cada proyecto en tu máquina.

282 282 

283Este ejemplo vincula tanto un directorio compartido como un archivo individual:283Este ejemplo enlaza tanto un directorio compartido como un archivo individual:

284 284 

285```bash theme={null}285```bash theme={null}

286ln -s ~/shared-claude-rules .claude/rules/shared286ln -s ~/shared-claude-rules .claude/rules/shared

287ln -s ~/company-standards/security.md .claude/rules/security.md287ln -s ~/company-standards/security.md .claude/rules/security.md

288```288```

289 289 

290Si apunta un enlace simbólico `.claude/rules/` o `CLAUDE.md` a una ruta de red como el recurso compartido UNC `\\server\share` o una ruta bajo `/net` o `/Network`, las instrucciones vinculadas no se cargan. Claude Code no sigue el enlace, porque buscar tal ruta puede contactar al host que nombra. Las rutas `\\wsl$` no cuentan como rutas de red.290Si apuntas un enlace simbólico de `.claude/rules/` o `CLAUDE.md` a una ruta de red, como el recurso compartido UNC `\\server\share` o una ruta bajo `/net` o `/Network`, las instrucciones enlazadas no se cargan. Claude Code no sigue el enlace, porque buscar una ruta así puede contactar al host que nombra. Las rutas `\\wsl$` no cuentan como rutas de red.

291 291 

292<h4 id="user-level-rules">292<h4 id="user-level-rules">

293 Reglas a nivel de usuario293 Reglas a nivel de usuario

294</h4>294</h4>

295 295 

296Las reglas personales en `~/.claude/rules/` se aplican a cada proyecto en su máquina. Úselas para preferencias que no son específicas del proyecto:296Las reglas personales en `~/.claude/rules/` se aplican a cada proyecto en tu máquina. Úsalas para preferencias que no son específicas de un proyecto:

297 297 

298```text theme={null}298```text theme={null}

299~/.claude/rules/299~/.claude/rules/

300├── preferences.md # Sus preferencias personales de codificación300├── preferences.md # Tus preferencias personales de codificación

301└── workflows.md # Sus flujos de trabajo preferidos301└── workflows.md # Tus flujos de trabajo preferidos

302```302```

303 303 

304Claude Code carga reglas a nivel de usuario antes que reglas de proyecto, por lo que una regla de proyecto aparece más tarde en el contexto de Claude que una regla de usuario. Ninguno de los dos conjuntos anula al otro: si una regla de usuario y una regla de proyecto entran en conflicto, Claude puede seguir cualquiera de ellas, por lo que mantenga los dos consistentes.304Claude Code carga las reglas a nivel de usuario antes que las reglas de proyecto, por lo que una regla de proyecto aparece más tarde en el contexto de Claude que una regla de usuario. Ningún conjunto sobrescribe al otro: si una regla de usuario y una regla de proyecto entran en conflicto, Claude puede seguir cualquiera de las dos, así que mantén ambas consistentes.

305 305 

306<h3 id="manage-claude-md-for-large-teams">306<h3 id="manage-claude-md-for-large-teams">

307 Administre CLAUDE.md para equipos grandes307 Administra CLAUDE.md para equipos grandes

308</h3>308</h3>

309 309 

310Para organizaciones que implementan Claude Code en equipos, puede centralizar instrucciones y controlar qué archivos CLAUDE.md se cargan.310Para organizaciones que implementan Claude Code en varios equipos, puedes centralizar las instrucciones y controlar qué archivos CLAUDE.md se cargan.

311 311 

312<h4 id="deploy-organization-wide-claude-md">312<h4 id="deploy-organization-wide-claude-md">

313 Implemente CLAUDE.md en toda la organización313 Implementa un CLAUDE.md para toda la organización

314</h4>314</h4>

315 315 

316Las organizaciones pueden implementar un CLAUDE.md administrado centralmente que se aplique a todos los usuarios en una máquina. Este archivo no puede ser excluido por configuraciones individuales.316Las organizaciones pueden implementar un CLAUDE.md administrado centralmente que se aplique a todos los usuarios de una máquina. Este archivo no puede excluirse mediante la configuración individual.

317 317 

318<Steps>318<Steps>

319 <Step title="Cree el archivo en la ubicación de política administrada">319 <Step title="Crea el archivo en la ubicación de política administrada">

320 * macOS: `/Library/Application Support/ClaudeCode/CLAUDE.md`320 * macOS: `/Library/Application Support/ClaudeCode/CLAUDE.md`

321 * Linux y WSL: `/etc/claude-code/CLAUDE.md`321 * Linux y WSL: `/etc/claude-code/CLAUDE.md`

322 * Windows: `C:\Program Files\ClaudeCode\CLAUDE.md`322 * Windows: `C:\Program Files\ClaudeCode\CLAUDE.md`

323 </Step>323 </Step>

324 324 

325 <Step title="Implemente con su sistema de gestión de configuración">325 <Step title="Impleméntalo con tu sistema de gestión de configuración">

326 Use MDM, Group Policy, Ansible o herramientas similares para distribuir el archivo en máquinas de desarrolladores. Consulte [configuración administrada](/docs/es/managed-settings) para otras opciones de configuración de toda la organización.326 Usa MDM, Group Policy, Ansible o herramientas similares para distribuir el archivo en las máquinas de los desarrolladores. Consulta [configuración administrada](/docs/es/managed-settings) para conocer otras opciones de configuración para toda la organización.

327 </Step>327 </Step>

328</Steps>328</Steps>

329 329 

330La clave `claudeMd` le permite poner contenido CLAUDE.md administrado directamente dentro de `managed-settings.json` en lugar de implementar un archivo separado.330La clave `claudeMd` te permite poner contenido de CLAUDE.md administrado directamente dentro de `managed-settings.json` en lugar de implementar un archivo separado.

331 331 

332**Alcance**: cada sesión de Claude Code en la máquina, en cada repositorio. Para orientación específica del repositorio, confirme un CLAUDE.md de proyecto en su lugar.332**Alcance**: cada sesión de Claude Code en la máquina, en cada repositorio. Para orientación específica de un repositorio, haz commit de un CLAUDE.md de proyecto en su lugar.

333 333 

334**Precedencia**: igual que un archivo CLAUDE.md administrado. Se carga antes que CLAUDE.md de usuario y proyecto.334**Precedencia**: la misma que un archivo CLAUDE.md administrado. Se carga antes que los CLAUDE.md de usuario y de proyecto.

335 335 

336**Dónde se respeta**: solo configuración administrada y de política. Configurar `claudeMd` en configuración de usuario, proyecto o local no tiene efecto.336**Dónde se respeta**: solo en la configuración administrada y de política. Establecer `claudeMd` en la configuración de usuario, de proyecto o local no tiene efecto.

337 337 

338El ejemplo a continuación agrega instrucciones de comportamiento directamente en un archivo de configuración administrada:338El ejemplo a continuación agrega instrucciones de comportamiento directamente en un archivo de configuración administrada:

339 339 


343}343}

344```344```

345 345 

346Un CLAUDE.md administrado y [configuración administrada](/docs/es/managed-settings) sirven para propósitos diferentes. Use configuración para aplicación técnica y CLAUDE.md para orientación de comportamiento:346Un CLAUDE.md administrado y la [configuración administrada](/docs/es/managed-settings) sirven para propósitos diferentes. Usa la configuración para la aplicación técnica y CLAUDE.md para la orientación de comportamiento:

347 347 

348| Preocupación | Configurar en |348| Aspecto | Configurar en |

349| :- | :- |349| :- | :- |

350| Bloquear herramientas, comandos o rutas de archivo específicas | Configuración administrada: `permissions.deny` |350| Bloquear herramientas, comandos o rutas de archivo específicos | Configuración administrada: `permissions.deny` |

351| Aplicar aislamiento de sandbox | Configuración administrada: `sandbox.enabled` |351| Aplicar el aislamiento del sandbox | Configuración administrada: `sandbox.enabled` |

352| Variables de entorno y enrutamiento de proveedores de API | Configuración administrada: `env` |352| Variables de entorno y enrutamiento de proveedores de API | Configuración administrada: `env` |

353| Método de inicio de sesión y restricciones de organización | Configuración administrada: `forceLoginMethod`, `forceLoginOrgUUID` |353| Método de inicio de sesión y restricciones de organización | Configuración administrada: `forceLoginMethod`, `forceLoginOrgUUID` |

354| Directrices de estilo de código y calidad | CLAUDE.md administrado |354| Directrices de estilo y calidad de código | CLAUDE.md administrado |

355| Recordatorios de manejo de datos y cumplimiento | CLAUDE.md administrado |355| Recordatorios de manejo de datos y cumplimiento | CLAUDE.md administrado |

356| Instrucciones de comportamiento para Claude | CLAUDE.md administrado |356| Instrucciones de comportamiento para Claude | CLAUDE.md administrado |

357 357 

358Las reglas de configuración se aplican por el cliente independientemente de lo que Claude decida hacer. Las instrucciones CLAUDE.md moldean el comportamiento de Claude pero no son una capa de aplicación forzada.358El cliente aplica las reglas de la configuración independientemente de lo que Claude decida hacer. Las instrucciones de CLAUDE.md moldean el comportamiento de Claude, pero no son una capa de aplicación estricta.

359 359 

360<h4 id="exclude-specific-claude-md-files">360<h4 id="exclude-specific-claude-md-files">

361 Excluya archivos CLAUDE.md específicos361 Excluye archivos CLAUDE.md específicos

362</h4>362</h4>

363 363 

364En monorepos grandes, los archivos CLAUDE.md ancestros pueden contener instrucciones que no son relevantes para su trabajo. La configuración `claudeMdExcludes` le permite omitir archivos específicos por ruta o patrón glob.364En monorepos grandes, los archivos CLAUDE.md de directorios superiores pueden contener instrucciones que no son relevantes para tu trabajo. El ajuste `claudeMdExcludes` te permite omitir archivos específicos por ruta o patrón glob.

365 365 

366Este ejemplo excluye un CLAUDE.md de nivel superior y un directorio de reglas de una carpeta principal. Agréguelo a `.claude/settings.local.json` para que la exclusión permanezca local en su máquina:366Este ejemplo excluye un CLAUDE.md de nivel superior y un directorio de reglas de una carpeta principal. Agrégalo a `.claude/settings.local.json` para que la exclusión se mantenga local en tu máquina:

367 367 

368```json theme={null}368```json theme={null}

369{369{


374}374}

375```375```

376 376 

377Los patrones se comparan contra rutas de archivo absolutas usando sintaxis glob. Puede configurar `claudeMdExcludes` en cualquier [capa de configuración](/docs/es/settings#where-settings-live): usuario, proyecto, local o política administrada. Los arreglos se fusionan entre capas.377Los patrones se comparan con rutas de archivo absolutas usando sintaxis glob. Puedes configurar `claudeMdExcludes` en cualquier [capa de configuración](/docs/es/settings#where-settings-live): usuario, proyecto, local o política administrada. Los arreglos se combinan entre capas.

378 378 

379Para excluir un archivo de reglas que alcanza a través de un [enlace simbólico](#share-rules-across-projects-with-symlinks), ya sea que el archivo o su directorio sea el enlace, escriba el patrón contra cualquiera de las rutas: la ruta del archivo bajo `.claude/rules/` o su destino de enlace. Un patrón que coincida con cualquiera de las rutas excluye el archivo. Antes de v2.1.239, solo un patrón que coincidiera con el destino del enlace excluía el archivo.379Para excluir un archivo de reglas al que llegas a través de un [enlace simbólico](#share-rules-across-projects-with-symlinks), ya sea que el enlace sea el archivo o su directorio, escribe el patrón contra cualquiera de las dos rutas: la ruta del archivo bajo `.claude/rules/` o el destino del enlace. Un patrón que coincida con cualquiera de las dos rutas excluye el archivo. Antes de v2.1.239, solo un patrón que coincidiera con el destino del enlace excluía el archivo.

380 380 

381Los archivos CLAUDE.md de política administrada no pueden ser excluidos. Esto asegura que las instrucciones de toda la organización siempre se apliquen independientemente de la configuración individual.381Los archivos CLAUDE.md de política administrada no pueden excluirse. Esto garantiza que las instrucciones de toda la organización siempre se apliquen, independientemente de la configuración individual.

382 382 

383<h2 id="agents-md">383<h2 id="agents-md">

384 AGENTS.md384 AGENTS.md


538 Habilitar o deshabilitar auto memory538 Habilitar o deshabilitar auto memory

539</h3>539</h3>

540 540 

541Auto memory está habilitado de forma predeterminada. Para alternarlo, abra `/memory` en una sesión y use el botón de alternancia de auto memory, que guarda `autoMemoryEnabled` en la configuración de usuario en `~/.claude/settings.json`. Para desactivarlo en un único proyecto, establezca `autoMemoryEnabled` en la configuración de ese proyecto:541La memoria automática está habilitada de forma predeterminada en las sesiones locales. Fuera de las sesiones de [Claude Tag](https://claude.com/docs/claude-tag/overview), una sesión en un [entorno autoalojado](/docs/es/self-hosted-environments-configuration#how-each-session’s-config-is-assembled) se ejecuta con la memoria automática desactivada de forma predeterminada.

542 

543Para alternarla, abre `/memory` en una sesión y usa el botón de alternancia de la memoria automática, que guarda `autoMemoryEnabled` en tu configuración de usuario en `~/.claude/settings.json`. Para desactivarla en un único proyecto, establece `autoMemoryEnabled` en la configuración de ese proyecto:

542 544 

543```json theme={null}545```json theme={null}

544{546{

permissions.md +117 −115

Details

4 4 

5# Configurar permisos5# Configurar permisos

6 6 

7> Controle lo que Claude Code puede acceder y hacer con reglas de permisos granulares, modos y políticas administradas.7> Controla a qué puede acceder Claude Code y qué puede hacer con reglas de permisos granulares, modos y políticas administradas.

8 8 

9Claude Code admite permisos granulares para que pueda especificar exactamente qué puede hacer el agente y qué no puede hacer. La configuración de permisos se puede registrar en el control de versiones y distribuir a todos los desarrolladores de su organización, así como personalizarse por desarrolladores individuales.9Claude Code admite permisos granulares para que pueda especificar exactamente qué puede hacer el agente y qué no puede hacer. La configuración de permisos se puede registrar en el control de versiones y distribuir a todos los desarrolladores de su organización, así como personalizarse por desarrolladores individuales.

10 10 


230 Bash230 Bash

231</h3>231</h3>

232 232 

233Las reglas de Bash coinciden con el texto completo del comando, donde `*` representa cualquier texto. [Wildcard patterns](#wildcard-patterns) muestra qué comandos coinciden con cada forma de regla y dónde colocar el `*`. El resto de esta sección cubre cómo Claude Code coincide con comandos compuestos y envoltorios, qué no coincide una regla, comandos de solo lectura y redirecciones.233Las reglas de Bash coinciden con el texto completo del comando, donde `*` representa cualquier texto. [Patrones de comodín](#wildcard-patterns) muestra qué comandos coinciden con cada forma de regla y dónde colocar el `*`. El resto de esta sección cubre cómo Claude Code hace coincidir comandos compuestos y envoltorios, con qué no coincide una regla, los comandos de solo lectura y las redirecciones.

234 234 

235<h4 id="compound-commands">235<h4 id="compound-commands">

236 Comandos compuestos236 Comandos compuestos


240 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.240 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.

241</Tip>241</Tip>

242 242 

243Las 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 le solicita aprobación para `cd /tmp && git clean -f` o `echo "$(git clean -f)"`, incluso en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode).243Las 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](/docs/es/permission-modes#eliminate-prompts-with-auto-mode).

244 244 

245Cuando `&&` o `||` no tiene nada después, como en `npm test &&`, Claude Code trata el comando como no analizable y no lo divide en subcomandos para la coincidencia de reglas de permiso, por lo que una regla como `Bash(npm *)` no lo aprueba.245Cuando `&&` o `||` no tiene nada después, como en `npm test &&`, Claude Code trata el comando como no analizable y no lo divide en subcomandos para la coincidencia de reglas de permiso, por lo que una regla como `Bash(npm *)` no lo aprueba.

246 246 

247Cuando aprueba un comando compuesto con "Sí, y no vuelvas a preguntar", Claude Code guarda una regla separada para cada subcomando que requiere aprobación, en lugar de una única regla para la cadena completa. Por ejemplo, aprobar `git status && npm test` guarda una regla para `npm test`, por lo que las invocaciones futuras de `npm test` se reconocen independientemente de lo que preceda a `&&`. Los subcomandos como `cd` en un directorio fuera de sus directorios de trabajo generan su propia regla de lectura para esa ruta. Se pueden guardar hasta 5 reglas para un único comando compuesto.247Cuando apruebas un comando compuesto con "Sí, y no vuelvas a preguntar", Claude Code guarda una regla separada para cada subcomando que requiere aprobación, en lugar de una única regla para la cadena completa. Por ejemplo, aprobar `git status && npm test` guarda una regla para `npm test`, por lo que las invocaciones futuras de `npm test` se reconocen independientemente de lo que preceda a `&&`. Los subcomandos como `cd` a un directorio fuera de tus directorios de trabajo generan su propia regla de lectura para esa ruta. Se pueden guardar hasta 5 reglas para un único comando compuesto.

248 248 

249<h4 id="process-wrappers">249<h4 id="process-wrappers">

250 Envoltorios250 Envoltorios

251</h4>251</h4>

252 252 

253Antes de coincidir con las reglas de Bash, Claude Code elimina un conjunto fijo de envoltorios, por lo que una regla como `Bash(npm test *)` también coincide con `timeout 30 npm test`. Los envoltorios eliminados son `timeout`, `time`, `nice`, `nohup` y `stdbuf`, más los builtins de shell `command` y `builtin`, y `noglob` de zsh. Cada uno ejecuta su argumento como el comando real. Dos formas relacionadas no se eliminan: la forma de consulta `command -v`, que busca un comando en lugar de ejecutarlo, y `nocorrect` de zsh.253Antes de hacer coincidir las reglas de Bash, Claude Code elimina un conjunto fijo de envoltorios, por lo que una regla como `Bash(npm test *)` también coincide con `timeout 30 npm test`. Los envoltorios eliminados son `timeout`, `time`, `nice`, `nohup` y `stdbuf`, más los builtins de shell `command` y `builtin`, y `noglob` de zsh. Cada uno ejecuta su argumento como el comando real. Dos formas relacionadas no se eliminan: la forma de consulta `command -v`, que busca un comando en lugar de ejecutarlo, y `nocorrect` de zsh.

254 254 

255Claude Code también elimina una asignación inicial de ciertas variables de entorno conocidas como seguras, por lo que `Bash(npm test *)` coincide con `NODE_ENV=test npm test`. Una regla de permiso no coincidirá más allá de una asignación de cualquier otra variable. Una regla de negación o solicitud coincide más allá de cualquier asignación inicial, por lo que `Bash(rm *)` en negación aún coincide con `FOO=bar rm -rf tmp/`.255Claude Code también elimina una asignación inicial de ciertas variables de entorno conocidas como seguras, por lo que `Bash(npm test *)` coincide con `NODE_ENV=test npm test`. Una regla de permiso no coincidirá más allá de una asignación de cualquier otra variable. Una regla de negación o solicitud coincide más allá de cualquier asignación inicial, por lo que `Bash(rm *)` en negación aún coincide con `FOO=bar rm -rf tmp/`.

256 256 

257`xargs` desnudo también se elimina, por lo que `Bash(grep *)` coincide con `xargs grep pattern`. La eliminación se aplica solo cuando `xargs` no tiene banderas: una invocación como `xargs -n1 grep pattern` se coincide como un comando `xargs`, por lo que las reglas escritas para el comando interno no la cubren.257`xargs` sin opciones también se elimina, por lo que `Bash(grep *)` coincide con `xargs grep pattern`. La eliminación se aplica solo cuando `xargs` no tiene flags: una invocación como `xargs -n1 grep pattern` se evalúa como un comando `xargs`, por lo que las reglas escritas para el comando interno no la cubren.

258 258 

259Esta lista de envoltorios está integrada y no es configurable. Los ejecutores de entorno de desarrollo como `direnv exec`, `devbox run`, `mise exec`, `npx` y `docker exec` no están en la lista. Debido a que estas herramientas ejecutan sus argumentos como un comando, una regla como `Bash(devbox run *)` coincide con lo que viene después de `run`, incluido `devbox run rm -rf .`. Para aprobar el trabajo dentro de un ejecutor de entorno, escriba una regla específica que incluya tanto el ejecutor como el comando interno, como `Bash(devbox run npm test)`. Agregue una regla por cada comando interno que desee permitir.259Esta lista de envoltorios está integrada y no es configurable. Los ejecutores de entorno de desarrollo como `direnv exec`, `devbox run`, `mise exec`, `npx` y `docker exec` no están en la lista. Debido a que estas herramientas ejecutan sus argumentos como un comando, una regla como `Bash(devbox run *)` coincide con lo que venga después de `run`, incluido `devbox run rm -rf .`. Para aprobar el trabajo dentro de un ejecutor de entorno, escribe una regla específica que incluya tanto el ejecutor como el comando interno, como `Bash(devbox run npm test)`. Agrega una regla por cada comando interno que quieras permitir.

260 260 

261Los envoltorios Exec como `watch`, `setsid`, `ionice` y `flock` no pueden ser aprobados automáticamente por una regla de prefijo como `Bash(watch *)`, por lo que en modo Manual siempre solicitan. Lo mismo se aplica a `find` con `-exec` o `-delete`: una regla `Bash(find *)` no cubre estas formas. Para aprobar una invocación específica, escriba una regla de coincidencia exacta para la cadena de comando completa.261Los envoltorios Exec como `watch`, `setsid`, `ionice` y `flock` no pueden aprobarse automáticamente con una regla de prefijo como `Bash(watch *)`, por lo que en modo Manual siempre piden confirmación. Lo mismo se aplica a `find` con `-exec` o `-delete`: una regla `Bash(find *)` no cubre estas formas. Para aprobar una invocación específica, escribe una regla de coincidencia exacta para la cadena de comando completa.

262 262 

263<h4 id="bash-rule-limits">263<h4 id="bash-rule-limits">

264 Qué no coincide una regla de Bash264 Con qué no coincide una regla de Bash

265</h4>265</h4>

266 266 

267Una regla de Bash coincide con el texto del comando que Claude escribe, después de que Claude Code divide [comandos compuestos](#compound-commands) y elimina [envoltorios](#process-wrappers). No coincide con el mismo programa invocado de una forma diferente, por lo que una regla de negación o solicitud cubre la invocación que Claude generalmente produce y no es un límite de seguridad alrededor del programa. Estas reglas en `deny` o `ask` detienen la primera forma y no las otras:267Una regla de Bash coincide con el texto del comando que Claude escribe, después de que Claude Code divide los [comandos compuestos](#compound-commands) y elimina los [envoltorios](#process-wrappers). No coincide con el mismo programa invocado de una forma diferente, por lo que una regla de negación o solicitud cubre la invocación que Claude generalmente produce y no es un límite de seguridad alrededor del programa. Estas reglas en `deny` o `ask` detienen la primera forma y no las otras:

268 268 

269| Regla | Detiene | No detiene |269| Regla | Detiene | No detiene |

270| :- | :- | :- |270| :- | :- | :- |


272| `Bash(rm *)` | `rm -rf build/` | `/bin/rm -rf build/`, `bash -c 'rm -rf build/'` |272| `Bash(rm *)` | `rm -rf build/` | `/bin/rm -rf build/`, `bash -c 'rm -rf build/'` |

273| `Bash(git push *)` | `git push origin main` | `git -C . push origin main`, `git -c push.default=current push origin main`, `git 'push' origin main` |273| `Bash(git push *)` | `git push origin main` | `git -C . push origin main`, `git -c push.default=current push origin main`, `git 'push' origin main` |

274 274 

275Sus otras reglas y el modo de permiso deciden los comandos en la última columna.275Tus otras reglas y el modo de permisos deciden los comandos de la última columna.

276 276 

277Para la aplicación de sistema de archivos y red que no depende del texto del comando, use [sandboxing](/docs/es/sandboxing). Para inspeccionar el texto completo del comando con su propia lógica antes de que se ejecute, use un hook [PreToolUse](#extend-permissions-with-hooks).277Para la aplicación de restricciones de sistema de archivos y red que no depende del texto del comando, usa [sandboxing](/docs/es/sandboxing). Para inspeccionar el texto completo del comando con tu propia lógica antes de que se ejecute, usa un [hook PreToolUse](#extend-permissions-with-hooks).

278 278 

279<h4 id="read-only-commands">279<h4 id="read-only-commands">

280 Comandos de solo lectura280 Comandos de solo lectura

281</h4>281</h4>

282 282 

283Claude Code reconoce un conjunto integrado de comandos de Bash como de solo lectura y los ejecuta sin una solicitud de permiso en cada modo, excepto cuando [`permissions.blockReadsOutsideWorkingDirectories`](/docs/es/settings-reference#permissions-blockreadsoutsideworkingdirectories) cambia el comportamiento para rutas fuera de sus directorios de trabajo. El conjunto incluye `ls`, `cat`, `echo`, `pwd`, `head`, `tail`, `grep`, `find`, `wc`, `which`, `diff`, `stat`, `du`, `cd` y formas de solo lectura de `git`. El conjunto no es configurable; para requerir una solicitud para uno de estos comandos, agregue una regla `ask` o `deny` para él. En modo automático, estos comandos también pueden esperar la revisión del clasificador; consulte [cómo el clasificador evalúa acciones](/docs/es/permission-modes#how-the-classifier-evaluates-actions).283Claude Code reconoce un conjunto integrado de comandos de Bash como de solo lectura y los ejecuta sin una solicitud de permiso en todos los modos, excepto cuando [`permissions.blockReadsOutsideWorkingDirectories`](/docs/es/settings-reference#permissions-blockreadsoutsideworkingdirectories) cambia el comportamiento para rutas fuera de tus directorios de trabajo. El conjunto incluye `ls`, `cat`, `echo`, `pwd`, `head`, `tail`, `grep`, `find`, `wc`, `which`, `diff`, `stat`, `du`, `cd` y las formas de solo lectura de `git`. El conjunto no es configurable; para exigir confirmación para uno de estos comandos, agrega una regla `ask` o `deny` para él. En modo automático, estos comandos también pueden esperar la revisión del clasificador; consulta [cómo el clasificador evalúa las acciones](/docs/es/permission-modes#how-the-classifier-evaluates-actions).

284 284 

285Una redirección como `ls > out.txt` agrega una verificación en el destino. Consulte [Redirections](#redirections).285Una redirección como `ls > out.txt` agrega una verificación sobre el destino. Consulta [Redirecciones](#redirections).

286 286 

287Los patrones glob sin comillas se permiten para comandos cuya bandera es de solo lectura, por lo que `ls *.ts` y `wc -l src/*.py` se ejecutan sin una solicitud.287Los patrones glob sin comillas se permiten para comandos cuyos flags son todos de solo lectura, por lo que `ls *.ts` y `wc -l src/*.py` se ejecutan sin pedir confirmación.

288 288 

289En modo Manual, los comandos de este conjunto aún solicitan en estos casos:289En modo Manual, los comandos de este conjunto aún piden confirmación en estos casos:

290 290 

291* **Globs sin comillas para comandos con banderas capaces de escritura**: comandos con banderas capaces de escritura o ejecución, como `find`, `sort`, `sed` y `git`, solicitan cuando hay un glob sin comillas presente, porque el glob podría expandirse a una bandera como `-delete`.291* **Globs sin comillas para comandos con flags capaces de escribir**: los comandos con flags capaces de escribir o ejecutar, como `find`, `sort`, `sed` y `git`, piden confirmación cuando hay un glob sin comillas, porque el glob podría expandirse a un flag como `-delete`.

292* **`docker` apuntado a otro daemon**: las formas de solo lectura de `docker` solicitan cuando el comando lleva una bandera que selecciona un daemon diferente, como `-H`, `--context` o `--url` y `--connection` de Podman.292* **`docker` apuntando a otro daemon**: las formas de solo lectura de `docker` piden confirmación cuando el comando lleva un flag que selecciona un daemon diferente, como `-H`, `--context` o `--url` y `--connection` de Podman.

293* **`file` con banderas de apertura de ruta**: `file` solicita cuando pasa `-m`/`--magic-file` o `-f`/`--files-from`, porque esas banderas hacen que `file` abra las rutas nombradas en el valor de la bandera.293* **`file` con flags que abren rutas**: `file` pide confirmación cuando pasa `-m`/`--magic-file` o `-f`/`--files-from`, porque esos flags hacen que `file` abra las rutas indicadas en el valor del flag.

294* **Rutas de red en Windows**: un comando cuyos argumentos incluyen una ruta de red (UNC), como `\\server\share\file`, solicita porque acceder a una ruta de red puede enviar sus credenciales de Windows al host que nombra. La misma verificación se aplica a los comandos de la [herramienta PowerShell](/docs/es/tools-reference#powershell-tool).294* **Rutas de red en Windows**: un comando cuyos argumentos incluyen una ruta de red (UNC), como `\\server\share\file`, pide confirmación porque acceder a una ruta de red puede enviar tus credenciales de Windows al host que nombra. La misma verificación se aplica a los comandos de la [herramienta PowerShell](/docs/es/tools-reference#powershell-tool).

295* **Escrituras en variables de shell especiales**: un comando que establece, desestablece o itera sobre ciertas variables de shell especiales, como `PATH` o `IFS`, solicita incluso cuando el resto del comando es de solo lectura.295* **Escrituras en variables especiales del shell**: un comando que establece, elimina o itera sobre ciertas variables especiales del shell, como `PATH` o `IFS`, pide confirmación incluso cuando el resto del comando es de solo lectura.

296* **Comandos que el análisis no puede analizar**: cuando Claude Code no puede analizar completamente un comando, solicita aprobación en lugar de tratar el comando como de solo lectura. Los comandos más largos que 10,000 caracteres siempre solicitan porque exceden lo que el análisis analiza.296* **Comandos que el análisis no puede procesar**: cuando Claude Code no puede analizar completamente un comando, pide aprobación en lugar de tratarlo como de solo lectura. Los comandos de más de 10,000 caracteres siempre piden confirmación porque exceden lo que el análisis procesa.

297 297 

298Un `cd` en una ruta dentro de su directorio de trabajo o un [directorio adicional](#working-directories) también es de solo lectura, y un comando compuesto como `cd packages/api && ls` se ejecuta sin una solicitud cuando cada parte se califica por sí sola. Estas combinaciones solicitan incluso cuando cada parte es de solo lectura:298Un `cd` a una ruta dentro de tu directorio de trabajo o de un [directorio adicional](#working-directories) también es de solo lectura, y un comando compuesto como `cd packages/api && ls` se ejecuta sin pedir confirmación cuando cada parte califica por sí sola. Estas combinaciones piden confirmación incluso cuando cada parte es de solo lectura:

299 299 

300* **`cd` con `git`**: solicita cuando el `cd` cambia a un directorio diferente, ya que ejecutar `git` en un nuevo directorio puede ejecutar los hooks de ese directorio. Un `cd` cuyo destino se resuelve al directorio de trabajo actual es una no-operación y no activa la solicitud.300* **`cd` con `git`**: pide confirmación cuando el `cd` cambia a un directorio diferente, ya que ejecutar `git` en un nuevo directorio puede ejecutar los hooks de ese directorio. Un `cd` cuyo destino se resuelve al directorio de trabajo actual no tiene efecto y no activa la solicitud.

301* **`cd` con una redirección**: solicita cuando Claude Code no puede determinar contra qué directorio se resuelve el destino de redirección después de que se ejecuta el `cd`. Un comando cuyo único destino de redirección es `/dev/null`, como `cd app; grep -r pattern . 2>/dev/null`, no solicita, porque `/dev/null` no depende del directorio de trabajo.301* **`cd` con una redirección**: pide confirmación cuando Claude Code no puede determinar respecto a qué directorio se resuelve el destino de la redirección después de que se ejecuta el `cd`. Un comando cuyo único destino de redirección es `/dev/null`, como `cd app; grep -r pattern . 2>/dev/null`, no pide confirmación, porque `/dev/null` no depende del directorio de trabajo.

302 302 

303<Warning>303<Warning>

304 Los patrones de permisos de Bash que intentan restringir argumentos de comando son frágiles. Por ejemplo, `Bash(curl http://github.com/ *)` intenta restringir curl a URLs de GitHub, pero no coincidirá con variaciones como:304 Los patrones de permisos de Bash que intentan restringir los argumentos de los comandos son frágiles. Por ejemplo, `Bash(curl http://github.com/ *)` intenta restringir curl a URLs de GitHub, pero no coincidirá con variaciones como:

305 305 

306 * Opciones antes de URL: `curl -X GET http://github.com/...`306 * Opciones antes de la URL: `curl -X GET http://github.com/...`

307 * Protocolo diferente: `curl https://github.com/...`307 * Protocolo diferente: `curl https://github.com/...`

308 * Redirecciones: `curl -L http://short.example.com/xyz`, que redirige a GitHub308 * Redirecciones: `curl -L http://short.example.com/xyz`, que redirige a GitHub

309 * Variables: `URL=http://github.com && curl $URL`309 * Variables: `URL=http://github.com && curl $URL`

310 310 

311 Para un filtrado de URL más confiable, considere:311 Para un filtrado de URL más confiable, considera:

312 312 

313 * **Restringir herramientas de red de Bash**: use reglas de negación para detener `curl`, `wget` y comandos similares, luego use la herramienta WebFetch con permiso `WebFetch(domain:github.com)` para dominios permitidos. Una regla de negación no coincide con el mismo programa por ruta o dentro de `sh -c`, por lo que emparéjela con la [lista de permitidos de red del sandbox](/docs/es/sandboxing#network-isolation) cuando la restricción debe mantenerse; consulte [qué no coincide una regla de Bash](#bash-rule-limits)313 * **Restringir las herramientas de red de Bash**: usa reglas de negación para detener `curl`, `wget` y comandos similares, y luego usa la herramienta WebFetch con el permiso `WebFetch(domain:github.com)` para los dominios permitidos. Una regla de negación no coincide con el mismo programa invocado por ruta o dentro de `sh -c`, así que combínala con la [lista de permitidos de red del sandbox](/docs/es/sandboxing#network-isolation) cuando la restricción deba cumplirse; consulta [con qué no coincide una regla de Bash](#bash-rule-limits)

314 * **Usar hooks PreToolUse**: implemente un hook que valide URLs en comandos de Bash y bloquee dominios no permitidos314 * **Usar hooks PreToolUse**: implementa un hook que valide las URLs en los comandos de Bash y bloquee los dominios no permitidos

315 * **Agregar orientación CLAUDE.md**: describa sus patrones de curl permitidos en `CLAUDE.md`. Esto forma lo que Claude intenta pero no aplica un límite, por lo que emparéjelo con una de las opciones anteriores315 * **Agregar orientación en CLAUDE.md**: describe tus patrones de curl permitidos en `CLAUDE.md`. Esto orienta lo que Claude intenta, pero no impone un límite, así que combínalo con una de las opciones anteriores

316 316 

317 Tenga en cuenta que usar WebFetch solo no previene el acceso a la red. Si se permite Bash, Claude aún puede usar `curl`, `wget` u otras herramientas para alcanzar cualquier URL.317 Ten en cuenta que usar solo WebFetch no impide el acceso a la red. Si Bash está permitido, Claude aún puede usar `curl`, `wget` u otras herramientas para acceder a cualquier URL.

318</Warning>318</Warning>

319 319 

320<h4 id="redirections">320<h4 id="redirections">

321 Redirecciones321 Redirecciones

322</h4>322</h4>

323 323 

324Cuando un comando redirige salida o entrada, Claude Code verifica el destino de redirección contra sus reglas de archivo como si Claude escribiera o leyera ese archivo directamente:324Cuando un comando redirige la salida o la entrada, Claude Code verifica el destino de la redirección contra tus reglas de archivos como si Claude escribiera o leyera ese archivo directamente:

325 325 

326* **Redirecciones de salida**: para `> file`, `>> file` o `2> file`, la verificación cubre sus reglas de permiso `Edit` de permitir y negar, [rutas protegidas](/docs/es/permission-modes#protected-paths) y los [directorios de trabajo](#working-directories). Una regla como `Bash(git commit *)` permite el comando, no el destino. Un destino que comienza con `~` o contiene un carácter glob necesita su aprobación.326* **Redirecciones de salida**: para `> file`, `>> file` o `2> file`, la verificación cubre tus reglas `Edit` de permiso y negación, las [rutas protegidas](/docs/es/permission-modes#protected-paths) y los [directorios de trabajo](#working-directories). Una regla como `Bash(git commit *)` permite el comando, no el destino. Un destino que comienza con `~` o contiene un carácter glob necesita tu aprobación.

327* **Redirecciones de entrada**: para `< file`, la verificación cubre sus reglas de permiso `Read` de permitir y negar y los directorios de trabajo. Un destino fuera de los directorios de trabajo necesita su aprobación a menos que una regla de permiso lo cubra. Un destino que contiene un patrón glob, o una ruta relativa que sigue a un `cd` en el mismo comando, necesita su aprobación incluso cuando una regla de permiso lo cubre. Claude Code verifica destinos de entrada en v2.1.257 y posterior.327* **Redirecciones de entrada**: para `< file`, la verificación cubre tus reglas `Read` de permiso y negación y los directorios de trabajo. Un destino fuera de los directorios de trabajo necesita tu aprobación a menos que una regla de permiso lo cubra. Un destino que contiene un patrón glob, o una ruta relativa que sigue a un `cd` en el mismo comando, necesita tu aprobación incluso cuando una regla de permiso lo cubre. Claude Code verifica los destinos de entrada en v2.1.257 y posteriores.

328 328 

329Los destinos sin archivo detrás no se verifican: `/dev/null`, formas de descriptor de archivo como `2>&1` y `<&3`, y here-docs y here-strings.329Los destinos que no tienen un archivo detrás no se verifican: `/dev/null`, las formas de descriptor de archivo como `2>&1` y `<&3`, y los here-docs y here-strings.

330 330 

331Claude Code también verifica los archivos que escribe un comando `tee`, incluido en un pipeline como `make | tee build.log`. La verificación cubre sus reglas de permiso `Edit` de permitir y negar, [rutas protegidas](/docs/es/permission-modes#protected-paths) y los [directorios de trabajo](#working-directories). Una regla de permiso como `Bash(tee *)` no cubre un destino fuera de los directorios de trabajo. Claude Code verifica destinos de `tee` en v2.1.269 y posterior.331Claude Code también verifica los archivos que escribe un comando `tee`, incluso dentro de un pipeline como `make | tee build.log`. La verificación cubre tus reglas `Edit` de permiso y negación, las [rutas protegidas](/docs/es/permission-modes#protected-paths) y los [directorios de trabajo](#working-directories). Una regla de permiso como `Bash(tee *)` no cubre un destino fuera de los directorios de trabajo. Claude Code verifica los destinos de `tee` en v2.1.269 y posteriores.

332 332 

333<h3 id="powershell">333<h3 id="powershell">

334 PowerShell334 PowerShell

335</h3>335</h3>

336 336 

337Las reglas de permisos de PowerShell usan la misma forma que las reglas de Bash. Los comodines con `*` coinciden en cualquier posición, el sufijo `:*` es equivalente a un ` *` final, y un `PowerShell` desnudo o `PowerShell(*)` coincide con cada comando. Esta configuración permite comandos `Get-ChildItem` y `git commit` mientras bloquea `Remove-Item`:337Las 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`:

338 338 

339```json theme={null}339```json theme={null}

340{340{


350}350}

351```351```

352 352 

353Los 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 con `gci`, `ls` y `dir` también. La coincidencia no distingue mayúsculas de minúsculas.353Los 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.

354 354 

355Claude Code analiza el AST de PowerShell y verifica cada comando en un comando compuesto de forma independiente. Los operadores de pipeline `|`, separadores de declaración `;` 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.355Claude 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.

356 356 

357<h3 id="read-and-edit">357<h3 id="read-and-edit">

358 Read y Edit358 Read y Edit

359</h3>359</h3>

360 360 

361Para bloquear las herramientas de archivo de Claude de leer un archivo o directorio, agregue una regla de negación `Read` para su ruta, como `Read(./.env)` o `Read(./secrets/**)`; [Exclude sensitive files](/docs/es/settings-reference#exclude-sensitive-files) tiene un ejemplo listo para pegar.361Para impedir que las herramientas de archivos de Claude lean un archivo o directorio, agrega una regla de negación `Read` para su ruta, como `Read(./.env)` o `Read(./secrets/**)`; [Excluir archivos sensibles](/docs/es/settings-reference#exclude-sensitive-files) tiene un ejemplo listo para pegar. Si tu proyecto tiene un archivo `.claudeignore`, no tiene ningún efecto, así que traslada sus entradas a reglas de negación `Read`.

362 362 

363Las reglas `Edit` se aplican a todas las herramientas integradas que editan archivos. Claude hace un esfuerzo de mejor intento para aplicar reglas `Read` a todas las herramientas integradas que leen archivos como Grep y Glob, a menciones `@file` en sus solicitudes y a la selección y contexto de archivo abierto que un [IDE](/docs/es/vs-code#the-built-in-ide-mcp-server) conectado comparte con Claude.363Las reglas `Edit` se aplican a todas las herramientas integradas que editan archivos. Claude hace un esfuerzo razonable por aplicar las reglas `Read` a todas las herramientas integradas que leen archivos, como Grep y Glob, a las menciones `@file` en tus prompts y a la selección y el contexto de archivos abiertos que un [IDE](/docs/es/vs-code#the-built-in-ide-mcp-server) conectado comparte con Claude.

364 364 

365Una regla de negación `Read` también bloquea las herramientas [Edit y Write](/docs/es/errors#file-is-covered-by-a-read-deny-rule) en la misma ruta, incluida la creación de un nuevo archivo allí. NotebookEdit no está cubierto, por lo que agregue una regla de negación `Edit` para rutas que ninguna herramienta pueda cambiar. La verificación requiere Claude Code v2.1.208 o posterior en ediciones, y v2.1.228 o posterior en escrituras.365Una regla de negación `Read` también bloquea las [herramientas Edit y Write](/docs/es/errors#file-is-covered-by-a-read-deny-rule) en la misma ruta, incluida la creación de un archivo nuevo allí. NotebookEdit no está cubierta, así que agrega una regla de negación `Edit` para las rutas que ninguna herramienta debe modificar. La verificación requiere Claude Code v2.1.208 o posterior para ediciones, y v2.1.228 o posterior para escrituras.

366 366 

367Claude Code verifica permisos de archivo solo contra reglas `Edit(path)` y `Read(path)`. Si escribe una regla de ruta para `Write`, `NotebookEdit`, `Glob` o la herramienta heredada `MultiEdit` en su lugar, Claude Code acepta la regla pero nunca la consulta, y [advierte al inicio](/docs/es/errors#is-not-matched-by-file-permission-checks), excepto para una regla `Glob` pasada en `--allowedTools`. Use `Edit(docs/**)` en lugar de `Write(docs/**)`, `NotebookEdit(docs/**)` o `MultiEdit(docs/**)`, y `Read(docs/**)` en lugar de `Glob(docs/**)`. Claude Code no advierte sobre una regla de nombre de herramienta sin ruta, como una regla de negación para `Write`; coincide esa regla a nivel de herramienta en todas partes. Requiere Claude Code v2.1.210 o posterior.367Claude Code verifica los permisos de archivos solo contra las reglas `Edit(path)` y `Read(path)`. Si escribes en su lugar una regla de ruta para `Write`, `NotebookEdit`, `Glob` o la herramienta heredada `MultiEdit`, Claude Code acepta la regla pero nunca la consulta, y [muestra una advertencia al iniciar](/docs/es/errors#is-not-matched-by-file-permission-checks), excepto para una regla `Glob` pasada en `--allowedTools`. Usa `Edit(docs/**)` en lugar de `Write(docs/**)`, `NotebookEdit(docs/**)` o `MultiEdit(docs/**)`, y `Read(docs/**)` en lugar de `Glob(docs/**)`. Claude Code no muestra advertencias para una regla de nombre de herramienta sin ruta, como una regla de negación para `Write`; aplica esa regla a nivel de herramienta en todas partes. Requiere Claude Code v2.1.210 o posterior.

368 368 

369<Warning>369<Warning>

370 Las reglas de negación Read y Edit se aplican a las herramientas de archivo integradas de Claude, a comandos de archivo que Claude Code reconoce en Bash, como `cat`, `head`, `tail`, `sed` y `tee`, y a los destinos de [redirecciones](#redirections) de Bash como `> file` y `< file`. No se aplican a un comando que lee archivos sin nombrarlos, como `grep -r pattern .` ejecutado desde el directorio que contiene el archivo, o a subprocesos arbitrarios que leen o escriben archivos indirectamente, como un script de Python o Node que abre archivos por sí mismo. Para la aplicación a nivel del SO que bloquea todos los procesos de acceder a una ruta, [habilite el sandbox](/docs/es/sandboxing).370 Las reglas de negación Read y Edit se aplican a las herramientas de archivos integradas de Claude, a los comandos de archivos que Claude Code reconoce en Bash, como `cat`, `head`, `tail`, `sed` y `tee`, y a los destinos de las [redirecciones](#redirections) de Bash como `> file` y `< file`. No se aplican a un comando que lee archivos sin nombrarlos, como `grep -r pattern .` ejecutado desde el directorio que contiene el archivo, ni a subprocesos arbitrarios que leen o escriben archivos indirectamente, como un script de Python o Node que abre archivos por sí mismo. Para una aplicación a nivel del sistema operativo que impida a todos los procesos acceder a una ruta, [habilita el sandbox](/docs/es/sandboxing).

371</Warning>371</Warning>

372 372 

373Las reglas Read y Edit usan ambas sintaxis de patrón [gitignore](https://git-scm.com/docs/gitignore) con cuatro tipos de patrón distintos; para patrones de directorio de un solo segmento, la profundidad de coincidencia también depende del tipo de regla, descrito más adelante en esta sección:373Las reglas Read y Edit usan ambas la sintaxis de patrones de [gitignore](https://git-scm.com/docs/gitignore) con cuatro tipos de patrón distintos; para los patrones de directorio de un solo segmento, la profundidad de coincidencia también depende del tipo de regla, como se describe más adelante en esta sección:

374 374 

375| Patrón | Significado | Ejemplo | Coincide |375| Patrón | Significado | Ejemplo | Coincide |

376| - | - | - | - |376| - | - | - | - |

377| `//path` | Ruta absoluta desde la raíz del sistema de archivos | `Read(//Users/alice/secrets/**)` | `/Users/alice/secrets/**` |377| `//path` | Ruta absoluta desde la raíz del sistema de archivos | `Read(//Users/alice/secrets/**)` | `/Users/alice/secrets/**` |

378| `~/path` | Ruta desde el directorio de inicio | `Read(~/Documents/*.pdf)` | `/Users/alice/Documents/*.pdf` |378| `~/path` | Ruta desde el directorio home | `Read(~/Documents/*.pdf)` | `/Users/alice/Documents/*.pdf` |

379| `/path` | Ruta relativa a la fuente de configuración | `Edit(/src/**/*.ts)` | `<primary working directory>/src/**/*.ts` en configuración de proyecto |379| `/path` | Ruta relativa a la fuente de configuración | `Edit(/src/**/*.ts)` | `<primary working directory>/src/**/*.ts` en la configuración del proyecto |

380| `path` o `./path` | Ruta relativa al directorio actual | `Read(*.env)` | `<cwd>/*.env` |380| `path` o `./path` | Ruta relativa al directorio actual | `Read(*.env)` | `<cwd>/*.env` |

381 381 

382<Warning>382<Warning>

383 Un patrón como `/Users/alice/file` no es una ruta absoluta. La barra inclinada inicial única se ancla en la fuente de configuración, no en la raíz del sistema de archivos. Use `//Users/alice/file` para rutas absolutas.383 Un patrón como `/Users/alice/file` no es una ruta absoluta. La barra inicial única se ancla en la fuente de configuración, no en la raíz del sistema de archivos. Usa `//Users/alice/file` para rutas absolutas.

384</Warning>384</Warning>

385 385 

386Un patrón `/path` se ancla en un directorio asociado con la fuente de configuración que lo define, por lo que la misma regla coincide con diferentes ubicaciones dependiendo de dónde la coloque:386Un patrón `/path` se ancla en un directorio asociado con la fuente de configuración que lo define, por lo que la misma regla coincide con ubicaciones diferentes según dónde la coloques:

387 387 

388| Regla definida en | `/path` se resuelve a |388| Regla definida en | `/path` se resuelve a |

389| :- | :- |389| :- | :- |

390| Configuración de proyecto en `.claude/settings.json` | `<primary working directory>/path` |390| Configuración del proyecto en `.claude/settings.json` | `<primary working directory>/path` |

391| Configuración local en `.claude/settings.local.json` | `<primary working directory>/path` |391| Configuración local en `.claude/settings.local.json` | `<primary working directory>/path` |

392| Configuración de usuario en `~/.claude/settings.json` | `~/.claude/path` |392| Configuración de usuario en `~/.claude/settings.json` | `~/.claude/path` |

393| Un archivo pasado con `--settings <file>` | `<directory of file>/path` |393| Un archivo pasado con `--settings <file>` | `<directory of file>/path` |

394| Banderas CLI o reglas de sesión | `<primary working directory>/path` |394| Flags de la CLI o reglas de sesión | `<primary working directory>/path` |

395 395 

396Una regla que agrega a través de `/permissions` sigue la fila para el archivo de configuración en el que la guarda.396Una regla que agregas mediante `/permissions` sigue la fila del archivo de configuración en el que la guardas.

397 397 

398Las reglas de 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 posterior. En una sesión iniciada en la raíz del repositorio, los dos directorios son iguales; en una sesión de [worktree](/docs/es/worktrees), una regla compartida como `Edit(/src/**)` coincide con el directorio `src/` propio de ese worktree.398Las 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](/docs/es/worktrees), una regla compartida como `Edit(/src/**)` coincide con el directorio `src/` propio de ese worktree.

399 399 

400En Windows, las rutas se normalizan a forma POSIX antes de la coincidencia. `C:\Users\alice` se convierte en `/c/Users/alice`, por lo que use `//c/**/.env` para coincidir con archivos `.env` en cualquier lugar de esa unidad. Para coincidir en todas las unidades, use `//**/.env`.400Una 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 `~/`.

401 

402En Windows, las rutas se normalizan a formato POSIX antes de la coincidencia. `C:\Users\alice` se convierte en `/c/Users/alice`, así que usa `//c/**/.env` para que coincida con archivos `.env` en cualquier lugar de esa unidad. Para que coincida en todas las unidades, usa `//**/.env`.

401 403 

402Ejemplos:404Ejemplos:

403 405 

404* `Edit(/docs/**)`: edita en `<primary working directory>/docs/`, no en `/docs/` o `<primary working directory>/.claude/docs/`406* `Edit(/docs/**)`: ediciones en `<primary working directory>/docs/`, no en `/docs/` ni en `<primary working directory>/.claude/docs/`

405* `Read(~/.zshrc)`: lee el `.zshrc` de su directorio de inicio407* `Read(~/.zshrc)`: lee el `.zshrc` de tu directorio home

406* `Edit(//tmp/scratch.txt)`: edita la ruta absoluta `/tmp/scratch.txt`408* `Edit(//tmp/scratch.txt)`: edita la ruta absoluta `/tmp/scratch.txt`

407* `Read(src/**)`: como regla de permiso, lee desde `<current-directory>/src/` solo; como regla de negación o solicitud, coincide con un directorio `src` a cualquier profundidad bajo el directorio actual409* `Read(src/**)`: como regla de permiso, lee solo desde `<current-directory>/src/`; como regla de negación o solicitud, coincide con un directorio `src` a cualquier profundidad bajo el directorio actual

408 410 

409Una regla solo coincide con archivos bajo su ancla; dentro de ese límite, la profundidad de coincidencia depende de la forma del patrón y, para patrones de directorio de un solo segmento, del tipo de regla, descrito a continuación. Los nombres de archivo desnudos siguen la semántica de gitignore y coinciden a cualquier profundidad, por lo que `Read(.env)` y `Read(**/.env)` son equivalentes:411Una regla solo coincide con archivos bajo su ancla; dentro de ese límite, la profundidad de coincidencia depende de la forma del patrón y, para los patrones de directorio de un solo segmento, del tipo de regla, como se describe a continuación. Los nombres de archivo sin ruta siguen la semántica de gitignore y coinciden a cualquier profundidad, por lo que `Read(.env)` y `Read(**/.env)` son equivalentes:

410 412 

411| Regla de negación | Bloquea | No bloquea |413| Regla de negación | Bloquea | No bloquea |

412| - | - | - |414| - | - | - |

413| `Read(.env)` o `Read(**/.env)` | cualquier `.env` en o bajo el directorio actual | `.env` en un directorio padre u otro proyecto |415| `Read(.env)` o `Read(**/.env)` | cualquier `.env` en el directorio actual o debajo de él | `.env` en un directorio padre o en otro proyecto |

414| `Read(//**/.env)` | cualquier `.env` en cualquier lugar del sistema de archivos | nada; la regla se ancla en la raíz del sistema de archivos |416| `Read(//**/.env)` | cualquier `.env` en cualquier lugar del sistema de archivos | nada; la regla está anclada en la raíz del sistema de archivos |

415 417 

416Un patrón relativo con un segmento de directorio único, como `src/**`, coincide a diferentes profundidades dependiendo del tipo de regla:418Un patrón relativo con un único segmento de directorio, como `src/**`, coincide a profundidades diferentes según el tipo de regla:

417 419 

418* **Reglas de permiso**: `Edit(src/**)` coincide solo con `<cwd>/src` y los archivos bajo él. Para permitir un nombre de directorio a cualquier profundidad, escriba `Edit(**/src/**)`.420* **Reglas de permiso**: `Edit(src/**)` coincide solo con `<cwd>/src` y los archivos que contiene. Para permitir un nombre de directorio a cualquier profundidad, escribe `Edit(**/src/**)`.

419* **Reglas de negación y solicitud**: `Read(secrets/**)` coincide con un directorio llamado `secrets` a cualquier profundidad bajo el directorio actual, por lo que la regla también se aplica a copias anidadas.421* **Reglas de negación y solicitud**: `Read(secrets/**)` coincide con un directorio llamado `secrets` a cualquier profundidad bajo el directorio actual, por lo que la regla también se aplica a las copias anidadas.

420 422 

421Cada otra forma de patrón coincide a la misma profundidad en cada tipo de regla: `Edit(/src/**)` y `Edit(src/components/**)` coinciden solo en su ubicación anclada, mientras que `Edit(**/src/**)` coincide a cualquier profundidad.423Todas las demás formas de patrón coinciden a la misma profundidad en todos los tipos de regla: `Edit(/src/**)` y `Edit(src/components/**)` coinciden solo en su ubicación anclada, mientras que `Edit(**/src/**)` coincide a cualquier profundidad.

422 424 

423El siguiente ejemplo muestra cada forma de patrón contra un proyecto con un directorio `src/` de nivel superior y una copia anidada bajo `vendor/`:425El siguiente ejemplo muestra cada forma de patrón frente a un proyecto con un directorio `src/` de nivel superior y una copia anidada bajo `vendor/`:

424 426 

425```text theme={null}427```text theme={null}

426<current-directory>/428<current-directory>/


432 └── lib.js434 └── lib.js

433```435```

434 436 

435| Regla | Coincide `src/app.ts` | Coincide `vendor/pkg/src/lib.js` |437| Regla | Coincide con `src/app.ts` | Coincide con `vendor/pkg/src/lib.js` |

436| :- | :- | :- |438| :- | :- | :- |

437| `Edit(src/**)` como regla de permiso | Sí | No |439| `Edit(src/**)` como regla de permiso | Sí | No |

438| `Edit(src/**)` como regla de negación o solicitud | Sí | Sí |440| `Edit(src/**)` como regla de negación o solicitud | Sí | Sí |


440| `Edit(**/src/**)` en cualquier tipo de regla | Sí | Sí |442| `Edit(**/src/**)` en cualquier tipo de regla | Sí | Sí |

441 443 

442<Note>444<Note>

443 En patrones de gitignore, `*` coincide dentro de un segmento de ruta único y puede aparecer en cualquier posición en el patrón, mientras que `**` coincide en directorios.445 En los patrones de gitignore, `*` coincide dentro de un único segmento de ruta y puede aparecer en cualquier posición del patrón, mientras que `**` coincide a través de directorios.

444</Note>446</Note>

445 447 

446Cuando aprueba una ruta de archivo con "Sí, y no vuelvas a preguntar", Claude Code escapa caracteres de patrón de gitignore en esa ruta, como `[`, `]` y `*`, por lo que la regla generada coincide solo con la ruta literal que aprobó. Las reglas que escribe usted mismo no se escapan. Antes de v2.1.202, Claude Code guardaba la ruta sin escapar, por lo que una regla generada para un directorio llamado `[2024-06] Reports` podría no coincidir con su propia ruta o coincidir con directorios hermanos no deseados.448Cuando apruebas una ruta de archivo con "Sí, y no vuelvas a preguntar", Claude Code escapa los caracteres de patrón de gitignore de esa ruta, como `[`, `]` y `*`, para que la regla generada coincida solo con la ruta literal que aprobaste. Las reglas que escribes tú mismo no se escapan. Antes de v2.1.202, Claude Code guardaba la ruta sin escapar, por lo que una regla generada para un directorio llamado `[2024-06] Reports` podía no coincidir con su propia ruta o coincidir con directorios hermanos no deseados.

447 449 

448No necesita escapar paréntesis en una ruta, por lo que `Edit(./Finance (2024)/**)` coincide con la carpeta `Finance (2024)` tal como está escrita.450No necesitas escapar los paréntesis en una ruta, así que `Edit(./Finance (2024)/**)` coincide con la carpeta `Finance (2024)` tal como está escrita.

449 451 

450Una regla de negación o solicitud cuya ruta no es utilizable como patrón de gitignore aún protege esa ruta exacta. Una regla de permiso con un patrón no utilizable no aprueba nada.452Una regla de negación o solicitud cuya ruta no sea utilizable como patrón de gitignore aún protege esa ruta exacta. Una regla de permiso con un patrón no utilizable no aprueba nada.

451 453 

452Un patrón de negación o solicitud que comienza con `!` es una negación de gitignore. Extrae las rutas que coincide de las reglas `path` o `./path` listadas antes. En la lista `deny` de un archivo de configuración, `Read(*.env)` seguido de `Read(!sample.env)` bloquea cada archivo cuyo nombre termina en `.env` a cualquier profundidad, excepto archivos nombrados `sample.env`. Una regla `!` listada primero no extrae nada.454Un patrón de negación o solicitud que comienza con `!` es una negación de gitignore. Excluye las rutas con las que coincide de las reglas `path` o `./path` listadas antes que él. En la lista `deny` de un archivo de configuración, `Read(*.env)` seguido de `Read(!sample.env)` bloquea cada archivo cuyo nombre termina en `.env` a cualquier profundidad, excepto los archivos llamados `sample.env`. Una regla `!` listada primero no excluye nada.

453 455 

454La extracción alcanza solo reglas de la misma fuente. Un `Read(!.env)` en configuración de proyecto o en `--disallowedTools` no cancela un `Read(./.env)` de negación de configuración administrada o cualquier otro archivo de configuración.456La exclusión solo alcanza a las reglas de la misma fuente. Un `Read(!.env)` en la configuración del proyecto o en `--disallowedTools` no anula una negación `Read(./.env)` de la configuración administrada ni de cualquier otro archivo de configuración.

455 457 

456Dos límites estrechan lo que un patrón `!` puede extraer:458Dos límites restringen lo que un patrón `!` puede excluir:

457 459 

458* Claude Code lee un patrón `!` relativo al directorio actual incluso cuando `/`, `~/` o `//` sigue a `!`, por lo que el patrón no puede alcanzar una regla anclada con uno de esos prefijos. `Read(!~/notes/public/**)` no extrae nada de `Read(~/notes/**)`.460* Claude Code interpreta un patrón `!` como relativo al directorio actual incluso cuando `/`, `~/` o `//` siguen al `!`, por lo que el patrón no puede alcanzar una regla anclada con uno de esos prefijos. `Read(!~/notes/public/**)` no excluye nada de `Read(~/notes/**)`.

459* Una extracción no puede reabrir un archivo dentro de un directorio que una regla bloquea en su totalidad. Con `Read(secrets/**)` y `Read(!secrets/public/**)`, Claude Code aún bloquea `secrets/public` junto con el resto de `secrets`.461* Una exclusión no puede volver a habilitar un archivo dentro de un directorio que una regla bloquea por completo. Con `Read(secrets/**)` y `Read(!secrets/public/**)`, Claude Code sigue bloqueando `secrets/public` junto con el resto de `secrets`.

460 462 

461<h4 id="symlinks">463<h4 id="symlinks">

462 Symlinks464 Enlaces simbólicos

463</h4>465</h4>

464 466 

465Cuando una ruta de archivo que Claude solicita pasa a través de un symlink, la verificación de permiso cubre dos rutas: la que Claude solicitó y el archivo al que se resuelve. Esto se aplica a enlaces simbólicos en macOS, Linux y Windows, y a uniones de directorio en Windows.467Cuando una ruta de archivo que Claude solicita pasa por un enlace simbólico, la verificación de permisos cubre dos rutas: la que Claude solicitó y el archivo al que se resuelve. Esto se aplica a los enlaces simbólicos en macOS, Linux y Windows, y a las uniones de directorio en Windows.

466 468 

467<h5 id="how-rules-match-a-symlinked-path">469<h5 id="how-rules-match-a-symlinked-path">

468 Cómo las reglas coinciden con una ruta enlazada simbólicamente470 Cómo coinciden las reglas con una ruta que pasa por un enlace simbólico

469</h5>471</h5>

470 472 

471Las reglas de permiso y negación tratan la ruta solicitada y el archivo al que se resuelve de manera diferente:473Las reglas de permiso y de negación tratan de manera diferente la ruta solicitada y el archivo al que se resuelve:

472 474 

473* **Reglas de permiso**: se aplican solo cuando tanto la ruta solicitada como el archivo al que se resuelve coinciden. Una lectura a través de un symlink dentro de un directorio permitido que apunta fuera de él no coincide con la regla.475* **Reglas de permiso**: se aplican solo cuando coinciden tanto la ruta solicitada como el archivo al que se resuelve. Una lectura a través de un enlace simbólico dentro de un directorio permitido que apunta fuera de él no coincide con la regla.

474* **Reglas de negación**: se aplican cuando la ruta solicitada o el archivo al que se resuelve coincide. Un symlink que apunta a un archivo negado está negado. Por ejemplo, con `Read(./project/**)` permitido y `Read(~/.ssh/**)` negado, un symlink en `./project/key` que apunta a `~/.ssh/id_rsa` está bloqueado: el destino falla la regla de permiso y coincide con la regla de negación.476* **Reglas de negación**: se aplican cuando coincide la ruta solicitada o el archivo al que se resuelve. Un enlace simbólico que apunta a un archivo negado queda también negado. Por ejemplo, con `Read(./project/**)` permitido y `Read(~/.ssh/**)` negado, un enlace simbólico en `./project/key` que apunta a `~/.ssh/id_rsa` queda bloqueado: el destino no cumple la regla de permiso y coincide con la regla de negación.

475 477 

476En macOS y Linux, una regla de negación o solicitud escrita a través de un directorio enlazado simbólicamente con un patrón `//`, `~/` o `/` también se aplica en la ubicación real del directorio. Por ejemplo, en macOS, donde `/etc` se resuelve a `/private/etc`, `Read(//etc/**)` también bloquea `/private/etc/hosts`. Antes de v2.1.268, una regla de negación o solicitud escrita a través de un directorio enlazado simbólicamente no se aplicaba a una ruta dada por su ubicación real.478En macOS y Linux, una regla de negación o solicitud escrita a través de un directorio enlazado simbólicamente con un patrón `//`, `~/` o `/` también se aplica en la ubicación real del directorio. Por ejemplo, en macOS, donde `/etc` se resuelve a `/private/etc`, `Read(//etc/**)` también bloquea `/private/etc/hosts`. Antes de v2.1.268, una regla de negación o solicitud escrita a través de un directorio enlazado simbólicamente no se aplicaba a una ruta indicada por su ubicación real.

477 479 

478Grep y Glob buscan el directorio al que se resuelve el argumento `path`. Claude Code aplica reglas de negación `Read` a ese directorio.480Grep y Glob buscan en el directorio al que se resuelve el argumento `path`. Claude Code aplica las reglas de negación `Read` a ese directorio.

479 481 

480<h5 id="writes-through-a-symlink">482<h5 id="writes-through-a-symlink">

481 Escrituras a través de un symlink483 Escrituras a través de un enlace simbólico

482</h5>484</h5>

483 485 

484Si la ruta que Claude solicita editar o escribir es en sí misma un symlink, las herramientas Edit y Write [rechazan la escritura y dirigen a Claude al destino del enlace](/docs/es/errors#refusing-after-a-symlink-changed).486Si la ruta que Claude pide editar o escribir es en sí misma un enlace simbólico, las herramientas Edit y Write [rechazan la escritura y dirigen a Claude al destino del enlace](/docs/es/errors#refusing-after-a-symlink-changed).

485 487 

486Una escritura aún puede pasar a través de un symlink cuando un directorio en el camino al archivo es un symlink, o cuando un comando de Bash o PowerShell hace la escritura. Para esas escrituras, lo que sucede depende de dónde se encuentra el archivo al que se resuelve la escritura en relación con sus [directorios de trabajo](#working-directories) y las [rutas protegidas](/docs/es/permission-modes#protected-paths):488Una escritura aún puede pasar por un enlace simbólico cuando un directorio en el camino hacia el archivo es un enlace simbólico, o cuando la escritura la hace un comando de Bash o PowerShell. Para esas escrituras, lo que sucede depende de dónde se encuentra el archivo al que se resuelve la escritura en relación con tus [directorios de trabajo](#working-directories) y las [rutas protegidas](/docs/es/permission-modes#protected-paths):

487 489 

488* **Se resuelve fuera de los directorios de trabajo**: cuando la ruta solicitada está dentro de sus directorios de trabajo y el archivo al que se resuelve no, la escritura no se aprueba automáticamente en modo [`acceptEdits`](/docs/es/permission-modes#auto-approve-file-edits-with-acceptedits-mode). En [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), a menos que una regla de permiso apruebe la escritura, se le solicita en lugar de que el clasificador decida. La solicitud nombra la ruta a la que se resuelve la escritura.490* **Se resuelve fuera de los directorios de trabajo**: cuando la ruta solicitada está dentro de tus directorios de trabajo y el archivo al que se resuelve no lo está, la escritura no se aprueba automáticamente en [modo `acceptEdits`](/docs/es/permission-modes#auto-approve-file-edits-with-acceptedits-mode). En [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), a menos que una regla de permiso apruebe la escritura, se te pide confirmación en lugar de que decida el clasificador. La solicitud nombra la ruta a la que se resuelve la escritura.

489* **Se resuelve a una ruta protegida que la ruta solicitada no nombra**: la [tabla de rutas protegidas](/docs/es/permission-modes#protected-paths) da el resultado para cada modo de permiso, excepto que donde la tabla enruta la escritura al clasificador, esta escritura le solicita en su lugar.491* **Se resuelve a una ruta protegida que la ruta solicitada no nombra**: la [tabla de rutas protegidas](/docs/es/permission-modes#protected-paths) indica el resultado para cada modo de permisos, excepto que, donde la tabla envía la escritura al clasificador, esta escritura te pide confirmación en su lugar.

490 492 

491<h5 id="paths-that-can’t-be-resolved-or-that-change">493<h5 id="paths-that-can’t-be-resolved-or-that-change">

492 Rutas que no se pueden resolver o que cambian494 Rutas que no se pueden resolver o que cambian

493</h5>495</h5>

494 496 

495Cuando Claude Code no puede determinar dónde conduce una ruta en el disco, por ejemplo porque los symlinks en ella forman un bucle, las herramientas Read, Edit y Write [rechazan la operación](/docs/es/errors#refusing-after-a-symlink-changed).497Cuando Claude Code no puede determinar a dónde lleva una ruta en el disco, por ejemplo porque los enlaces simbólicos en ella forman un bucle, las herramientas Read, Edit y Write [rechazan la operación](/docs/es/errors#refusing-after-a-symlink-changed).

496 498 

497Cuando una herramienta luego abre el archivo aprobado, [confirma que la ruta aún se resuelve a la ubicación que la verificación de permiso aprobó](/docs/es/errors#refusing-after-a-symlink-changed).499Cuando una herramienta abre después el archivo aprobado, [confirma que la ruta aún se resuelve a la ubicación que aprobó la verificación de permisos](/docs/es/errors#refusing-after-a-symlink-changed).

498 500 

499<h3 id="webfetch">501<h3 id="webfetch">

500 WebFetch502 WebFetch

501</h3>503</h3>

502 504 

503Las reglas de WebFetch usan un prefijo `domain:` y coinciden contra el nombre de host de la URL solicitada. La coincidencia no distingue mayúsculas de minúsculas, admite comodines `*` y elimina un punto final de ambas la regla y el nombre de host para que `example.com.` y `example.com` se traten igual.505Las reglas de WebFetch usan un prefijo `domain:` y se comparan con el nombre de host de la URL solicitada. La coincidencia no distingue mayúsculas de minúsculas, admite comodines `*` y elimina un `.` final tanto de la regla como del nombre de host, de modo que `example.com.` y `example.com` se tratan igual.

504 506 

505* `WebFetch(domain:example.com)` coincide con solicitudes a `example.com`507* `WebFetch(domain:example.com)` coincide con las solicitudes a `example.com`

506* `WebFetch(domain:*.example.com)` coincide con cualquier subdominio a cualquier profundidad, como `api.example.com` o `a.b.example.com`, pero no `example.com` en sí508* `WebFetch(domain:*.example.com)` coincide con cualquier subdominio a cualquier profundidad, como `api.example.com` o `a.b.example.com`, pero no con `example.com` en sí

507* `WebFetch(domain:*)` coincide con cada dominio. No es lo mismo que una regla `WebFetch` desnuda; consulte [Allow or deny every fetch](#allow-or-deny-every-fetch)509* `WebFetch(domain:*)` coincide con todos los dominios. No es lo mismo que una regla `WebFetch` sin argumentos; consulta [Permitir o negar todas las obtenciones](#allow-or-deny-every-fetch)

508 510 

509En cualquier posición que no sea un `*.` inicial o un `*` desnudo, el comodín coincide solo con el texto entre dos puntos. `WebFetch(domain:example.*)` coincide con `example.org`, donde `*` se convierte en `org`, pero no `example.evil.com`, donde `*` tendría que convertirse en `evil.com` y cruzar un punto. Esto evita que un comodín final coincida con dominios que un atacante podría registrar.511En cualquier posición que no sea un `*.` inicial o un `*` solo, el comodín coincide únicamente con el texto entre dos puntos. `WebFetch(domain:example.*)` coincide con `example.org`, donde `*` se convierte en `org`, pero no con `example.evil.com`, donde `*` tendría que convertirse en `evil.com` y cruzar un punto. Esto evita que un comodín final coincida con dominios que un atacante podría registrar.

510 512 

511Los comodines en reglas `WebFetch` requieren Claude Code v2.1.172 o posterior para coincidir con búsquedas.513Los comodines en las reglas `WebFetch` requieren Claude Code v2.1.172 o posterior para coincidir con las obtenciones.

512 514 

513<h4 id="allow-or-deny-every-fetch">515<h4 id="allow-or-deny-every-fetch">

514 Permitir o negar cada búsqueda516 Permitir o negar todas las obtenciones

515</h4>517</h4>

516 518 

517Una regla `WebFetch` desnuda es el nombre de la herramienta sin una parte `domain:`, como `"deny": ["WebFetch"]`. Tanto ella como `WebFetch(domain:*)` cubren cada URL, pero Claude Code las aplica de manera diferente, y solo la forma `domain:` también agrega su dominio a la [lista de dominios permitidos o negados](/docs/es/sandboxing#network-isolation) del sandbox. Esa sección enumera las formas de comodín que el sandbox honra y la versión que agregó `*` desnudo.519Una regla `WebFetch` sin argumentos es el nombre de la herramienta sin la parte `domain:`, como `"deny": ["WebFetch"]`. Tanto ella como `WebFetch(domain:*)` cubren todas las URLs, pero Claude Code las aplica de manera diferente, y solo la forma `domain:` agrega además su dominio a la [lista de dominios permitidos o negados](/docs/es/sandboxing#network-isolation) del sandbox. Esa sección enumera las formas de comodín que respeta el sandbox y la versión que agregó el `*` solo.

518 520 

519Cada fila muestra lo que hace una regla en la lista `allow` y en la lista `deny`:521Cada fila muestra lo que hace una regla en la lista `allow` y en la lista `deny`:

520 522 

521| Regla | En `allow` | En `deny` |523| Regla | En `allow` | En `deny` |

522| :- | :- | :- |524| :- | :- | :- |

523| `WebFetch` | Claude busca sin solicitarle. No cambia qué hosts pueden alcanzar los comandos en sandbox. | Claude Code elimina la herramienta `WebFetch`, por lo que Claude no puede buscar en absoluto. No cambia qué hosts pueden alcanzar los comandos en sandbox. |525| `WebFetch` | Claude obtiene páginas sin pedirte confirmación. No cambia a qué hosts pueden acceder los comandos en el sandbox. | Claude Code elimina la herramienta `WebFetch`, por lo que Claude no puede obtener nada. No cambia a qué hosts pueden acceder los comandos en el sandbox. |

524| `WebFetch(domain:*)` | Claude busca sin solicitarle, y los comandos en sandbox pueden alcanzar cualquier host. | Claude Code mantiene la herramienta y rechaza cada búsqueda, y los comandos en sandbox no pueden alcanzar ningún host. |526| `WebFetch(domain:*)` | Claude obtiene páginas sin pedirte confirmación, y los comandos en el sandbox pueden acceder a cualquier host. | Claude Code mantiene la herramienta y rechaza cada obtención, y los comandos en el sandbox no pueden acceder a ningún host. |

525 527 

526Las dos formas también difieren en lecturas de [artefactos](/docs/es/artifacts), las páginas que la herramienta Artifact publica en claude.ai. Una regla de negación o solicitud `WebFetch` desnuda no se aplica a esas lecturas. Una regla `domain:` que cubre `claude.ai` o el host de contenido `*.claudeusercontent.com`, como `WebFetch(domain:claude.ai)` o `WebFetch(domain:*)`, niega cada lectura o solicita antes de ella. Una regla [`Artifact`](/docs/es/artifacts#disable-artifacts) hace lo mismo.528Las dos formas también difieren en las lecturas de [artefactos](/docs/es/artifacts), las páginas que la herramienta Artifact publica en claude.ai. Una regla de negación o solicitud `WebFetch` sin argumentos no se aplica a esas lecturas. Una regla `domain:` que cubra `claude.ai` o el host de contenido `*.claudeusercontent.com`, como `WebFetch(domain:claude.ai)` o `WebFetch(domain:*)`, niega cada lectura o pide confirmación antes de ella. Una [regla `Artifact`](/docs/es/artifacts#disable-artifacts) hace lo mismo.

527 529 

528Cuando una regla bloquea una lectura, la negación nombra la regla. Antes de v2.1.268, una regla de negación `WebFetch` desnuda bloqueaba cada lectura de artefacto, y una regla de solicitud desnuda solicitaba antes de cada una.530Cuando una regla bloquea una lectura, el rechazo nombra la regla. Antes de v2.1.268, una regla de negación `WebFetch` sin argumentos bloqueaba todas las lecturas de artefactos, y una regla de solicitud sin argumentos pedía confirmación antes de cada una.

529 531 

530Para permitir que Claude busque libremente mientras mantiene la lista de permitidos del sandbox como está, use la forma desnuda. Este `settings.json` hace eso:532Para permitir que Claude obtenga páginas libremente sin modificar la lista de permitidos del sandbox, usa la forma sin argumentos. Este `settings.json` hace eso:

531 533 

532```json theme={null}534```json theme={null}

533{535{


537}539}

538```540```

539 541 

540Cuando solicita a Claude que busque una página, busca sin una solicitud. Cuando solicita que ejecute un `curl` [en sandbox](/docs/es/sandboxing) contra un host fuera de la lista de permitidos del sandbox, Claude Code aún le solicita ese host, porque la regla desnuda no agregó el host a la lista de permitidos.542Cuando le pides a Claude que obtenga una página, lo hace sin pedir confirmación. Cuando le pides que ejecute un `curl` [en el sandbox](/docs/es/sandboxing) contra un host fuera de la lista de permitidos del sandbox, Claude Code aún te pide confirmación para ese host, porque la regla sin argumentos no agregó el host a la lista de permitidos.

541 543 

542En [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), Claude en su lugar nombra el host en los [dominios permitidos por comando](/docs/es/sandboxing#per-command-allowed-domains-in-auto-mode) de la solicitud para que el clasificador revise.544En [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), Claude en cambio nombra el host en los [dominios permitidos por comando](/docs/es/sandboxing#per-command-allowed-domains-in-auto-mode) del comando para que el clasificador lo revise.

543 545 

544<h3 id="mcp">546<h3 id="mcp">

545 MCP547 MCP


551* `mcp__puppeteer__*` usa sintaxis de comodín y también coincide con todas las herramientas del servidor `puppeteer`553* `mcp__puppeteer__*` usa sintaxis de comodín y también coincide con todas las herramientas del servidor `puppeteer`

552* `mcp__puppeteer__puppeteer_navigate` coincide con la herramienta `puppeteer_navigate` proporcionada por el servidor `puppeteer`554* `mcp__puppeteer__puppeteer_navigate` coincide con la herramienta `puppeteer_navigate` proporcionada por el servidor `puppeteer`

553 555 

554Si su organización ha establecido una herramienta de conector [claude.ai](/docs/es/mcp#organization-controls-on-connector-tools) en `ask` y esa configuración llega a Claude Code en su sesión, las reglas de permiso para esa herramienta no tienen efecto: Claude Code solicita en cada llamada, incluso en modos `auto` y `bypassPermissions`. En modo `dontAsk`, que nunca solicita, Claude Code niega la llamada en su lugar. Las herramientas de conectores que Claude Code obtiene por sí mismo aparecen como `mcp__claude_ai_<server>__<tool>`.556Si tu organización ha configurado una herramienta de un [conector de claude.ai](/docs/es/mcp#organization-controls-on-connector-tools) en `ask` y esa configuración llega a Claude Code en tu sesión, las reglas de permiso para esa herramienta no tienen efecto: Claude Code pide confirmación en cada llamada, incluso en los modos `auto` y `bypassPermissions`. En el modo `dontAsk`, que nunca pide confirmación, Claude Code niega la llamada en su lugar. Las herramientas de los conectores que Claude Code obtiene por sí mismo aparecen como `mcp__claude_ai_<server>__<tool>`.

555 557 

556En una sesión de [Cowork](https://claude.com/docs/cowork/overview) en la aplicación Claude Desktop, Claude ejecuta comandos de shell a través de la herramienta `mcp__workspace__bash` de Cowork en lugar de la herramienta `Bash` integrada, y Cowork igualmente proporciona `mcp__workspace__web_fetch` para búsquedas web. Claude Code también aplica reglas de negación que nombran la herramienta completa `Bash` o `WebFetch` a estas herramientas de Cowork, por lo que una regla de negación `Bash` administrada detiene a Claude de ejecutar comandos de shell en Cowork. Cuando Claude Code bloquea tal llamada, el mensaje nombra la herramienta de Cowork: `Permission to use mcp__workspace__bash has been denied.` Las reglas de permiso no se transfieren: Claude Code nunca aplica una regla de permiso `Bash` a `mcp__workspace__bash`.558En una sesión de [Cowork](https://claude.com/docs/cowork/overview) en la aplicación Claude Desktop, Claude ejecuta comandos de shell mediante la herramienta `mcp__workspace__bash` de Cowork en lugar de la herramienta `Bash` integrada, y Cowork también proporciona `mcp__workspace__web_fetch` para obtener páginas web. Claude Code también aplica a estas herramientas de Cowork las reglas de negación que nombran la herramienta `Bash` o `WebFetch` completa, por lo que una regla de negación `Bash` administrada impide que Claude ejecute comandos de shell en Cowork. Cuando Claude Code bloquea una llamada así, el mensaje nombra la herramienta de Cowork: `Permission to use mcp__workspace__bash has been denied.` Las reglas de permiso no se trasladan: Claude Code nunca aplica una regla de permiso `Bash` a `mcp__workspace__bash`.

557 559 

558<h3 id="agent-subagents">560<h3 id="agent-subagents">

559 Agent (subagentes)561 Agent (subagentes)

560</h3>562</h3>

561 563 

562Use reglas `Agent(AgentName)` para controlar qué [subagentes](/docs/es/sub-agents) puede usar Claude:564Usa reglas `Agent(AgentName)` para controlar qué [subagentes](/docs/es/sub-agents) puede usar Claude:

563 565 

564* `Agent(Explore)` coincide con el subagente Explore566* `Agent(Explore)` coincide con el subagente Explore

565* `Agent(Plan)` coincide con el subagente Plan567* `Agent(Plan)` coincide con el subagente Plan

566* `Agent(my-custom-agent)` coincide con un subagente personalizado llamado `my-custom-agent`568* `Agent(my-custom-agent)` coincide con un subagente personalizado llamado `my-custom-agent`

567 569 

568Agregue estas reglas a la matriz `deny` en su configuración o use la bandera CLI `--disallowedTools` para deshabilitar agentes específicos. Para deshabilitar el agente Explore:570Agrega estas reglas al arreglo `deny` de tu configuración o usa el flag de la CLI `--disallowedTools` para deshabilitar agentes específicos. Para deshabilitar el agente Explore:

569 571 

570```json theme={null}572```json theme={null}

571{573{


579 Cd581 Cd

580</h3>582</h3>

581 583 

582Las reglas `Cd` controlan a qué directorios puede moverse la sesión el comando [`/cd`](/docs/es/commands). `Cd` no es una herramienta invocable por modelo: Claude no puede llamarla, y las reglas se aplican solo cuando ejecuta `/cd` usted mismo.584Las reglas `Cd` controlan a qué directorios puede mover la sesión el [comando `/cd`](/docs/es/commands). `Cd` no es una herramienta que el modelo pueda invocar: Claude no puede llamarla, y las reglas se aplican solo cuando tú mismo ejecutas `/cd`.

583 585 

584Una regla de negación `Cd` desnuda deshabilita `/cd` completamente. Una regla de negación `Cd(<path-pattern>)` bloquea destinos coincidentes. Las reglas de negación verifican cada ortografía del destino, incluido cada salto de symlink al que se resuelve, por lo que una regla escrita para una ruta también bloquea destinos que se resuelven a ella.586Una regla de negación `Cd` sin argumentos deshabilita `/cd` por completo. Una regla de negación `Cd(<path-pattern>)` bloquea los destinos que coinciden. Las reglas de negación verifican cada forma de escribir el destino, incluido cada salto de enlace simbólico por el que se resuelve, por lo que una regla escrita para una ruta también bloquea los destinos que se resuelven a ella.

585 587 

586Agregar cualquier regla de permiso `Cd` cambia `/cd` a modo de lista de permitidos: el directorio de destino resuelto debe coincidir con una de sus reglas de permiso, o `/cd` rechaza. Sin reglas `Cd` configuradas, `/cd` mantiene su comportamiento predeterminado y le solicita que confíe en un directorio desconocido.588Agregar cualquier regla de permiso `Cd` cambia `/cd` al modo de lista de permitidos: el directorio de destino resuelto debe coincidir con una de tus reglas de permiso, o `/cd` se rechaza. Sin reglas `Cd` configuradas, `/cd` mantiene su comportamiento predeterminado y te pide que confíes en un directorio desconocido.

587 589 

588Los patrones de ruta comparten los anclajes `//`, `~/` y `/` de [reglas Read y Edit](#read-and-edit), pero la coincidencia se ancla a la ruta de directorio completa en lugar de estilo gitignore. `*` coincide exactamente con un segmento de ruta y `**` coincide en segmentos. Un `/**` final también coincide con su raíz nombrada.590Los patrones de ruta comparten los anclajes `//`, `~/` y `/` de las [reglas Read y Edit](#read-and-edit), pero la coincidencia se ancla a la ruta completa del directorio en lugar de seguir el estilo de gitignore. `*` coincide exactamente con un segmento de ruta y `**` coincide a través de segmentos. Un `/**` final también coincide con la raíz que nombra.

589 591 

590| Regla | Coincide | No coincide |592| Regla | Coincide | No coincide |

591| - | - | - |593| - | - | - |

592| `Cd(~/code/*)` | `~/code/app` | `~/code/app/src`, `~/code` |594| `Cd(~/code/*)` | `~/code/app` | `~/code/app/src`, `~/code` |

593| `Cd(~/code/**)` | `~/code` y cualquier directorio bajo él | directorios fuera de `~/code` |595| `Cd(~/code/**)` | `~/code` y cualquier directorio dentro de él | directorios fuera de `~/code` |

594| `Cd(**/node_modules)` | cualquier directorio `node_modules` a cualquier profundidad bajo el directorio actual | `node_modules/pkg` |596| `Cd(**/node_modules)` | cualquier directorio `node_modules` a cualquier profundidad bajo el directorio actual | `node_modules/pkg` |

595 597 

596<h2 id="extend-permissions-with-hooks">598<h2 id="extend-permissions-with-hooks">

Details

26 26 

27`claude plugins` es un alias para `claude plugin`.27`claude plugins` es un alias para `claude plugin`.

28 28 

29Cada subcomando comparte estos códigos de salida, argumentos de plugins y valores de ámbito:29Cada subcomando comparte estos códigos de salida, argumentos de plugins y valores de alcance:

30 30 

31* **Códigos de salida**: `0` en caso de éxito y `1` en caso de fallo. `validate` añade salida `2` para un error inesperado, y `eval` añade los códigos listados en [su sección](#plugin-eval).31* **Códigos de salida**: `0` en caso de éxito y `1` en caso de fallo. `validate` añade salida `2` para un error inesperado, y `eval` añade los códigos listados en [su sección](#plugin-eval).

32* **Argumentos de plugins**: un argumento `<plugin>` es un `name` de plugin o `name@marketplace`. Cuando dos marketplaces ofrecen el mismo nombre, usa la forma calificada. `configure` toma solo la forma calificada.32* **Argumentos de plugins**: un argumento `<plugin>` es un `name` de plugin o `name@marketplace`. Cuando dos marketplaces ofrecen el mismo nombre, usa la forma calificada. `configure` toma solo la forma calificada.

33* **Ámbitos**: `--scope` toma `user`, `project` o `local`, y nombra el archivo de configuración al que escribe el comando. `update` también toma `managed`.33* **Alcances**: `--scope` toma `user`, `project` o `local`, y nombra el archivo de configuración al que escribe el comando. `update` también toma `managed`.

34 34 

35<h3 id="plugin-init">35<h3 id="plugin-init">

36 plugin init36 plugin init


70 70 

71* Un valor desconocido de `--with`71* Un valor desconocido de `--with`

72* Un scaffold existente en el destino sin `--force`72* Un scaffold existente en el destino sin `--force`

73* Una configuración gestionada que bloquea plugins de directorio de skills73* Una configuración administrada que bloquea plugins de directorio de skills

74 74 

75<h3 id="plugin-install">75<h3 id="plugin-install">

76 plugin install76 plugin install


82claude plugin install <plugin> [options]82claude plugin install <plugin> [options]

83```83```

84 84 

85La mayoría de los plugins se instalan sin un aviso. Para un plugin cuya entrada de marketplace [ejecuta un comando para instalarlo](/docs/es/plugins/host-marketplace) o [establece un `headersHelper` para su descarga](/docs/es/plugins/host-marketplace#how-users-accept-a-headershelper-command), Claude Code primero imprime el comando y pregunta `Run this command now? [y/N]`.85La mayoría de los plugins se instalan sin una solicitud. Para un plugin cuya entrada de marketplace [ejecuta un comando para instalarlo](/docs/es/plugins/host-marketplace) o [establece un `headersHelper` para su descarga](/docs/es/plugins/host-marketplace#how-users-accept-a-headershelper-command), Claude Code primero imprime el comando y pregunta `Run this command now? [y/N]`.

86 86 

87| Bandera | Descripción |87| Bandera | Descripción |

88| :- | :- |88| :- | :- |

89| `-s, --scope <scope>` | Ámbito de instalación: `user`, `project` o `local`. Por defecto es `user` |89| `-s, --scope <scope>` | Alcance de instalación: `user`, `project` o `local`. Por defecto es `user` |

90| `--config <key=value>` | Establece una opción [`userConfig`](/docs/es/plugins/manifest-reference) que declara el manifiesto del plugin. Repite la bandera para cada opción. Requiere Claude Code v2.1.147 o posterior. Una clave escrita como `<server>.<key>` establece una configuración que un [servidor MCP empaquetado](/docs/es/plugins/components#include-a-packaged-mcpb-server) declara en su propio `user_config` en su lugar, para un archivo de paquete enviado dentro del plugin. La forma `<server>.<key>` requiere Claude Code v2.1.285 o posterior |90| `--config <key=value>` | Establece una opción [`userConfig`](/docs/es/plugins/manifest-reference) que declara el manifiesto del plugin. Repite la bandera para cada opción. Requiere Claude Code v2.1.147 o posterior. Una clave escrita como `<server>.<key>` establece una configuración que un [servidor MCP empaquetado](/docs/es/plugins/components#include-a-packaged-mcpb-server) declara en su propio `user_config` en su lugar, para un archivo de paquete enviado dentro del plugin. La forma `<server>.<key>` requiere Claude Code v2.1.285 o posterior |

91| `-y, --yes` | Acepta el comando de instalación mostrado sin el aviso `Run this command now?`. Se ignora cuando el comando se ejecuta dentro de una sesión de Claude Code, como desde la herramienta Bash o un hook. Requiere Claude Code v2.1.229 o posterior |91| `-y, --yes` | Acepta el comando de instalación mostrado sin la solicitud `Run this command now?`. Se ignora cuando el comando se ejecuta dentro de una sesión de Claude Code, como desde la herramienta Bash o un hook. Requiere Claude Code v2.1.229 o posterior |

92| `--accept-command <sha256>` | Acepta el comando de instalación mostrado cuyo `sha256` una ejecución anterior de [`--json`](#plugin-json-result) reportó en `shownCommand`, en lugar de `-y`. No se puede combinar con `-y`. Consulta [Aceptar un comando de instalación mostrado](#accept-a-displayed-install-command). Requiere Claude Code v2.1.271 o posterior |92| `--accept-command <sha256>` | Acepta el comando de instalación mostrado cuyo `sha256` una ejecución anterior de [`--json`](#plugin-json-result) reportó en `shownCommand`, en lugar de `-y`. No se puede combinar con `-y`. Consulta [Aceptar un comando de instalación mostrado](#accept-a-displayed-install-command). Requiere Claude Code v2.1.271 o posterior |

93| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout en lugar del mensaje legible por humanos, para usar en scripts. Consulta [Formato de resultado JSON](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior |93| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout en lugar del mensaje legible por humanos, para usar en scripts. Consulta [Formato de resultado JSON](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior |

94 94 

95Ejecuta `claude plugin install --help` en tu shell para ver todas las opciones que tu versión soporta.95Ejecuta `claude plugin install --help` en tu shell para ver todas las opciones que tu versión soporta.

96 96 

97Pasa `-y` desde tu propia terminal para aceptar el comando mostrado sin el aviso. Aquí está lo que sucede sin un TTY y cuando Claude ejecuta el comando:97Pasa `-y` desde tu propia terminal para aceptar el comando mostrado sin la solicitud. Aquí está lo que sucede sin un TTY y cuando Claude ejecuta el comando:

98 98 

99* **stdin o stdout no es un TTY, y no pasas ni `-y` ni `--accept-command`**: la instalación se rechaza. La salida dice que el comando solo se mostró, y el código de salida es `1`99* **stdin o stdout no es un TTY, y no pasas ni `-y` ni `--accept-command`**: la instalación se rechaza. La salida dice que el comando solo se mostró, y el código de salida es `1`

100* **Claude ejecuta el comando a través de su herramienta Bash**: `-y` se ignora. Ejecuta el comando desde tu propia terminal en su lugar100* **Claude ejecuta el comando a través de su herramienta Bash**: `-y` se ignora. Ejecuta el comando desde tu propia terminal en su lugar


107 107 

108Claude Code imprime `Successfully installed plugin: formatter@my-marketplace (scope: project)`. Cuando nada nuevo se instala, la salida dice por qué:108Claude Code imprime `Successfully installed plugin: formatter@my-marketplace (scope: project)`. Cuando nada nuevo se instala, la salida dice por qué:

109 109 

110* **Ya instalado en ese ámbito**: la salida es `Plugin "formatter@my-marketplace" is already installed (scope: project)` y el código de salida es `0`110* **Ya instalado en ese alcance**: la salida es `Plugin "formatter@my-marketplace" is already installed (scope: project)` y el código de salida es `0`

111* **Rechazas un aviso de origen de comando**: la salida es `Aborted.` y el código de salida es `1`111* **Rechazas una solicitud de origen de comando**: la salida es `Aborted.` y el código de salida es `1`

112* **Rechazas un aviso de `headersHelper`, o no se puede confirmar sin un TTY**: la salida es `Aborted — the command was not run.` y el código de salida es `1`112* **Rechazas una solicitud de `headersHelper`, o no se puede confirmar sin un TTY**: la salida es `Aborted — the command was not run.` y el código de salida es `1`

113 113 

114<h4 id="plugin-json-result">114<h4 id="plugin-json-result">

115 Formato de resultado JSON115 Formato de resultado JSON


125 125 

126Otros campos, como `pluginId`, `scope` y `failureCode`, aparecen solo cuando aplican.126Otros campos, como `pluginId`, `scope` y `failureCode`, aparecen solo cuando aplican.

127 127 

128La opción `--json` en `plugin uninstall`, `plugin update`, `plugin enable` y `plugin disable` imprime el mismo objeto con los campos propios de ese subcomando.

129 

128Un error de uso, como un `--scope` inválido, no imprime ninguna línea de resultado y sale con `1` con la razón en stderr.130Un error de uso, como un `--scope` inválido, no imprime ninguna línea de resultado y sale con `1` con la razón en stderr.

129 131 

130<h4 id="accept-a-displayed-install-command">132<h4 id="accept-a-displayed-install-command">


143 plugin uninstall145 plugin uninstall

144</h3>146</h3>

145 147 

146Elimina un plugin instalado de un ámbito. `remove` y `rm` son alias para `uninstall`.148Elimina un plugin instalado de un alcance. `remove` y `rm` son alias para `uninstall`.

147 149 

148```bash theme={null}150```bash theme={null}

149claude plugin uninstall <plugin> [options]151claude plugin uninstall <plugin> [options]


151 153 

152| Bandera | Descripción |154| Bandera | Descripción |

153| :- | :- |155| :- | :- |

154| `-s, --scope <scope>` | Desinstala del ámbito: `user`, `project` o `local`. Por defecto es `user` |156| `-s, --scope <scope>` | Desinstala del alcance: `user`, `project` o `local`. Por defecto es `user` |

155| `--keep-data` | Preserva el directorio de datos persistentes del plugin, `~/.claude/plugins/data/<id>/` |157| `--keep-data` | Preserva el directorio de datos persistentes del plugin, `~/.claude/plugins/data/<id>/` |

156| `--prune` | También elimina [dependencias](/docs/es/plugins/dependencies) auto-instaladas que ningún plugin restante necesita |158| `--prune` | También elimina [dependencias](/docs/es/plugins/dependencies) auto-instaladas que ningún plugin restante necesita |

157| `-y, --yes` | Omite el aviso de confirmación de `--prune`. Requerido con `--prune` cuando stdin o stdout no es un TTY |159| `-y, --yes` | Omite la solicitud de confirmación de `--prune`. Requerido con `--prune` cuando stdin o stdout no es un TTY |

158| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout, en el [mismo formato que `plugin install --json`](#plugin-json-result). No se puede combinar con `--prune`. Requiere Claude Code v2.1.268 o posterior |160| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout, en el [mismo formato que `plugin install --json`](#plugin-json-result). No se puede combinar con `--prune`. Requiere Claude Code v2.1.268 o posterior |

159 161 

160Desinstala un plugin del ámbito del proyecto:162Desinstala un plugin del alcance del proyecto:

161 163 

162```bash theme={null}164```bash theme={null}

163claude plugin uninstall formatter@my-marketplace --scope project165claude plugin uninstall formatter@my-marketplace --scope project

164```166```

165 167 

166Claude Code imprime `Successfully uninstalled plugin: formatter (scope: project)`. Cuando el plugin no está instalado en ese ámbito, el comando imprime una línea que comienza con `Failed to uninstall plugin "formatter@my-marketplace":` y sale con `1`.168Claude Code imprime `Successfully uninstalled plugin: formatter (scope: project)`. Cuando el plugin no está instalado en ese alcance, el comando imprime una línea que comienza con `Failed to uninstall plugin "formatter@my-marketplace":` y sale con `1`.

167 169 

168Si la línea de fallo continúa con `"formatter" was not uninstalled:` y nombra un archivo de configuración, Claude Code no pudo confirmar que la configuración del ámbito ya no activa el plugin, por lo que el plugin permanece instalado con todo lo que guardó. Con `--json`, el resultado lleva `failureCode: "settings_still_on"`. Esta verificación de configuración requiere Claude Code v2.1.282 o posterior.170Si la línea de fallo continúa con `"formatter" was not uninstalled:` y nombra un archivo de configuración, Claude Code no pudo confirmar que la configuración del alcance ya no activa el plugin, por lo que el plugin permanece instalado con todo lo que guardó. Con `--json`, el resultado lleva `failureCode: "settings_still_on"`. Esta verificación de configuración requiere Claude Code v2.1.282 o posterior.

169 171 

170<h4 id="what-an-uninstall-deletes-and-keeps">172<h4 id="what-an-uninstall-deletes-and-keeps">

171 Qué elimina y qué conserva una desinstalación173 Qué elimina y qué conserva una desinstalación

172</h4>174</h4>

173 175 

174Cuando desinstales un plugin del último ámbito en el que está instalado, Claude Code también elimina las [opciones y secretos](/docs/es/plugins/manifest-reference#user-configuration) almacenados del plugin y su directorio de datos, `~/.claude/plugins/data/<id>/`. Hay tres excepciones:176Cuando desinstales un plugin del último alcance en el que está instalado, Claude Code también elimina las [opciones y secretos](/docs/es/plugins/manifest-reference#user-configuration) almacenados del plugin y su directorio de datos, `~/.claude/plugins/data/<id>/`. Hay tres excepciones:

175 177 

176* Con `--keep-data`, el directorio de datos permanece178* Con `--keep-data`, el directorio de datos permanece

177* Cuando otro plugin instalado usa la misma carpeta, como uno cuyo ID difiere de este solo en mayúsculas, el directorio de datos permanece179* Cuando otro plugin instalado usa la misma carpeta, como uno cuyo ID difiere de este solo en mayúsculas, el directorio de datos permanece

178* Cuando Claude Code no puede leer la lista de plugins instalados después de eliminar el plugin de ese ámbito, las opciones, secretos y directorio de datos todos permanecen, porque el plugin puede estar aún instalado en otro ámbito. La desinstalación aún tiene éxito. El mensaje lista lo que permaneció y cómo eliminarlo, y con `--json` el resultado lleva `savedKept: "install_records_unreadable"`180* Cuando Claude Code no puede leer la lista de plugins instalados después de eliminar el plugin de ese alcance, las opciones, secretos y directorio de datos todos permanecen, porque el plugin puede estar aún instalado en otro alcance. La desinstalación aún tiene éxito. El mensaje lista lo que permaneció y cómo eliminarlo, y con `--json` el resultado lleva `savedKept: "install_records_unreadable"`

179 181 

180Con `--json`, `keptData` reporta si el directorio permaneció, y `/plugin` muestra `· data preserved` cuando lo hizo. Para un directorio que permanece sin `--keep-data`, este reporte requiere Claude Code v2.1.281 o posterior. El campo `savedKept` requiere Claude Code v2.1.282 o posterior.182Con `--json`, `keptData` reporta si el directorio permaneció, y `/plugin` muestra `· data preserved` cuando lo hizo. Para un directorio que permanece sin `--keep-data`, este reporte requiere Claude Code v2.1.281 o posterior. El campo `savedKept` requiere Claude Code v2.1.282 o posterior.

181 183 


191 193 

192| Bandera | Descripción |194| Bandera | Descripción |

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

194| `-s, --scope <scope>` | Ámbito para habilitar: `user`, `project` o `local`. Se auto-detecta cuando se omite |196| `-s, --scope <scope>` | Alcance para habilitar: `user`, `project` o `local`. Se auto-detecta cuando se omite |

195| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout, en el [mismo formato que `plugin install --json`](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior |197| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout, en el [mismo formato que `plugin install --json`](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior |

196 198 

197Sin `--scope`, el comando verifica tus archivos de configuración en el orden local, proyecto, usuario, y usa el primer ámbito que menciona el plugin.199Sin `--scope`, el comando verifica tus archivos de configuración en el orden local, proyecto, usuario, y usa el primer alcance que menciona el plugin.

198 200 

199Si pasas un `--scope` donde el plugin no está declarado, el comando escribe una anulación o falla:201Si pasas un `--scope` donde el plugin no está declarado, el comando escribe una sobrescritura o falla:

200 202 

201* **Un ámbito que [tiene precedencia](/docs/es/plugins/loading) sobre el que lo declara**: Claude Code escribe una anulación en el ámbito que pasaste. Por ejemplo, `claude plugin disable formatter --scope local` desactiva un plugin habilitado en el proyecto solo para ti203* **Un alcance que [tiene precedencia](/docs/es/plugins/loading) sobre el que lo declara**: Claude Code escribe una sobrescritura en el alcance que pasaste. Por ejemplo, `claude plugin disable formatter --scope local` desactiva un plugin habilitado en el proyecto solo para ti

202* **Cualquier otro ámbito**: el comando falla con `Plugin "formatter" is installed at project scope, not user. Use --scope project or omit --scope to auto-detect.`204* **Cualquier otro alcance**: el comando falla con `Plugin "formatter" is installed at project scope, not user. Use --scope project or omit --scope to auto-detect.`

203 205 

204Si el plugin ya está habilitado en el ámbito resuelto, el comando imprime `Plugin "formatter" is already enabled` y sale con `1`. Con `--json`, el resultado tiene `"failureCode": "already_in_goal_state"` y `"alreadyInGoalState": true`, para que un script pueda tratar ese caso como éxito.206Si el plugin ya está habilitado en el alcance resuelto, el comando imprime `Plugin "formatter" is already enabled` y sale con `1`. Con `--json`, el resultado tiene `"failureCode": "already_in_goal_state"` y `"alreadyInGoalState": true`, para que un script pueda tratar ese caso como éxito.

205 207 

206Cuando el plugin declara [dependencias](/docs/es/plugins/dependencies), Claude Code también las habilita. El comando falla en estos casos:208Cuando el plugin declara [dependencias](/docs/es/plugins/dependencies), Claude Code también las habilita. El comando falla en estos casos:

207 209 

208* **Una dependencia no está instalada**: enable falla e imprime el comando `claude plugin install` para cada dependencia faltante210* **Una dependencia no está instalada**: enable falla e imprime el comando `claude plugin install` para cada dependencia faltante

209* **Una dependencia está bloqueada por la política de plugins de tu organización**: enable falla y nombra la dependencia bloqueada211* **Una dependencia está bloqueada por la política de plugins de tu organización**: enable falla y nombra la dependencia bloqueada

210* **Una dependencia está establecida en `false` en un ámbito con mayor precedencia que el ámbito de destino**: enable falla. Habilita la dependencia en ese ámbito, o pasa `--scope` para escribir allí212* **Una dependencia está establecida en `false` en un alcance con mayor precedencia que el alcance de destino**: enable falla. Habilita la dependencia en ese alcance, o pasa `--scope` para escribir allí

211 213 

212Vuelve a habilitar un plugin dondequiera que esté declarado:214Vuelve a habilitar un plugin dondequiera que esté declarado:

213 215 


215claude plugin enable formatter217claude plugin enable formatter

216```218```

217 219 

218Claude Code imprime `Successfully enabled plugin: formatter (scope: project)`, nombrando el ámbito que detectó.220Claude Code imprime `Successfully enabled plugin: formatter (scope: project)`, nombrando el alcance que detectó.

219 221 

220<h3 id="plugin-disable">222<h3 id="plugin-disable">

221 plugin disable223 plugin disable


230| Bandera | Descripción |232| Bandera | Descripción |

231| :- | :- |233| :- | :- |

232| `-a, --all` | Deshabilita cada plugin habilitado. No se puede combinar con un nombre de plugin o `--scope` |234| `-a, --all` | Deshabilita cada plugin habilitado. No se puede combinar con un nombre de plugin o `--scope` |

233| `-s, --scope <scope>` | Ámbito para deshabilitar: `user`, `project` o `local`. Se auto-detecta cuando se omite |235| `-s, --scope <scope>` | Alcance para deshabilitar: `user`, `project` o `local`. Se auto-detecta cuando se omite |

234| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout, en el [mismo formato que `plugin install --json`](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior |236| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout, en el [mismo formato que `plugin install --json`](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior |

235 237 

236Sin `--scope`, el ámbito se auto-detecta en el mismo orden local, proyecto, usuario que [`plugin enable`](#plugin-enable).238Sin `--scope`, el alcance se auto-detecta en el mismo orden local, proyecto, usuario que [`plugin enable`](#plugin-enable).

237 239 

238Si no pasas ni un nombre de plugin ni `--all`, Claude Code imprime `Please specify a plugin name or use --all to disable all plugins` y sale con `1`. Deshabilitar un plugin que ya está deshabilitado imprime `Plugin "formatter" is already disabled` y sale con `1`, como [`plugin enable`](#plugin-enable) hace para un plugin ya habilitado.240Si no pasas ni un nombre de plugin ni `--all`, Claude Code imprime `Please specify a plugin name or use --all to disable all plugins` y sale con `1`. Deshabilitar un plugin que ya está deshabilitado imprime `Plugin "formatter" is already disabled` y sale con `1`, como [`plugin enable`](#plugin-enable) hace para un plugin ya habilitado.

239 241 


262 264 

263| Bandera | Descripción |265| Bandera | Descripción |

264| :- | :- |266| :- | :- |

265| `-s, --scope <scope>` | Ámbito a actualizar: `user`, `project`, `local` o `managed`. Se auto-detecta cuando se omite |267| `-s, --scope <scope>` | Alcance a actualizar: `user`, `project`, `local` o `managed`. Se auto-detecta cuando se omite |

266| `-y, --yes` | Acepta un comando de instalación cambiado de un plugin [command-source](/docs/es/plugins/host-marketplace), sin el aviso. Requerido cuando stdin o stdout no es un TTY, a menos que pases `--accept-command`. Requiere Claude Code v2.1.229 o posterior |268| `-y, --yes` | Acepta un comando de instalación cambiado de un plugin [command-source](/docs/es/plugins/host-marketplace), sin la solicitud. Requerido cuando stdin o stdout no es un TTY, a menos que pases `--accept-command`. Requiere Claude Code v2.1.229 o posterior |

267| `--accept-command <sha256>` | Acepta el comando declarado por el marketplace cuyo `sha256` una ejecución anterior de [`--json`](#plugin-json-result) reportó en `shownCommand`, en lugar de `-y`. No se puede combinar con `-y`. Requiere Claude Code v2.1.271 o posterior |269| `--accept-command <sha256>` | Acepta el comando declarado por el marketplace cuyo `sha256` una ejecución anterior de [`--json`](#plugin-json-result) reportó en `shownCommand`, en lugar de `-y`. No se puede combinar con `-y`. Requiere Claude Code v2.1.271 o posterior |

268| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout, en el [mismo formato que `plugin install --json`](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior |270| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout, en el [mismo formato que `plugin install --json`](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior |

269 271 

270Si omites `--scope`, el comando actualiza el plugin en el ámbito más específico en el que está instalado para tu proyecto actual, verificando local, proyecto, usuario, luego managed.272Si omites `--scope`, el comando actualiza el plugin en el alcance más específico en el que está instalado para tu proyecto actual, verificando local, proyecto, usuario, luego managed.

271 273 

272Antes de v2.1.281, el comando usaba `user` cuando omitías `--scope`, por lo que actualizar un plugin instalado solo en ámbito de proyecto o local fallaba con `Plugin "<name>" is not installed at scope user`. En esas versiones, pasa `--scope`.274Antes de v2.1.281, el comando usaba `user` cuando omitías `--scope`, por lo que actualizar un plugin instalado solo en alcance de proyecto o local fallaba con `Plugin "<name>" is not installed at scope user`. En esas versiones, pasa `--scope`.

273 275 

274`managed` es el único ámbito que puedes actualizar pero no instalar. Para plugins instalados por administrador, consulta [Gestionar plugins para tu organización](/docs/es/plugins/org).276`managed` es el único alcance que puedes actualizar pero no instalar. Para plugins instalados por administrador, consulta [Gestionar plugins para tu organización](/docs/es/plugins/org).

275 277 

276Actualiza un plugin:278Actualiza un plugin:

277 279 


287 plugin list289 plugin list

288</h3>290</h3>

289 291 

290Lista plugins instalados con su versión, ámbito y estado.292Lista plugins instalados con su versión, alcance y estado.

291 293 

292```bash theme={null}294```bash theme={null}

293claude plugin list [options]295claude plugin list [options]


323| `installPath` | string | Directorio desde el que se carga el plugin |325| `installPath` | string | Directorio desde el que se carga el plugin |

324| `installedAt` | string | Marca de tiempo ISO de la instalación. Solo installs de marketplace |326| `installedAt` | string | Marca de tiempo ISO de la instalación. Solo installs de marketplace |

325| `lastUpdated` | string | Marca de tiempo ISO de la última actualización. Solo installs de marketplace |327| `lastUpdated` | string | Marca de tiempo ISO de la última actualización. Solo installs de marketplace |

326| `projectPath` | string | Proyecto al que pertenece la instalación. Solo ámbito `project` y `local` |328| `projectPath` | string | Proyecto al que pertenece la instalación. Solo alcance `project` y `local` |

327| `mcpServers` | object | Las definiciones de servidor MCP del plugin, cuando un plugin instalado de marketplace tiene alguno |329| `mcpServers` | object | Las definiciones de servidor MCP del plugin, cuando un plugin instalado de marketplace tiene alguno |

328| `errors` | array of strings | Errores de carga, cuando el plugin falló al cargar |330| `errors` | array of strings | Errores de carga, cuando el plugin falló al cargar |

329| `notes` | array of strings | Advertencias de autoría para un plugin que cargó y funciona |331| `notes` | array of strings | Advertencias de autoría para un plugin que cargó y funciona |


417 419 

418| Bandera | Descripción |420| Bandera | Descripción |

419| :- | :- |421| :- | :- |

420| `-s, --scope <scope>` | Prune en ámbito: `user`, `project` o `local`. Por defecto es `user` |422| `-s, --scope <scope>` | Prune en alcance: `user`, `project` o `local`. Por defecto es `user` |

421| `--dry-run` | Lista lo que se eliminaría sin eliminarlo |423| `--dry-run` | Lista lo que se eliminaría sin eliminarlo |

422| `-y, --yes` | Omite el aviso de confirmación. Requerido cuando stdin o stdout no es un TTY |424| `-y, --yes` | Omite la solicitud de confirmación. Requerido cuando stdin o stdout no es un TTY |

423 425 

424Previsualiza lo que un prune eliminaría:426Previsualiza lo que un prune eliminaría:

425 427 


429 431 

430Claude Code lista las dependencias huérfanas y termina con `(dry run — nothing removed)`. Sin nada a eliminar, imprime una línea que comienza con `Nothing to prune`.432Claude Code lista las dependencias huérfanas y termina con `(dry run — nothing removed)`. Sin nada a eliminar, imprime una línea que comienza con `Nothing to prune`.

431 433 

432Sin `--dry-run`, el comando elimina las dependencias huérfanas solo después de que confirmes en el aviso o pases `-y`.434Sin `--dry-run`, el comando elimina las dependencias huérfanas solo después de que confirmes en la solicitud o pases `-y`.

433 435 

434El código de salida es `0` sin importar lo que respondas en el aviso.436El código de salida es `0` sin importar lo que respondas en la solicitud.

435 437 

436Lo que `prune` hace depende de si una terminal está adjunta y si pasas `-y`:438Lo que `prune` hace depende de si una terminal está adjunta y si pasas `-y`:

437 439 


469| Opción | Descripción | Por defecto |471| Opción | Descripción | Por defecto |

470| :- | :- | :- |472| :- | :- | :- |

471| `--runs <n>` | Ejecuciones por caso en cada [arm](/docs/es/plugin-evals#compare-against-a-no-plugin-baseline) | El `runs` de cada caso, si no 3 |473| `--runs <n>` | Ejecuciones por caso en cada [arm](/docs/es/plugin-evals#compare-against-a-no-plugin-baseline) | El `runs` de cada caso, si no 3 |

472| `-j, --concurrency <n>` | Sesiones de agente a ejecutar a la vez, 1 a 8. Comparten tu límite de velocidad | `1` |474| `-j, --concurrency <n>` | Sesiones de agente a ejecutar a la vez, 1 a 8. Comparten tu rate limit | `1` |

473| `--model <model>` | Modelo para el agente bajo prueba | El `model` de cada caso, si no `ANTHROPIC_MODEL` si está establecido, si no el predeterminado de Claude Code |475| `--model <model>` | Modelo para el agente bajo prueba | El `model` de cada caso, si no `ANTHROPIC_MODEL` si está establecido, si no el predeterminado de Claude Code |

474| `--judge-model <model>` | Modelo para calificadores `llm` y `baseline` | Un modelo pequeño rápido |476| `--judge-model <model>` | Modelo para calificadores `llm` y `baseline` | Un modelo pequeño rápido |

475| `--ablation <mode>` | `none` o `with-without`. Consulta [Comparar contra una línea base sin plugin](/docs/es/plugin-evals#compare-against-a-no-plugin-baseline) | Decidido por caso, como esa sección describe |477| `--ablation <mode>` | `none` o `with-without`. Consulta [Puntuar contra la línea base sin plugin](/docs/es/plugin-evals#compare-against-a-no-plugin-baseline) | Decidido por caso, como esa sección describe |

476| `--threshold <0..1>` | Sale con 1 si algún caso puntúa por debajo de esto | `1.0` |478| `--threshold <0..1>` | Sale con 1 si algún caso puntúa por debajo de esto | `1.0` |

477| `--max-cost-usd <usd>` | Detente antes de la próxima ejecución una vez que el gasto alcance esto, sale con 2, e informa resultados parciales | Sin límite |479| `--max-cost-usd <usd>` | Detente antes de la próxima ejecución una vez que el gasto alcance esto, sale con 2, e informa resultados parciales | Sin límite |

478| `--allow-tools <tools...>` | Otorga herramientas más allá del conjunto de solo lectura, como `Bash`, `Write`, `Edit` o `"mcp__plugin_<plugin>_<server>__*"`. Consulta [Otorgar herramientas](/docs/es/plugin-evals#grant-tools) | |480| `--allow-tools <tools...>` | Otorga herramientas más allá del conjunto de solo lectura, como `Bash`, `Write`, `Edit` o `"mcp__plugin_<plugin>_<server>__*"`. Consulta [Otorgar herramientas](/docs/es/plugin-evals#grant-tools) | |

479| `--scaffold` | Ejecuta el [`scaffold_script`](/docs/es/plugin-evals#add-setup-or-history-with-case-yaml) de cada caso | Apagado |481| `--scaffold` | Ejecuta el [`scaffold_script`](/docs/es/plugin-evals#add-setup-or-history-with-case-yaml) de cada caso | Apagado |

480| `--trust-plugin` | Omite el aviso de confianza de primera ejecución, para CI. Consulta [Qué puede acceder una ejecución](/docs/es/plugin-evals#security) | Apagado |482| `--trust-plugin` | Omite la solicitud de confianza de primera ejecución, para CI. Consulta [Qué puede acceder una ejecución](/docs/es/plugin-evals#security) | Apagado |

481| `--mocks <mode>` | `record` u `off`. Consulta [Simular servidores MCP](/docs/es/plugin-evals#mock-mcp-servers) | `record` |483| `--mocks <mode>` | `record` u `off`. Consulta [Simular servidores MCP](/docs/es/plugin-evals#mock-mcp-servers) | `record` |

482| `--eval-dir <dir>` | Directorio debajo del plugin que contiene los casos | El `experimental.evals` del manifiesto, si no `evals` |484| `--eval-dir <dir>` | Directorio debajo del plugin que contiene los casos | El `experimental.evals` del manifiesto, si no `evals` |

483| `--json [path]` | Imprime el [documento de resultado](/docs/es/plugin-evals#json-result) a stdout, o escríbelo en una ruta `.json` | |485| `--json [path]` | Imprime el [documento de resultado](/docs/es/plugin-evals#json-result) a stdout, o escríbelo en una ruta `.json` | |


569* La etiqueta ya existe571* La etiqueta ya existe

570* El árbol de trabajo está sucio572* El árbol de trabajo está sucio

571 573 

574<h3 id="plugin-test">

575 plugin test

576</h3>

577 

578Ejecuta las pruebas de un [mod](/docs/es/plugins/mods/overview), un plugin cuyo código registra manejadores de eventos. El comando no necesita sesión, inicio de sesión ni red. Para saber cómo escribir una prueba, consulta [Probar un mod](/docs/es/plugins/mods/test).

579 

580```bash theme={null}

581claude plugin test [directory]

582```

583 

584El `[directory]` es el directorio del mod, por defecto el directorio actual. El comando ejecuta cada archivo bajo él cuyo nombre termina en `.test.ts` o `.test.tsx`, y sale con estado 1 cuando una prueba falla.

585 

586Ejecuta las pruebas de un mod en `./first-mod`:

587 

588```bash theme={null}

589claude plugin test ./first-mod

590```

591 

572<h3 id="plugin-validate">592<h3 id="plugin-validate">

573 plugin validate593 plugin validate

574</h3>594</h3>


613 633 

614* **Un `SKILL.md` en la raíz del plugin**: cuando ejecutas `claude plugin validate` contra un directorio de plugin, Claude Code no verifica un `SKILL.md` en la raíz del plugin634* **Un `SKILL.md` en la raíz del plugin**: cuando ejecutas `claude plugin validate` contra un directorio de plugin, Claude Code no verifica un `SKILL.md` en la raíz del plugin

615* **Un `CLAUDE.md` en la raíz del plugin**: en una ejecución de plugin, Claude Code también advierte sobre un `CLAUDE.md` en la raíz del plugin635* **Un `CLAUDE.md` en la raíz del plugin**: en una ejecución de plugin, Claude Code también advierte sobre un `CLAUDE.md` en la raíz del plugin

616* **Archivos de plugin en una ejecución de marketplace**: desde un directorio de marketplace, Claude Code no abre los archivos de skill, agent, comando o hook de los plugins. Para encontrar errores en esos archivos, valida cada directorio de plugin636* **Archivos de plugin en una ejecución de marketplace**: desde un directorio de marketplace, Claude Code no abre los archivos de skill, agent, comando o hook de los plugins, ni los archivos de servidor MCP que empaquetan. Para encontrar errores en esos archivos, valida cada directorio de plugin

617 637 

618<h4 id="output-and-exit-codes">638<h4 id="output-and-exit-codes">

619 Salida y códigos de salida639 Salida y códigos de salida


794 /plugin en una sesión814 /plugin en una sesión

795</h2>815</h2>

796 816 

797Dentro de una sesión interactiva, `/plugin` abre el panel de plugins. Cada subcomando abre el panel en una pestaña, ejecuta una acción allí, o imprime un resultado en línea. `/plugins` y `/marketplace` son alias para `/plugin`.817Dentro de una sesión interactiva, `/plugin` abre el panel de plugins. Cada subcomando abre el panel en una pestaña, ejecuta una acción allí o imprime un resultado en línea. `/plugins` y `/marketplace` son alias de `/plugin`.

798 818 

799Solo puedes ejecutar estos comandos en una sesión de terminal interactiva. En una ejecución no interactiva como `claude -p`, Claude Code responde que `/plugin` no está disponible en este entorno.819Solo puedes ejecutar estos comandos en una sesión interactiva de la terminal. En una ejecución no interactiva como `claude -p`, Claude Code responde que `/plugin` no está disponible en este entorno.

800 820 

801Para qué superficies tienen `/plugin`, cómo instalar sin él, y qué muestra cada pestaña del panel, consulta [Instalar y gestionar plugins](/docs/es/plugins/install).821Para saber qué superficies tienen `/plugin`, cómo instalar sin él y qué muestra cada pestaña del panel, consulta [Instalar y administrar plugins](/docs/es/plugins/install).

802 822 

803Un `<plugin>` es un `name` de plugin o `name@marketplace`.823Un `<plugin>` es un `name` de plugin o `name@marketplace`.

804 824 

805La tabla a continuación lista cada forma de sesión. Los subcomandos de shell `init`, `update`, `details`, `prune`, `eval` y `eval init` no tienen forma de sesión.825La siguiente tabla enumera todas las formas en sesión. Los subcomandos del shell `init`, `update`, `details`, `prune`, `eval`, `eval init` y `test` no tienen forma en sesión.

806 826 

807| Comando | Alias | Qué hace |827| Comando | Alias | Qué hace |

808| :- | :- | :- |828| :- | :- | :- |

809| `/plugin` | | Abre el panel en la pestaña **Discover**. Cualquier primera palabra no reconocida después de `/plugin` hace lo mismo |829| `/plugin` | | Abre el panel en la pestaña **Discover**. Cualquier primera palabra no reconocida después de `/plugin` hace lo mismo |

810| `/plugin help` | `/plugin --help`, `/plugin -h` | Muestra la lista de uso de subcomandos de `/plugin` |830| `/plugin help` | `/plugin --help`, `/plugin -h` | Muestra la lista de uso de los subcomandos de `/plugin` |

811| `/plugin list [--enabled\|--disabled]` | `ls` | Imprime tus plugins instalados de marketplace en línea, con versión, ámbito y estado. Una bandera de filtro muestra solo ese estado. Un plugin cuyo estado de habilitación aún no se ha aplicado está marcado como `— run /reload-plugins to apply`. Requiere Claude Code v2.1.163 o posterior |831| `/plugin list [--enabled\|--disabled]` | `ls` | Imprime en línea tus plugins instalados desde marketplaces, con versión, alcance y estado. Un flag de filtro muestra solo ese estado. Un plugin cuyo estado de habilitación aún no se ha aplicado se marca con `— run /reload-plugins to apply`. Requiere Claude Code v2.1.163 o posterior |

812| `/plugin install` | `i` | Abre la pestaña **Discover** |832| `/plugin install` | `i` | Abre la pestaña **Discover** |

813| `/plugin install <plugin>` | `i` | Abre los detalles del plugin en la pestaña **Discover**. Con `name@marketplace`, los abre en la lista de ese marketplace |833| `/plugin install <plugin>` | `i` | Abre los detalles del plugin en la pestaña **Discover**. Con `name@marketplace`, los abre en la lista de ese marketplace |

814| `/plugin install <source>` | `i` | Reporta un error de [marketplace no encontrado](/docs/es/plugins/troubleshooting#marketplace-not-found) e instala nada cuando el destino es una ruta, URL, u `owner/repo`, incluso una fuente que ya has añadido. Para instalar desde una fuente, consulta [Añadir un marketplace e instalar en un comando](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command) |834| `/plugin install <source>` | `i` | Informa un error de [marketplace no encontrado](/docs/es/plugins/troubleshooting#marketplace-not-found) y no instala nada cuando el destino es una ruta, una URL u `owner/repo`, incluso si es un origen que ya agregaste. Para instalar desde un origen, consulta [Agregar un marketplace e instalar con un solo comando](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command) |

815| `/plugin install <plugin> --marketplace <source>` | `i` | Añade el marketplace en `<source>` cuando aún no lo has añadido, pidiéndote que confirmes primero, luego abre los detalles del plugin. Consulta [Añadir un marketplace e instalar en un comando](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command). Requiere Claude Code v2.1.275 o posterior |835| `/plugin install <plugin> --marketplace <source>` | `i` | Agrega el marketplace en `<source>` cuando aún no lo has agregado, pidiéndote confirmación primero, y luego abre los detalles del plugin. Consulta [Agregar un marketplace e instalar con un solo comando](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command). Requiere Claude Code v2.1.275 o posterior |

816| `/plugin manage` | | Abre la pestaña **Installed** |836| `/plugin manage` | | Abre la pestaña **Installed** |

817| `/plugin stats` | | Abre la pestaña **Stats**, en sesiones donde [`/skill-doctor`](/docs/es/skills#find-unused-skills) está disponible. En cualquier otro lugar abre el panel en la pestaña **Discover** |837| `/plugin stats` | | Abre la pestaña **Stats**, en las sesiones donde [`/skill-doctor`](/docs/es/skills#find-unused-skills) está disponible. En cualquier otro caso, abre el panel en la pestaña **Discover** |

818| `/plugin enable <plugin>` | | Abre la pestaña **Installed** en el plugin y lo habilita |838| `/plugin enable <plugin>` | | Abre la pestaña **Installed** en el plugin y lo habilita |

819| `/plugin disable <plugin>` | | Abre la pestaña **Installed** en el plugin y lo deshabilita |839| `/plugin disable <plugin>` | | Abre la pestaña **Installed** en el plugin y lo deshabilita |

820| `/plugin uninstall <plugin>` | | Abre la pestaña **Installed** en el plugin y lo desinstala |840| `/plugin uninstall <plugin>` | | Abre la pestaña **Installed** en el plugin y lo desinstala |

821| `/plugin configure <plugin>` | `config` | Abre el diálogo [`userConfig`](/docs/es/plugins/manifest-reference) del plugin, o reporta que el plugin no declara ninguno. Requiere Claude Code v2.1.147 o posterior |841| `/plugin configure <plugin>` | `config` | Abre el diálogo [`userConfig`](/docs/es/plugins/manifest-reference) del plugin, o informa que el plugin no declara ninguno. Requiere Claude Code v2.1.147 o posterior |

822| `/plugin validate <path>` | | Imprime el mismo informe que `claude plugin validate`, en línea |842| `/plugin validate <path>` | | Imprime en línea el mismo informe que `claude plugin validate` |

823| `/plugin tag [path] [--push] [--dry-run] [--force]` | | Crea la etiqueta de versión como `claude plugin tag` hace. Acepta `--push`, `--dry-run` y `--force` o `-f`; con cualquier otra bandera o un argumento extra, Claude Code imprime el uso en su lugar |843| `/plugin tag [path] [--push] [--dry-run] [--force]` | | Crea la etiqueta de versión como lo hace `claude plugin tag`. Acepta `--push`, `--dry-run` y `--force` o `-f`; con cualquier otro flag o un argumento adicional, Claude Code imprime el uso en su lugar |

824| `/plugin marketplace` | `market` | No hace nada visible. Pasa `add`, `list`, `update` o `remove` |844| `/plugin marketplace` | `market` | No hace nada visible. Pasa `add`, `list`, `update` o `remove` |

825| `/plugin marketplace add [source]` | `market add` | Con una fuente, la añade e informa el resultado. Sin una, abre la entrada **Add marketplace** |845| `/plugin marketplace add [source]` | `market add` | Con un origen, lo agrega e informa el resultado. Sin uno, abre el campo **Add marketplace** |

826| `/plugin marketplace list` | `market list` | Imprime tus nombres de marketplace en línea |846| `/plugin marketplace list` | `market list` | Imprime en línea los nombres de tus marketplaces |

827| `/plugin marketplace update [name]` | `market update` | Abre la pestaña **Marketplaces**. Con un nombre, actualiza ese marketplace allí |847| `/plugin marketplace update [name]` | `market update` | Abre la pestaña **Marketplaces**. Con un nombre, actualiza ese marketplace allí |

828| `/plugin marketplace remove [name]` | `market remove`, `market rm`, `marketplace rm` | Abre la pestaña **Marketplaces**. Con un nombre, elimina ese marketplace allí |848| `/plugin marketplace remove [name]` | `market remove`, `market rm`, `marketplace rm` | Abre la pestaña **Marketplaces**. Con un nombre, elimina ese marketplace allí |

829 849 

830Si nombras un plugin que no está instalado en el proyecto actual en `/plugin enable`, `disable`, `uninstall` o `configure`, Claude Code imprime `Plugin "<plugin>" is not installed in this project` en su lugar de actuar.850Si en `/plugin enable`, `disable`, `uninstall` o `configure` indicas un plugin que no está instalado en el proyecto actual, Claude Code imprime `Plugin "<plugin>" is not installed in this project` en lugar de actuar.

831 851 

832<h2 id="reload-plugins">852<h2 id="reload-plugins">

833 /reload-plugins853 /reload-plugins

Details

435 435 

436<PluginExplorer>436<PluginExplorer>

437 <Piece id="manifest">437 <Piece id="manifest">

438 El [manifiesto](/docs/es/plugins/manifest-reference) es el archivo `plugin.json` en el directorio `.claude-plugin/` de un plugin. Contiene los metadatos del plugin y los valores de `userConfig` que Claude Code solicita al usuario. Claude Code carga un plugin sin uno, pero el [directorio de Anthropic](/docs/es/plugins/publish#submit-to-anthropics-directory) lo requiere. Dentro del archivo, solo `name` es obligatorio. En este, `description` es el texto que los usuarios ven para el plugin en `/plugin`, y `version` mantiene a los usuarios en esa versión hasta que la cambie:438 El [manifiesto](/docs/es/plugins/manifest-reference) es el archivo `plugin.json` en el directorio `.claude-plugin/` de un plugin. Contiene los metadatos del plugin y los valores de `userConfig` que Claude Code solicita al usuario. Claude Code carga un plugin sin uno. Dentro del archivo, solo `name` es obligatorio. En este, `description` es el texto que los usuarios ven para el plugin en `/plugin`, y `version` mantiene a los usuarios en esa versión hasta que la cambies:

439 439 

440 ```json theme={null}440 ```json theme={null}

441 {441 {

Details

130* `source`: dónde Claude Code obtiene el plugin. Escriba una cadena de ruta relativa para un plugin dentro del directorio del marketplace, como en [el tutorial](#create-a-marketplace), o un objeto de source para un plugin fuera de él. Consulte [Elegir una source de plugin](#choose-a-plugin-source).130* `source`: dónde Claude Code obtiene el plugin. Escriba una cadena de ruta relativa para un plugin dentro del directorio del marketplace, como en [el tutorial](#create-a-marketplace), o un objeto de source para un plugin fuera de él. Consulte [Elegir una source de plugin](#choose-a-plugin-source).

131* `description`: la línea que las personas ven junto al plugin cuando exploran su marketplace en `/plugin`.131* `description`: la línea que las personas ven junto al plugin cuando exploran su marketplace en `/plugin`.

132 132 

133Para la lista completa de campos, consulte [Entradas de plugins](/docs/es/plugins/marketplace-reference#plugin-entries).133Para la lista completa de campos, consulta [Entradas de plugins](/docs/es/plugins/marketplace-reference#plugin-entries), que también cubre los campos de [`plugin.json`](/docs/es/plugins/manifest-reference) que una entrada puede establecer y cuándo se aplican.

134 

135Una entrada también puede establecer cualquier campo de [`plugin.json`](/docs/es/plugins/manifest-reference). Para saber cuándo se aplican los campos `plugin.json` de una entrada a un plugin que tiene su propio `plugin.json`, consulte [Entrada y plugin.json](/docs/es/plugins/marketplace-reference#entry-and-plugin-json).

136 134 

137<h2 id="rules-for-plugin-entries">135<h2 id="rules-for-plugin-entries">

138 Reglas para entradas de plugins136 Reglas para entradas de plugins

plugins/loading.md +20 −14

Details

244 Cuándo se ejecuta la instalación de dependencias244 Cuándo se ejecuta la instalación de dependencias

245</h4>245</h4>

246 246 

247Claude Code ejecuta la instalación dentro del directorio de versión copiada cada vez que crea uno:247Claude Code instala las dependencias en el directorio de versión copiada cada vez que crea uno:

248 248 

249* Cuando instala un plugin249* Cuando instala un plugin

250* Cuando Claude Code actualiza un plugin a una nueva versión250* Cuando Claude Code actualiza un plugin a una nueva versión


252 252 

253Para un plugin de ruta relativa [cargado en lugar](#in-place-and-copied-plugins) desde un mercado de directorio local, Claude Code no instala las dependencias en el directorio de origen. Instálelas allí usted mismo, o desde un hook en [`${CLAUDE_PLUGIN_DATA}`](/docs/es/plugins/components#path-variables-and-persistent-data).253Para un plugin de ruta relativa [cargado en lugar](#in-place-and-copied-plugins) desde un mercado de directorio local, Claude Code no instala las dependencias en el directorio de origen. Instálelas allí usted mismo, o desde un hook en [`${CLAUDE_PLUGIN_DATA}`](/docs/es/plugins/components#path-variables-and-persistent-data).

254 254 

255La instalación se ejecuta solo cuando el directorio raíz del plugin contiene tanto un `package.json` como un archivo de bloqueo compatible. El archivo de bloqueo decide qué comando ejecuta Claude Code:255La instalación se ejecuta solo cuando el directorio raíz del plugin contiene tanto un `package.json` como un archivo de bloqueo compatible.

256 256 

257| Archivo de bloqueo | Comando |257El archivo de bloqueo decide qué administrador de paquetes ejecuta Claude Code:

258 

259| Archivo de bloqueo | Administrador de paquetes |

258| :- | :- |260| :- | :- |

259| `bun.lock` o `bun.lockb` | `bun install --frozen-lockfile --ignore-scripts` |261| `bun.lock` | Bun |

260| `npm-shrinkwrap.json` o `package-lock.json` | `npm ci --ignore-scripts` |262| `npm-shrinkwrap.json` o `package-lock.json` | npm |

261 263 

262Si un plugin contiene más de uno de estos archivos de bloqueo, Claude Code usa la primera coincidencia, verificando en orden: `bun.lock`, `bun.lockb`, `npm-shrinkwrap.json`, `package-lock.json`.264Si un plugin contiene más de uno de estos archivos de bloqueo, Claude Code usa la primera coincidencia, verificando en orden: `bun.lock`, `npm-shrinkwrap.json`, `package-lock.json`.

263 265 

264Claude Code omite la instalación para archivos de bloqueo de Yarn y pnpm y para un `bunfig.toml` junto al archivo de bloqueo de Bun:266Claude Code omite la instalación en estos casos de archivo de bloqueo:

265 267 

266* Si su plugin tiene solo un `yarn.lock` o `pnpm-lock.yaml`, reemplácelo con un archivo de bloqueo npm268* **`bun.lockb`**: el archivo de bloqueo binario de Bun no se puede verificar. Incluye en su lugar un `bun.lock` de texto o un archivo de bloqueo npm

267* Si un `bunfig.toml` está en el mismo directorio que el archivo de bloqueo de Bun, elimine el `bunfig.toml`, o reemplace el archivo de bloqueo de Bun con un archivo de bloqueo npm269* **`yarn.lock` o `pnpm-lock.yaml`**: reemplázalo con un archivo de bloqueo npm

270* **Un archivo de bloqueo en un formato que Claude Code no lee**: un archivo de bloqueo npm necesita un `lockfileVersion` de `2` o `3`, que escribe npm 7 o posterior, y un `bun.lock` necesita un `lockfileVersion` no mayor que `2`

268 271 

269Incluya un archivo de bloqueo npm para llegar a la mayoría de los usuarios. Claude Code ejecuta el administrador de paquetes del archivo de bloqueo coincidente desde el PATH del usuario y no intenta el otro archivo de bloqueo en su lugar si falta ese administrador de paquetes.272Incluya un archivo de bloqueo npm para llegar a la mayoría de los usuarios. Claude Code ejecuta el administrador de paquetes del archivo de bloqueo coincidente desde el PATH del usuario y no intenta el otro archivo de bloqueo en su lugar si falta ese administrador de paquetes.

270 273 


276 279 

277Claude Code limita esta instalación de dependencias para que ningún código del plugin o sus paquetes se ejecute durante ella, y limita cuánto tiempo puede ejecutarse:280Claude Code limita esta instalación de dependencias para que ningún código del plugin o sus paquetes se ejecute durante ella, y limita cuánto tiempo puede ejecutarse:

278 281 

279* **Resolución congelada**: Bun y npm instalan exactamente lo que el archivo de bloqueo fija, y fallan en lugar de re-resolver versiones cuando `package.json` y el archivo de bloqueo no coinciden282* **Solo paquetes del registro**: cada dependencia debe ser un paquete del registro fijado en el archivo de bloqueo a una versión exacta. Un plugin con una dependencia de git, GitHub, carpeta, espacio de trabajo o enlazada no recibe instalación.

283* **Descargas `https`**: un enlace de descarga en el archivo de bloqueo debe usar `https`, a menos que apunte al registro npm predeterminado del propio usuario que instala.

284* **Una carpeta de instalación separada**: el administrador de paquetes se ejecuta en una carpeta propia que contiene solo una copia de la lista de dependencias verificada, por lo que npm y Bun no leen el `.npmrc`, `.env` ni `bunfig.toml` del plugin. Cuando la instalación tiene éxito, Claude Code mueve el `node_modules` resultante al plugin.

285* **Resolución congelada**: la instalación usa exactamente las versiones que fija el archivo de bloqueo, y Claude Code la omite cuando `package.json` y el archivo de bloqueo no enumeran las mismas dependencias

280* **Sin scripts de ciclo de vida**: `--ignore-scripts` evita que se ejecuten scripts `preinstall`, `install` y `postinstall`, por lo que las dependencias que construyen módulos nativos en esos scripts se descargan pero no se compilan durante esta instalación286* **Sin scripts de ciclo de vida**: `--ignore-scripts` evita que se ejecuten scripts `preinstall`, `install` y `postinstall`, por lo que las dependencias que construyen módulos nativos en esos scripts se descargan pero no se compilan durante esta instalación

287* **Sin sobrescrituras ni parches**: un plugin cuyo `package.json` establece `overrides` de npm no recibe instalación desde un archivo de bloqueo npm, y un plugin que establece `patchedDependencies` de Bun no recibe instalación desde `bun.lock`

281* **Tiempo de espera de 60 segundos**: Claude Code detiene una instalación que se ejecuta más tiempo y la trata como fallida288* **Tiempo de espera de 60 segundos**: Claude Code detiene una instalación que se ejecuta más tiempo y la trata como fallida

282 289 

283Claude Code obtiene un plugin de fuente npm antes de esta instalación de dependencias, y ninguno de los scripts de instalación propios del paquete se ejecuta durante la obtención. Consulte [fuente de plugin npm](/docs/es/plugins/marketplace-reference#npm-plugin-source).290Claude Code obtiene un plugin de fuente npm antes de esta instalación de dependencias, y ninguno de los scripts de instalación propios del paquete se ejecuta durante la obtención. Consulte [fuente de plugin npm](/docs/es/plugins/marketplace-reference#npm-plugin-source).


290 Cuándo falla o se omite la instalación de dependencias297 Cuándo falla o se omite la instalación de dependencias

291</h4>298</h4>

292 299 

293Una instalación fallida u omitida nunca bloquea el plugin, y cada caso deja un signo diferente:300Una instalación fallida u omitida nunca bloquea el plugin, que entonces se carga sin las dependencias. Cada caso deja un signo diferente:

294 301 

295* Una instalación fallida, u omitida debido a un archivo de bloqueo de Yarn o pnpm o un `bunfig.toml`, aparece como una advertencia en la salida `claude --debug`302* Una instalación fallida, u omitida debido a su archivo de bloqueo o a uno de los [límites en la instalación](#limits-on-the-dependency-install), aparece en la salida de `claude --debug` como una línea `Plugin dependency install warning` que indica el motivo

296* Un plugin con un `package.json` y sin archivo de bloqueo se omite sin una entrada de registro303* Un plugin con un `package.json` y sin archivo de bloqueo se omite sin una entrada de registro

297* Una instalación que agota el tiempo de espera puede dejar un árbol `node_modules` parcial en la copia en caché

298 304 

299Cuando la instalación automática no puede proporcionar una dependencia, instálela desde un hook en el [directorio de datos persistentes](/docs/es/plugins/components#path-variables-and-persistent-data). Eso incluye paquetes que necesitan sus scripts de ciclo de vida para construir, dependencias de Python, y plugins bloqueados con Yarn o pnpm.305Cuando la instalación automática no puede proporcionar una dependencia, instálala desde un hook en el [directorio de datos persistentes](/docs/es/plugins/components#path-variables-and-persistent-data). Eso incluye paquetes que necesitan sus scripts de ciclo de vida para compilarse, dependencias de Python, plugins bloqueados con Yarn o pnpm, y dependencias que no son paquetes del registro, como las dependencias de git.

300 306 

301<h2 id="versions-and-updates">307<h2 id="versions-and-updates">

302 Versiones y actualizaciones308 Versiones y actualizaciones

Details

142| `license` | String | Identificador SPDX como `MIT` o `Apache-2.0` |142| `license` | String | Identificador SPDX como `MIT` o `Apache-2.0` |

143| `keywords` | Array of strings | Etiquetas de descubrimiento |143| `keywords` | Array of strings | Etiquetas de descubrimiento |

144| [`metadata`](#metadata) | Object | Objeto de forma libre para sus propios datos. Claude Code no lo lee |144| [`metadata`](#metadata) | Object | Objeto de forma libre para sus propios datos. Claude Code no lo lee |

145| [`icon`](#directory-listing-fields) | String | Icono para el listado del plugin en el directorio de Anthropic. Claude Code no lo lee |

146| [`documentationUrl`](#directory-listing-fields) | String | Enlace de documentación para el listado del plugin en el directorio de Anthropic. Claude Code no lo lee |

147| [`supportUrl`](#directory-listing-fields) | String | Enlace de soporte para el listado del plugin en el directorio de Anthropic. Claude Code no lo lee |

148| [`privacyPolicyUrl`](#directory-listing-fields) | String | Enlace a la política de privacidad para el listado del plugin en el directorio de Anthropic. Claude Code no lo lee |

149| [`termsOfServiceUrl`](#directory-listing-fields) | String | Enlace a los términos de servicio para el listado del plugin en el directorio de Anthropic. Claude Code no lo lee |

145| [`defaultEnabled`](#defaultenabled) | Boolean | Si el plugin comienza habilitado cuando el usuario no lo ha configurado. Por defecto es `true` |150| [`defaultEnabled`](#defaultenabled) | Boolean | Si el plugin comienza habilitado cuando el usuario no lo ha configurado. Por defecto es `true` |

146| [`dependencies`](#dependencies) | Array of strings or objects | Plugins que deben estar habilitados para que este funcione |151| [`dependencies`](#dependencies) | Array of strings or objects | Plugins que deben estar habilitados para que este funcione |

147| [`settings`](#settings) | Object | Configuración que Claude Code aplica mientras el plugin está habilitado. Solo `agent` y `subagentStatusLine` tienen efecto |152| [`settings`](#settings) | Object | Configuración que Claude Code aplica mientras el plugin está habilitado. Solo `agent` y `subagentStatusLine` tienen efecto |


202 207 

203Un objeto de forma libre para sus propios datos, como campos de catálogo o derechos. Claude Code no lo lee. Requiere Claude Code v2.1.222 o posterior.208Un objeto de forma libre para sus propios datos, como campos de catálogo o derechos. Claude Code no lo lee. Requiere Claude Code v2.1.222 o posterior.

204 209 

210<h3 id="directory-listing-fields">

211 Campos de listado del directorio

212</h3>

213 

214El directorio de Anthropic lee los campos `icon`, `documentationUrl`, `supportUrl`, `privacyPolicyUrl` y `termsOfServiceUrl` de `plugin.json` para el listado de tu plugin cuando [envías el plugin](/docs/es/plugins/publish#submit-to-anthropics-directory). Claude Code los ignora en tiempo de carga. Configúralos solo en `plugin.json`. En una [entrada del marketplace](#marketplace-entries-and-the-manifest), `claude plugin validate` informa cada uno como un campo desconocido.

215 

216Establece `icon` en la ruta de un archivo de imagen dentro del plugin, como `./logo.png`, y cada uno de los cuatro campos de URL en una URL `https://`.

217 

218`claude plugin validate` acepta estos campos sin advertencia en Claude Code v2.1.281 o posterior. Las versiones anteriores imprimen una advertencia `Unknown field` para cada uno, por lo que una ejecución con `--strict` falla en esas versiones.

219 

205<h3 id="defaultenabled">220<h3 id="defaultenabled">

206 `defaultEnabled`221 `defaultEnabled`

207</h3>222</h3>


693 Entradas del mercado y el manifiesto708 Entradas del mercado y el manifiesto

694</h2>709</h2>

695 710 

696Una [entrada del mercado](/docs/es/plugins/marketplace-reference) acepta cada campo en esta página junto con [sus propios campos](/docs/es/plugins/marketplace-reference#plugin-entries), incluido `strict`.711Una [entrada del marketplace](/docs/es/plugins/marketplace-reference) acepta [sus propios campos](/docs/es/plugins/marketplace-reference#plugin-entries), incluido `strict`, y cada campo de esta página excepto los [campos de listado del directorio](#directory-listing-fields).

697 712 

698El campo `strict` decide si la entrada puede agregar componentes a un plugin que tiene su propio `plugin.json`. Por defecto es `true`.713El campo `strict` decide si la entrada puede agregar componentes a un plugin que tiene su propio `plugin.json`. Por defecto es `true`.

699 714 

Details

81 81 

82Cada objeto en el array `plugins` de nivel superior de `marketplace.json` nombra un plugin e indica dónde obtenerlo. `name` y `source` son obligatorios.82Cada objeto en el array `plugins` de nivel superior de `marketplace.json` nombra un plugin e indica dónde obtenerlo. `name` y `source` son obligatorios.

83 83 

84Una entrada también acepta cada campo de [`plugin.json`](/docs/es/plugins/manifest-reference), como `description`, `version`, `author`, `commands` y `hooks`. Para cuándo se aplican esos campos, consulte [Cómo una entrada se combina con plugin.json](#entry-and-plugin-json).84Además de los [campos de listado del directorio](/docs/es/plugins/manifest-reference#directory-listing-fields), una entrada también acepta cada [campo de `plugin.json`](/docs/es/plugins/manifest-reference), como `description`, `version`, `author`, `commands` y `hooks`. Para saber cuándo se aplican esos campos, consulta [Cómo una entrada se combina con plugin.json](#entry-and-plugin-json).

85 85 

86La tabla enumera los campos propios de la entrada y los campos del manifiesto cuyo significado cambia en una entrada.86La tabla enumera los campos propios de la entrada y los campos del manifiesto cuyo significado cambia en una entrada.

87 87 

88| Campo | Tipo | Descripción |88| Campo | Tipo | Descripción |

89| :- | :- | :- |89| :- | :- | :- |

90| `name` | string | Identificador de plugin: letras, dígitos, `.`, `_` y `-`, comenzando con una letra o dígito. `claude plugin validate` falla con otros nombres, que Claude Code no puede instalar. Los usuarios lo escriben antes de `@` cuando instalan, incluso cuando el propio `plugin.json` del plugin establece un `name` diferente |90| `name` | string | Identificador de plugin: letras, dígitos, `.`, `_` y `-`, comenzando con una letra o dígito. `claude plugin validate` falla con otros nombres, que Claude Code no puede instalar. Los usuarios lo escriben antes de `@` cuando instalan, incluso cuando el propio `plugin.json` del plugin establece un `name` diferente |

91| `source` | string or object | Dónde obtener el plugin. Consulte [Fuentes de plugins](#plugin-sources) |91| `source` | string or object | Dónde obtener el plugin. Consulta [Fuentes de plugins](#plugin-sources) |

92| `description` | string | Se muestra en los listados y detalles de [`/plugin`](/docs/es/plugins/install) |92| `description` | string | Se muestra en los listados y detalles de [`/plugin`](/docs/es/plugins/install) |

93| `version` | string | Cadena de versión para el plugin. Cuando `plugin.json` también establece `version`, `plugin.json` tiene precedencia y `claude plugin validate` advierte. Consulte [Referencia de carga de plugins](/docs/es/plugins/loading) |93| `version` | string | Cadena de versión para el plugin. Cuando `plugin.json` también establece `version`, `plugin.json` tiene precedencia y `claude plugin validate` advierte. Consulta [Referencia de carga de plugins](/docs/es/plugins/loading) |

94| `category` | string | Categoría de forma libre para organizar el catálogo |94| `category` | string | Categoría de forma libre para organizar el catálogo |

95| `tags` | array of strings | Etiquetas de forma libre para búsqueda |95| `tags` | array of strings | Etiquetas de forma libre para búsqueda |

96| `strict` | boolean | Por defecto `true`. Si `plugin.json` es la fuente definitiva para los componentes del plugin. Consulte [Modo estricto](#strict-mode) |96| `strict` | boolean | Por defecto `true`. Si `plugin.json` es la fuente definitiva para los componentes del plugin. Consulta [Modo estricto](#strict-mode) |

97| `relevance` | object | Señales que indican a Claude Code cuándo sugerir el plugin. Consulte [Recomendar plugins para su organización](/docs/es/plugins/relevance) |97| `relevance` | object | Señales que indican a Claude Code cuándo sugerir el plugin. Consulta [Recomendar plugins para tu organización](/docs/es/plugins/relevance) |

98| `dependencies` | array | Plugins que deben estar habilitados para que este funcione. Cada elemento es `"name"`, `"name@marketplace"` u un objeto. Consulte [Dependencias de plugins](/docs/es/plugins/dependencies) |98| `dependencies` | array | Plugins que deben estar habilitados para que este funcione. Cada elemento es `"name"`, `"name@marketplace"` o un objeto. Consulta [Dependencias de plugins](/docs/es/plugins/dependencies) |

99| `defaultEnabled` | boolean | Por defecto `true`. Si el plugin comienza habilitado cuando el usuario no lo ha establecido en [`enabledPlugins`](/docs/es/settings-reference#enabledplugins). El valor de la entrada tiene precedencia sobre `plugin.json` |99| `defaultEnabled` | boolean | Por defecto `true`. Si el plugin comienza habilitado cuando el usuario no lo ha establecido en [`enabledPlugins`](/docs/es/settings-reference#enabledplugins). El valor de la entrada tiene precedencia sobre `plugin.json` |

100| `displayName` | string | Nombre legible por humanos mostrado en la interfaz de usuario. Cuando ni la entrada ni el `plugin.json` del plugin establece uno, los usuarios ven el `name` del plugin |100| `displayName` | string | Nombre legible por humanos mostrado en la interfaz de usuario. Cuando ni la entrada ni el `plugin.json` del plugin establece uno, los usuarios ven el `name` del plugin |

101| `metadata` | object | Objeto de forma libre para sus propios campos. Claude Code no lo lee. Requiere Claude Code v2.1.222 o posterior |101| `metadata` | object | Objeto de forma libre para tus propios campos. Claude Code no lo lee. Requiere Claude Code v2.1.222 o posterior |

102| `headers` | object | Encabezados HTTP que Claude Code envía cuando descarga el [archivo](#archive-plugin-source) de esta entrada. Un encabezado establecido aquí reemplaza un encabezado del mismo nombre de los [`headers`](#fields-by-type) de la fuente del marketplace. Requiere Claude Code v2.1.238 o posterior |102| `headers` | object | Encabezados HTTP que Claude Code envía cuando descarga el [archivo](#archive-plugin-source) de esta entrada. Un encabezado establecido aquí reemplaza un encabezado del mismo nombre de los [`headers`](#fields-by-type) de la fuente del marketplace. Requiere Claude Code v2.1.238 o posterior |

103| `headersHelper` | string | Comando que imprime los encabezados de descarga de archivo de esta entrada como un objeto JSON, para una credencial que expira. La entrada también debe establecer [`"strict": false`](#strict-mode). Requiere Claude Code v2.1.238 o posterior. Consulte [Autenticar descargas de archivos](/docs/es/plugins/host-marketplace#authenticate-archive-downloads) |103| `headersHelper` | string | Comando que imprime los encabezados de descarga de archivo de esta entrada como un objeto JSON, para una credencial que expira. La entrada también debe establecer [`"strict": false`](#strict-mode). Requiere Claude Code v2.1.238 o posterior. Consulta [Autenticar descargas de archivos](/docs/es/plugins/host-marketplace#authenticate-archive-downloads) |

104 104 

105<h3 id="entry-and-plugin-json">105<h3 id="entry-and-plugin-json">

106 Cómo una entrada se combina con plugin.json106 Cómo una entrada se combina con plugin.json


108 108 

109Los campos de la entrada se aplican de manera diferente a un plugin obtenido que tiene su propio `.claude-plugin/plugin.json` y a uno que no:109Los campos de la entrada se aplican de manera diferente a un plugin obtenido que tiene su propio `.claude-plugin/plugin.json` y a uno que no:

110 110 

111* **Sin `plugin.json`**: la entrada es el manifiesto independientemente de `strict`. Cada campo de manifiesto en la entrada se aplica, incluidos [`mcpServers`, `lspServers`, `userConfig` y `channels`](/docs/es/plugins/manifest-reference).111* **Sin `plugin.json`**: la entrada es el manifiesto independientemente de `strict`. Cada campo de manifiesto que acepta la entrada se aplica, incluidos [`mcpServers`, `lspServers`, `userConfig` y `channels`](/docs/es/plugins/manifest-reference).

112* **`plugin.json` presente**: `plugin.json` es el manifiesto. [Modo estricto](#strict-mode) decide si los seis campos de componente de la entrada, `commands`, `agents`, `skills`, `hooks`, `outputStyles` y `themes`, se combinan con él o se rechazan como un conflicto. La entrada `mcpServers`, `lspServers`, `userConfig` y `channels` no se aplican. Declárelos en `plugin.json`.112* **`plugin.json` presente**: `plugin.json` es el manifiesto. [Modo estricto](#strict-mode) decide si los seis campos de componente de la entrada, `commands`, `agents`, `skills`, `hooks`, `outputStyles` y `themes`, se combinan con él o se rechazan como un conflicto. Los campos `mcpServers`, `lspServers`, `userConfig` y `channels` de la entrada no se aplican. Decláralos en `plugin.json`.

113 113 

114<h4 id="hooks-in-an-entry">114<h4 id="hooks-in-an-entry">

115 Hooks en una entrada115 Hooks en una entrada

116</h4>116</h4>

117 117 

118Escriba `hooks` de entrada como un objeto en línea que asigne nombres de eventos de hook a arrays de coincidencia. Si escribe una ruta de archivo o un array en su lugar, `claude plugin validate` lo aprueba. Esos hooks nunca se ejecutan, y Claude Code reporta un error `not yet supported in a marketplace entry` para el plugin. Coloque hooks basados en archivos en el propio [`hooks/hooks.json`](/docs/es/plugins/components) del plugin o `plugin.json`.118Escribe los `hooks` de la entrada como un objeto en línea que asigne nombres de eventos de hook a arrays de matchers. Si escribes una ruta de archivo o un array en su lugar, `claude plugin validate` lo aprueba. Esos hooks nunca se ejecutan, y Claude Code reporta un error `not yet supported in a marketplace entry` para el plugin. Coloca los hooks basados en archivos en el propio [`hooks/hooks.json`](/docs/es/plugins/components) del plugin o en `plugin.json`.

119 119 

120<h4 id="display-fields">120<h4 id="display-fields">

121 Campos de visualización121 Campos de visualización


123 123 

124Tanto la entrada como el propio `plugin.json` del plugin pueden establecer los campos de visualización `displayName`, `description`, `author`, `homepage`, `repository`, `license` y `keywords`. Los usuarios ven estos valores en los listados y detalles de plugins, antes y después de instalar:124Tanto la entrada como el propio `plugin.json` del plugin pueden establecer los campos de visualización `displayName`, `description`, `author`, `homepage`, `repository`, `license` y `keywords`. Los usuarios ven estos valores en los listados y detalles de plugins, antes y después de instalar:

125 125 

126* Para un campo que establece en la entrada, los usuarios ven el valor de la entrada, incluso cuando `plugin.json` establece uno diferente.126* Para un campo que establezcas en la entrada, los usuarios ven el valor de la entrada, incluso cuando `plugin.json` establece uno diferente.

127* Para un campo que la entrada deja sin establecer, los usuarios ven el valor de `plugin.json`.127* Para un campo que la entrada deja sin establecer, los usuarios ven el valor de `plugin.json`.

128 128 

129Antes de instalar, Claude Code solo puede leer `plugin.json` para entradas con una [fuente de ruta relativa](#relative-path-plugin-source), cuyos archivos de plugin están dentro del marketplace en sí. Para una entrada con cualquier otro tipo de fuente, los usuarios ven solo los campos propios de la entrada hasta que instalen el plugin.129Antes de instalar, Claude Code solo puede leer `plugin.json` para entradas con una [fuente de ruta relativa](#relative-path-plugin-source), cuyos archivos de plugin están dentro del marketplace en sí. Para una entrada con cualquier otro tipo de fuente, los usuarios ven solo los campos propios de la entrada hasta que instalen el plugin.


132 Modo estricto132 Modo estricto

133</h3>133</h3>

134 134 

135`strict` decide qué sucede cuando el plugin obtenido tiene su propio `plugin.json` y la entrada también declara cualquiera de los [campos de componente](#entry-and-plugin-json): `commands`, `agents`, `skills`, `hooks`, `outputStyles` o `themes`. Con `strict: true`, el predeterminado, Claude Code añade los campos de componente de la entrada a `plugin.json`, excepto `hooks`, cuyos coincidentes reemplazan los del manifiesto por evento. Con `strict: false`, una entrada que declara cualquier campo de componente es un conflicto, y el plugin falla al cargar. La tabla muestra cada combinación de `strict`, `plugin.json` y los campos de componente de la entrada.135`strict` decide qué sucede cuando el plugin obtenido tiene su propio `plugin.json` y la entrada también declara cualquiera de los [campos de componente](#entry-and-plugin-json): `commands`, `agents`, `skills`, `hooks`, `outputStyles` o `themes`. Con `strict: true`, el predeterminado, Claude Code añade los campos de componente de la entrada a `plugin.json`, excepto `hooks`, cuyos matchers reemplazan los del manifiesto por evento. Con `strict: false`, una entrada que declara cualquier campo de componente es un conflicto, y el plugin falla al cargar. La tabla muestra cada combinación de `strict`, `plugin.json` y los campos de componente de la entrada.

136 136 

137| `strict` | `plugin.json` | Campos de componente de entrada | Resultado |137| `strict` | `plugin.json` | Campos de componente de entrada | Resultado |

138| :- | :- | :- | :- |138| :- | :- | :- | :- |

139| any | absent | any | La entrada es el manifiesto |139| cualquiera | ausente | cualquiera | La entrada es el manifiesto |

140| `true`, el predeterminado | present | any | `plugin.json` es la autoridad. Claude Code añade los campos de componente de la entrada a él, excepto `hooks`, cuyos coincidentes [reemplazan los del manifiesto por evento](/docs/es/plugins/manifest-reference#how-entry-fields-combine-with-plugin-json) |140| `true`, el predeterminado | presente | cualquiera | `plugin.json` es la autoridad. Claude Code añade los campos de componente de la entrada a él, excepto `hooks`, cuyos matchers [reemplazan los del manifiesto por evento](/docs/es/plugins/manifest-reference#how-entry-fields-combine-with-plugin-json) |

141| `false` | present | none | `plugin.json` es el manifiesto, como con `true` |141| `false` | presente | ninguno | `plugin.json` es el manifiesto, como con `true` |

142| `false` | present | one or more | Conflicto. El plugin falla al cargar con `Plugin <name> has conflicting manifests: both plugin.json and marketplace entry specify components` |142| `false` | presente | uno o más | Conflicto. El plugin falla al cargar con `Plugin <name> has conflicting manifests: both plugin.json and marketplace entry specify components` |

143 143 

144<h2 id="plugin-sources">144<h2 id="plugin-sources">

145 Fuentes de plugins145 Fuentes de plugins


155| `github` | `repo`, `ref`, `sha` | Repositorio de GitHub en forma `owner/repo` |155| `github` | `repo`, `ref`, `sha` | Repositorio de GitHub en forma `owner/repo` |

156| `url` | `url`, `ref`, `sha` | Cualquier repositorio git por URL |156| `url` | `url`, `ref`, `sha` | Cualquier repositorio git por URL |

157| `git-subdir` | `url`, `path`, `ref`, `sha` | Un subdirectorio de un repositorio git, obtenido con un clon parcial disperso |157| `git-subdir` | `url`, `path`, `ref`, `sha` | Un subdirectorio de un repositorio git, obtenido con un clon parcial disperso |

158| `npm` | `package`, `version`, `registry` | Paquete npm, obtenido con su cliente npm y desempaquetado sin ejecutar scripts de instalación |158| `npm` | `package`, `version`, `registry` | Paquete del registro npm o enlace a un tarball, obtenido con tu cliente npm y desempaquetado sin ejecutar scripts de instalación |

159| `archive` | `url`, `sha256` | Archivo Zip sobre HTTPS. Requiere Claude Code v2.1.224 o posterior |159| `archive` | `url`, `sha256` | Archivo Zip sobre HTTPS. Requiere Claude Code v2.1.224 o posterior |

160| `command` | `command`, `timeout`, `mode` | Directorio impreso por un comando que Claude Code ejecuta en la máquina del usuario. Requiere Claude Code v2.1.229 o posterior |160| `command` | `command`, `timeout`, `mode` | Directorio impreso por un comando que Claude Code ejecuta en la máquina del usuario. Requiere Claude Code v2.1.229 o posterior |

161 161 


258 258 

259Una fuente `npm` toma estos campos:259Una fuente `npm` toma estos campos:

260 260 

261* `package`: un nombre de paquete, o un nombre con alcance como `@your-org/formatter`261* `package`: un nombre de paquete del registro como `@your-org/formatter`, un nombre con una versión añadida como `@your-org/formatter@2.0.0`, o un enlace `https` al archivo tarball del paquete

262* `version`: una versión o rango262* `version`: una versión, un rango semver o un dist-tag, que se usa cuando `package` es un nombre de paquete sin versión añadida. Omítelo para obtener `latest`

263* `registry`: una URL de registro para un paquete que no está en el registro predeterminado263* `registry`: una URL de registro para un paquete que no está en el registro predeterminado

264 264 

265Claude Code obtiene el paquete con su cliente npm. Los scripts de instalación del paquete, como `preinstall` o `postinstall`, nunca se ejecutan, y sus dependencias no se instalan durante la obtención. Si el paquete tiene un archivo de bloqueo compatible junto a su `package.json`, Claude Code instala esas [dependencias de paquetes Node.js](/docs/es/plugins/loading#node-js-package-dependencies) en un paso separado, también con scripts deshabilitados.265Claude Code obtiene el paquete con su cliente npm. Los scripts de instalación del paquete, como `preinstall` o `postinstall`, nunca se ejecutan, y sus dependencias no se instalan durante la obtención. Si el paquete tiene un archivo de bloqueo compatible junto a su `package.json`, Claude Code instala esas [dependencias de paquetes Node.js](/docs/es/plugins/loading#node-js-package-dependencies) en un paso separado, también con scripts deshabilitados.

266 266 

267Claude Code verifica el valor de `package` antes de obtener nada. Un valor rechazado hace fallar la instalación con un mensaje que nombra el valor y el motivo. Los valores rechazados incluyen:

268 

269* **Una dirección git, una carpeta o ruta `file:`, o un alias `npm:`**: usa una [fuente `github`, `url` o `git-subdir`](#plugin-sources) para un repositorio git, una ruta relativa para una carpeta en el marketplace y el nombre propio del paquete para un alias

270* **Un enlace a un tarball en github.com, gist.github.com, gitlab.com, bitbucket.org o git.sr.ht**: se rechaza incluso cuando el enlace es una descarga de release de GitHub, a menos que sea un enlace al registro npm de GitLab bajo `gitlab.com/api/v4/`

271* **Un enlace a un tarball sobre `http`**: se rechaza a menos que apunte al registro npm predeterminado del propio usuario que instala

272 

273La URL de `registry` debe usar `https` a menos que sea el registro npm predeterminado del propio usuario que instala. Con cualquier otro registro `http`, la instalación falla antes de que npm lo contacte.

274 

267```json theme={null}275```json theme={null}

268{276{

269 "name": "formatter",277 "name": "formatter",

Details

167 167 

168Un usuario cuyo mod no se cargó encuentra la razón en su registro de depuración. [Mensajes de rechazo](/docs/es/plugins/mods/troubleshoot#refusal-messages) enumera las líneas para `allowManagedHooksOnly` y `disableAllHooks`, y [Mensajes del guard integrado](/docs/es/plugins/mods/troubleshoot#messages-from-the-built-in-guard) tiene la línea para `allowManagedModsOnly`.168Un usuario cuyo mod no se cargó encuentra la razón en su registro de depuración. [Mensajes de rechazo](/docs/es/plugins/mods/troubleshoot#refusal-messages) enumera las líneas para `allowManagedHooksOnly` y `disableAllHooks`, y [Mensajes del guard integrado](/docs/es/plugins/mods/troubleshoot#messages-from-the-built-in-guard) tiene la línea para `allowManagedModsOnly`.

169 169 

170<h3 id="allow-only-your-organization’s-mods">

171 Permitir solo los mods de tu organización

172</h3>

173 

174Para ejecutar los mods de tu organización y bloquear los que traen los usuarios, implementa los ajustes de la fila **Solo los mods de tu organización** de la [tabla de políticas](#choose-how-much-to-allow), además de `disableSideloadFlags`. Con este `managed-settings.json` completo, Claude Code rechaza los mods propios de los usuarios, por lo que ninguno de sus hooks se ejecuta, y tu mod de políticas se ejecuta antes que los demás mods:

175 

176```json managed-settings.json theme={null}

177{

178 "extraKnownMarketplaces": {

179 "acme-tools": {

180 "source": { "source": "directory", "path": "/opt/acme/claude-plugins" }

181 }

182 },

183 "enabledPlugins": { "acme-guard@acme-tools": true },

184 "prependPlugins": ["acme-guard@acme-tools", "sec-default@builtin"],

185 "pluginConfigs": {

186 "cc-plugin-sec-default@builtin": {

187 "options": { "allowManagedModsOnly": true }

188 }

189 },

190 "disableSideloadFlags": true

191}

192```

193 

194Cada grupo de claves cumple una función:

195 

196* **`extraKnownMarketplaces`, `enabledPlugins` y `prependPlugins`**: instalan tu mod para que cuente como tuyo, y lo ejecutan primero con el guard después de él. [Instalar los mods de tu organización y establecer el orden](#install-your-organizations-mods) cubre el directorio al que apuntan estas claves.

197* **`pluginConfigs`**: establece la opción `allowManagedModsOnly` del guard, de modo que Claude Code rechaza los mods propios de los usuarios. Sus hooks de configuración, líneas de estado y `/goal` siguen funcionando.

198* **`disableSideloadFlags`**: consulta [`disableSideloadFlags`](/docs/es/settings-reference#disablesideloadflags) para ver los flags que rechaza al inicio

199 

200Para confirmar la política en una máquina de prueba, inicia en tu shell una sesión con `claude --debug` y lee el registro de depuración:

201 

202* **Tu mod**: su línea `hooks module` tiene `tier prepend`

203* **Un mod que instaló el usuario**: una línea dice `refused by cc-plugin-sec-default: mods are limited to your organization's by policy (allowManagedModsOnly)`. Una línea anterior indica que el módulo de hooks de ese mod se cargó (`loaded`), así que busca el rechazo.

204* **Un directorio de plugins**: `claude --plugin-dir ./any-mod` termina con un mensaje que comienza con `--plugin-dir is disabled by your organization's managed settings (disableSideloadFlags)`

205 

206Para limitar también qué marketplaces pueden agregar los usuarios, combina este archivo con tus [restricciones de marketplace](/docs/es/plugins/org#restrict-what-users-can-install).

207 

208<h3 id="apply-your-plugin-controls-to-mods">

209 Aplicar tus controles de plugins a los mods

210</h3>

211 

212Un mod es un plugin, por lo que las formas en que [administras los plugins de tu organización](/docs/es/plugins/org) también se aplican a un plugin que contiene un mod:

213 

214* **Ver qué plugins se cargan en toda tu flota**: [Auditar y revisar](/docs/es/plugins/org#audit-and-review)

215* **Decidir cuándo puede actualizarse un plugin que revisaste**: [Establecer la política de actualización](/docs/es/plugins/org#set-update-policy)

216* **Dar a un grupo una política diferente, como un piloto**: [Planificar lo que la configuración administrada no puede imponer](/docs/es/plugins/org#plan-for-what-managed-settings-can’t-enforce)

217* **Comprobar qué apps y tipos de sesión aplican las claves de plugins**: [Cuándo aplica cada superficie las claves de plugins](/docs/es/plugins/org#when-each-surface-applies-the-plugin-keys)

218* **Configurar CI y contenedores**: [Preparar contenedores y CI](/docs/es/plugins/org#seed-containers-and-ci)

219* **Ofrecer mods que tus usuarios pueden instalar**: [Alojar un marketplace](/docs/es/plugins/host-marketplace). Un mod que Claude Code copia desde una fuente de GitHub, git, URL o npm cuenta como de un usuario, no como de [tu organización](#install-your-organizations-mods).

220 

170<h3 id="set-options-on-the-built-in-guard">221<h3 id="set-options-on-the-built-in-guard">

171 Establezca opciones en el guard integrado222 Establezca opciones en el guard integrado

172</h3>223</h3>

Details

190 190 

191Mantén la espera dentro de una llamada de API de mods como `$.ui.ask`, porque ese tiempo no cuenta contra el [límite de tiempo de 10 segundos](/docs/es/plugins/mods/reference#limits) del hook. El tiempo dedicado a esperar una promesa propia sí cuenta. Claude Code omite un hook que agota el tiempo, por lo que el comando retenido se ejecutaría.191Mantén la espera dentro de una llamada de API de mods como `$.ui.ask`, porque ese tiempo no cuenta contra el [límite de tiempo de 10 segundos](/docs/es/plugins/mods/reference#limits) del hook. El tiempo dedicado a esperar una promesa propia sí cuenta. Claude Code omite un hook que agota el tiempo, por lo que el comando retenido se ejecutaría.

192 192 

193<h4 id="approve-or-refuse-a-tool-call-before-the-user-is-asked">

194 Aprobar o rechazar una llamada a herramienta antes de preguntarle al usuario

195</h4>

196 

197Para decidir si una llamada a herramienta puede ejecutarse, maneja [`tool.check`](/docs/es/plugins/mods/reference#tools), el evento en el que Claude Code toma esa decisión. Se dispara después de que las reglas de permisos y los hooks de configuración han decidido, y `next(e)` se resuelve a su decisión: `allow`, `ask` o `deny`. Tu hook devuelve esa decisión u otra diferente. `e.input` contiene los argumentos de la herramienta, como `command` para Bash.

198 

199Para un comando o una ruta fijos, usa una [regla de permisos](/docs/es/permissions#permission-rule-syntax) como `Bash(npm test)`, que no requiere código. Maneja `tool.check` cuando la decisión dependa de lo que sea cierto en ese momento, como la rama actual de Git o un valor que otro hook registró.

200 

201Este hook rechaza `git push` mientras la rama actual es `main`:

202 

203```javascript theme={null}

204on('tool.check', { tool: 'Bash' }, async ($, e, next) => {

205 // Lo que decidieron las reglas de permisos y los hooks de configuración: 'allow', 'ask' o 'deny'

206 const decided = await next(e)

207 if (!e.input.command.includes('git push')) return decided

208 const branch = await $.process.run(['git', 'branch', '--show-current'])

209 if (branch.stdout.trim() !== 'main') return decided

210 return { decision: 'deny', reason: 'Push from a branch other than main' }

211})

212```

213 

214En `main`, el hook devuelve `deny`, incluso cuando una regla permite `git push`. En otra rama, y para otros comandos, la llamada obtiene la decisión que obtendría sin el mod.

215 

216El hook compara el texto del comando, así que trátalo como un recordatorio para Claude. Para bloquear los pushes a `main` para todos, protege la rama en tu host de Git.

217 

218Un hook puede devolver cualquiera de las tres decisiones, por lo que también puede aprobar una llamada que bloqueó un hook `PreToolUse` fuera de la configuración administrada. [Extender permisos con hooks](/docs/es/permissions#extend-permissions-with-hooks) indica qué decisiones prevalecen sobre un mod.

219 

193<h3 id="rewrite-or-add-to-a-prompt">220<h3 id="rewrite-or-add-to-a-prompt">

194 Reescribir o añadir a una indicación221 Reescribir o añadir a una indicación

195</h3>222</h3>


301* **Hooks `PreToolUse` de configuración administrada**: se ejecutan antes que el hook `tool.call` del primer mod, y un bloqueo de uno de ellos es final, por lo que ningún mod ve la llamada.328* **Hooks `PreToolUse` de configuración administrada**: se ejecutan antes que el hook `tool.call` del primer mod, y un bloqueo de uno de ellos es final, por lo que ningún mod ve la llamada.

302* **Hooks `PreToolUse` de cada otro archivo de configuración y de `hooks/hooks.json` de plugins**: se ejecutan después de que el último mod llama a `next`, como parte del comportamiento propio de Claude Code. Un mod que responde `tool.call` sin llamar a `next` los mantiene de ejecutarse, y un mod que llama a `next` ve su decisión en el resultado que devuelve.329* **Hooks `PreToolUse` de cada otro archivo de configuración y de `hooks/hooks.json` de plugins**: se ejecutan después de que el último mod llama a `next`, como parte del comportamiento propio de Claude Code. Un mod que responde `tool.call` sin llamar a `next` los mantiene de ejecutarse, y un mod que llama a `next` ve su decisión en el resultado que devuelve.

303 330 

304[`tool.check`](/docs/es/plugins/mods/reference#tools) es el evento donde Claude Code decide si una llamada de herramienta puede ejecutarse. Se dispara después de esos hooks y las reglas de permisos han decidido, y `next(e)` se resuelve a su decisión. Un hook en `tool.check` puede devolver una decisión diferente, como `{ decision: 'allow' }`, por lo que puede aprobar una llamada que un hook en el segundo grupo bloqueó. [Extender permisos con hooks](/docs/es/permissions#extend-permissions-with-hooks) enumera qué decisiones se mantienen sobre un mod.331[`tool.check`](#approve-or-refuse-a-tool-call-before-the-user-is-asked) se dispara después de que esos hooks y las reglas de permisos han decidido, por lo que un hook en él puede aprobar una llamada que un hook del segundo grupo bloqueó.

305 332 

306<h3 id="handle-a-hook-that-fails">333<h3 id="handle-a-hook-that-fails">

307 Manejar un hook que falla334 Manejar un hook que falla

Details

407 ```407 ```

408 408 

409 ```text theme={null}409 ```text theme={null}

410 Note: Type a note and press Enter ⏎ add410 Note: Type a note and press Enter

411 ```411 ```

412 </Tab>412 </Tab>

413</Tabs>413</Tabs>

414 414 

415Esta tabla enumera cada elemento:415La [galería de interfaces](/docs/es/plugins/mods/gallery) tiene ejemplos y capturas de pantalla de la mayoría de los elementos. Esta tabla enumera cada elemento:

416 416 

417| Elemento | Qué dibuja | Dónde |417| Elemento | Qué dibuja | Dónde |

418| :- | :- | :- |418| :- | :- | :- |

Details

72* **Actuar sin pedirle**: aprobar una llamada de herramienta antes de que se le pregunte72* **Actuar sin pedirle**: aprobar una llamada de herramienta antes de que se le pregunte

73* **Gastar su uso**: llamar a un modelo en su plan o clave API73* **Gastar su uso**: llamar a un modelo en su plan o clave API

74 74 

75Los mods no se ejecutan en un sandbox. Si activas el [sandboxing](/docs/es/sandboxing), el sandbox aísla los comandos de Bash que ejecuta Claude, y un proceso que inicia un mod se ejecuta fuera de él.

76 

75Un mod que aprueba llamadas de herramientas puede aprobar una que una regla `ask` solicitaría, o que uno de sus propios hooks `PreToolUse` bloqueó. [Extender permisos con hooks](/docs/es/permissions#extend-permissions-with-hooks) enumera lo que tal mod puede aprobar, incluido cuándo puede aprobar una llamada que una regla `deny` rechaza.77Un mod que aprueba llamadas de herramientas puede aprobar una que una regla `ask` solicitaría, o que uno de sus propios hooks `PreToolUse` bloqueó. [Extender permisos con hooks](/docs/es/permissions#extend-permissions-with-hooks) enumera lo que tal mod puede aprobar, incluido cuándo puede aprobar una llamada que una regla `deny` rechaza.

76 78 

77Un mod puede cambiar el estilo de gran parte de la interfaz de Claude Code, pero no el mensaje de permiso. No puede cambiar lo que un mensaje le muestra.79Un mod puede cambiar el estilo de gran parte de la interfaz de Claude Code, pero no el mensaje de permiso. No puede cambiar lo que un mensaje le muestra.


102 104 

103Si usa Claude Code a través de una organización, un administrador también puede limitar qué mods se cargan. Los administradores comienzan en [Evitar que los mods instalados por el usuario se carguen](/docs/es/plugins/mods/admin#stop-user-installed-mods-from-loading).105Si usa Claude Code a través de una organización, un administrador también puede limitar qué mods se cargan. Los administradores comienzan en [Evitar que los mods instalados por el usuario se carguen](/docs/es/plugins/mods/admin#stop-user-installed-mods-from-loading).

104 106 

107`disableAllHooks` y el `allowManagedModsOnly` de tu organización detienen un mod y dejan el resto de su plugin en su lugar: el plugin sigue instalado, y sus skills, comandos, agentes y servidores MCP se cargan. Otros ajustes y flags llegan más lejos. [`disableAllHooks`](/docs/es/settings-reference#disableallhooks) y [Qué se ejecuta con `allowManagedHooksOnly`](/docs/es/settings-reference#what-runs-under-allowmanagedhooksonly) enumeran lo que cada uno le hace a un plugin y a sus hooks de configuración.

108 

105Para saber si los mods pueden cargarse para usted, vea [Verificar si los mods pueden cargarse](/docs/es/plugins/mods/troubleshoot#check-whether-mods-can-load).109Para saber si los mods pueden cargarse para usted, vea [Verificar si los mods pueden cargarse](/docs/es/plugins/mods/troubleshoot#check-whether-mods-can-load).

106 110 

107<Note>111<Note>

Details

56 56 

57Lee la razón después de los dos puntos. La sección [refusal messages](#refusal-messages) enumera cada una. Si el registro no tiene tal línea, trabaja a través de las otras entradas en este grupo.57Lee la razón después de los dos puntos. La sección [refusal messages](#refusal-messages) enumera cada una. Si el registro no tiene tal línea, trabaja a través de las otras entradas en este grupo.

58 58 

59Algunos ajustes detienen un mod y dejan funcionando el resto de su plugin. [Activar o desactivar mods](/docs/es/plugins/mods/overview#turn-mods-on-or-off) indica cuáles son.

60 

59<h3 id="a-claude-p-run-prints-hooks-module-not-loaded">61<h3 id="a-claude-p-run-prints-hooks-module-not-loaded">

60 Una ejecución `claude -p` imprime `hooks module not loaded`62 Una ejecución `claude -p` imprime `hooks module not loaded`

61</h3>63</h3>

Details

37 37 

38Las [reglas de permisos](/docs/es/permissions) y [sandbox](/docs/es/sandboxing) de Claude Code cubren las llamadas a herramientas que hace Claude, no el código que ejecuta un plugin por sí solo:38Las [reglas de permisos](/docs/es/permissions) y [sandbox](/docs/es/sandboxing) de Claude Code cubren las llamadas a herramientas que hace Claude, no el código que ejecuta un plugin por sí solo:

39 39 

40* **Hooks y procesos de servidor**: los hooks de comando ejecutan comandos de shell con tus permisos de usuario completos. Claude Code ejecuta hooks y servidores MCP fuera del sandbox.40* **Hooks y procesos de servidor**: los hooks de comando ejecutan comandos de shell con tus permisos de usuario completos. Claude Code ejecuta fuera del sandbox los hooks, los servidores MCP y los procesos que inicia un [mod](/docs/es/plugins/mods/overview#what-a-mod-can-reach).

41* **Llamadas a herramientas de Claude**: una llamada a una de las herramientas MCP del plugin, y un comando Bash que ejecuta un ejecutable del `bin/` del plugin, son llamadas a herramientas, así que tus reglas de permisos se aplican a ellas. Para ver qué puede hacer un mod en una llamada a herramienta, consulta [Decide whether to trust a mod](/docs/es/plugins/mods/overview#decide-whether-to-trust-a-mod).41* **Llamadas a herramientas de Claude**: una llamada a una de las herramientas MCP del plugin, y un comando Bash que ejecuta un ejecutable del `bin/` del plugin, son llamadas a herramientas, así que tus reglas de permisos se aplican a ellas. Para ver qué puede hacer un mod en una llamada a herramienta, consulta [Decide whether to trust a mod](/docs/es/plugins/mods/overview#decide-whether-to-trust-a-mod).

42 42 

43Instalar un plugin también lo habilita, a menos que su manifiesto o entrada de marketplace establezca [`defaultEnabled: false`](/docs/es/plugins/install#choose-an-install-scope) y no lo hayas habilitado tú mismo.43Instalar un plugin también lo habilita, a menos que su manifiesto o entrada de marketplace establezca [`defaultEnabled: false`](/docs/es/plugins/install#choose-an-install-scope) y no lo hayas habilitado tú mismo.

Details

361* [Un error de acceso a GitHub en claude.ai](/docs/es/github-enterprise-server#marketplace-add-on-claude-ai-fails-with-a-github-access-error) significa que su propia cuenta de GitHub Enterprise aún no está conectada361* [Un error de acceso a GitHub en claude.ai](/docs/es/github-enterprise-server#marketplace-add-on-claude-ai-fails-with-a-github-access-error) significa que su propia cuenta de GitHub Enterprise aún no está conectada

362 362 

363<h2 id="install-a-plugin">363<h2 id="install-a-plugin">

364 Install a plugin364 Instalar un plugin

365</h2>365</h2>

366 366 

367Agregó un mercado y ejecutó una instalación, y la instalación se detuvo con un mensaje en lugar de instalar nada. Estas entradas cubren esos mensajes. También cubren los mensajes relacionados que aparecen más tarde en la pestaña `/plugin` **Errors**, o como una pestaña **Discover** vacía, cuando un plugin o su mercado no se puede encontrar, leer o confiar.367Agregaste un marketplace y ejecutaste una instalación, y la instalación se detuvo con un mensaje en lugar de instalar algo. Estas entradas cubren esos mensajes. También cubren los mensajes relacionados que aparecen más tarde en la pestaña **Errors** de `/plugin`, o como una pestaña **Discover** vacía, cuando no se puede encontrar, leer o confiar en un plugin o en su marketplace.

368 368 

369<h3 id="plugin-not-found-in-marketplace">369<h3 id="plugin-not-found-in-marketplace">

370 `Plugin "<name>" not found in marketplace "<marketplace>"`370 `Plugin "<name>" not found in marketplace "<marketplace>"`

371</h3>371</h3>

372 372 

373Ejecutó `/plugin install <name>@<marketplace>` o `claude plugin install <name>@<marketplace>`, y el nombre del plugin no está en la copia del catálogo de ese mercado en su máquina.373Ejecutaste `/plugin install <name>@<marketplace>` o `claude plugin install <name>@<marketplace>`, y el nombre del plugin no está en la copia del catálogo de ese marketplace que hay en tu máquina.

374 374 

375`claude plugin install` en su shell imprime el mismo mensaje cuando no ha agregado el mercado en absoluto. Si `claude plugin marketplace update <marketplace>` luego responde `Marketplace '<marketplace>' not found`, [agregue el mercado](#add-a-marketplace) primero.375`claude plugin install` en tu shell imprime el mismo mensaje cuando no has agregado el marketplace en absoluto. Si `claude plugin marketplace update <marketplace>` responde entonces `Marketplace '<marketplace>' not found`, primero [agrega el marketplace](#add-a-marketplace).

376 376 

377<h4 id="the-message-ends-with-a-refresh-hint">377<h4 id="the-message-ends-with-a-refresh-hint">

378 `not found in marketplace` with a refresh hint378 `not found in marketplace` con una sugerencia de actualización

379</h4>379</h4>

380 380 

381La sugerencia dice `Your local copy may be out of date — try claude plugin marketplace update <marketplace>` o `The marketplace couldn't be refreshed (...)`. Claude Code no actualizó el mercado antes de la búsqueda, como cuando está sin conexión, por lo que su copia del catálogo puede estar desactualizada. Actualice con el nombre del mercado, luego instale nuevamente:381La sugerencia dice `Your local copy may be out of date — try claude plugin marketplace update <marketplace>` o `The marketplace couldn't be refreshed (...)`. Claude Code no actualizó el marketplace antes de la búsqueda, por ejemplo cuando estás sin conexión, así que tu copia del catálogo puede estar desactualizada. Actualízalo con el nombre del marketplace y luego vuelve a instalar:

382 382 

383```text theme={null}383```text theme={null}

384/plugin marketplace update <marketplace>384/plugin marketplace update <marketplace>

385```385```

386 386 

387`claude plugin marketplace update` imprime `Successfully updated marketplace: <name>`, y `/plugin marketplace update` muestra `✔ Updated 1 marketplace`. Si la instalación reintentada imprime el mismo mensaje, verifique el nombre como [`not found in marketplace` with no hint](#the-message-has-no-hint) describe. [When Claude Code refreshes a marketplace before an install](/docs/es/plugins/loading#when-claude-code-refreshes-a-marketplace-before-an-install) enumera los otros casos donde la actualización no se ejecuta.387`claude plugin marketplace update` imprime `Successfully updated marketplace: <name>`, y `/plugin marketplace update` muestra `✔ Updated 1 marketplace`. Si la instalación reintentada imprime el mismo mensaje, revisa el nombre como se describe en [`not found in marketplace` sin sugerencia](#the-message-has-no-hint). [Cuándo Claude Code actualiza un marketplace antes de una instalación](/docs/es/plugins/loading#when-claude-code-refreshes-a-marketplace-before-an-install) enumera los otros casos en los que la actualización no se ejecuta.

388 388 

389<h4 id="the-message-has-no-hint">389<h4 id="the-message-has-no-hint">

390 `not found in marketplace` with no hint390 `not found in marketplace` sin sugerencia

391</h4>391</h4>

392 392 

393El nombre es el problema más probable. Abra `/plugin`, vaya a **Discover**, y copie el nombre de la lista.393Lo más probable es que el problema sea el nombre. Abre `/plugin`, ve a **Discover** y copia el nombre de la lista.

394 394 

395Antes de v2.1.232, Claude Code actualizaba el mercado nombrado solo después de que la búsqueda fallara, y solo cuando la actualización automática estaba activada para él.395Antes de v2.1.232, Claude Code actualizaba el marketplace indicado solo después de que la búsqueda fallara, y solo cuando tenía la actualización automática activada.

396 396 

397<h3 id="plugin-not-found-in-any-marketplace">397<h3 id="plugin-not-found-in-any-marketplace">

398 `Plugin "<name>" not found in any marketplace`398 `Plugin "<name>" not found in any marketplace`

399</h3>399</h3>

400 400 

401Ejecutó `/plugin install <name>` sin `@marketplace`, y ningún mercado registrado tiene ese plugin. `claude plugin install <name>` informa `Plugin "<name>" not found in any configured marketplace`.401Ejecutaste `/plugin install <name>` sin `@marketplace`, y ningún marketplace registrado tiene ese plugin. `claude plugin install <name>` informa `Plugin "<name>" not found in any configured marketplace`.

402 402 

403Sin un nombre de mercado, `claude plugin install` busca en los catálogos que ya tiene y no los actualiza primero, y `/plugin install` actualiza solo los mercados que tienen la actualización automática activada. Nombre el mercado, y Claude Code lo actualiza antes de buscar el plugin:403Sin un nombre de marketplace, `claude plugin install` busca en los catálogos que ya tiene y no los actualiza antes, y `/plugin install` actualiza solo los marketplaces que tienen la actualización automática activada. Indica el marketplace y Claude Code lo actualizará antes de buscar el plugin:

404 404 

405```text theme={null}405```text theme={null}

406/plugin install <name>@<marketplace>406/plugin install <name>@<marketplace>

407```407```

408 408 

409Cuando la instalación funciona, ve `✓ Installed <plugin>.` en una sesión, o `Successfully installed plugin: <plugin>@<marketplace>` desde `claude plugin install`.409Cuando la instalación funciona, ves `✓ Installed <plugin>.` en una sesión, o `Successfully installed plugin: <plugin>@<marketplace>` desde `claude plugin install`.

410 410 

411Si no sabe qué mercado enumera el plugin, ejecute `/plugin marketplace list` para los mercados que tiene, y navegue por **Discover** en `/plugin` para el nombre del plugin.411Si no sabes qué marketplace incluye el plugin, ejecuta `/plugin marketplace list` para ver los marketplaces que tienes, y busca el nombre del plugin en **Discover** dentro de `/plugin`.

412 412 

413<h3 id="plugin-is-already-installed-globally">413<h3 id="plugin-is-already-installed-globally">

414 `Plugin '<name>@<marketplace>' is already installed globally`414 `Plugin '<name>@<marketplace>' is already installed globally`

415</h3>415</h3>

416 416 

417Ejecutó `/plugin install` para un plugin que ya está instalado en el scope de usuario o por configuración administrada, y Claude Code rechazó con `Use '/plugin' to manage existing plugins.` Si escribió el nombre del plugin sin `@<marketplace>`, el mensaje omite `globally`.417Ejecutaste `/plugin install` para un plugin que ya está instalado en el alcance de usuario o mediante la configuración administrada, y Claude Code lo rechazó con `Use '/plugin' to manage existing plugins.` Si escribiste el nombre del plugin sin `@<marketplace>`, el mensaje omite `globally`.

418 418 

419El plugin ya está disponible en cada proyecto, por lo que no hay nada que agregar. Para cambiar su [scope](/docs/es/plugins/install), habilitarlo o deshabilitarlo, o configurarlo, abra `/plugin` y vaya a **Installed**.419El plugin ya está disponible en todos los proyectos, así que no hay nada que agregar. Para cambiar su [alcance](/docs/es/plugins/install), habilitarlo o deshabilitarlo, o configurarlo, abre `/plugin` y ve a **Installed**.

420 420 

421Un plugin instalado solo en el scope de proyecto o local no activa este mensaje. Claude Code le permite instalarlo también en el scope de usuario, por lo que está disponible en otros proyectos.421Un plugin instalado solo en el alcance de proyecto o local no activa este mensaje. Claude Code te permite instalarlo también en el alcance de usuario, para que esté disponible en otros proyectos.

422 422 

423`claude plugin install` en su shell imprime un mensaje diferente. Para un plugin ya instalado en el scope de destino, imprime `Plugin "<name>@<marketplace>" is already installed (scope: user)` y sale con 0. Si su directorio de caché falta, el mismo comando lo descarga nuevamente.423`claude plugin install` en tu shell imprime un mensaje diferente. Para un plugin ya instalado en el alcance de destino, imprime `Plugin "<name>@<marketplace>" is already installed (scope: user)` y sale con 0. Si falta su directorio de caché, el mismo comando lo vuelve a descargar.

424 424 

425<h3 id="plugin-would-share-its-folder">425<h3 id="plugin-would-share-its-folder">

426 `"<plugin>" was not installed: it would share its folder with "<other>"`426 `"<plugin>" was not installed: it would share its folder with "<other>"`

427</h3>427</h3>

428 428 

429Instaló un plugin a través de `claude plugin install`, `/plugin`, o una sugerencia de instalación en una sesión, y Claude Code lo rechazó con esta línea, o con `would share its saved data with`.429Instalaste un plugin mediante `claude plugin install`, `/plugin` o una sugerencia de instalación en una sesión, y Claude Code lo rechazó con esta línea, o con `would share its saved data with`.

430 430 

431El id del plugin rechazado y el id de un plugin instalado se asignan a la misma carpeta en el disco: son iguales una vez que `.` y `@` se escriben como `-`. En macOS y Windows, los ids que difieren solo en mayúsculas se asignan a la misma carpeta también. Instalar ambos pondría los archivos de un plugin en la carpeta del otro, por lo que Claude Code rechaza y el plugin instalado mantiene sus archivos.431El id del plugin rechazado y el id de un plugin instalado corresponden a la misma carpeta en el disco: son iguales una vez que `.` y `@` se escriben como `-`. En macOS y Windows, los ids que difieren solo en mayúsculas también corresponden a la misma carpeta. Instalar ambos pondría los archivos de un plugin en la carpeta del otro, así que Claude Code lo rechaza y el plugin instalado conserva sus archivos.

432 432 

433El mensaje nombra la salida:433El mensaje indica la salida:

434 434 

435* **El otro plugin está instalado**: el mensaje dice `Only one of the two can be installed.` y nombra el comando `claude plugin uninstall`, o el paso de desinstalación en `/plugin`, que elimina el otro plugin. Ejecútelo, luego instale nuevamente. Para lo que la desinstalación elimina, vea [What an uninstall deletes and keeps](/docs/es/plugins/cli-reference#what-an-uninstall-deletes-and-keeps).435* **El otro plugin está instalado**: el mensaje dice `Only one of the two can be installed.` e indica el comando `claude plugin uninstall`, o el paso de desinstalación en `/plugin`, que elimina el otro plugin. Ejecútalo y luego vuelve a instalar. Para saber qué elimina la desinstalación, consulta [Qué elimina y qué conserva una desinstalación](/docs/es/plugins/cli-reference#what-an-uninstall-deletes-and-keeps).

436* **Ambos ids llegan en una instalación**, como un plugin y una dependencia que necesita: ningún orden de instalación ayuda. Solo un mantenedor del mercado que enumera los dos plugins puede arreglarlo, renombrando uno de ellos. Cuando los dos provienen de diferentes mercados, un mantenedor de cualquiera de ellos puede.436* **Ambos ids llegan en una sola instalación**, como un plugin y una dependencia que necesita: ningún orden de instalación ayuda. Solo un mantenedor del marketplace que incluye los dos plugins puede arreglarlo, cambiando el nombre de uno de ellos. Cuando los dos provienen de marketplaces diferentes, puede hacerlo un mantenedor de cualquiera de ellos.

437 437 

438<h3 id="this-plugin-uses-a-source-type-your-claude-code-version-does-not-suppo">438<h3 id="this-plugin-uses-a-source-type-your-claude-code-version-does-not-suppo">

439 `This plugin uses a source type your Claude Code version does not support`439 `This plugin uses a source type your Claude Code version does not support`

440</h3>440</h3>

441 441 

442Instaló un plugin cuya entrada de mercado usa un tipo de fuente que esta versión de Claude Code no puede obtener, y Claude Code se detuvo con este mensaje y `Update Claude Code and try again.`442Instalaste un plugin cuya entrada en el marketplace usa un tipo de fuente que esta versión de Claude Code no puede obtener, y Claude Code se detuvo con este mensaje y `Update Claude Code and try again.`

443 443 

444Actualice Claude Code, luego reintente la instalación. Los tipos de fuente están en la [marketplace reference](/docs/es/plugins/marketplace-reference).444Actualiza Claude Code y luego reintenta la instalación. Los tipos de fuente están en la [referencia de marketplaces](/docs/es/plugins/marketplace-reference).

445 445 

446<h3 id="plugin-archive-integrity-check-failed">446<h3 id="plugin-archive-integrity-check-failed">

447 `Plugin archive integrity check failed`447 `Plugin archive integrity check failed`

448</h3>448</h3>

449 449 

450Instaló un plugin que se distribuye como un archivo zip, y Claude Code lo rechazó con esta línea y `The archive was not installed.` La entrada de mercado del plugin usa una fuente [`archive`](/docs/es/plugins/marketplace-reference) con un pin `sha256`, y el resumen del archivo descargado no coincide con el pin.450Instalaste un plugin que se distribuye como archivo zip, y Claude Code lo rechazó con esta línea y `The archive was not installed.` La entrada del plugin en el marketplace usa una [fuente `archive`](/docs/es/plugins/marketplace-reference) con un `sha256` fijado, y el hash del archivo descargado no coincide con el valor fijado.

451 451 

452El mensaje completo se ve así:452El mensaje completo se ve así:

453 453 


455Plugin archive integrity check failed for https://artifacts.example.com/claude-plugins/my-plugin.zip: expected sha256 6bfa50e3d2e00c052b46abe51fff89346ac803e45771f76dcf6df1ab74cca5e1, got ac52220c0914ef8ca6a602e4a7362f88d30fb021110f72a6d15b68c3fe7df2b7. The archive was not installed. Verify the sha256 in the marketplace entry, or that the URL serves the intended file.455Plugin archive integrity check failed for https://artifacts.example.com/claude-plugins/my-plugin.zip: expected sha256 6bfa50e3d2e00c052b46abe51fff89346ac803e45771f76dcf6df1ab74cca5e1, got ac52220c0914ef8ca6a602e4a7362f88d30fb021110f72a6d15b68c3fe7df2b7. The archive was not installed. Verify the sha256 in the marketplace entry, or that the URL serves the intended file.

456```456```

457 457 

458La solución difiere para el editor y el instalador:458La solución es distinta para quien publica y para quien instala:

459 459 

460* **Usted publica el plugin**: recompute el resumen del archivo exacto que sirve la URL y actualice el `sha256` en la entrada del mercado. Use `shasum -a 256 my-plugin.zip`, o `Get-FileHash -Algorithm SHA256 my-plugin.zip` en PowerShell460* **Publicas el plugin**: vuelve a calcular el hash del archivo exacto que sirve la URL y actualiza el `sha256` en la entrada del marketplace. Usa `shasum -a 256 my-plugin.zip`, o `Get-FileHash -Algorithm SHA256 my-plugin.zip` en PowerShell

461* **Usted instala el plugin**: ejecute `/plugin marketplace update <name>` en una sesión para actualizar el catálogo en caso de que la entrada haya sido corregida, luego reintente la instalación. Si los resúmenes aún no coinciden después de la actualización, pida al propietario del mercado qué archivo fijaron antes de instalar461* **Instalas el plugin**: ejecuta `/plugin marketplace update <name>` en una sesión para actualizar el catálogo por si la entrada se corrigió, y luego reintenta la instalación. Si los hashes siguen sin coincidir después de la actualización, pregúntale al propietario del marketplace qué archivo fijó antes de instalar

462 

463<h3 id="an-npm-plugin-source-must-name-a-registry-package">

464 `An npm plugin source must name a registry package`

465</h3>

466 

467Un plugin cuya entrada en el marketplace usa una [fuente `npm`](/docs/es/plugins/marketplace-reference#npm-plugin-source) no se pudo instalar, actualizar o cargar, y el mensaje incluye esta oración. Claude Code revisó el valor `package` de la entrada antes de obtener nada y lo rechazó. El mensaje indica el valor y el motivo:

468 

469```text theme={null}

470"github:acme/formatter" was not installed: it is not an http or https link. An npm plugin source must name a registry package (name or name@version) or link to a tarball file. For a plugin in a git repository, use a "github", "url" or "git-subdir" source.

471```

472 

473El propietario del marketplace tiene que cambiar la entrada:

474 

475* **Si eres tú**: cambia `package` a un valor que acepte la [referencia de la fuente de plugins npm](/docs/es/plugins/marketplace-reference#npm-plugin-source), o cambia la entrada a una fuente `github`, `url` o `git-subdir`

476* **Si no eres tú**: informa el mensaje al propietario del marketplace

462 477 

463<h3 id="marketplace-is-registered-from-an-untrusted-source">478<h3 id="marketplace-is-registered-from-an-untrusted-source">

464 `Marketplace "<name>" is registered from an untrusted source`479 `Marketplace "<name>" is registered from an untrusted source`

465</h3>480</h3>

466 481 

467Un mercado que agregó anteriormente dejó de cargarse, y también sus plugins. Esta línea aparece en la pestaña `/plugin` **Errors** o en la siguiente actualización.482Un marketplace que agregaste antes dejó de cargarse, y también sus plugins. Esta línea aparece en la pestaña **Errors** de `/plugin` o en la siguiente actualización.

468 483 

469El mercado está registrado bajo un nombre que está [reservado para mercados oficiales de Anthropic](/docs/es/plugins/marketplace-reference), pero su fuente registrada no es un repositorio de GitHub `anthropics`. Los nombres reservados se re-verifican cada vez que un mercado se carga o se actualiza, por lo que el mercado y los plugins instalados desde él dejan de cargarse.484El marketplace está registrado con un nombre [reservado para los marketplaces oficiales de Anthropic](/docs/es/plugins/marketplace-reference), pero su fuente registrada no es un repositorio de GitHub de `anthropics`. Los nombres reservados se vuelven a comprobar cada vez que un marketplace se carga o se actualiza, por lo que el marketplace y los plugins instalados desde él dejan de cargarse.

470 485 

471El mensaje completo nombra el nombre reservado y la solución:486El mensaje completo indica el nombre reservado y la solución:

472 487 

473```text theme={null}488```text theme={null}

474Marketplace "claude-community" is registered from an untrusted source: The name 'claude-community' is reserved for official Anthropic marketplaces. Only repositories from 'github.com/anthropics/' can use this name. To fix it, remove the marketplace and re-add it from the official source.489Marketplace "claude-community" is registered from an untrusted source: The name 'claude-community' is reserved for official Anthropic marketplaces. Only repositories from 'github.com/anthropics/' can use this name. To fix it, remove the marketplace and re-add it from the official source.

475```490```

476 491 

477La solución difiere para usuarios y editores:492La solución es distinta para usuarios y para quienes publican:

493 

494* **Usas el marketplace**: en tu shell, ejecuta `claude plugin marketplace remove <name>` y luego vuelve a agregar el marketplace desde el repositorio oficial de `github.com/anthropics`

495* **Publicas un marketplace de terceros que usaba el nombre antes de que se reservara**: cámbiale el nombre y pide a los usuarios que lo vuelvan a agregar desde tu fuente

496 

497Antes de v2.1.205, Claude Code comprobaba el nombre solo cuando agregabas el marketplace, así que una entrada registrada antes de que su nombre se reservara seguía cargándose.

498 

499<h3 id="marketplace-is-added-but-ignored">

500 `Marketplace "<name>" is added but ignored`

501</h3>

502 

503El marketplace tiene una entrada en `~/.claude/plugins/known_marketplaces.json`, pero la entrada no pasó una comprobación que Claude Code ejecuta cada vez que lee ese archivo, por lo que el marketplace y los plugins instalados desde él dejan de cargarse. En tu shell, `claude plugin list` informa cada plugin afectado con una línea que indica el motivo y la solución:

504 

505```text theme={null}

506Marketplace team-tools is added but ignored. Its location is on a network drive, has "." or ".." in its path, or couldn't be checked. Re-add the marketplace (one added from a folder or file must be re-added from a copy on this computer), or, to trust a folder on a network drive, declare it under extraKnownMarketplaces in user or managed settings.

507```

508 

509En una sesión, la pestaña **Errors** de `/plugin` pone el nombre del marketplace entre comillas, termina la línea después del motivo y muestra la solución en la línea de abajo.

510 

511La oración que sigue a `is added but ignored` indica la comprobación que la entrada no pasó:

512 

513* `Its location is on a network drive, has "." or ".." in its path, or couldn't be checked`, o la misma oración sobre `The folder or file it was added from`: el directorio del marketplace, o la ruta local desde la que se agregó, está en una ubicación de red, tiene un segmento `.` o `..` en su ruta, o no se pudo comprobar

514* `Its git URL can't be used: <reason>` o `Its URL can't be read as an https:// or http:// address`: la URL de origen registrada en la entrada es una desde la que Claude Code se niega a clonar u obtener

515* `Its source doesn't match its extraKnownMarketplaces entry in user or managed settings`: la entrada no coincide con la declaración de [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces) del mismo nombre

516 

517Cuando `(see the debug log)` sigue a `is added but ignored` en lugar de un motivo, Claude Code rechaza el nombre del marketplace, por ejemplo [otra grafía de un nombre reservado](/docs/es/errors#marketplace-name-is-another-spelling-of-a-reserved-name). El [registro de depuración](/docs/es/debug-your-config) indica la entrada.

518 

519**Qué hacer:**

478 520 

479* **Usted usa el mercado**: en su shell, ejecute `claude plugin marketplace remove <name>`, luego agregue el mercado nuevamente desde el repositorio oficial `github.com/anthropics`521* Sigue la solución del mensaje. En tu shell, ejecuta `claude plugin marketplace remove <name>`, luego vuelve a agregar el marketplace desde una fuente compatible o una ruta local y reinstala sus plugins, que el comando de eliminación desinstala. El comando de eliminación funciona con una entrada ignorada

480* **Usted publica un mercado de terceros que usó el nombre antes de que se reservara**: cámbielo de nombre y pida a los usuarios que lo vuelvan a agregar desde su fuente522* Para mantener un marketplace en una ubicación de red, decláralo en [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces) en tu configuración de usuario o en la configuración administrada; una declaración en el `.claude/settings.json` o `.claude/settings.local.json` de un repositorio no cuenta

523* Para una fuente que difiere de su declaración en la configuración, vuelve a agregar el marketplace desde la fuente declarada o cambia la declaración. `claude plugin marketplace add` rechaza la misma discrepancia; consulta [la entrada correspondiente de `Cannot add marketplace`](#cannot-add-marketplace-its-network-source-differs)

524* Para un nombre rechazado, elimina el marketplace usando el comando que aparece después de `Remove it:` cuando la línea lo incluye; volver a agregarlo con el mismo nombre se rechaza de nuevo

481 525 

482Antes de v2.1.205, Claude Code verificaba el nombre solo cuando agregaba el mercado, por lo que una entrada registrada antes de que su nombre se reservara seguía cargándose.526Antes de v2.1.286, fuera cual fuera el motivo, `claude plugin list` informaba un marketplace así como `Marketplace <name> not found`, y la pestaña **Errors** de `/plugin` lo informaba como `Marketplace "<name>" is registered but was refused (see the debug log)`. El motivo solo aparecía en el registro de depuración. En v2.1.286, las oraciones del motivo y de la solución usaban otra redacción, como `Its recorded location is network-shaped or unclassifiable (never probed)`.

483 527 

484<h3 id="plugin-has-a-corrupt-manifest-file-or-has-an-invalid-manifest-file">528<h3 id="plugin-has-a-corrupt-manifest-file-or-has-an-invalid-manifest-file">

485 `Plugin <name> has a corrupt manifest file` or `has an invalid manifest file`529 `Plugin <name> has a corrupt manifest file` o `has an invalid manifest file`

486</h3>530</h3>

487 531 

488Claude Code obtuvo el plugin, luego falló al leer su `.claude-plugin/plugin.json`. En el shell, el `<name>` en esta línea puede ser un nombre de directorio temporal; el prefijo `Failed to install plugin "<name>@<marketplace>"` lleva el nombre real del plugin. La redacción dice qué verificación falló:532Claude Code obtuvo el plugin y luego no pudo leer su `.claude-plugin/plugin.json`. En el shell, el `<name>` de esta línea puede ser un nombre de directorio temporal; el prefijo `Failed to install plugin "<name>@<marketplace>"` lleva el nombre real del plugin. La redacción indica qué comprobación falló:

489 533 

490* **`corrupt manifest file`, seguido de `JSON parse error:`**: el archivo no es JSON válido534* **`corrupt manifest file`, seguido de `JSON parse error:`**: el archivo no es JSON válido

491* **`invalid manifest file`, seguido de `Validation errors:`**: el archivo se analiza pero falla el esquema, como `name: Invalid input` para un campo requerido faltante535* **`invalid manifest file`, seguido de `Validation errors:`**: el archivo se analiza pero no cumple el esquema, por ejemplo `name: Invalid input` cuando falta un campo obligatorio

492 536 

493`claude plugin install` informa cualquiera como `Failed to install plugin "<name>@<marketplace>":` y sale con código 1.537`claude plugin install` informa cualquiera de los dos como `Failed to install plugin "<name>@<marketplace>":` y sale con código 1.

494 538 

495El autor del plugin tiene que corregir el archivo, y el plugin no se puede instalar hasta entonces:539El autor del plugin tiene que corregir el archivo, y el plugin no se puede instalar hasta entonces:

496 540 

497* **Si eso es usted**: ejecute `claude plugin validate <plugin-directory>` en su shell para ver el mismo error con la ruta ofensiva, luego corrija el archivo541* **Si eres tú**: ejecuta `claude plugin validate <plugin-directory>` en tu shell para ver el mismo error con la ruta problemática y luego corrige el archivo

498* **Si no es usted**: informe el mensaje al propietario del mercado542* **Si no eres tú**: informa el mensaje al propietario del marketplace

499 543 

500<h3 id="plugin-directory-not-found-at-path">544<h3 id="plugin-directory-not-found-at-path">

501 `Plugin directory not found at path: <path>`545 `Plugin directory not found at path: <path>`

502</h3>546</h3>

503 547 

504La pestaña **Errors** en `/plugin` muestra esto para un plugin habilitado que su mercado enumera por una ruta relativa, como `./plugins/my-plugin`, cuando no existe ningún directorio en esa ruta dentro del mercado. Si mantiene el mercado, corrija la ruta `source` de la entrada o restaure la carpeta. De lo contrario, informe el mensaje al propietario del mercado.548La pestaña **Errors** de `/plugin` muestra esto para un plugin habilitado que su marketplace incluye mediante una ruta relativa, como `./plugins/my-plugin`, cuando no existe ningún directorio en esa ruta dentro del marketplace. Si mantienes el marketplace, corrige la ruta `source` de la entrada o restaura la carpeta. De lo contrario, informa el mensaje al propietario del marketplace.

505 549 

506`Marketplace directory not found at path: <path>` significa que el directorio del mercado en sí falta. Para un mercado que agregó desde una ruta local, ese directorio se movió o se eliminó. Restáurelo, o elimine el mercado y agréguelo nuevamente desde su nueva ubicación.550`Marketplace directory not found at path: <path>` significa, en cambio, que falta el directorio del propio marketplace. En un marketplace que agregaste desde una ruta local, ese directorio se movió o se eliminó. Restáuralo, o elimina el marketplace y vuelve a agregarlo desde su nueva ubicación.

507 551 

508<h3 id="no-plugins-available-or-no-marketplaces-configured">552<h3 id="no-plugins-available-or-no-marketplaces-configured">

509 `No plugins available` or `No marketplaces configured`553 `No plugins available` o `No marketplaces configured`

510</h3>554</h3>

511 555 

512Abrió `/plugin` y la pestaña **Discover** está vacía, o `claude plugin marketplace list` imprimió `No marketplaces configured`.556Abriste `/plugin` y la pestaña **Discover** está vacía, o `claude plugin marketplace list` imprimió `No marketplaces configured`.

513 557 

514Ningún mercado está registrado, por lo que no hay catálogo para mostrar. En una sesión, agregue el mercado oficial, `anthropics/claude-plugins-official`:558No hay ningún marketplace registrado, así que no hay catálogo que mostrar. En una sesión, agrega el marketplace oficial, `anthropics/claude-plugins-official`:

515 559 

516```text theme={null}560```text theme={null}

517/plugin marketplace add anthropics/claude-plugins-official561/plugin marketplace add anthropics/claude-plugins-official

518```562```

519 563 

520Claude Code imprime `Successfully added marketplace: claude-plugins-official`, y **Discover** enumera sus plugins. La página [Anthropic marketplaces](/docs/es/plugins/anthropic-marketplaces) enumera los otros mercados que puede agregar.564Claude Code imprime `Successfully added marketplace: claude-plugins-official`, y **Discover** muestra sus plugins. La página de [marketplaces de Anthropic](/docs/es/plugins/anthropic-marketplaces) enumera los otros marketplaces que puedes agregar.

521 565 

522<h3 id="marketplace-is-already-added-from-a-different-source">566<h3 id="marketplace-is-already-added-from-a-different-source">

523 `Marketplace "<name>" is already added from a different source`567 `Marketplace "<name>" is already added from a different source`

524</h3>568</h3>

525 569 

526Confirmó agregar un mercado a través de [`/plugin install <plugin> --marketplace <source>`](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command), y el catálogo que Claude Code obtuvo de esa fuente tiene el mismo nombre que un mercado que ya agregó desde una fuente diferente. Claude Code mantiene el mercado existente en lugar de reemplazarlo, y el plugin no se instala.570Confirmaste agregar un marketplace mediante [`/plugin install <plugin> --marketplace <source>`](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command), y el catálogo que Claude Code obtuvo de esa fuente tiene el mismo nombre que un marketplace que ya agregaste desde una fuente diferente. Claude Code conserva el marketplace existente en lugar de reemplazarlo, y el plugin no se instala.

527 571 

528El mensaje completo se ve así:572El mensaje completo se ve así:

529 573 


531Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.575Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.

532```576```

533 577 

534Elija qué fuente desea:578Elige qué fuente quieres:

535 579 

536* **El mercado que ya agregó**: instale desde él por nombre con `/plugin install <plugin>@<name>`580* **El marketplace que ya agregaste**: instala desde él por nombre con `/plugin install <plugin>@<name>`

537* **La nueva fuente**: ejecute `/plugin marketplace remove <name>`, luego reintente la instalación581* **La nueva fuente**: ejecuta `/plugin marketplace remove <name>` y luego reintenta la instalación

538 582 

539<h3 id="cannot-add-marketplace-its-network-source-differs">583<h3 id="cannot-add-marketplace-its-network-source-differs">

540 `Cannot add marketplace "<name>": its network source differs from the one declared for it in settings`584 `Cannot add marketplace "<name>": its network source differs from the one declared for it in settings`

541</h3>585</h3>

542 586 

543Ejecutó `marketplace add`, y el catálogo en esa fuente tiene el mismo nombre que un mercado que un archivo de configuración ya declara bajo [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces) con una fuente diferente. Claude Code rechaza la adición y no registra nada.587Ejecutaste `marketplace add`, y el catálogo de esa fuente tiene el mismo nombre que un marketplace que un archivo de configuración ya declara en [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces) con una fuente diferente. Claude Code rechaza la adición y no registra nada.

544 588 

545El mensaje termina con la solución: la fuente debe coincidir con la que se declara para este nombre en la configuración, o cambia la declaración. Compare la fuente que pasó contra la entrada `extraKnownMarketplaces` para ese nombre, incluida su `ref`, `path`, y `headers`, luego haga uno de estos:589El mensaje termina con la solución: la fuente debe coincidir con la declarada para este nombre en la configuración, o debes cambiar la declaración. Compara la fuente que pasaste con la entrada de `extraKnownMarketplaces` para ese nombre, incluidos sus `ref`, `path` y `headers`, y luego haz una de estas cosas:

546 590 

547* **Use la fuente declarada**: agregue el mercado desde la fuente que la entrada de configuración nombra591* **Usar la fuente declarada**: agrega el marketplace desde la fuente que indica la entrada de la configuración

548* **Use la nueva fuente**: edite o elimine la entrada `extraKnownMarketplaces`, luego agregue el mercado nuevamente. Si la configuración administrada la declara, pida a su administrador592* **Usar la nueva fuente**: edita o elimina la entrada de `extraKnownMarketplaces` y luego vuelve a agregar el marketplace. Si la declara la configuración administrada, pídeselo a tu administrador

549 593 

550<h3 id="failed-to-install-from-the-plugin-menu">594<h3 id="failed-to-install-from-the-plugin-menu">

551 `Failed to install: <plugin> (<reason>)`595 `Failed to install: <plugin> (<reason>)`

552</h3>596</h3>

553 597 

554Seleccionó plugins para instalar en el menú `/plugin`, ninguno de ellos se instaló, y el menú se cerró con este resumen de lo que falló.598Seleccionaste plugins para instalar en el menú de `/plugin`, ninguno se instaló y el menú se cerró con este resumen de lo que falló.

555 599 

556Algunas razones, como la salida de git después de un clonado fallido, muestran solo su primera línea. Cuando tal razón fue acortada, el resumen termina con `Installing a plugin from its details (Enter) in /plugin shows its full error.`600Algunos motivos, como la salida de git tras una clonación fallida, muestran solo su primera línea. Cuando un motivo así se acortó, el resumen termina con `Installing a plugin from its details (Enter) in /plugin shows its full error.`

557 601 

558Qué hacer depende de si el resumen acortó la razón:602Qué hacer depende de si el resumen acortó el motivo:

559 603 

560* Corrija lo que la razón entre paréntesis nombra604* Corrige lo que indica el motivo entre paréntesis

561* Cuando la razón fue acortada, ejecute `/plugin`, seleccione el plugin en la pestaña **Discover**, y presione **Enter** para instalarlo desde sus detalles. Si la instalación falla allí, la vista de detalles muestra el error completo605* Cuando el motivo se acortó, ejecuta `/plugin`, selecciona el plugin en la pestaña **Discover** y presiona **Enter** para instalarlo desde sus detalles. Si la instalación falla ahí, la vista de detalles muestra el error completo

562 606 

563<h3 id="could-not-move-the-new-copy-of-this-plugin-version">607<h3 id="could-not-move-the-new-copy-of-this-plugin-version">

564 `Could not move the new copy of this plugin version into <path>`608 `Could not move the new copy of this plugin version into <path>`

565</h3>609</h3>

566 610 

567Cuando instala un plugin, Claude Code descarga una copia fresca de sus archivos y la mueve a la carpeta de esa versión en la [plugin cache](/docs/es/plugins/loading#find-plugins-on-disk). Este mensaje significa que el movimiento falló, generalmente porque otro programa estaba usando la carpeta mientras se ejecutaba la instalación. El código del sistema de archivos aparece entre paréntesis:611Cuando instalas un plugin, Claude Code descarga una copia nueva de sus archivos y la mueve a la carpeta de esa versión en la [caché de plugins](/docs/es/plugins/loading#find-plugins-on-disk). Este mensaje significa que el movimiento falló, normalmente porque otro programa estaba usando la carpeta mientras se ejecutaba la instalación. El código del sistema de archivos aparece entre paréntesis:

568 612 

569```text theme={null}613```text theme={null}

570Could not move the new copy of this plugin version into /home/user/.claude/plugins/cache/acme-tools/formatter/1.2.0: the new copy or the version folder stayed busy while the install ran (ENOTEMPTY) — usually a scanner still reading the freshly downloaded files, another program using that folder, or another process re-creating it. The previously installed copy was moved back. Run the install again once other Claude Code sessions or programs using that folder have finished.614Could not move the new copy of this plugin version into /home/user/.claude/plugins/cache/acme-tools/formatter/1.2.0: the new copy or the version folder stayed busy while the install ran (ENOTEMPTY) — usually a scanner still reading the freshly downloaded files, another program using that folder, or another process re-creating it. The previously installed copy was moved back. Run the install again once other Claude Code sessions or programs using that folder have finished.

571```615```

572 616 

573El mensaje dice qué sucedió con la copia que estaba instalada antes, lo que le dice si el plugin aún funciona:617El mensaje indica qué pasó con la copia que estaba instalada antes, lo que te dice si el plugin sigue funcionando:

574 618 

575* `The previously installed copy was moved back`: la versión que tenía aún está instalada619* `The previously installed copy was moved back`: la versión que tenías sigue instalada

576* `had to be removed first`, `was not moved back`, o `could not be moved back`: esa versión del plugin no está instalada hasta que una instalación tenga éxito620* `had to be removed first`, `was not moved back` o `could not be moved back`: esa versión del plugin no está instalada hasta que una instalación tenga éxito

577* Sin tal oración: no había una copia anterior, por lo que la versión aún no está instalada621* Ninguna oración de ese tipo: no había una copia anterior, así que la versión todavía no está instalada

578 622 

579En Windows, cuando otro programa mantiene la copia instalada en sí, el mensaje en su lugar dice que esa copia `could not be replaced` y que `It was not replaced and the new copy was discarded`, por lo que la versión que tenía aún está instalada.623En Windows, cuando otro programa retiene la propia copia instalada, el mensaje dice en cambio que esa copia `could not be replaced` y que `It was not replaced and the new copy was discarded`, así que la versión que tenías sigue instalada.

580 624 

581Una lista `Left on disk` nombra carpetas apartadas dentro de la caché. Una instalación posterior de esa versión o una limpieza de caché de plugins las elimina, por lo que no necesita eliminarlas.625Una lista `Left on disk` indica carpetas apartadas dentro de la caché. Una instalación posterior de esa versión o una limpieza de la caché de plugins las elimina, así que no necesitas borrarlas.

582 626 

583Para corregir la instalación:627Para corregir la instalación:

584 628 

585* Cierre otras sesiones de Claude Code, editores y terminales que estén usando la carpeta del plugin bajo `~/.claude/plugins/cache`, luego ejecute la instalación nuevamente629* Cierra otras sesiones de Claude Code, editores y terminales que estén usando la carpeta del plugin en `~/.claude/plugins/cache` y luego vuelve a ejecutar la instalación

586* Cuando el mensaje dice verificar los permisos de la carpeta de caché de plugins, restaure su permiso de escritura en la carpeta que nombra y libere espacio en disco, luego ejecute la instalación nuevamente630* Cuando el mensaje indique revisar los permisos de la carpeta de la caché de plugins, restaura tu permiso de escritura en la carpeta que indica y libera espacio en disco, y luego vuelve a ejecutar la instalación

587 631 

588<h3 id="dependency-errors">632<h3 id="dependency-errors">

589 Dependency errors633 Errores de dependencias

590</h3>634</h3>

591 635 

592Un plugin que declara dependencias puede fallar al instalar, o instalar y permanecer deshabilitado, cuando una dependencia no se puede satisfacer. El mensaje lo alcanza en el momento de la instalación o en el momento de la carga:636Un plugin que declara dependencias puede no instalarse, o instalarse y quedar deshabilitado, cuando una dependencia no se puede satisfacer. El mensaje te llega en el momento de la instalación o en el momento de la carga:

593 637 

594* **Durante la instalación**: el rechazo regresa como el mensaje de error de la instalación638* **Durante la instalación**: el rechazo se devuelve como el mensaje de error de la instalación

595* **Cuando el plugin se carga**: el problema aparece en `claude plugin list` y la pestaña `/plugin` **Errors**, y Claude Code mantiene el plugin afectado deshabilitado hasta que lo resuelva639* **Cuando el plugin se carga**: el problema aparece en `claude plugin list` y en la pestaña **Errors** de `/plugin`, y Claude Code mantiene deshabilitado el plugin afectado hasta que lo resuelvas

596 640 

597La tabla enumera cada mensaje y su solución. Para declarar dependencias como autor, vea [Plugin dependencies](/docs/es/plugins/dependencies).641La tabla enumera cada mensaje y su solución. Para declarar dependencias como autor, consulta [Dependencias de plugins](/docs/es/plugins/dependencies).

598 642 

599| Mensaje | Significado | Cómo resolver |643| Mensaje | Significado | Cómo resolverlo |

600| :- | :- | :- |644| :- | :- | :- |

601| `Dependency "<dep>" is not installed` | Una dependencia declarada no está instalada. | Instálela en su shell con `claude plugin install <dep>@<marketplace>`, o desinstale el plugin. Si el mercado de la dependencia aún no está registrado, agréguelo y ejecute `/reload-plugins` en su sesión, que instala las dependencias faltantes que puede resolver. |645| `Dependency "<dep>" is not installed` | Una dependencia declarada no está instalada. | Instálala en tu shell con `claude plugin install <dep>@<marketplace>`, o desinstala el plugin. Si el marketplace de la dependencia aún no está registrado, agrégalo y ejecuta `/reload-plugins` en tu sesión, lo que instala las dependencias faltantes que puede resolver. |

602| `Dependency "<dep>" is disabled` | La dependencia está instalada pero desactivada. | Habilite la dependencia, o desinstale el plugin que la necesita. |646| `Dependency "<dep>" is disabled` | La dependencia está instalada pero desactivada. | Habilita la dependencia, o desinstala el plugin que la necesita. |

603| `Requires "<dep>" <range>, installed <version>` | La versión de la dependencia instalada está fuera del rango declarado del plugin. | Actualice la dependencia a una versión en el rango, o desinstale el plugin. |647| `Requires "<dep>" <range>, installed <version>` | La versión de la dependencia instalada está fuera del rango declarado por el plugin. | Actualiza la dependencia a una versión dentro del rango, o desinstala el plugin. |

604| `<Plugin or Dependency> "<name>" has conflicting version requirements` | Ninguna versión satisface cada rango que la fija. El mensaje enumera los rangos. | Desinstale o actualice uno de los plugins en conflicto, o pida al autor ascendente que amplíe su restricción. |648| `<Plugin or Dependency> "<name>" has conflicting version requirements` | Ninguna versión satisface todos los rangos que la fijan. El mensaje enumera los rangos. | Desinstala o actualiza uno de los plugins en conflicto, o pide al autor original que amplíe su restricción. |

605| `... has version requirements too complex to intersect` o `has an invalid version requirement` | Un rango no es semver válido, o los rangos combinados no se pueden intersectar. | Corrija el rango inválido o simplifique las cadenas `\|\|` largas. |649| `... has version requirements too complex to intersect` o `has an invalid version requirement` | Un rango no es semver válido, o los rangos combinados no se pueden intersecar. | Corrige el rango no válido o simplifica las cadenas `\|\|` largas. |

606| `... has no git tag satisfying <range>` | El repositorio de la dependencia no tiene una etiqueta `<name>--v*` en el rango. | Verifique que las etiquetas ascendentes se lancen con esa convención, o relaje el rango. |650| `... has no git tag satisfying <range>` | El repositorio de la dependencia no tiene ninguna etiqueta `<name>--v*` dentro del rango. | Comprueba que el proyecto original etiquete sus versiones con esa convención, o flexibiliza el rango. |

607| `Dependency "<dep>" (required by <plugin>) is in <marketplace>, which is not in the allowlist` | La dependencia está en un mercado diferente, y la resolución entre mercados está desactivada por defecto. | Instale la dependencia usted mismo en el mismo scope, en su shell con `claude plugin install <dep>@<marketplace>` más el `--scope` en el que está instalando el plugin, luego reintente. |651| `Dependency "<dep>" (required by <plugin>) is in <marketplace>, which is not in the allowlist` | La dependencia está en un marketplace diferente, y la resolución entre marketplaces está desactivada de forma predeterminada. | Instala tú mismo la dependencia en el mismo alcance, en tu shell con `claude plugin install <dep>@<marketplace>` más el `--scope` en el que estás instalando el plugin, y luego reintenta. |

608 652 

609Para ver estos programáticamente, ejecute `claude plugin list --json` en su shell. Los plugins con problemas llevan un campo `errors` con los mensajes y un campo `errorDetails` con un `type` para cada uno: las primeras dos filas son `dependency-unsatisfied` y la tercera es `dependency-version-unsatisfied`.653Para verlos de forma programática, ejecuta `claude plugin list --json` en tu shell. Los plugins con problemas incluyen un campo `errors` con los mensajes y un campo `errorDetails` con un `type` para cada uno: las dos primeras filas son `dependency-unsatisfied` y la tercera es `dependency-version-unsatisfied`.

610 654 

611<h2 id="plugin-installed-but-not-working">655<h2 id="plugin-installed-but-not-working">

612 Plugin installed but not working656 Plugin installed but not working


874Un servidor de lenguaje que no está configurado para el espacio de trabajo puede reportar importaciones no resueltas para paquetes internos. No hay nada que corregir en el lado de Claude Code, y los diagnósticos no impiden que Claude edite código.918Un servidor de lenguaje que no está configurado para el espacio de trabajo puede reportar importaciones no resueltas para paquetes internos. No hay nada que corregir en el lado de Claude Code, y los diagnósticos no impiden que Claude edite código.

875 919 

876<h2 id="build-a-plugin">920<h2 id="build-a-plugin">

877 Build a plugin921 Crear un plugin

878</h2>922</h2>

879 923 

880Está desarrollando un plugin y cargándolo con `--plugin-dir` o instalándolo desde un mercado local. Estas entradas cubren los fallos que encuentra mientras desarrolla un plugin. Para que las verificaciones se ejecuten después de cada cambio, vea [Test and debug](/docs/es/plugins/create#test-and-debug).924Estás desarrollando un plugin y cargándolo con `--plugin-dir` o instalándolo desde un marketplace local. Estas entradas cubren los fallos que encuentras mientras desarrollas un plugin. Para las verificaciones que debes ejecutar después de cada cambio, consulta [Probar y depurar](/docs/es/plugins/create#test-and-debug).

881 925 

882Dos fallos que también alcanzan a los usuarios de un plugin tienen sus entradas bajo [Plugin installed but not working](#plugin-installed-but-not-working):926Dos fallos que también afectan a los usuarios de un plugin tienen sus entradas en [El plugin está instalado pero no funciona](#plugin-installed-but-not-working):

883 927 

884* **Un hook que no se dispara**: vea [hooks that don't fire](#failed-to-load-hooks-from-and-hooks-that-dont-fire)928* **Un hook que no se dispara**: consulta [hooks que no se disparan](#failed-to-load-hooks-from-and-hooks-that-dont-fire)

885* **Un servidor MCP que no se inicia**: vea [MCP servers that don't start](#invalid-mcp-server-config-for-and-mcp-servers-that-dont-start)929* **Un servidor MCP que no se inicia**: consulta [servidores MCP que no se inician](#invalid-mcp-server-config-for-and-mcp-servers-that-dont-start)

886 930 

887<h3 id="commands-path-not-found">931<h3 id="commands-path-not-found">

888 `commands path not found: <path>`932 `commands path not found: <path>`

889</h3>933</h3>

890 934 

891La pestaña **Errors** muestra `commands path not found: <absolute path>` con la orientación `Check that the path in your manifest or marketplace config is correct`. El mismo mensaje aparece para `skills`, `agents`, y `hooks`.935La pestaña **Errors** muestra `commands path not found: <absolute path>` con la indicación `Check that the path in your manifest or marketplace config is correct`. El mismo mensaje aparece para `skills`, `agents` y `hooks`.

892 936 

893Claude Code resolvió una ruta desde su `plugin.json` o entrada de mercado contra la raíz del plugin y no encontró nada allí. La ruta en el mensaje es la ruta absoluta que verificó, así que compárela con lo que está en el disco. Corrija la ruta o cree el directorio, luego ejecute `/reload-plugins`.937Claude Code resolvió una ruta de tu `plugin.json` o de tu entrada del marketplace respecto a la raíz del plugin y no encontró nada allí. La ruta del mensaje es la ruta absoluta que verificó, así que compárala con lo que hay en el disco. Corrige la ruta o crea el directorio y luego ejecuta `/reload-plugins`.

894 938 

895Las rutas en el manifiesto son relativas a la raíz del plugin y comienzan con `./`. Una ruta que se resuelve fuera de la raíz del plugin se informa como `<component> path escapes plugin directory` en su lugar y se descarta.939Las rutas del manifiesto son relativas a la raíz del plugin y comienzan con `./`. Una ruta que se resuelve fuera de la raíz del plugin se informa como `<component> path escapes plugin directory` y se descarta.

896 940 

897<h3 id="plugin-dir-loads-a-plugin-with-no-components">941<h3 id="plugin-dir-loads-a-plugin-with-no-components">

898 `--plugin-dir` at a marketplace root doesn't load the plugins under `plugins/`942 `--plugin-dir` en la raíz de un marketplace no carga los plugins de `plugins/`

899</h3>943</h3>

900 944 

901Inició `claude --plugin-dir <path>` y no ve error, pero las skills, agents, y hooks del plugin no están allí.945Iniciaste `claude --plugin-dir <path>` y no ves ningún error, pero los skills, agentes y hooks del plugin no aparecen.

902 946 

903`--plugin-dir` toma el directorio raíz del plugin, el que contiene `.claude-plugin/plugin.json` y los directorios de componentes como `skills/`. Si lo apunta a una raíz de mercado en su lugar, Claude Code no lee `marketplace.json`, por lo que un plugin bajo `plugins/` no se carga, y no ve error. Antes de v2.1.281, Claude Code cargaba una raíz de mercado como un plugin vacío nombrado después de ese directorio. Apunte el indicador al directorio del plugin en sí:947`--plugin-dir` recibe el directorio raíz del plugin, el que contiene `.claude-plugin/plugin.json` y los directorios de componentes como `skills/`. Si en su lugar lo apuntas a la raíz de un marketplace, Claude Code no lee `marketplace.json`, por lo que un plugin dentro de `plugins/` no se carga y no ves ningún error. Antes de la v2.1.281, Claude Code cargaba la raíz de un marketplace como un único plugin vacío con el nombre de ese directorio. Apunta el flag al directorio del plugin en sí:

904 948 

905```shell theme={null}949```shell theme={null}

906claude --plugin-dir ./my-marketplace/plugins/my-plugin950claude --plugin-dir ./my-marketplace/plugins/my-plugin

907```951```

908 952 

909Luego abra **Installed** en `/plugin`, donde el panel de detalles del plugin enumera sus componentes.953Luego abre **Installed** en `/plugin`, donde el panel de detalles del plugin enumera sus componentes.

910 954 

911<h3 id="files-the-plugin-references-outside-its-directory-arent-found">955<h3 id="files-the-plugin-references-outside-its-directory-arent-found">

912 Files the plugin references outside its directory aren't found956 No se encuentran los archivos que el plugin referencia fuera de su directorio

913</h3>957</h3>

914 958 

915Un plugin funciona desde su directorio de fuente con `--plugin-dir` pero falla después de instalar, con errores sobre una ruta como `../shared-utils`.959Un plugin funciona desde su directorio de origen con `--plugin-dir` pero falla después de instalarlo, con errores sobre una ruta como `../shared-utils`.

916 960 

917Claude Code copia un plugin instalado en su caché y lo carga desde allí, por lo que una ruta que alcanza fuera del directorio propio del plugin no apunta a nada en la caché. Mueva los archivos compartidos dentro del directorio del plugin, o haga referencia a ellos a través de un enlace simbólico dentro de él. Para dónde está la caché y cómo se resuelven las rutas, vea [Find plugins on disk](/docs/es/plugins/loading#find-plugins-on-disk).961Claude Code copia un plugin instalado en su caché y lo carga desde allí, por lo que una ruta que sale del directorio propio del plugin no apunta a nada en la caché. Mueve los archivos compartidos dentro del directorio del plugin o haz referencia a ellos mediante un enlace simbólico dentro de él. Para saber dónde está la caché y cómo se resuelven las rutas, consulta [Encontrar plugins en el disco](/docs/es/plugins/loading#find-plugins-on-disk).

918 962 

919<h3 id="claude-plugin-root-shows-forward-slashes-on-windows">963<h3 id="claude-plugin-root-shows-forward-slashes-on-windows">

920 `${CLAUDE_PLUGIN_ROOT}` shows forward slashes on Windows964 `${CLAUDE_PLUGIN_ROOT}` muestra barras diagonales en Windows

921</h3>965</h3>

922 966 

923En Windows, un hook de plugin recibe `${CLAUDE_PLUGIN_ROOT}` como `C:/Users/you/...` en lugar de `C:\Users\you\...`, y un script que esperaba barras invertidas se rompe.967En Windows, un hook de plugin recibe `${CLAUDE_PLUGIN_ROOT}` como `C:/Users/you/...` en lugar de `C:\Users\you\...`, y un script que esperaba barras invertidas falla.

924 968 

925Claude Code ejecuta hooks de forma de shell a través de Git Bash en Windows y sustituye la raíz del plugin en la forma Win32 de barra inclinada hacia adelante a propósito. Los builtins de Bash, las herramientas MSYS, y los binarios nativos de Windows todos aceptan esa forma.969Claude Code ejecuta los hooks en forma de shell a través de Git Bash en Windows y sustituye a propósito la raíz del plugin en la forma Win32 con barras diagonales. Los builtins de Bash, las herramientas de MSYS y los binarios nativos de Windows aceptan esa forma.

926 970 

927Si su script necesita barras invertidas, cambie el hook a una de las formas que mantienen rutas nativas, descritas bajo [exec form and shell form](/docs/es/hooks#exec-form-and-shell-form):971Si tu script necesita barras invertidas, cambia el hook a una de las formas que conservan las rutas nativas, descritas en [forma exec y forma de shell](/docs/es/hooks#exec-form-and-shell-form):

928 972 

929* Un hook de forma exec, que genera el proceso directamente con una matriz `args`973* Un hook en forma exec, que inicia el proceso directamente con un arreglo `args`

930* Un hook con `"shell": "powershell"`974* Un hook con `"shell": "powershell"`

931 975 

932<h3 id="plugin-loads-but-its-skills-are-missing">976<h3 id="plugin-loads-but-its-skills-are-missing">

933 Plugin loads but its skills are missing977 El plugin se carga pero faltan sus skills

934</h3>978</h3>

935 979 

936Su plugin está listado bajo **Installed** sin errores, pero sus skills no se ofrecen cuando escribe `/`.980Tu plugin aparece en **Installed** sin errores, pero sus skills no se ofrecen cuando escribes `/`.

937 981 

938Las skills se cargan desde `skills/` en la raíz del plugin y los comandos desde `commands/` en la raíz del plugin. Solo `plugin.json` pertenece dentro de `.claude-plugin/`, y un directorio `skills/` dentro de `.claude-plugin/` no se escanea. Mueva los directorios a la raíz del plugin y ejecute `/reload-plugins`. Después, el panel de detalles del plugin en `/plugin` enumera las skills, y escribir `/` las ofrece.982Los skills se cargan desde `skills/` en la raíz del plugin y los comandos desde `commands/` en la raíz del plugin. Solo `plugin.json` va dentro de `.claude-plugin/`, y un directorio `skills/` dentro de `.claude-plugin/` no se escanea. Mueve los directorios a la raíz del plugin y ejecuta `/reload-plugins`. Después, el panel de detalles del plugin en `/plugin` enumera los skills, y al escribir `/` se ofrecen.

939 983 

940Cada skill es un directorio que contiene `SKILL.md`. Una entrada `skills` en el manifiesto que apunta a un archivo `SKILL.md` en lugar de su directorio se informa como `path is a file; skills entries must be directories containing SKILL.md`.984Cada skill es un directorio que contiene `SKILL.md`. Una entrada `skills` en el manifiesto que apunta a un archivo `SKILL.md` en lugar de a su directorio se informa como `path is a file; skills entries must be directories containing SKILL.md`.

941 985 

942<h3 id="skill-loads-but-claude-never-invokes-the-skill">986<h3 id="skill-loads-but-claude-never-invokes-the-skill">

943 Skill loads but Claude never invokes the skill987 El skill se carga pero Claude nunca lo invoca

944</h3>988</h3>

945 989 

946La skill de su plugin se ejecuta cuando escribe su comando `/<plugin>:<skill>`, pero Claude nunca la invoca en respuesta a una solicitud simple.990El skill de tu plugin se ejecuta cuando escribes su comando `/<plugin>:<skill>`, pero Claude nunca lo invoca en respuesta a una solicitud normal.

947 991 

948Verifique estas causas en orden:992Revisa estas causas en orden:

949 993 

950* **La skill establece `disable-model-invocation: true`**: con ese campo establecido, solo usted puede invocar la skill. La skill de plantilla en [Create your first plugin](/docs/es/plugins/create#create-your-first-plugin) lo establece. Elimine la línea de una skill que desea que Claude invoque por su cuenta. [Control who invokes a skill](/docs/es/skills#control-who-invokes-a-skill) cubre el campo994* **El skill establece `disable-model-invocation: true`**: con ese campo establecido, solo tú puedes invocar el skill. El skill de plantilla de [Crear tu primer plugin](/docs/es/plugins/create#create-your-first-plugin) lo establece. Elimina la línea de un skill que quieras que Claude invoque por su cuenta. [Controlar quién invoca un skill](/docs/es/skills#control-who-invokes-a-skill) explica el campo

951* **La descripción no coincide con cómo la gente pregunta**: trabaje a través de las verificaciones en [Skill not triggering](/docs/es/skills#skill-not-triggering)995* **La descripción no coincide con la forma en que la gente pregunta**: sigue las verificaciones de [El skill no se activa](/docs/es/skills#skill-not-triggering)

952* **La descripción está truncada**: cuando se instalan muchas skills, Claude Code acorta las descripciones para ajustarse al presupuesto de caracteres del listado, que puede eliminar las palabras clave que Claude necesita para coincidir con una solicitud. Vea [Skill descriptions are cut short](/docs/es/skills#skill-descriptions-are-cut-short)996* **La descripción está truncada**: cuando hay muchos skills instalados, Claude Code acorta las descripciones para ajustarlas al presupuesto de caracteres del listado, lo que puede eliminar las palabras clave que Claude necesita para relacionarlo con una solicitud. Consulta [Las descripciones de los skills se recortan](/docs/es/skills#skill-descriptions-are-cut-short)

953 997 

954Para medir con qué frecuencia la skill se dispara en prompts realistas en lugar de verificar uno a la vez, escriba un caso de eval con un [grader `tool_used: Skill`](/docs/es/plugin-evals#create-your-first-eval-suite) y ejecútelo con `claude plugin eval` después de cada cambio de descripción.998Para medir con qué frecuencia se activa el skill en prompts realistas en lugar de revisarlos uno por uno, escribe un caso de eval con un [grader `tool_used: Skill`](/docs/es/plugin-evals#create-your-first-eval-suite) y ejecútalo con `claude plugin eval` después de cada cambio en la descripción.

955 999 

956<h3 id="is-not-a-plugin-or-skill-folder">1000<h3 id="is-not-a-plugin-or-skill-folder">

957 `<directory> is not a plugin or skill folder` from `claude plugin eval init`1001 `<directory> is not a plugin or skill folder` al ejecutar `claude plugin eval init`

958</h3>1002</h3>

959 1003 

960Ejecutó `claude plugin eval init` desde un directorio que no es la raíz de un plugin, como su directorio de inicio o la raíz de un repositorio que mantiene el plugin en un subdirectorio. `init` escribe la suite bajo el directorio de trabajo, por lo que se detiene en lugar de crear un directorio `evals/` que el plugin nunca vería.1004Ejecutaste `claude plugin eval init` desde un directorio que no es la raíz de un plugin, como tu directorio home o la raíz de un repositorio que guarda el plugin en un subdirectorio. `init` escribe la suite dentro del directorio de trabajo, por lo que se detiene en lugar de crear un directorio `evals/` que el plugin nunca vería.

961 1005 

962Cambie a la raíz del plugin, el directorio que contiene `.claude-plugin/plugin.json` o el `SKILL.md` de la skill, y ejecute el comando nuevamente. Para armar la suite en otro lugar a propósito, pase `--eval-dir`. Vea [Test plugins with evals](/docs/es/plugin-evals).1006Cambia a la raíz del plugin, el directorio que contiene `.claude-plugin/plugin.json` o el `SKILL.md` del skill, y vuelve a ejecutar el comando. Para generar la suite en otro lugar a propósito, pasa `--eval-dir`. Consulta [Probar plugins con evals](/docs/es/plugin-evals).

963 1007 

964<h3 id="the-userconfig-dialog-never-appears">1008<h3 id="the-userconfig-dialog-never-appears">

965 The `userConfig` dialog never appears1009 El diálogo de `userConfig` nunca aparece

966</h3>1010</h3>

967 1011 

968Su plugin declara opciones `userConfig`, pero no aparece ningún diálogo de configuración cuando lo instala.1012Tu plugin declara opciones `userConfig`, pero no aparece ningún diálogo de configuración cuando lo instalas.

969 1013 

970La instalación interactiva muestra el diálogo, y el comando de shell toma los valores como indicadores en su lugar:1014Que la instalación pida los valores depende de dónde la ejecutes:

971 1015 

972* **`/plugin install` en una sesión, o la pestaña Discover en `/plugin`**: el diálogo es parte de esta instalación interactiva1016* **`/plugin install` en una sesión, o la pestaña Discover en `/plugin`**: el diálogo forma parte de esta instalación interactiva

973* **El diálogo Manage plugins de la extensión VS Code**: solicita opciones sin establecer como un formulario después de la instalación. Antes de v2.1.285, la instalación allí no mostraba ningún formulario de opciones, así que establezca los valores desde una sesión de terminal con `/plugin configure <plugin>@<marketplace>`1017* **El diálogo Manage plugins de la extensión de VS Code**: pide las opciones sin establecer en un formulario después de la instalación. Antes de la v2.1.285, la instalación desde allí no mostraba ningún formulario de opciones, así que establece los valores desde una sesión en la terminal con `/plugin configure <plugin>@<marketplace>`

974* **`claude plugin install` en su shell**: nunca solicita valores `userConfig`. Guarda cualquier valor `--config KEY=VALUE` que pase, y cuando las opciones permanecen sin establecer imprime `N userConfig options not yet set — run /plugin configure <plugin>@<marketplace> in Claude Code, or pass --config KEY=VALUE.` Cuando cualquiera de las opciones sin establecer es requerida, `(M required)` sigue `not yet set`.1018* **`claude plugin install` en tu shell**: nunca pide valores de `userConfig`. Guarda los valores `--config KEY=VALUE` que pases y, cuando quedan opciones sin establecer, imprime `N userConfig options not yet set — run /plugin configure <plugin>@<marketplace> in Claude Code, or pass --config KEY=VALUE.` Cuando alguna de las opciones sin establecer es obligatoria, `(M required)` aparece después de `not yet set`.

975 1019 

976Si instaló desde el shell, pase los valores con `--config`, un indicador por opción:1020Si instalaste desde el shell, pasa los valores con `--config`, un flag por opción:

977 1021 

978```shell theme={null}1022```shell theme={null}

979claude plugin install my-plugin@my-marketplace --config api_url=https://example.com1023claude plugin install my-plugin@my-marketplace --config api_url=https://example.com

980```1024```

981 1025 

982Cuando cada opción está establecida, la salida de instalación no lleva ninguna línea `not yet set`.1026Cuando todas las opciones están establecidas, la salida de la instalación no incluye ninguna línea `not yet set`.

983 1027 

984Para abrir el diálogo después en su lugar, ejecute `/plugin configure my-plugin@my-marketplace` en una sesión. Desde el shell, [`claude plugin configure`](/docs/es/plugins/cli-reference#plugin-configure) muestra qué opciones aún no están establecidas y guarda valores canalizados en stdin. Requiere Claude Code v2.1.285 o posterior.1028Para abrir el diálogo más tarde, ejecuta `/plugin configure my-plugin@my-marketplace` en una sesión. Desde el shell, [`claude plugin configure`](/docs/es/plugins/cli-reference#plugin-configure) muestra qué opciones siguen sin establecer y guarda los valores que le envíes por stdin. Requiere Claude Code v2.1.285 o posterior.

985 1029 

986Si pasa una clave `--config` que el manifiesto no declara, el plugin aún se instala, y el comando imprime `⚠ Installed, but --config not applied: --config key "<key>" isn't declared in this plugin's userConfig.` seguido de las claves que el plugin sí declara.1030Si pasas una clave `--config` que el manifiesto no declara, el plugin se instala de todos modos y el comando imprime `⚠ Installed, but --config not applied: --config key "<key>" isn't declared in this plugin's userConfig.` seguido de las claves que el plugin sí declara.

987 1031 

988Para un plugin que envía un [archivo de paquete MCPB](/docs/es/plugins/components#include-a-packaged-mcpb-server) declarando `user_config` propio, el mensaje dice `isn't declared in this plugin's userConfig or by its bundled MCP servers.` en su lugar, y las claves conocidas incluyen las de ese servidor, escritas `<server>.<key>`. Un paquete que el manifiesto referencia por URL no se lee en el tiempo de instalación, por lo que sus claves no se enumeran y el mensaje dice configurarlo en `/plugin`. Establecer claves `<server>.<key>` requiere Claude Code v2.1.285 o posterior.1032Para un plugin que incluye un [archivo de paquete MCPB](/docs/es/plugins/components#include-a-packaged-mcpb-server) que declara su propio `user_config`, el mensaje dice `isn't declared in this plugin's userConfig or by its bundled MCP servers.` en su lugar, y las claves conocidas incluyen las de ese servidor, escritas como `<server>.<key>`. Un paquete que el manifiesto referencia por URL no se lee durante la instalación, por lo que sus claves no se enumeran y el mensaje indica que lo configures en `/plugin`. Establecer claves `<server>.<key>` requiere Claude Code v2.1.285 o posterior.

989 1033 

990<h3 id="claude-plugin-validate-reports-errors">1034<h3 id="claude-plugin-validate-reports-errors">

991 `claude plugin validate` reports errors1035 `claude plugin validate` informa errores

992</h3>1036</h3>

993 1037 

994Ejecutó `claude plugin validate <path>`, o `/plugin validate <path>` en una sesión, e imprimió `Found N errors` y `Validation failed`, luego salió con código 1.1038Ejecutaste `claude plugin validate <path>`, o `/plugin validate <path>` en una sesión, e imprimió `Found N errors` y `Validation failed`, y luego terminó con el código 1.

995 1039 

996El validador lee el manifiesto en la ruta que proporciona: `.claude-plugin/plugin.json` para un directorio de plugin, o `.claude-plugin/marketplace.json` para un directorio de mercado. Para un mercado, prefija problemas en el manifiesto propio de una entrada con el índice de entrada, como `plugins[1] plugin.json → json: ...`.1040El validador lee el manifiesto en la ruta que le indicas: `.claude-plugin/plugin.json` para un directorio de plugin, o `.claude-plugin/marketplace.json` para un directorio de marketplace. Para un marketplace, antepone a los problemas del manifiesto propio de una entrada el índice de la entrada, como en `plugins[1] plugin.json → json: ...`.

997 1041 

998La tabla cubre los mensajes que detienen la validación y dos advertencias, `No frontmatter block found` y `Unknown field '<key>'`, que la detienen solo cuando pasa `--strict`. Otras advertencias, como una descripción faltante, no se enumeran.1042La tabla cubre los mensajes que detienen la validación y dos advertencias, `No frontmatter block found` y `Unknown field '<key>'`, que la detienen solo cuando pasas `--strict`. Otras advertencias, como la falta de una descripción, no se incluyen.

999 1043 

1000| Mensaje | Causa | Solución |1044| Mensaje | Causa | Solución |

1001| :- | :- | :- |1045| :- | :- | :- |

1002| `File not found: <path>` | La ruta no tiene manifiesto, o no existe. | Ejecute el comando contra la raíz del plugin o mercado, el directorio que contiene `.claude-plugin/`. |1046| `File not found: <path>` | La ruta no tiene manifiesto o no existe. | Ejecuta el comando sobre la raíz del plugin o del marketplace, el directorio que contiene `.claude-plugin/`. |

1003| `No manifest found in directory. Expected .claude-plugin/marketplace.json or .claude-plugin/plugin.json` | El directorio no tiene manifiesto `.claude-plugin/`. | Cree el manifiesto, o apunte al directorio correcto. |1047| `No manifest found in directory. Expected .claude-plugin/marketplace.json or .claude-plugin/plugin.json` | El directorio no tiene un manifiesto `.claude-plugin/`. | Crea el manifiesto o apunta al directorio correcto. |

1004| `Invalid JSON syntax: <parse error>` | El manifiesto, o `hooks/hooks.json`, no es JSON válido. | Corrija el JSON. Hasta que corrija `hooks/hooks.json`, una sesión carga el plugin sin los hooks en ese archivo. |1048| `Invalid JSON syntax: <parse error>` | El manifiesto, o `hooks/hooks.json`, no es JSON válido. | Corrige el JSON. Hasta que corrijas `hooks/hooks.json`, una sesión carga el plugin sin los hooks de ese archivo. |

1005| `Path not found: <path>. The runtime loader will report this as a load failure.` | Una ruta de componente en el manifiesto no existe. | Corrija la ruta o cree el directorio. |1049| `Path not found: <path>. The runtime loader will report this as a load failure.` | Una ruta de componente del manifiesto no existe. | Corrige la ruta o crea el directorio. |

1006| `Path contains ".." which could be a path traversal attempt: <path>` | Una ruta de componente escapa del directorio del plugin. | Use rutas dentro de la raíz del plugin. |1050| `Path contains ".." which could be a path traversal attempt: <path>` | Una ruta de componente sale del directorio del plugin. | Usa rutas dentro de la raíz del plugin. |

1007| `Path is a file; skills entries must be directories containing SKILL.md` | Una entrada `skills` apunta a `SKILL.md` en lugar de su directorio. | Apunte al directorio padre, o `.` para un `SKILL.md` a nivel de raíz. |1051| `Path is a file; skills entries must be directories containing SKILL.md` | Una entrada `skills` apunta a `SKILL.md` en lugar de a su directorio. | Apunta al directorio padre, o a `.` para un `SKILL.md` en la raíz. |

1008| `No frontmatter block found` o `YAML frontmatter failed to parse: <error>` | Un archivo de skill, agent, o comando tiene frontmatter YAML faltante o inválido. | Agregue o corrija el frontmatter entre delimitadores `---`. Se informa al validar un directorio de plugin. |1052| `No frontmatter block found` o `YAML frontmatter failed to parse: <error>` | Un archivo de skill, agente o comando tiene frontmatter YAML faltante o no válido. | Agrega o corrige el frontmatter entre delimitadores `---`. Se informa al validar un directorio de plugin. |

1009| `Plugin name "<name>" is reserved: it passes as one of Anthropic's own` | El nombre `name` del plugin es uno de los [nombres reservados](/docs/es/plugins/manifest-reference#name). | Renombre el plugin por lo que hace. |1053| `Plugin name "<name>" is reserved: it passes as one of Anthropic's own` | El `name` del plugin es uno de los [nombres reservados](/docs/es/plugins/manifest-reference#name). | Cambia el nombre del plugin según lo que hace. |

1010| `Unknown field '<key>'` | El manifiesto tiene un campo que el esquema no define. | Elimínelo, o use el nombre que el mensaje sugiere. Claude Code ignora campos desconocidos en el tiempo de carga. |1054| `Unknown field '<key>'` | El manifiesto tiene un campo que el esquema no define. | Elimínalo o usa el nombre que sugiere el mensaje. Claude Code ignora los campos desconocidos al cargar. Para `privacyPolicyUrl` y los demás campos de listado del directorio en `plugin.json`, consulta [Campos de listado del directorio](/docs/es/plugins/manifest-reference#directory-listing-fields). |

1011 1055 

1012Ejecute el comando nuevamente después de cada solución hasta que no imprima errores.1056Vuelve a ejecutar el comando después de cada corrección hasta que no imprima errores.

1013 1057 

1014Los campos `plugin.json` están en la [manifest reference](/docs/es/plugins/manifest-reference), y los mensajes a nivel de mercado están bajo [Marketplace validation errors](#marketplace-validation-errors).1058Los campos de `plugin.json` están en la [referencia del manifiesto](/docs/es/plugins/manifest-reference), y los mensajes a nivel de marketplace están en [Errores de validación del marketplace](#marketplace-validation-errors).

1015 1059 

1016<h3 id="plugin-has-conflicting-manifests">1060<h3 id="plugin-has-conflicting-manifests">

1017 `Plugin <name> has conflicting manifests`1061 `Plugin <name> has conflicting manifests`

1018</h3>1062</h3>

1019 1063 

1020El plugin falla al cargar con `Plugin <name> has conflicting manifests: both plugin.json and marketplace entry specify components.`1064El plugin no se carga y muestra `Plugin <name> has conflicting manifests: both plugin.json and marketplace entry specify components.`

1021 1065 

1022El plugin tiene su propio `plugin.json`, y su entrada de mercado establece `strict: false` mientras también declara cualquiera de `commands`, `agents`, `skills`, `hooks`, `outputStyles`, o `themes`. Elimine esos campos de la entrada, o establezca `strict: true` en la entrada para que Claude Code los agregue a `plugin.json`. Vea [Strict mode](/docs/es/plugins/marketplace-reference#strict-mode).1066El plugin tiene su propio `plugin.json`, y su entrada del marketplace establece `strict: false` y además declara alguno de `commands`, `agents`, `skills`, `hooks`, `outputStyles` o `themes`. Elimina esos campos de la entrada, o establece `strict: true` en la entrada para que Claude Code los agregue a `plugin.json`. Consulta [Modo estricto](/docs/es/plugins/marketplace-reference#strict-mode).

1023 1067 

1024<h3 id="warning-no-commands-found-in-plugin-custom-directory">1068<h3 id="warning-no-commands-found-in-plugin-custom-directory">

1025 `Warning: No commands found in plugin <name> custom directory`1069 `Warning: No commands found in plugin <name> custom directory`

1026</h3>1070</h3>

1027 1071 

1028Cuando el plugin se carga, el registro `claude --debug` en `~/.claude/debug/<session-id>.txt` registra `Warning: No commands found in plugin <name> custom directory: <path>. Expected .md files or SKILL.md in subdirectories.` Nada aparece en la sesión o la pestaña **Errors**.1072Cuando el plugin se carga, el registro de `claude --debug` en `~/.claude/debug/<session-id>.txt` registra `Warning: No commands found in plugin <name> custom directory: <path>. Expected .md files or SKILL.md in subdirectories.` No aparece nada en la sesión ni en la pestaña **Errors**.

1029 1073 

1030La ruta `commands` en el manifiesto existe pero no contiene archivos `.md` y no `SKILL.md` en un subdirectorio. Agregue los archivos de comando, o elimine la ruta del manifiesto.1074La ruta `commands` del manifiesto existe pero no contiene archivos `.md` ni ningún `SKILL.md` en un subdirectorio. Agrega los archivos de comando o elimina la ruta del manifiesto.

1031 1075 

1032<h2 id="host-a-marketplace">1076<h2 id="host-a-marketplace">

1033 Host a marketplace1077 Host a marketplace

Details

622 const m = p.slice(base.length).match(/^\/([a-z]{2}(?:-[A-Z]{2})?)\//);622 const m = p.slice(base.length).match(/^\/([a-z]{2}(?:-[A-Z]{2})?)\//);

623 const locale = m ? m[1] : 'en';623 const locale = m ? m[1] : 'en';

624 return href => {624 return href => {

625 if (!href || href[0] !== '/' || href[1] === '/') return href;625 if (!href) return undefined;

626 if (href[0] === '#' || href.startsWith('https://')) return href;

627 if (!(/^\/[A-Za-z0-9]/).test(href)) return undefined;

626 return base + (href.startsWith('/en/') ? '/' + locale + href.slice(3) : href);628 return base + (href.startsWith('/en/') ? '/' + locale + href.slice(3) : href);

627 };629 };

628 }, []);630 }, []);


671 const assemble = p => p.prompt.replace(/\{(\w+)\}/g, (_, k) => fillOf(p, k) || p.slots && p.slots[k] || k);673 const assemble = p => p.prompt.replace(/\{(\w+)\}/g, (_, k) => fillOf(p, k) || p.slots && p.slots[k] || k);

672 const preview = p => p.prompt.replace(/\{(\w+)\}/g, (_, k) => p.slots && p.slots[k] || k);674 const preview = p => p.prompt.replace(/\{(\w+)\}/g, (_, k) => p.slots && p.slots[k] || k);

673 const bodyText = p => preview(p) + ' ' + p.teaches.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1') + ' ' + (p.next || '');675 const bodyText = p => preview(p) + ' ' + p.teaches.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1') + ' ' + (p.next || '');

674 const widthFor = s => (s || '').length + 3 + 'ch';676 const WIDE_RE = /[\u1100-\u115F\u2E80-\uA4CF\uAC00-\uD7A3\uF900-\uFAFF\uFE30-\uFE4F\uFF00-\uFF60\uFFE0-\uFFE6]/g;

677 const widthFor = s => {

678 const t = typeof s === 'string' ? s : '';

679 return t.length + (t.match(WIDE_RE) || []).length + 3 + 'ch';

680 };

675 const ql = q.trim().toLowerCase();681 const ql = q.trim().toLowerCase();

676 const toggleTag = k => {682 const toggleTag = k => {

677 setStart(false);683 setStart(false);

remote-control.md +76 −62

Details

220 220 

221Estos comandos funcionan durante aproximadamente cuatro horas después de que el servidor se detuvo. Después de eso, ejecute `claude remote-control` para iniciar una nueva sesión. Si archivó una sesión mientras tanto, `--continue` y `--session-id` la desarchivan en Claude Code v2.1.228 o posterior.221Estos comandos funcionan durante aproximadamente cuatro horas después de que el servidor se detuvo. Después de eso, ejecute `claude remote-control` para iniciar una nueva sesión. Si archivó una sesión mientras tanto, `--continue` y `--session-id` la desarchivan en Claude Code v2.1.228 o posterior.

222 222 

223Para traer de vuelta una sesión que inició con `claude --remote-control` o `/remote-control`, reanude la conversación con `claude --continue` o `claude --resume`. Si Remote Control no se reconecta, consulte [No se pudo reconectar a su sesión de Remote Control](#couldnt-reconnect-to-your-remote-control-session).223Para traer de vuelta una sesión que iniciaste con `claude --remote-control` o `/remote-control`, reanuda la conversación con `claude --continue` o `claude --resume`. Para conocer el modo de permisos con el que comienza la conversación reanudada, consulta [modo de permisos al reanudar](/docs/es/sessions#permission-mode-on-resume). Si Remote Control no se reconecta, consulta [No se pudo reconectar a tu sesión de Remote Control](#couldnt-reconnect-to-your-remote-control-session).

224 224 

225Si reanuda la conversación en una segunda terminal mientras la primera aún tiene Remote Control activado, Claude Code imprime un aviso `Remote Control not started here` en la segunda terminal y deja Remote Control desactivado allí en lugar de tomar la sesión de la primera. Ejecute `/remote-control` en la segunda terminal para mover Remote Control a ella.225Si reanuda la conversación en una segunda terminal mientras la primera aún tiene Remote Control activado, Claude Code imprime un aviso `Remote Control not started here` en la segunda terminal y deja Remote Control desactivado allí en lugar de tomar la sesión de la primera. Ejecute `/remote-control` en la segunda terminal para mover Remote Control a ella.

226 226 


360 Limitaciones360 Limitaciones

361</h2>361</h2>

362 362 

363* **Una sesión remota por proceso interactivo**: fuera del modo servidor, cada instancia de Claude Code admite una sesión remota a la vez. Utilice [modo servidor](#start-a-remote-control-session) para ejecutar múltiples sesiones concurrentes desde un único proceso.363* **Una sesión remota por proceso interactivo**: fuera del modo servidor, cada instancia de Claude Code admite una sesión remota a la vez. Usa el [modo servidor](#start-a-remote-control-session) para ejecutar múltiples sesiones concurrentes desde un único proceso.

364* **El proceso local debe seguir ejecutándose**: Remote Control se ejecuta como un proceso local. Si cierra la terminal, sale de la aplicación de escritorio o VS Code, o detiene de otra manera el proceso `claude`, la sesión se desconecta hasta que [la vuelva a conectar](#resume-sessions-after-stopping-the-server). Para mantener una sesión ejecutándose en una máquina remota después de desconectarse de SSH, inicie la sesión dentro de `tmux` o `screen`.364* **El proceso local debe seguir ejecutándose**: Remote Control se ejecuta como un proceso local. Si cierras la terminal, sales de la aplicación de escritorio o VS Code, o detienes de otra manera el proceso `claude`, la sesión se desconecta hasta que [la vuelvas a conectar](#resume-sessions-after-stopping-the-server). Para mantener una sesión ejecutándose en una máquina remota después de desconectarte de SSH, inicia la sesión dentro de `tmux` o `screen`.

365* **Sesiones que se cuelgan en modo servidor**: si una sesión servida por `claude remote-control` se cuelga, envíele un mensaje desde un dispositivo conectado. Claude Code la sirve de nuevo. No tiene que reiniciar el servidor. Requiere Claude Code v2.1.238 o posterior.365* **Sesiones que se cuelgan en modo servidor**: si una sesión servida por `claude remote-control` se cuelga, envíale un mensaje desde un dispositivo conectado. Claude Code la sirve de nuevo. No tienes que reiniciar el servidor. Requiere Claude Code v2.1.238 o posterior.

366* **Rechazos HTTP 403 en una sesión conectada**: una vez que una sesión interactiva está conectada, Claude Code sigue reintentando durante hasta tres minutos cuando algo entre su máquina y los servidores de Anthropic responde con HTTP 403, lo que puede ocurrir después de un cambio de VPN o red. Si los rechazos duran más tiempo, Claude Code se desconecta, y el motivo indica qué rechazó: un borde de red, o un proxy, VPN o firewall en su propia red.366* **Rechazos HTTP 403 en una sesión conectada**: una vez que una sesión interactiva está conectada, Claude Code sigue reintentando durante hasta tres minutos cuando algo entre tu máquina y los servidores de Anthropic responde con HTTP 403, lo que puede ocurrir después de un cambio de VPN o red. Si los rechazos duran más tiempo, Claude Code se desconecta, y el motivo indica qué rechazó: un borde de red, o un proxy, VPN o firewall en tu propia red.

367* **Interrupción de red extendida**: si su máquina está encendida pero no puede alcanzar la red, lo que haga a continuación depende del modo:367* **Interrupción de red extendida**: si tu máquina está encendida pero no puede alcanzar la red, lo que hagas a continuación depende del modo:

368 * **Modo servidor**: Claude Code se rinde después de aproximadamente 10 minutos y el proceso `claude remote-control` se cierra. Ejecute `claude remote-control` de nuevo para iniciar una nueva sesión.368 * **Modo servidor**: Claude Code se rinde después de aproximadamente 10 minutos y el proceso `claude remote-control` se cierra. Ejecuta `claude remote-control` de nuevo para iniciar una nueva sesión.

369 * **Sesión interactiva**: siga trabajando localmente. Claude Code reintenta mientras dure la interrupción y se reconecta automáticamente cuando la red vuelve.369 * **Sesión interactiva**: sigue trabajando localmente. Claude Code reintenta mientras dure la interrupción y se reconecta automáticamente cuando la red vuelve.

370* **Latidos de presencia fallidos**: si una sesión interactiva se desconecta con `could not reach the Remote Control server for about 30 minutes`, ejecute `/remote-control` para reconectarse.370* **Adjuntos que no se descargan**: si un archivo que adjuntas desde tu teléfono o navegador no se puede descargar en tu máquina, Claude igualmente recibe tu mensaje y los archivos que sí se descargaron. En lugar de los archivos faltantes, Claude Code agrega al mensaje una nota como `[1 of 3 attachments did not arrive]`.

371* **Los diálogos reenviados expiran**: Claude Code mantiene los mensajes de permiso y las preguntas de `AskUserQuestion` abiertas hasta que las responda. Cuando Claude Code reenvía otro tipo de diálogo a la sesión remota, como el mensaje de selección de modelo que se muestra después de un rechazo de seguridad, espera cinco minutos por defecto, luego cierra el diálogo y continúa con el valor predeterminado sin acción del diálogo. Establezca [`dialogExpiry`](/docs/es/settings-reference#dialogexpiry) para ajustar o desactivar el plazo. Requiere Claude Code v2.1.224 o posterior.371* **Latidos de presencia fallidos**: si una sesión interactiva se desconecta con `could not reach the Remote Control server for about 30 minutes`, ejecuta `/remote-control` para reconectarte.

372* **El mensaje de consentimiento de créditos de uso de Fable no se reenvía**: Claude Code muestra el mensaje de consentimiento de créditos de uso de [Fable](/docs/es/model-config#fable-and-usage-credits) a mitad de sesión solo donde se ejecuta la sesión, no en su dispositivo. Cuando la sesión se ejecuta en una terminal y nadie allí responde antes de que Claude Code cierre el mensaje, el turno termina sin enviar la solicitud; consulte [El mensaje de confirmación no fue respondido](/docs/es/errors#the-prompt-to-confirm-went-unanswered).372* **Los diálogos reenviados expiran**: Claude Code mantiene las solicitudes de permiso y las preguntas de `AskUserQuestion` abiertas hasta que las respondas. Cuando Claude Code reenvía otro tipo de diálogo a la sesión remota, como el prompt de selección de modelo que se muestra después de un rechazo de seguridad, espera cinco minutos por defecto, luego cierra el diálogo y continúa con el valor predeterminado sin acción del diálogo. Establece [`dialogExpiry`](/docs/es/settings-reference#dialogexpiry) para ajustar o desactivar el plazo. Requiere Claude Code v2.1.224 o posterior.

373* **Algunos comandos son solo locales**: los comandos que solo se ejecutan en la interfaz de terminal, como `/plugin` o `/resume`, funcionan solo desde la CLI local, independientemente de si pasa un argumento o no. Los siguientes funcionan desde dispositivos móviles y web:373* **El prompt de consentimiento de créditos de uso de Fable no se reenvía**: Claude Code muestra el [prompt de consentimiento de créditos de uso de Fable](/docs/es/model-config#fable-and-usage-credits) a mitad de sesión solo donde se ejecuta la sesión, no en tu dispositivo. Cuando la sesión se ejecuta en una terminal y nadie allí responde antes de que Claude Code cierre el prompt, el turno termina sin enviar la solicitud; consulta [El prompt de confirmación quedó sin respuesta](/docs/es/errors#the-prompt-to-confirm-went-unanswered).

374* **Algunos comandos son solo locales**: los comandos que solo se ejecutan en la interfaz de terminal, como `/plugin` o `/resume`, funcionan solo desde la CLI local, independientemente de si pasas un argumento o no. Los siguientes funcionan desde dispositivos móviles y web:

374 * 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` funciona solo cuando la sesión se ejecuta en una terminal interactiva; una sesión sin una la rechaza.375 * 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` funciona solo cuando la sesión se ejecuta en una terminal interactiva; una sesión sin una la rechaza.

375 * `/model`, `/effort`, `/fast`, `/color`, y `/rename`: pase el valor como argumento, por ejemplo `/model sonnet` o `/effort high`. Desde dispositivos móviles y web, `/model` y `/effort` toman el argumento en lugar del selector de terminal o deslizador.376 * `/model`, `/effort`, `/fast`, `/color`, y `/rename`: pasa el valor como argumento, por ejemplo `/model sonnet` o `/effort high`. Desde dispositivos móviles y web, `/model` y `/effort` toman el argumento en lugar del selector de terminal o deslizador.

376 * `/mcp`: desde la aplicación móvil, devuelve un resumen de texto del estado del servidor en lugar de abrir el selector. En la web, `/mcp` por sí solo abre un directorio de [conectores de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) en lugar de devolver el resumen. Los [subcomandos](/docs/es/commands#all-commands) `reconnect`, `enable`, y `disable` funcionan desde ambos. A diferencia de la CLI local, `/mcp reconnect` sin un nombre de servidor reconecta cada servidor que ha fallado o necesita autenticación.377 * `/mcp`: desde la aplicación móvil, devuelve un resumen de texto del estado del servidor en lugar de abrir el selector. En la web, `/mcp` por sí solo abre un directorio de [conectores de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) en lugar de devolver el resumen. Los [subcomandos](/docs/es/commands#all-commands) `reconnect`, `enable`, y `disable` funcionan desde ambos. A diferencia de la CLI local, `/mcp reconnect` sin un nombre de servidor reconecta cada servidor que ha fallado o necesita autenticación.

377 * `/config`: desde la aplicación móvil, pase `key=value` para establecer una configuración, o ejecútelo sin argumento para enumerar las claves que puede establecer. En la web, `/config` abre la sección Claude Code de su configuración en su lugar, e ignora el texto después del comando.378 * `/config`: desde la aplicación móvil, pasa `key=value` para establecer un ajuste, o ejecútalo sin argumento para enumerar las claves que puedes establecer. En la web, `/config` abre la sección Claude Code de tu configuración en su lugar, e ignora el texto después del comando.

378 * En Team y Enterprise, `/usage-credits` desde dispositivos móviles o web no envía una [solicitud de créditos de uso a su administrador](/docs/es/costs#add-usage-credits-to-your-subscription). El envío requiere una confirmación que aparece solo en la CLI interactiva, por lo que el comando le indica que la ejecute allí en su lugar.379 * En Team y Enterprise, `/usage-credits` desde dispositivos móviles o web no envía una [solicitud de créditos de uso a tu administrador](/docs/es/costs#add-usage-credits-to-your-subscription). El envío requiere una confirmación que aparece solo en la CLI interactiva, por lo que el comando te indica que lo ejecutes allí en su lugar.

379 * `/autocompact`, desde v2.1.221: pase el tamaño de la ventana como argumento, por ejemplo `/autocompact 500k`. Sin argumento, imprime el tamaño de ventana actual como texto en lugar de abrir el diálogo que muestra el comando en una sesión de terminal.380 * `/autocompact`, desde v2.1.221: pasa el tamaño de la ventana como argumento, por ejemplo `/autocompact 500k`. Sin argumento, imprime el tamaño de ventana actual como texto en lugar de abrir el diálogo que muestra el comando en una sesión de terminal.

380 * `/advisor`, desde v2.1.260: pase el modelo como argumento, por ejemplo `/advisor opus`, o pase `off` para desactivar el asesor. Ambas formas se aplican solo a la sesión actual y dejan su valor predeterminado guardado sin cambios. Sin argumento, imprime el asesor actual como texto en lugar de abrir el selector.381 * `/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 dejan tu valor predeterminado guardado sin cambios. Sin argumento, imprime el asesor actual como texto en lugar de abrir el selector.

381 * `/output-style`, desde v2.1.269: pase el nombre del estilo como argumento, por ejemplo `/output-style concise`, o ejecútelo sin argumento para enumerar los estilos. Desde dispositivos móviles y web, puede enumerar y seleccionar solo [estilos integrados](/docs/es/output-styles#built-in-output-styles). Para usar un [estilo personalizado](/docs/es/output-styles#create-a-custom-output-style), selecciónelo en la sesión misma.382 * `/output-style`, desde v2.1.269: pasa el nombre del estilo como argumento, por ejemplo `/output-style concise`, o ejecútalo sin argumento para enumerar los estilos. Desde dispositivos móviles y web, puedes enumerar y seleccionar solo [estilos integrados](/docs/es/output-styles#built-in-output-styles). Para usar un [estilo personalizado](/docs/es/output-styles#create-a-custom-output-style), selecciónalo en la sesión misma.

382 * `/focus`, desde v2.1.281: pase `on` u `off` como argumento, por ejemplo `/focus on`, o ejecútelo sin argumento para alternar la [vista de enfoque](/docs/es/commands#all-commands). Ambas formas se aplican solo a la sesión actual y dejan su selección guardada sin cambios.383 * `/focus`, desde v2.1.281: pasa `on` u `off` como argumento, por ejemplo `/focus on`, o ejecútalo sin argumento para alternar la [vista de enfoque](/docs/es/commands#all-commands). Ambas formas se aplican solo a la sesión actual y dejan tu selección guardada sin cambios.

383 384 

384<h2 id="troubleshooting">385<h2 id="troubleshooting">

385 Solución de problemas386 Solución de problemas


389 "Remote Control requiere una suscripción a claude.ai"390 "Remote Control requiere una suscripción a claude.ai"

390</h3>391</h3>

391 392 

392No ha iniciado sesión con una cuenta de claude.ai, o una credencial diferente tiene precedencia sobre su inicio de sesión. El mensaje toma una de estas formas:393No has iniciado sesión con una cuenta de claude.ai, o una credencial diferente tiene precedencia sobre tu inicio de sesión. El mensaje toma una de estas formas:

393 394 

394* Sesión cerrada, desde `/remote-control` o `--remote-control`: `Remote Control requiere una suscripción a claude.ai.` o `/remote-control requiere una suscripción a claude.ai.`395* Sesión cerrada, desde `/remote-control` o `--remote-control`: `Remote Control requiere una suscripción a claude.ai.` o `/remote-control requiere una suscripción a claude.ai.`

395* Sesión cerrada, desde `claude remote-control`: `Debe iniciar sesión para usar Remote Control. Remote Control solo está disponible con suscripciones a claude.ai.`396* Sesión cerrada, desde `claude remote-control`: `Debes iniciar sesión para usar Remote Control. Remote Control solo está disponible con suscripciones a claude.ai.`

396* Sesión iniciada, pero se está utilizando una clave API o token: `Remote Control requiere autenticación de suscripción a claude.ai.` seguido de la credencial en uso, como `ANTHROPIC_API_KEY está configurada, por lo que esta sesión está utilizando autenticación de clave API`. Una configuración `apiKeyHelper` y `ANTHROPIC_AUTH_TOKEN` se nombran de la misma manera.397* Sesión iniciada, pero se está utilizando una clave de API o token: `Remote Control requiere autenticación de suscripción a claude.ai.` seguido de la credencial en uso, como `ANTHROPIC_API_KEY está configurada, por lo que esta sesión está utilizando autenticación de clave de API`. Un ajuste `apiKeyHelper` y `ANTHROPIC_AUTH_TOKEN` se nombran de la misma manera.

397 398 

398Ejecute `claude auth login` y elija la opción de claude.ai. Si el mensaje menciona `ANTHROPIC_API_KEY` o `ANTHROPIC_AUTH_TOKEN`, elimínelo dondequiera que esté configurado: su entorno de shell o el bloque `env` de un [archivo de configuración](/docs/es/settings-reference#env). Si menciona `apiKeyHelper`, elimine esa configuración.399Ejecuta `claude auth login` y elige la opción de claude.ai. Si el mensaje menciona `ANTHROPIC_API_KEY` o `ANTHROPIC_AUTH_TOKEN`, elimínalo dondequiera que esté configurado: tu entorno de shell o el bloque `env` de un [archivo de configuración](/docs/es/settings-reference#env). Si menciona `apiKeyHelper`, elimina ese ajuste.

399 400 

400<h3 id="remote-control-requires-a-full-scope-login-token">401<h3 id="remote-control-requires-a-full-scope-login-token">

401 "Remote Control requiere un token de inicio de sesión de alcance completo"402 "Remote Control requiere un token de inicio de sesión de alcance completo"

402</h3>403</h3>

403 404 

404Está autenticado con un token de larga duración de `claude setup-token` o la variable de entorno `CLAUDE_CODE_OAUTH_TOKEN`. Estos tokens solo pueden hacer solicitudes de modelo, por lo que no pueden establecer sesiones de Remote Control. Ejecute `claude auth login` para autenticarse con un token de sesión de alcance completo en su lugar.405Estás autenticado con un token de larga duración de `claude setup-token` o la variable de entorno `CLAUDE_CODE_OAUTH_TOKEN`. Estos tokens solo pueden hacer solicitudes de modelo, por lo que no pueden establecer sesiones de Remote Control. Ejecuta `claude auth login` para autenticarte con un token de sesión de alcance completo en su lugar.

405 406 

406<h3 id="unable-to-determine-your-organization-for-remote-control-eligibility">407<h3 id="unable-to-determine-your-organization-for-remote-control-eligibility">

407 "No se puede determinar su organización para la elegibilidad de Remote Control"408 "No se puede determinar tu organización para la elegibilidad de Remote Control"

408</h3>409</h3>

409 410 

410Su información de cuenta en caché está obsoleta o incompleta. Ejecute `claude auth login` para actualizarla.411Tu información de cuenta en caché está obsoleta o incompleta. Ejecuta `claude auth login` para actualizarla.

411 412 

412<h3 id="remote-control-isn’t-enabled-for-this-account">413<h3 id="remote-control-isn’t-enabled-for-this-account">

413 "Remote Control no está habilitado para esta cuenta"414 "Remote Control no está habilitado para esta cuenta"

414</h3>415</h3>

415 416 

416Claude Code verificó la disponibilidad de Remote Control para la cuenta con la que ha iniciado sesión y la verificación resultó desactivada. La causa habitual son los derechos en caché que están desactualizados después de un cambio de plan. Ejecute `claude auth logout` y luego `claude auth login` para actualizarlos, y actualice Claude Code si está en una versión antigua.417Claude Code verificó la disponibilidad de Remote Control para la cuenta con la que has iniciado sesión y la verificación resultó desactivada. La causa habitual son los derechos en caché que están desactualizados después de un cambio de plan. Ejecuta `claude auth logout` y luego `claude auth login` para actualizarlos, y actualiza Claude Code si estás en una versión antigua.

417 418 

418Ejecute `claude doctor` para ver qué verificación de elegibilidad individual falló. Los conflictos de variables de entorno, las verificaciones inaccesibles y la configuración de Remote Control de su organización producen cada uno su propio mensaje, por lo que este error significa que la verificación a nivel de cuenta en sí.419Ejecuta `claude doctor` para ver qué verificación de elegibilidad individual falló. Los conflictos de variables de entorno, las verificaciones inaccesibles y el ajuste de Remote Control de tu organización producen cada uno su propio mensaje, por lo que este error se refiere a la verificación a nivel de cuenta en sí.

419 420 

420Antes de v2.1.239, este mensaje decía "Remote Control aún no está habilitado para su cuenta".421Antes de v2.1.239, este mensaje decía "Remote Control aún no está habilitado para tu cuenta".

421 422 

422<h3 id="couldn’t-verify-remote-control-eligibility">423<h3 id="couldn’t-verify-remote-control-eligibility">

423 "No se pudo verificar la elegibilidad de Remote Control"424 "No se pudo verificar la elegibilidad de Remote Control"

424</h3>425</h3>

425 426 

426Claude Code no pudo alcanzar el servicio de indicadores de características para verificar si Remote Control está habilitado para su cuenta, típicamente porque está sin conexión o un proxy está bloqueando la solicitud. Reinténtelo una vez que tenga acceso a la red, o ejecute `claude doctor` para obtener detalles. El mensaje relacionado "No se pudo verificar la política de Remote Control de su organización" significa que Claude Code encontró un error al leer esa política, y tiene la misma solución.427Claude Code no pudo alcanzar el servicio de indicadores de características para verificar si Remote Control está habilitado para tu cuenta, típicamente porque estás sin conexión o un proxy está bloqueando la solicitud. Reinténtalo una vez que tengas acceso a la red, o ejecuta `claude doctor` para obtener detalles. El mensaje relacionado "No se pudo verificar la política de Remote Control de tu organización" significa que Claude Code encontró un error al leer esa política, y tiene la misma solución.

427 428 

428<h3 id="remote-control-requires-feature-flag-evaluation">429<h3 id="remote-control-requires-feature-flag-evaluation">

429 "Remote Control requiere evaluación de indicadores de características"430 "Remote Control requiere evaluación de indicadores de características"

430</h3>431</h3>

431 432 

432Una [variable de entorno](/docs/es/env-vars#features-that-need-feature-flag-fetching) que desactiva la evaluación de indicadores de características está configurada, y el mensaje completo menciona la variable que Claude Code encontró. En versiones anteriores a 2.1.154, la misma configuración produce "Remote Control aún no está habilitado para su cuenta" en su lugar. Lo que debe hacer depende de la variable que menciona el mensaje:433Una [variable de entorno](/docs/es/env-vars#features-that-need-feature-flag-fetching) que desactiva la evaluación de indicadores de características está configurada, y el mensaje completo menciona la variable que Claude Code encontró. En versiones anteriores a 2.1.154, la misma configuración produce "Remote Control aún no está habilitado para tu cuenta" en su lugar. Lo que debes hacer depende de la variable que menciona el mensaje:

433 434 

434* **`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` o `DISABLE_GROWTHBOOK`**: desactive la variable dondequiera que esté configurada, en su entorno de shell o en el bloque `env` de un [archivo `settings.json`](/docs/es/settings-reference#all-settings).435* **`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` o `DISABLE_GROWTHBOOK`**: desactiva la variable dondequiera que esté configurada, en tu entorno de shell o en el bloque `env` de un [archivo `settings.json`](/docs/es/settings-reference#all-settings).

435* **`DISABLE_TELEMETRY` o `DO_NOT_TRACK`**: en un plan Pro, Max, Team o Enterprise con `DISABLE_GROWTHBOOK` desactivado, estas variables dejan Remote Control disponible a menos que su organización requiera [Dispositivos de confianza](#trusted-devices). Si lo hace, desactive la variable dondequiera que esté configurada para usar Remote Control. De v2.1.154 a v2.1.282, cualquiera de las variables produjo este mensaje, por lo que actualice Claude Code a v2.1.283 o posterior.436* **`DISABLE_TELEMETRY` o `DO_NOT_TRACK`**: en un plan Pro, Max, Team o Enterprise con `DISABLE_GROWTHBOOK` desactivado, estas variables dejan Remote Control disponible a menos que tu organización requiera [Dispositivos de confianza](#trusted-devices). Si tu organización los requiere, desactiva la variable dondequiera que esté configurada para usar Remote Control. De v2.1.154 a v2.1.282, cualquiera de las variables produjo este mensaje, por lo que actualiza Claude Code a v2.1.283 o posterior.

436 437 

437<h3 id="remote-control-is-only-available-when-using-claude-via-api-anthropic-com">438<h3 id="remote-control-is-only-available-when-using-claude-via-api-anthropic-com">

438 "Remote Control solo está disponible cuando se usa Claude a través de api.anthropic.com"439 "Remote Control solo está disponible cuando se usa Claude a través de api.anthropic.com"

439</h3>440</h3>

440 441 

441La sesión no está hablando directamente con la API de Anthropic, que es lo que Remote Control requiere. Esto sucede en Amazon Bedrock, en la plataforma de agentes de Google Cloud y en Microsoft Foundry. También sucede cuando [`ANTHROPIC_BASE_URL`](/docs/es/env-vars) apunta a un host diferente de `api.anthropic.com`, como una [puerta de enlace LLM](/docs/es/llm-gateway) o proxy, incluso si inicia sesión con claude.ai. Consulte la [referencia de errores](/docs/es/errors#remote-control-requires-the-anthropic-api) para obtener la lista completa de causas.442La sesión no está hablando directamente con la API de Anthropic, que es lo que Remote Control requiere. Esto sucede en Amazon Bedrock, en Agent Platform de Google Cloud y en Microsoft Foundry. También sucede cuando [`ANTHROPIC_BASE_URL`](/docs/es/env-vars) apunta a un host diferente de `api.anthropic.com`, como un [gateway de LLM](/docs/es/llm-gateway) o proxy, incluso si inicias sesión con claude.ai. Consulta la [referencia de errores](/docs/es/errors#remote-control-requires-the-anthropic-api) para obtener la lista completa de causas.

442 443 

443El mensaje menciona lo que enrutó la sesión lejos de la API de Anthropic, como `CLAUDE_CODE_USE_BEDROCK` o un `ANTHROPIC_BASE_URL` personalizado. Si tiene un inicio de sesión de claude.ai elegible, desactive la variable mencionada, elimínela de la clave `env` en [configuración](/docs/es/settings) si la configuró allí, y reinicie la sesión.444El mensaje menciona lo que enrutó la sesión lejos de la API de Anthropic, como `CLAUDE_CODE_USE_BEDROCK` o un `ANTHROPIC_BASE_URL` personalizado. Si tienes un inicio de sesión de claude.ai elegible, desactiva la variable mencionada, elimínala de la clave `env` en la [configuración](/docs/es/settings) si la configuraste allí, y reinicia la sesión.

444 445 

445<h3 id="remote-control-is-disabled-by-your-organization’s-policy">446<h3 id="remote-control-is-disabled-by-your-organizations-policy">

446 "Remote Control está deshabilitado por la política de su organización"447 "Remote Control está deshabilitado por la política de tu organización"

447</h3>448</h3>

448 449 

449Una política bloquea Remote Control. Verifique estas causas en orden:450Una política bloquea Remote Control. Verifica estas causas en orden:

450 451 

451* **El error menciona `disableRemoteControl`**: su administrador de TI ha deshabilitado Remote Control en este dispositivo a través de [configuración administrada](/docs/es/managed-settings), independientemente del conmutador de toda la organización y de cómo haya iniciado sesión.452* **El error menciona `disableRemoteControl`**: tu administrador de TI ha deshabilitado Remote Control en este dispositivo a través de la [configuración administrada](/docs/es/managed-settings), independientemente del conmutador de toda la organización y de cómo hayas iniciado sesión.

452* **Su plan de claude.ai es Pro o Max**: Claude Code aún está firmado bajo una organización de Team o Enterprise de un inicio de sesión anterior, por lo que verifica la política de Remote Control de esa organización. Ejecute `/status` para ver qué plan y organización utiliza su inicio de sesión. Ejecute `claude auth logout` y luego `claude auth login` para iniciar sesión nuevamente bajo su plan actual.453* **Tu plan de claude.ai es Pro o Max**: Claude Code aún tiene la sesión iniciada bajo una organización de Team o Enterprise de un inicio de sesión anterior, por lo que verifica la política de Remote Control de esa organización. Ejecuta `/status` para ver qué plan y organización utiliza tu inicio de sesión. Ejecuta `claude auth logout` y luego `claude auth login` para iniciar sesión nuevamente bajo tu plan actual.

453* **El mensaje no dice que contacte a su administrador de organización**: su organización tiene una configuración HIPAA que es incompatible con Remote Control, y `/status` enumera `HIPAA` en su fila `Compliance`. En este estado, el conmutador de Remote Control del panel de administración está atenuado, por lo que un propietario no puede cambiarlo allí. Póngase en contacto con el soporte de Anthropic para discutir opciones. Antes de v2.1.267, este caso mostraba "Remote Control no está disponible para su organización debido a su política de cumplimiento" en su lugar.454* **El mensaje no dice que contactes al administrador de tu organización**: tu organización tiene una configuración HIPAA que es incompatible con Remote Control, y `/status` enumera `HIPAA` en su fila `Compliance`. En este estado, el conmutador de Remote Control del panel de administración está atenuado, por lo que un propietario no puede cambiarlo allí. Ponte en contacto con el soporte de Anthropic para discutir opciones. Antes de v2.1.267, este caso mostraba "Remote Control no está disponible para tu organización debido a su política de cumplimiento" en su lugar.

454* **De lo contrario, un propietario no lo ha habilitado para su organización**: Remote Control está desactivado de forma predeterminada en planes de Team y Enterprise. Un propietario puede habilitarlo en [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) activando el conmutador **Remote Control**. Este conmutador es una configuración de organización del lado del servidor.455* **De lo contrario, un propietario no lo ha habilitado para tu organización**: Remote Control está desactivado de forma predeterminada en planes de Team y Enterprise. Un propietario puede habilitarlo en [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) activando el conmutador **Remote Control**. Este conmutador es un ajuste de organización del lado del servidor.

455 456 

456Antes de v2.1.281, este mensaje también aparecía cuando Claude Code no había cargado la política de su organización en esta máquina, por ejemplo después de iniciar sin conexión. Las versiones posteriores informan ese estado como [`No se pudo verificar la política de su organización para remote control`](#couldnt-verify-your-organizations-policy-for-remote-control) en su lugar.457Antes de v2.1.281, este mensaje también aparecía cuando Claude Code no había cargado la política de tu organización en esta máquina, por ejemplo después de iniciar sin conexión. Las versiones posteriores informan ese estado como [`No se pudo verificar la política de tu organización para remote control`](#couldnt-verify-your-organizations-policy-for-remote-control) en su lugar.

458 

459<h3 id="remote-control-was-turned-off-by-your-organizations-policy">

460 "Remote Control fue desactivado por la política de tu organización"

461</h3>

462 

463La política de tu organización dejó de permitir Remote Control mientras una sesión estaba conectada, por lo que Claude Code la desconectó. Lo que sucede con la sesión depende de cómo iniciaste Remote Control:

464 

465* **Con `/remote-control`, `claude --remote-control` o [conexión automática](#enable-remote-control-for-all-sessions)**: la sesión sigue ejecutándose sin Remote Control, y Claude Code la archiva en claude.ai

466* **Con `claude remote-control`**: el servidor se detiene y archiva las sesiones que estaba atendiendo, y luego sale

467 

468Todavía puedes encontrar una sesión archivada [filtrando por sesiones archivadas](/docs/es/claude-code-on-the-web#archive-sessions).

469 

470Remote Control no se reconecta por sí solo. Para volver a activarlo después de que tu organización lo permita de nuevo, ejecuta `/remote-control` en la sesión o `claude remote-control` en tu shell. Cualquiera de los dos comandos falla con [`Remote Control está deshabilitado por la política de tu organización`](#remote-control-is-disabled-by-your-organizations-policy) hasta que Claude Code en esta máquina haya obtenido la política modificada. Una sesión abierta la obtiene aproximadamente una vez por hora. Para averiguar qué está bloqueando Remote Control, compara el texto completo que imprime el comando con esa entrada.

457 471 

458<h3 id="couldnt-verify-your-organizations-policy-for-remote-control">472<h3 id="couldnt-verify-your-organizations-policy-for-remote-control">

459 "No se pudo verificar la política de su organización para remote control"473 "No se pudo verificar la política de tu organización para remote control"

460</h3>474</h3>

461 475 

462Claude Code no pudo obtener la política de su organización y no tiene una copia guardada en esta máquina para usar en su lugar, por lo que mantiene Remote Control desactivado hasta que pueda confirmar que su organización lo permite. Esto generalmente sucede cuando inicia Claude Code sin conexión o antes de que se conecte una VPN, o cuando un proxy interfiere con la solicitud. En una conexión lenta también puede aparecer mientras la primera solicitud aún está en vuelo.476Claude Code no pudo obtener la política de tu organización y no tiene una copia guardada en esta máquina para usar en su lugar, por lo que mantiene Remote Control desactivado hasta que pueda confirmar que tu organización lo permite. Esto generalmente sucede cuando inicias Claude Code sin conexión o antes de que se conecte una VPN, o cuando un proxy interfiere con la solicitud. En una conexión lenta también puede aparecer mientras la primera solicitud aún está en curso.

463 477 

464El mensaje toma una de estas formas:478El mensaje toma una de estas formas:

465 479 

466* Desde `/remote-control`, `claude remote-control`, o `claude --remote-control`: `No se pudo verificar la política de su organización para remote control. Verifique su conexión de red e intente de nuevo.`480* Desde `/remote-control`, `claude remote-control`, o `claude --remote-control`: `No se pudo verificar la política de tu organización para remote control. Verifica tu conexión de red e intenta de nuevo.`

467* Desde [conexión automática](#enable-remote-control-for-all-sessions) cuando se inicia una sesión: `no se pudo verificar la política de su organización — verifique su conexión de red e intente de nuevo`, con el prefijo `Remote Control falló` en la notificación y `Remote Control desconectado` en la conversación. La sesión luego deja Remote Control desactivado.481* Desde [conexión automática](#enable-remote-control-for-all-sessions) cuando se inicia una sesión: `no se pudo verificar la política de tu organización — verifica tu conexión de red e intenta de nuevo`, con el prefijo `Remote Control falló` en la notificación y `Remote Control desconectado` en la conversación. La sesión luego deja Remote Control desactivado.

468 482 

469Restaure su conexión de red, luego ejecute `/remote-control` o ejecute el comando nuevamente. Cada intento verifica la política nuevamente, por lo que no necesita reiniciar Claude Code. Si el mensaje sigue apareciendo, ejecute `claude doctor` y lea su línea `Organization policy`, que dice por qué la política no se cargó.483Restaura tu conexión de red, luego ejecuta `/remote-control` o ejecuta el comando nuevamente. Cada intento verifica la política nuevamente, por lo que no necesitas reiniciar Claude Code. Si el mensaje sigue apareciendo, ejecuta `claude doctor` y lee su línea `Organization policy`, que dice por qué la política no se cargó.

470 484 

471Antes de v2.1.281, este estado mostraba `Remote Control está deshabilitado por la política de su organización` en su lugar.485Antes de v2.1.281, este estado mostraba `Remote Control está deshabilitado por la política de tu organización` en su lugar.

472 486 

473<h3 id="remote-credentials-fetch-failed">487<h3 id="remote-credentials-fetch-failed">

474 "Error al obtener credenciales remotas"488 "Error al obtener credenciales remotas"

475</h3>489</h3>

476 490 

477Claude Code no pudo obtener una credencial de corta duración de la API de Anthropic para establecer la conexión. Vuelva a ejecutar con `--verbose` para ver el error completo:491Claude Code no pudo obtener una credencial de corta duración de la API de Anthropic para establecer la conexión. Vuelve a ejecutar con `--verbose` para ver el error completo:

478 492 

479```bash theme={null}493```bash theme={null}

480claude remote-control --verbose494claude remote-control --verbose


482 496 

483Causas comunes:497Causas comunes:

484 498 

485* No ha iniciado sesión: ejecute `claude` y use `/login` para autenticarse con su cuenta de claude.ai. La autenticación de clave API no es compatible con Remote Control.499* No has iniciado sesión: ejecuta `claude` y usa `/login` para autenticarte con tu cuenta de claude.ai. La autenticación con clave de API no es compatible con Remote Control.

486* Problema de red o proxy: un firewall o proxy puede estar bloqueando la solicitud HTTPS saliente. Remote Control requiere acceso a la API de Anthropic en el puerto 443.500* Problema de red o proxy: un firewall o proxy puede estar bloqueando la solicitud HTTPS saliente. Remote Control requiere acceso a la API de Anthropic en el puerto 443.

487* Error en la creación de sesión: si también ve `Session creation failed — see debug log`, el error ocurrió anteriormente en la configuración. Verifique que su suscripción esté activa.501* Error en la creación de sesión: si también ves `Session creation failed — see debug log`, el error ocurrió anteriormente en la configuración. Verifica que tu suscripción esté activa.

488 502 

489<h3 id="couldnt-reconnect-to-your-remote-control-session">503<h3 id="couldnt-reconnect-to-your-remote-control-session">

490 "No se pudo reconectar a su sesión de Remote Control"504 "No se pudo reconectar a tu sesión de Remote Control"

491</h3>505</h3>

492 506 

493Cuando reanuda una conversación con `claude --resume` o `claude --continue`, Claude Code se reconecta a la sesión de Remote Control registrada en esa conversación. Este mensaje significa que la reconexión falló por una razón que puede ser temporal, como una interrupción de red o un error del servidor, por lo que Claude Code no puede confirmar si la sesión remota aún existe.507Cuando reanudas una conversación con `claude --resume` o `claude --continue`, Claude Code se reconecta a la sesión de Remote Control registrada en esa conversación. Este mensaje significa que la reconexión falló por una razón que puede ser temporal, como una interrupción de red o un error del servidor, por lo que Claude Code no puede confirmar si la sesión remota aún existe.

494 508 

495Ejecute `/remote-control` para reintentar la conexión, o inicie una nueva sesión con `claude --remote-control` para crear una nueva sesión de Remote Control. Su sesión local sigue ejecutándose sin Remote Control mientras tanto.509Ejecuta `/remote-control` para reintentar la conexión, o inicia una nueva sesión con `claude --remote-control` para crear una nueva sesión de Remote Control. Tu sesión local sigue ejecutándose sin Remote Control mientras tanto.

496 510 

497<h3 id="previous-session-is-unavailable">511<h3 id="previous-session-is-unavailable">

498 "La sesión anterior no está disponible — ejecute /remote-control para iniciar una nueva"512 "La sesión anterior no está disponible — ejecuta /remote-control para iniciar una nueva"

499</h3>513</h3>

500 514 

501Claude Code no pudo recuperar la sesión anterior de Remote Control y se detuvo en lugar de iniciar una nueva por su cuenta. Puede ver este mensaje después de reanudar una conversación con `claude --resume` o `claude --continue`, o después de que Claude Code [se reconecte por su cuenta después de una desconexión](/docs/es/errors#remote-control-couldnt-refresh-your-login).515Claude Code no pudo recuperar la sesión anterior de Remote Control y se detuvo en lugar de iniciar una nueva por su cuenta. Puedes ver este mensaje después de reanudar una conversación con `claude --resume` o `claude --continue`, o después de que Claude Code [se reconecte por su cuenta después de una desconexión](/docs/es/errors#remote-control-couldnt-refresh-your-login).

502 516 

503Ejecute `/remote-control` para iniciar una nueva sesión de Remote Control bajo el inicio de sesión actual; su sesión local sigue ejecutándose sin Remote Control mientras tanto. El mensaje relacionado `Remote Control no pudo verificar la cuenta con la que ha iniciado sesión — ejecute /remote-control para reconectar` tiene la misma solución. Si ejecuta `/remote-control` después de `La sesión anterior no está disponible` sin reiniciar Claude Code primero, Claude Code deja los mensajes anteriores de la conversación fuera de la nueva sesión.517Ejecuta `/remote-control` para iniciar una nueva sesión de Remote Control bajo el inicio de sesión actual; tu sesión local sigue ejecutándose sin Remote Control mientras tanto. El mensaje relacionado `Remote Control no pudo verificar la cuenta con la que has iniciado sesión — ejecuta /remote-control para reconectar` tiene la misma solución. Si ejecutas `/remote-control` después de `La sesión anterior no está disponible` sin reiniciar Claude Code primero, Claude Code deja los mensajes anteriores de la conversación fuera de la nueva sesión.

504 518 

505<h3 id="remote-control-got-an-unexpected-server-response">519<h3 id="remote-control-got-an-unexpected-server-response">

506 "Remote Control recibió una respuesta inesperada del servidor"520 "Remote Control recibió una respuesta inesperada del servidor"

507</h3>521</h3>

508 522 

509El servidor de Remote Control aceptó una solicitud pero respondió de una forma que esta versión de Claude Code no pudo leer, mientras creaba la sesión remota u obtenía sus credenciales. Reintentar en la misma versión falla de la misma manera. Ejecute `claude update`, luego ejecute `/remote-control` para reconectar.523El servidor de Remote Control aceptó una solicitud pero respondió de una forma que esta versión de Claude Code no pudo leer, mientras creaba la sesión remota u obtenía sus credenciales. Reintentar en la misma versión falla de la misma manera. Ejecuta `claude update`, luego ejecuta `/remote-control` para reconectar.

510 524 

511<h3 id="your-organization-requires-trusted-devices-for-remote-control-but-this-device-is-not-enrolled">525<h3 id="your-organization-requires-trusted-devices-for-remote-control-but-this-device-is-not-enrolled">

512 "Su organización requiere Dispositivos de confianza para Remote Control, pero este dispositivo no está inscrito"526 "Tu organización requiere Dispositivos de confianza para Remote Control, pero este dispositivo no está inscrito"

513</h3>527</h3>

514 528 

515Su organización tiene [Dispositivos de confianza](#trusted-devices) habilitados y esta máquina aún no se ha inscrito. Ejecute `/login` en Claude Code. La inscripción ocurre como parte del inicio de sesión, y no hay un comando de inscripción separado.529Tu organización tiene [Dispositivos de confianza](#trusted-devices) habilitados y esta máquina aún no se ha inscrito. Ejecuta `/login` en Claude Code. La inscripción ocurre como parte del inicio de sesión, y no hay un comando de inscripción separado.

516 530 

517<h3 id="session-expired-for-trusted-device-check">531<h3 id="session-expired-for-trusted-device-check">

518 "sesión expirada para verificación de dispositivo de confianza"532 "sesión expirada para verificación de dispositivo de confianza"

519</h3>533</h3>

520 534 

521Su inicio de sesión tiene más de 18 horas. Ejecute `/login` en Claude Code, o confirme con Face ID, Touch ID, Windows Hello, o una contraseña cuando claude.ai o la aplicación móvil le solicite. Consulte [Dispositivos de confianza](#trusted-devices).535Tu inicio de sesión tiene más de 18 horas. Ejecuta `/login` en Claude Code, o confirma con Face ID, Touch ID, Windows Hello o una llave de acceso (passkey) cuando claude.ai o la aplicación móvil te lo soliciten. Consulta [Dispositivos de confianza](#trusted-devices).

522 536 

523<h2 id="related-resources">537<h2 id="related-resources">

524 Recursos relacionados538 Recursos relacionados

Details

91 Tiempo de ejecución sandbox91 Tiempo de ejecución sandbox

92</h2>92</h2>

93 93 

94El paquete [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropic-experimental/sandbox-runtime) envuelve un proceso completo en el mismo aislamiento Seatbelt o bubblewrap que usa el sandbox Bash integrado. Ejecutar Claude Code a través del tiempo de ejecución restringe cada herramienta, hook y servidor MCP en la sesión, no solo comandos de shell. El tiempo de ejecución es una vista previa de investigación beta, y su formato de configuración puede cambiar a medida que el paquete evoluciona.94El paquete [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropics/sandbox-runtime) envuelve un proceso completo en el mismo aislamiento Seatbelt o bubblewrap que usa el sandbox de Bash integrado. Ejecutar Claude Code a través del tiempo de ejecución restringe las herramientas, los hooks y los servidores MCP de la sesión, además de los comandos de shell. El tiempo de ejecución es una vista previa de investigación beta, y su formato de configuración puede cambiar a medida que el paquete evoluciona.

95 95 

96Esta sección cubre qué configura usted y qué el tiempo de ejecución aplica por su cuenta. Para implementar el tiempo de ejecución en aplicaciones del Agent SDK, consulte la [guía de implementación segura](/docs/es/agent-sdk/secure-deployment#sandbox-runtime).96Esta sección cubre lo que configuras tú y lo que el tiempo de ejecución aplica por su cuenta. Para desplegar el tiempo de ejecución en aplicaciones del Agent SDK, consulta la [guía de despliegue seguro](/docs/es/agent-sdk/secure-deployment#sandbox-runtime).

97 97 

98<h3 id="set-up-and-launch-the-runtime">98<h3 id="set-up-and-launch-the-runtime">

99 Configurar e iniciar el tiempo de ejecución99 Configurar e iniciar el tiempo de ejecución

100</h3>100</h3>

101 101 

102En Linux y WSL2, el tiempo de ejecución depende de los mismos paquetes `bubblewrap` y `socat` que usa el sandbox integrado, más `ripgrep`, que Claude Code incluye pero el tiempo de ejecución independiente resuelve desde su PATH. Instale `bubblewrap` y `socat` como se describe en [Configurar Linux y WSL2](/docs/es/sandboxing#set-up-linux-and-wsl2), y `ripgrep` desde el gestor de paquetes de su distribución. En macOS no necesita paquetes adicionales. El tiempo de ejecución usa el sandbox Seatbelt integrado allí.102En Linux y WSL2, el tiempo de ejecución depende de los mismos paquetes `bubblewrap` y `socat` que usa el sandbox integrado, más `ripgrep`, que Claude Code incluye pero el tiempo de ejecución independiente resuelve desde tu PATH. Instala `bubblewrap` y `socat` como se describe en [Configurar Linux y WSL2](/docs/es/sandboxing#set-up-linux-and-wsl2), y `ripgrep` desde el gestor de paquetes de tu distribución. En macOS no necesitas paquetes adicionales. El tiempo de ejecución usa allí el sandbox Seatbelt integrado.

103 103 

104Por defecto el tiempo de ejecución niega acceso de red y confina escrituras a un pequeño conjunto de rutas de tiempo de ejecución integradas, así que configúrelo antes de lanzar Claude Code a través de él. Coloque su configuración en `~/.srt-settings.json`, o en un archivo que pase con `--settings`. El [README](https://github.com/anthropic-experimental/sandbox-runtime) del paquete documenta el esquema de configuración completo.104Por defecto, el tiempo de ejecución niega el acceso de red y confina las escrituras a un pequeño conjunto de rutas de tiempo de ejecución integradas, así que configúralo antes de lanzar Claude Code a través de él. Coloca tu configuración en `~/.srt-settings.json`, o en un archivo que pases con `--settings`. El [README](https://github.com/anthropics/sandbox-runtime) del paquete documenta el esquema de configuración.

105 105 

106Permita acceso de escritura a al menos:106Permite acceso de escritura al menos a:

107 107 

108* Su directorio de proyecto.108* Tu directorio de proyecto.

109* Las rutas de configuración de Claude Code `~/.claude` y `~/.claude.json`.109* Las rutas de configuración de Claude Code `~/.claude` y `~/.claude.json`.

110* `/tmp`, donde Claude Code escribe archivos de tiempo de ejecución.110* El directorio donde Claude Code escribe los archivos de tiempo de ejecución. A menos que establezcas [`CLAUDE_CODE_TMPDIR`](/docs/es/env-vars), ese directorio es:

111 * **Linux y WSL2**: `/tmp`

112 * **macOS**: `/private/tmp`. `/tmp` es un enlace simbólico a ese directorio, y Seatbelt verifica la ruta resuelta.

111 113 

112Permita los dominios de red que su sesión necesita:114Permite los dominios de red que tu sesión necesita:

113 115 

114* `api.anthropic.com`, o el punto final de su proveedor configurado. En un proveedor de terceros, mantenga `api.anthropic.com` también: la verificación de seguridad del dominio WebFetch aún lo llama por defecto a menos que establezca `skipWebFetchPreflight: true`.116* `api.anthropic.com`, o el endpoint de tu proveedor configurado. En un proveedor de terceros, mantén también `api.anthropic.com`: la verificación de seguridad de dominios de WebFetch aún lo llama por defecto a menos que establezcas `skipWebFetchPreflight: true`.

115* `claude.ai` y `platform.claude.com`, que requieren [inicio de sesión OAuth y actualización de token](/docs/es/network-config#network-access-requirements). Las ejecuciones autenticadas con una clave API pueden descartar estos dos.117* `claude.ai` y `platform.claude.com`, que requieren el [inicio de sesión OAuth y la actualización de tokens](/docs/es/network-config#network-access-requirements). Las ejecuciones autenticadas con una clave de API pueden prescindir de estos dos.

116 118 

117En Linux y WSL2, el tiempo de ejecución aplica permisos de escritura solo a rutas que ya existen. En un entorno nuevo, cree las rutas de configuración de Claude Code antes del primer lanzamiento:119En Linux y WSL2, el tiempo de ejecución aplica los permisos de escritura solo a rutas que ya existen. En un entorno nuevo, crea las rutas de configuración de Claude Code antes del primer lanzamiento:

118 120 

119```bash theme={null}121```bash theme={null}

120mkdir -p ~/.claude && { [ -f ~/.claude.json ] || echo '{}' > ~/.claude.json; }122mkdir -p ~/.claude && { [ -f ~/.claude.json ] || echo '{}' > ~/.claude.json; }

121```123```

122 124 

123Una vez que el archivo de configuración esté en su lugar, lance Claude Code con `npx` y pase `claude` como el comando a envolver:125Una vez que el archivo de configuración esté en su lugar, lanza Claude Code con `npx` y pasa `claude` como el comando a envolver:

124 126 

125```bash theme={null}127```bash theme={null}

126npx @anthropic-ai/sandbox-runtime claude128npx @anthropic-ai/sandbox-runtime claude

127```129```

128 130 

129Claude Code se inicia dentro del sandbox con los límites de sistema de archivos y red que configuró. El mismo comando funciona para aislar servidores MCP independientes u otros procesos auxiliares.131Claude Code se inicia dentro del sandbox con los límites de sistema de archivos y red que configuraste. El mismo comando funciona para aislar servidores MCP independientes u otros procesos auxiliares.

130 132 

131<h3 id="what-the-runtime-blocks-on-its-own">133<h3 id="what-the-runtime-blocks-on-its-own">

132 Qué bloquea el tiempo de ejecución por su cuenta134 Qué bloquea el tiempo de ejecución por su cuenta

133</h3>135</h3>

134 136 

135El tiempo de ejecución bloquea las escrituras de mayor riesgo sin ninguna configuración de su parte:137El tiempo de ejecución bloquea las escrituras de mayor riesgo sin ninguna configuración de tu parte:

136 138 

137* `denyWrite` tiene precedencia sobre `allowWrite`.139* `denyWrite` tiene precedencia sobre `allowWrite`.

138* En la raíz del proyecto, el tiempo de ejecución niega `.git/hooks`, niega `.git/config` a menos que establezca `filesystem.allowGitConfig: true`, y niega `.mcp.json`, `.claude/commands`, `.claude/agents`, y archivos de inicio de shell.140* En la raíz del proyecto, el tiempo de ejecución niega `.git/hooks`, niega `.git/config` a menos que establezcas `filesystem.allowGitConfig: true`, y niega `.mcp.json`, `.claude/commands`, `.claude/agents` y los archivos de inicio del shell.

139* En macOS, estas negaciones se verifican cuando ocurre una escritura, así que también cubren archivos anidados y repositorios creados durante la sesión.141* En macOS, estas negaciones se verifican cuando ocurre una escritura, así que también cubren archivos anidados y repositorios creados durante la sesión.

140* En Linux y WSL2, el tiempo de ejecución construye la lista de negación una vez al lanzamiento. Cubre de manera confiable la raíz del proyecto, realiza un escaneo superficial de mejor esfuerzo para copias anidadas que existen en ese momento, y no cubre nada que la sesión cree después, como `git init`, `git clone`, o scaffolding. La sección `mandatoryDenySearchDepth` del README describe la semántica exacta del escaneo.142* En Linux y WSL2, el tiempo de ejecución construye la lista de negación una sola vez al lanzarse. Cubre de manera confiable la raíz del proyecto, realiza un escaneo superficial de mejor esfuerzo en busca de copias anidadas que existan en ese momento, y no cubre nada que la sesión cree después, como `git init`, `git clone` o scaffolding. La sección `mandatoryDenySearchDepth` del README describe la semántica exacta del escaneo.

141* Si `~/.srt-settings.json` no existe y no pasa `--settings`, el tiempo de ejecución se inicia de todas formas. Bloquea acceso de red y confina escrituras a rutas de tiempo de ejecución integradas como `/tmp/claude`, `~/.npm/_logs`, y `~/.claude/debug`. No tome un inicio limpio como prueba de que su configuración se cargó.143* Si `~/.srt-settings.json` no existe y no pasas `--settings`, el tiempo de ejecución se inicia de todas formas. Bloquea el acceso de red y confina las escrituras a rutas de tiempo de ejecución integradas como `/tmp/claude`, `~/.npm/_logs` y `~/.claude/debug`. No tomes un inicio limpio como prueba de que tu configuración se cargó.

142* Si el archivo de configuración existe pero está vacío, es ilegible o inválido, el tiempo de ejecución se niega a iniciar, ya sea `~/.srt-settings.json` o un archivo que pase con `--settings`. También se niega a iniciar si el archivo `--settings` no existe.144* Si el archivo de configuración existe pero está vacío, es ilegible o no es válido, el tiempo de ejecución se niega a iniciar, ya sea `~/.srt-settings.json` o un archivo que pases con `--settings`. También se niega a iniciar si el archivo de `--settings` no existe.

143 145 

144Sus permisos de escritura aún incluyen otras rutas desde las que Claude Code carga configuración, así que niegue esas con `denyWrite`. Una sesión en sandbox que puede escribirlas puede persistir hooks, reglas de permiso, o servidores MCP que se ejecutan sin sandbox la próxima vez que lance Claude Code.146Tus permisos de escritura aún incluyen otras rutas desde las que Claude Code carga configuración, así que niégalas con `denyWrite`. Una sesión en el sandbox que pueda escribir en ellas puede persistir hooks, reglas de permisos o servidores MCP que se ejecuten fuera del sandbox la próxima vez que lances Claude Code.

145 147 

146<h3 id="after-unattended-runs">148<h3 id="after-unattended-runs">

147 Después de ejecuciones desatendidas149 Después de ejecuciones desatendidas

148</h3>150</h3>

149 151 

150Revise las rutas que mantuvo escribibles. En Linux y WSL2, también revise cualquier cosa que la sesión creó.152Revisa las rutas que mantuviste con permiso de escritura. En Linux y WSL2, revisa también todo lo que la sesión haya creado.

151 153 

152<h2 id="dev-containers">154<h2 id="dev-containers">

153 Contenedores de desarrollo155 Contenedores de desarrollo

sandboxing.md +586 −248

Details

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.3> Use this file to discover all available pages before exploring further.

4 4 

5# Configurar la herramienta Bash aislada5# Configura la herramienta Bash en el sandbox

6 6 

7> Aprenda cómo la herramienta Bash aislada de Claude Code proporciona aislamiento del sistema de archivos y la red para una ejecución de agentes más segura y autónoma.7> Restringe los archivos y hosts de red a los que pueden acceder los comandos de shell de Claude Code con el sandbox integrado. Actívalo, define el límite y corrige lo que deje de funcionar.

8 8 

9El sandbox de Bash permite que Claude ejecute la mayoría de comandos de shell sin detenerse para pedir permiso. En lugar de aprobar cada comando, usted define qué archivos y dominios de red pueden tocar los comandos, y el sistema operativo aplica ese límite para cada comando Bash, PowerShell o Monitor y sus procesos secundarios.9El sandbox de Bash es un límite que el sistema operativo impone alrededor de los comandos de shell que Claude ejecuta en tu máquina. Tú defines a qué archivos y dominios de red pueden acceder esos comandos, y los límites se aplican a los comandos de Bash, PowerShell y Monitor, y a los procesos que estos inician. Como el sistema operativo aplica los límites mientras se ejecuta un comando, Claude Code puede [ejecutar comandos en el sandbox sin pedirte](#sandbox-modes) que apruebes cada uno.

10 

11El sandbox cubre solo los comandos de shell. Las herramientas de archivos de Claude, los servidores MCP y los hooks [se ejecutan fuera de él](#what-runs-outside-the-sandbox).

12 

13El sandbox funciona en macOS, Linux y WSL2. En Windows nativo, Claude Code ejecuta los comandos fuera del sandbox. Para usar el sandbox en una máquina con Windows, ejecuta Claude Code dentro de una distribución de WSL2.

10 14 

11<Note>15<Note>

12 Para comparar otros enfoques de aislamiento como contenedores de desarrollo, contenedores personalizados y máquinas virtuales, consulte [Entornos sandbox](/docs/es/sandbox-environments). Para reducir solicitudes de permiso para herramientas distintas de Bash, consulte [modos de permiso](/docs/es/permission-modes).16 Esta página trata sobre el sandbox alrededor de los comandos de shell en tu propia máquina. Otras páginas abordan temas relacionados:

17 

18 * Para saber cómo se aísla una sesión en la nube, consulta [Seguridad y aislamiento](/docs/es/claude-code-on-the-web#security-and-isolation)

19 * Para comparar otros enfoques de aislamiento, como dev containers, contenedores personalizados y máquinas virtuales, consulta [Entornos de sandbox](/docs/es/sandbox-environments)

20 * Para reducir las solicitudes de permiso de herramientas distintas de Bash, consulta [modos de permisos](/docs/es/permission-modes)

13</Note>21</Note>

14 22 

23<h2 id="what-the-sandbox-restricts">

24 Qué restringe el sandbox

25</h2>

26 

27Mientras el sandbox está activado, los comandos de shell que Claude ejecuta se inician dentro de sus límites, y lo mismo ocurre con los procesos que esos comandos inician. El sandbox está desactivado de forma predeterminada. Para activarlo, ejecuta `/sandbox` en una sesión, como se muestra en [Primeros pasos](#get-started), o establece [`sandbox.enabled`](/docs/es/settings-reference#sandbox-enabled) en `true` en un [archivo de configuración](/docs/es/settings) como `~/.claude/settings.json`.

28 

29La tabla muestra a qué puede acceder un comando en el sandbox de forma predeterminada y los ajustes que cambian cada valor predeterminado.

30 

31| Acceso | Predeterminado | Cámbialo con |

32| :- | :- | :- |

33| Escrituras | El directorio de trabajo, un directorio temporal por usuario y los [directorios que hayas agregado](/docs/es/permissions#additional-directories-grant-file-access-not-configuration). Las [rutas protegidas](#protected-paths) siguen con la escritura denegada | [`filesystem.allowWrite`](/docs/es/settings-reference#sandbox-filesystem-allowwrite), [`filesystem.denyWrite`](/docs/es/settings-reference#sandbox-filesystem-denywrite) |

34| Lecturas | La mayor parte de la máquina, incluidos archivos de credenciales como `~/.ssh` y `~/.aws/credentials` | [`filesystem.denyRead`](/docs/es/settings-reference#sandbox-filesystem-denyread), [`credentials`](#protect-credentials) |

35| Red | Sin ruta directa hacia el exterior. Las conexiones pasan por un proxy en tu máquina que verifica cada host contra tus dominios permitidos, que inicialmente están vacíos. Tu modo de permisos decide [qué ocurre con los demás hosts](#hosts-outside-your-allowed-domains) | [`network.allowedDomains`](/docs/es/settings-reference#sandbox-network-alloweddomains), [`network.deniedDomains`](/docs/es/settings-reference#sandbox-network-denieddomains) |

36| Variables de entorno | Heredadas de Claude Code, incluidos los secretos que haya en su entorno | [`credentials`](#protect-credentials), [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/es/env-vars) |

37 

38Claude Code construye el sandbox sobre el paquete de código abierto [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropics/sandbox-runtime).

39 

40<h3 id="what-runs-outside-the-sandbox">

41 Qué se ejecuta fuera del sandbox

42</h3>

43 

44El sandbox envuelve los comandos de shell. Estas herramientas y procesos se ejecutan fuera de él:

45 

46* **Herramientas integradas de archivos y web**: herramientas como Read, Edit, Write, WebFetch y WebSearch siguen, en cambio, las [reglas de permisos](/docs/es/permissions). Una entrada `denyRead` no detiene la herramienta Read, y `allowedDomains` no limita WebFetch

47* **Otros procesos que inicia Claude Code**: los [hooks](/docs/es/hooks) de comando, los [servidores MCP](/docs/es/mcp) locales, los [monitores de plugins](/docs/es/plugins/components#monitors), los [servidores LSP](/docs/es/tools-reference#lsp-tool-behavior) y los comandos auxiliares, como el comando de tu [línea de estado](/docs/es/statusline) y `apiKeyHelper`, se ejecutan con tu acceso completo

48 

49Algunos comandos de shell también se ejecutan fuera del sandbox, según tu configuración:

50 

51* **Comandos que escribes tú mismo**: un comando que introduces en el [prompt del modo shell `!`](/docs/es/interactive-mode#shell-mode-with-prefix) se ejecuta fuera del sandbox en la mayoría de las sesiones. El [modo sandbox estricto](#turn-off-the-retry-with-strict-sandbox-mode) enumera las sesiones en las que un comando que escribes se ejecuta dentro del sandbox

52* **Comandos excluidos**: los comandos que coinciden con [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands) se ejecutan fuera del sandbox

53* **Reintentos fuera del sandbox**: Claude puede [pedir ejecutar un comando fuera del sandbox](#the-unsandboxed-retry-escape-hatch), normalmente después de que falle dentro del sandbox

54 

55Para poner las herramientas, los procesos y los comandos de esta sección detrás de un único límite, ejecuta el propio proceso de Claude Code en un [contenedor, una máquina virtual o el sandbox runtime](/docs/es/sandbox-environments).

56 

15<h2 id="get-started">57<h2 id="get-started">

16 Primeros pasos58 Primeros pasos

17</h2>59</h2>

18 60 

19El sandbox está integrado en Claude Code y se ejecuta en macOS, Linux y WSL2. Windows nativo no es compatible. En Windows, ejecute Claude Code dentro de una distribución WSL2.61El sandbox está integrado en Claude Code. Lo que instalas depende de tu plataforma:

20 62 

21En macOS, no hay nada que instalar: el sandboxing utiliza el marco Seatbelt integrado. En Linux y WSL2, el sandbox se basa en dos paquetes, cubiertos en [Configurar Linux y WSL2](#set-up-linux-and-wsl2). Incluso si aún no los ha instalado, puede comenzar con `/sandbox`, porque su panel muestra si falta algo.63* **macOS**: el sandboxing usa el framework Seatbelt integrado, así que puedes ir directamente a los pasos

64* **Linux y WSL2**: el sandbox depende de `bubblewrap` y `socat`, que se explican en [Configurar Linux y WSL2](#set-up-linux-and-wsl2). Aunque todavía no los hayas instalado, puedes empezar con `/sandbox`, porque su panel muestra si falta algo

22 65 

23<Steps>66<Steps>

24 <Step title="Ejecutar /sandbox">67 <Step title="Ejecuta /sandbox">

25 Inicie una sesión de Claude Code y ejecute el comando `/sandbox`:68 Inicia una sesión de Claude Code y ejecuta el comando `/sandbox`:

26 69 

27 ```text theme={null}70 ```text theme={null}

28 /sandbox71 /sandbox

29 ```72 ```

30 73 

31 Esto abre el panel de sandbox con tres pestañas, más una pestaña Dependencies en Linux cuando falta el filtro seccomp opcional:74 Esto abre el panel del sandbox con tres pestañas, más una pestaña Dependencies en Linux cuando falta el filtro seccomp opcional:

32 75 

33 * **Mode**: elija cómo se aprueban los comandos aislados, cubierto en el siguiente paso76 * **Mode**: elige cómo se aprueban los comandos ejecutados en el sandbox, lo que se explica en el siguiente paso

34 * **Overrides**: elija si los comandos que fallan bajo el sandbox pueden volver a ejecutarse sin aislar. Esta es la configuración [`allowUnsandboxedCommands`](/docs/es/settings-reference#sandbox-allowunsandboxedcommands)77 * **Overrides**: elige si los comandos que fallan dentro del sandbox pueden recurrir a ejecutarse fuera de él. Este es el ajuste [`allowUnsandboxedCommands`](/docs/es/settings-reference#sandbox-allowunsandboxedcommands)

35 * **Config**: vea la configuración de sandbox resuelta78 * **Config**: consulta la configuración resuelta del sandbox

36 79 

37 Si el panel muestra solo una pestaña Dependencies, falta un paquete requerido. Instálelo como se describe en [Configurar Linux y WSL2](#set-up-linux-and-wsl2), reinicie Claude Code y ejecute `/sandbox` nuevamente.80 Si el panel muestra solo una pestaña Dependencies, falta un paquete obligatorio. Instálalo como se describe en [Configurar Linux y WSL2](#set-up-linux-and-wsl2), reinicia Claude Code y vuelve a ejecutar `/sandbox`.

38 </Step>81 </Step>

39 82 

40 <Step title="Elegir un modo">83 <Step title="Elige un modo">

41 En la pestaña Mode, seleccione auto-allow o permisos regulares. Auto-allow ejecuta comandos aislados sin solicitar, y permisos regulares mantiene las solicitudes de permiso regulares incluso cuando los comandos están aislados. Consulte [Modos de sandbox](#sandbox-modes) para ver qué comandos aún solicitan en modo auto-allow.84 En la pestaña Mode, selecciona auto-allow o permisos regulares. Auto-allow ejecuta los comandos del sandbox sin pedir confirmación, y los permisos regulares mantienen las solicitudes de permiso habituales incluso cuando los comandos se ejecutan en el sandbox. Consulta [Modos del sandbox](#sandbox-modes) para ver qué comandos siguen pidiendo confirmación en el modo auto-allow.

42 </Step>85 </Step>

43 86 

44 <Step title="Ejecutar un comando Bash">87 <Step title="Ejecuta un comando de Bash">

45 Pida a Claude que ejecute un comando, como una compilación o un conjunto de pruebas. De forma predeterminada, los comandos dentro del sandbox pueden escribir en el directorio de trabajo, un [directorio temporal por usuario](/docs/es/env-vars), y cualquier [directorio que haya agregado](/docs/es/permissions#additional-directories-grant-file-access-not-configuration) con `--add-dir`, `/add-dir` o `permissions.additionalDirectories`.88 Pídele a Claude que ejecute un comando, como una compilación o un conjunto de pruebas. De forma predeterminada, los comandos dentro del sandbox pueden escribir en el directorio de trabajo, en un [directorio temporal por usuario](/docs/es/env-vars) y en cualquier [directorio que hayas agregado](/docs/es/permissions#additional-directories-grant-file-access-not-configuration) con `--add-dir`, `/add-dir` o `permissions.additionalDirectories`.

46 89 

47 La primera vez que un comando necesita un nuevo dominio de red, Claude Code solicita aprobación; en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), Claude en su lugar nombra los hosts que un comando necesita [en el comando mismo](#per-command-allowed-domains-in-auto-mode) para que el clasificador lo revise con él.90 La primera vez que un comando necesita un nuevo dominio de red, Claude Code pide aprobación; en el [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), Claude, en cambio, indica los hosts que necesita un comando [en el propio comando](#per-command-allowed-domains-in-auto-mode) para que el clasificador los revise junto con él.

48 91 

49 Los comandos que no pueden ejecutarse aislados vuelven al flujo de permiso regular. Claude Code titula su solicitud de permiso "Bash command (unsandboxed)" en lugar de "Bash command", para que pueda saber qué comandos se ejecutaron fuera del sandbox. Para ampliar o reducir lo que permite el sandbox, consulte [Configurar sandboxing](#configure-sandboxing).92 Para ampliar o restringir lo que permite el sandbox, consulta [Configurar el sandboxing](#configure-sandboxing).

50 93 

51 Si los comandos aislados fallan con `Operation not permitted` dentro de un contenedor, consulte la entrada Bubblewrap en [Solución de problemas](#troubleshooting).94 Si los comandos del sandbox fallan con `Operation not permitted` dentro de un contenedor, consulta la entrada de Bubblewrap en [Solución de problemas](#troubleshooting).

52 </Step>95 </Step>

53</Steps>96</Steps>

54 97 

55Cuando selecciona un modo en el panel, Claude Code lo guarda en la configuración local de su proyecto en `.claude/settings.local.json`, que se aplica al proyecto actual. Claude Code agrega ese archivo a su gitignore global cuando guarda una configuración allí. Para habilitar el sandbox en todos sus proyectos, establezca [`sandbox.enabled`](/docs/es/settings-reference#sandbox-enabled) en `true` en su configuración de usuario en `~/.claude/settings.json`. Para aplicar sandboxing para cada desarrollador en una organización, use [configuración administrada](#enforce-sandboxing-with-managed-settings).98Cuando seleccionas un modo en el panel, Claude Code lo guarda en la configuración local de tu proyecto en `.claude/settings.local.json`, que se aplica al proyecto actual. Claude Code agrega ese archivo a tu gitignore global cuando guarda un ajuste en él. Para habilitar el sandbox en todos tus proyectos, establece [`sandbox.enabled`](/docs/es/settings-reference#sandbox-enabled) en `true` en tu configuración de usuario en `~/.claude/settings.json`. Para imponer el sandboxing a todos los desarrolladores de una organización, usa la [configuración administrada](#enforce-sandboxing-with-managed-settings).

56 99 

57Para cambiar el sandbox para una sesión sin escribir en un archivo de configuración, inicie Claude Code con [`--settings`](/docs/es/settings#change-a-setting-for-one-session). Por ejemplo, este comando inicia una sesión aislada en la que Claude no puede reintentar un comando bloqueado fuera del sandbox:100Para cambiar el sandbox durante una sesión sin escribir en un archivo de configuración, inicia Claude Code con [`--settings`](/docs/es/settings#change-a-setting-for-one-session). Por ejemplo, este comando inicia una sesión en el sandbox en la que Claude no puede reintentar un comando bloqueado fuera del sandbox:

58 101 

59```bash theme={null}102```bash theme={null}

60claude --settings '{"sandbox": {"enabled": true, "allowUnsandboxedCommands": false}}'103claude --settings '{"sandbox": {"enabled": true, "allowUnsandboxedCommands": false}}'

61```104```

62 105 

63<Warning>106<Warning>

64 De forma predeterminada, si el sandbox no puede iniciarse porque faltan dependencias o la plataforma no es compatible, Claude Code muestra una advertencia y ejecuta comandos sin sandboxing. Para hacer que esto sea un error grave en su lugar, establezca [`sandbox.failIfUnavailable`](/docs/es/settings-reference#sandbox-failifunavailable) en `true`. Esto está destinado a implementaciones administradas que requieren sandboxing como una puerta de seguridad.107 De forma predeterminada, si el sandbox no puede iniciarse porque falta una dependencia o la plataforma no es compatible, Claude Code ejecuta los comandos sin sandboxing. Para que Claude Code se cierre al iniciar en su lugar, establece [`sandbox.failIfUnavailable`](/docs/es/settings-reference#sandbox-failifunavailable) en `true`. Los despliegues administrados que exigen el sandboxing como barrera de seguridad pueden usar este ajuste.

65</Warning>108</Warning>

66 109 

110<h3 id="confirm-commands-run-inside-the-sandbox">

111 Confirmar que los comandos se ejecutan dentro del sandbox

112</h3>

113 

114Para comprobar que el sandbox funciona, pídele a Claude que ejecute cada línea de la tabla. Lo que escribes en el [prompt `!`](#what-runs-outside-the-sandbox) normalmente se ejecuta fuera del sandbox, así que escribir una línea tú mismo no lo pone a prueba.

115 

116| Comando | Resultado dentro del sandbox |

117| :- | :- |

118| `touch ~/sandbox-probe` | Falla con `Operation not permitted` en macOS, o `Read-only file system` en Linux y WSL2 |

119| `curl --noproxy '*' https://example.com` | Falla con `Could not resolve host`, porque el comando no tiene ninguna ruta que evite el proxy del sandbox |

120 

121Si Claude pide reintentar un comando fallido fuera del sandbox, rechaza el reintento. Si `touch` tiene éxito y tu directorio home no es uno de los directorios en los que el sandbox permite escribir a los comandos, elimina `~/sandbox-probe`. Luego ejecuta `/sandbox` para comprobar que el sandbox está activado y que sus dependencias están instaladas.

122 

67<h3 id="set-up-linux-and-wsl2">123<h3 id="set-up-linux-and-wsl2">

68 Configurar Linux y WSL2124 Configurar Linux y WSL2

69</h3>125</h3>

70 126 

71En Linux y WSL2, el sandbox se basa en dos paquetes:127En Linux y WSL2, el sandbox depende de estos paquetes:

72 128 

73* [`bubblewrap`](https://github.com/containers/bubblewrap): la herramienta de sandboxing sin privilegios que aplica aislamiento del sistema de archivos129* [`bubblewrap`](https://github.com/containers/bubblewrap): la herramienta de sandboxing sin privilegios que aplica el aislamiento del sistema de archivos

74* [`socat`](http://www.dest-unreach.org/socat/): el relé utilizado para enrutar el tráfico de red a través del proxy del sandbox130* [`socat`](http://www.dest-unreach.org/socat/): el relé que se usa para enrutar el tráfico de red a través del proxy del sandbox

75 131 

76Instálelos con el gestor de paquetes de su distribución:132Instálalos con el gestor de paquetes de tu distribución:

77 133 

78<Tabs>134<Tabs>

79 <Tab title="Ubuntu/Debian">135 <Tab title="Ubuntu/Debian">


89 </Tab>145 </Tab>

90</Tabs>146</Tabs>

91 147 

92Cuando falta una dependencia, la pestaña Dependencies en `/sandbox` enumera cuál de `ripgrep`, `bubblewrap`, `socat` y el filtro seccomp le falta a su plataforma. Si no ve la pestaña después de instalar y reiniciar Claude Code, todas las dependencias están presentes.148Cuando falta una dependencia, la pestaña Dependencies de `/sandbox` indica cuáles de `ripgrep`, `bubblewrap`, `socat` y el filtro seccomp le faltan a tu plataforma. Si no ves la pestaña después de instalarlos y reiniciar Claude Code, todas las dependencias están presentes.

93 149 

94Ripgrep se incluye con el binario nativo de Claude Code. El filtro seccomp es opcional y agrega bloqueo de socket de dominio Unix. Instálelo con `npm install -g @anthropic-ai/sandbox-runtime` si falta.150Ripgrep viene incluido con el binario nativo de Claude Code. El filtro seccomp es opcional y añade el bloqueo de sockets de dominio Unix. Instálalo con `npm install -g @anthropic-ai/sandbox-runtime` si falta.

95 151 

96Cuando falta una dependencia requerida, la pestaña Dependencies es la única pestaña mostrada hasta que la instale. Cuando solo falta el filtro seccomp opcional, la pestaña Dependencies aparece junto con las otras pestañas. La verificación de dependencia se ejecuta al inicio, así que reinicie Claude Code después de instalar paquetes para que `/sandbox` los detecte.152Cuando falta una dependencia obligatoria, la pestaña Dependencies es la única que se muestra hasta que la instales. Cuando solo falta el filtro seccomp opcional, la pestaña Dependencies aparece junto con las demás pestañas. La comprobación de dependencias se ejecuta al iniciar, así que reinicia Claude Code después de instalar paquetes para que `/sandbox` los detecte.

97 153 

98<AccordionGroup>154<AccordionGroup>

99 <Accordion title="Ubuntu 24.04 y posterior: permitir que bubblewrap cree espacios de nombres de usuario">155 <Accordion title="Ubuntu 24.04 y posteriores: permitir que bubblewrap cree espacios de nombres de usuario">

100 En Ubuntu 24.04 y posterior, la política de AppArmor predeterminada impide que bubblewrap cree los espacios de nombres de usuario que necesita para el aislamiento.156 En Ubuntu 24.04 y posteriores, la política predeterminada de AppArmor impide que bubblewrap cree los espacios de nombres de usuario que necesita para el aislamiento.

101 157 

102 Para verificar si su entorno aplica esta restricción, incluso dentro de WSL2, ejecute `sysctl kernel.apparmor_restrict_unprivileged_userns`. Si el comando devuelve `0`, omita este paso. Si imprime un error `No such file or directory`, la clave no existe y puede omitir este paso. Si devuelve `1`, agregue un perfil de AppArmor que otorgue a `bwrap` esta capacidad:158 Para comprobar si tu entorno aplica esta restricción, incluso dentro de WSL2, ejecuta `sysctl kernel.apparmor_restrict_unprivileged_userns`. Si el comando devuelve `0`, omite este paso. Si muestra un error `No such file or directory`, la clave no existe y puedes omitir este paso. Si devuelve `1`, agrega un perfil de AppArmor que le otorgue esta capacidad a `bwrap`:

103 159 

104 ```bash theme={null}160 ```bash theme={null}

105 sudo tee /etc/apparmor.d/bwrap > /dev/null <<'EOF'161 sudo tee /etc/apparmor.d/bwrap > /dev/null <<'EOF'


113 EOF169 EOF

114 ```170 ```

115 171 

116 El perfil se aplica solo a `bwrap` en sí, no a los comandos que se ejecutan dentro del sandbox. Recargue AppArmor para aplicarlo:172 El perfil se aplica solo a `bwrap`, no a los comandos que ejecuta dentro del sandbox. Recarga AppArmor para aplicarlo:

117 173 

118 ```bash theme={null}174 ```bash theme={null}

119 sudo systemctl reload apparmor175 sudo systemctl reload apparmor

120 ```176 ```

121 </Accordion>177 </Accordion>

122 178 

123 <Accordion title="Notas de WSL2">179 <Accordion title="Notas sobre WSL2">

124 Verifique su versión de WSL con `wsl -l -v` desde PowerShell. Si ve `Sandboxing requires WSL2`, su distribución está ejecutando WSL1. Actualícela a WSL2 o ejecute Claude Code sin sandboxing.180 Comprueba tu versión de WSL con `wsl -l -v` desde PowerShell. Si ves `Sandboxing requires WSL2`, tu distribución está ejecutando WSL1. Actualízala a WSL2 o ejecuta Claude Code sin sandboxing.

125 181 

126 En WSL2, WSL entrega un lanzamiento de un binario de Windows como `cmd.exe`, `powershell.exe` o cualquier cosa bajo `/mnt/c/` al host de Windows a través de un socket Unix, por lo que si un comando aislado puede lanzar uno sigue la configuración [Unix-socket](/docs/es/settings-reference#sandbox-network-allowunixsockets) del sandbox: el filtro seccomp opcional tiene que estar instalado para bloquear el socket en primer lugar. Para permitir estos lanzamientos, establezca `allowAllUnixSockets`; para mantenerlos fuera del sandbox completamente, agregue el comando a [`excludedCommands`](/docs/es/settings-reference#sandbox-excludedcommands).182 En WSL2, WSL transfiere el lanzamiento de un binario de Windows, como `cmd.exe`, `powershell.exe` o cualquier cosa bajo `/mnt/c/`, al host de Windows a través de un socket Unix, por lo que que un comando del sandbox pueda lanzar uno depende de los [ajustes de sockets Unix](/docs/es/settings-reference#sandbox-network-allowunixsockets) del sandbox: el filtro seccomp opcional tiene que estar instalado para que el socket se bloquee en primer lugar. Para permitir estos lanzamientos, establece `allowAllUnixSockets`, que abre todos los sockets Unix a los comandos del sandbox.

127 </Accordion>183 </Accordion>

128</AccordionGroup>184</AccordionGroup>

129 185 

130<h3 id="sandbox-modes">186<h3 id="sandbox-modes">

131 Modos de sandbox187 Modos del sandbox

132</h3>188</h3>

133 189 

134Claude Code ofrece dos modos de sandbox. En ambos, el sandbox aplica las mismas restricciones de sistema de archivos y red; la diferencia es solo si los comandos aislados se aprueban automáticamente o requieren permiso explícito.190Claude Code ofrece dos modos del sandbox. En ambos, el sandbox aplica las mismas restricciones de sistema de archivos y de red; la diferencia está solo en si los comandos del sandbox se aprueban automáticamente o requieren permiso explícito.

135 191 

136<h4 id="auto-allow-mode">192<h4 id="auto-allow-mode">

137 Modo auto-allow193 Modo auto-allow

138</h4>194</h4>

139 195 

140Cuando un comando puede ser aislado, Claude Code lo ejecuta dentro del sandbox y lo aprueba automáticamente, sin pedirle permiso. Los comandos que no pueden ser aislados, como aquellos que necesitan acceso a la red a hosts no permitidos, vuelven al flujo de permiso regular, donde Claude Code verifica sus [reglas de permiso](/docs/es/permissions) y bloquea cualquier comando que esas reglas no permitan, con una solicitud en modo Manual.196Claude Code aprueba un comando automáticamente, sin pedir confirmación, cuando el comando se ejecuta dentro del sandbox. Un comando pasa por el [flujo de permisos](/docs/es/permissions) habitual cuando se ejecuta fuera del sandbox porque coincide con [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands) o porque Claude [lo reintenta fuera del sandbox](#the-unsandboxed-retry-escape-hatch).

197 

198Un comando del sandbox que se conecta a un host que no has permitido permanece en el sandbox. [Hosts fuera de tus dominios permitidos](#hosts-outside-your-allowed-domains) explica quién decide si la conexión se realiza.

141 199 

142Incluso en modo auto-allow, lo siguiente sigue siendo válido:200Incluso en el modo auto-allow, sigue aplicándose lo siguiente:

143 201 

144* Las [reglas de denegación](/docs/es/permissions) explícitas siempre se respetan202* Las [reglas de denegación](/docs/es/permissions) explícitas siempre se respetan

145* Los comandos `rm` o `rmdir` que apunten a una [ruta crítica](/docs/es/permission-modes#critical-paths) aún pasan por el flujo de permiso regular203* Los comandos `rm` o `rmdir` que apuntan a una [ruta crítica](/docs/es/permission-modes#critical-paths) siguen pasando por el flujo de permisos habitual

146* Las [reglas de solicitud](/docs/es/permissions) con alcance de contenido como `Bash(git push *)` aún fuerzan una solicitud incluso para comandos aislados204* Las [reglas de consulta](/docs/es/permissions) limitadas por contenido, como `Bash(git push *)`, siguen forzando una solicitud de permiso incluso para los comandos del sandbox

147* Una regla de solicitud `Bash` simple, o la forma equivalente `Bash(*)`, se omite para comandos que se ejecutan aislados; aún se aplica a comandos que vuelven al flujo de permiso regular. En [modo de plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode), la regla no se omite: solicita comandos aislados también, incluyendo los de solo lectura. Antes de v2.1.212, la omisión se aplicaba en modo de plan también205* Una regla de consulta `Bash` sin más, o la forma equivalente `Bash(*)`, se omite para los comandos que se ejecutan en el sandbox; sigue aplicándose a los comandos que recurren al flujo de permisos habitual. En el [modo plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode), la regla no se omite: también pide confirmación para los comandos del sandbox, incluidos los de solo lectura. Antes de la v2.1.212, la omisión también se aplicaba en el modo plan

148 206 

149<Info>207<Info>

150 El modo auto-allow funciona independientemente de su configuración de modo de permiso, con tres excepciones: [modo de plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode), un comando en modo automático que lleva [dominios permitidos por comando](#per-command-allowed-domains-in-auto-mode), y [revisión del clasificador del lado del servidor](/docs/es/permission-modes#how-the-classifier-evaluates-actions) de comandos aislados en modo automático. Incluso si no está en modo "aceptar ediciones", los comandos Bash aislados se ejecutan automáticamente cuando auto-allow está habilitado. Esto significa que los comandos Bash que modifican archivos dentro de los límites del sandbox se ejecutan sin solicitar, incluso en modo Manual, donde las herramientas de edición de archivos solicitarían.208 El modo auto-allow funciona de forma independiente de tu ajuste de modo de permisos, con tres excepciones: el [modo plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode), un comando del modo automático que lleva [dominios permitidos por comando](#per-command-allowed-domains-in-auto-mode) y la [revisión del clasificador del lado del servidor](/docs/es/permission-modes#how-the-classifier-evaluates-actions) de los comandos del sandbox en el modo automático. Aunque no estés en el modo "accept edits", los comandos de Bash del sandbox se ejecutan automáticamente cuando auto-allow está habilitado. Esto significa que los comandos de Bash que modifican archivos dentro de los límites del sandbox se ejecutan sin pedir confirmación, incluso en el modo Manual, donde las herramientas de edición de archivos sí la pedirían.

151 209 

152 En modo de plan, auto-allow no amplía las aprobaciones; consulte [modo de plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) para ver cómo Claude Code bloquea comandos mientras planifica. Antes de v2.1.212, auto-allow ejecutaba comandos aislados sin solicitud en modo de plan también.210 En el modo plan, auto-allow no amplía las aprobaciones; consulta el [modo plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) para ver cómo Claude Code controla los comandos mientras planificas. Antes de la v2.1.212, auto-allow también ejecutaba los comandos del sandbox sin pedir confirmación en el modo plan.

153</Info>211</Info>

154 212 

155<h4 id="regular-permissions-mode">213<h4 id="regular-permissions-mode">

156 Modo de permisos regulares214 Modo de permisos regulares

157</h4>215</h4>

158 216 

159Todos los comandos Bash pasan por el flujo de permiso regular, incluso cuando están aislados. Esto proporciona más control pero requiere más aprobaciones.217Todos los comandos de Bash pasan por el flujo de permisos habitual, incluso cuando se ejecutan en el sandbox. Esto proporciona más control, pero requiere más aprobaciones.

160 218 

161<h4 id="the-unsandboxed-retry-escape-hatch">219<h4 id="the-unsandboxed-retry-escape-hatch">

162 La salida de emergencia de reintento sin sandbox220 La vía de escape del reintento fuera del sandbox

163</h4>221</h4>

164 222 

165Algunos comandos no pueden ejecutarse dentro del sandbox en absoluto, como herramientas que son incompatibles con él o que necesitan un host que no ha permitido. Claude Code reporta violaciones de sandbox en el resultado del comando bloqueado, nombrando la ruta u host que el sandbox denegó, para que Claude vea qué bloqueó el sandbox. En lugar de fallar la tarea o requerirle que apague el sandboxing, Claude Code incluye una salida de emergencia: Claude analiza la violación y puede reintentar el comando con el parámetro `dangerouslyDisableSandbox`.223El reintento fuera del sandbox es una vía de escape para los comandos que fallan dentro del sandbox, como las herramientas que son incompatibles con él. Cuando el sandbox bloquea una conexión de red, Claude Code indica el host denegado en el resultado del comando, así Claude ve qué se bloqueó. Claude analiza el fallo y puede reintentar el comando con el parámetro `dangerouslyDisableSandbox`.

166 224 

167El comando reintentado se ejecuta fuera del sandbox, por lo que pasa por el flujo de permiso regular. En modo Manual obtiene una solicitud de confirmación. En [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), el clasificador evalúa el comando subyacente. Mientras [`permissions.blockReadsOutsideWorkingDirectories`](/docs/es/settings-reference#permissions-blockreadsoutsideworkingdirectories) esté activado, un reintento que necesita aprobación para ejecutarse fuera del sandbox le solicita en su lugar. Para que se le solicite en cada reintento sin sandbox incluso en modo automático, agregue una [regla de solicitud](/docs/es/permissions#match-by-input-parameter) para `Bash(dangerouslyDisableSandbox:true)`.225El comando reintentado se ejecuta fuera del sandbox. En una sesión interactiva de la terminal, quién lo aprueba depende de tu modo de permisos:

168 226 

169Puede deshabilitar esta salida de emergencia estableciendo `"allowUnsandboxedCommands": false` en su [configuración de sandbox](/docs/es/settings-reference#sandbox-settings). Con la salida de emergencia deshabilitada, Claude Code ignora el parámetro `dangerouslyDisableSandbox`, y cada comando que Claude ejecuta debe ejecutarse aislado a menos que lo haya listado en `excludedCommands`. La pestaña **Overrides** de `/sandbox` muestra esta configuración como **Strict sandbox mode**.227* **Modo `bypassPermissions`**: el reintento se ejecuta sin pedir confirmación

228* **Modo Manual y modo `acceptEdits`**: recibes una solicitud titulada "Bash command (unsandboxed)"

229* **[Modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode)**: un modelo clasificador independiente evalúa el comando subyacente

230* **Modo `dontAsk`**: Claude Code deniega el reintento

231* **Modo plan**: consulta [cómo Claude Code controla los comandos mientras planificas](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode)

170 232 

171El modo de sandbox estricto se aplica a los comandos que Claude ejecuta. Los comandos que usted escribe en el símbolo del sistema de modo shell [`!`](/docs/es/interactive-mode#shell-mode-with-prefix) se ejecutan fuera del sandbox a menos que la sesión sea una de estas:233Estas reglas y ajustes cambian quién aprueba el reintento:

234 

235* **Una regla de permiso que coincida**: si una regla de permiso como `Bash(curl *)` coincide con el comando, también aprueba el reintento, por lo que el comando se ejecuta fuera del sandbox sin pedir confirmación

236* **Una regla de consulta para el parámetro**: agrega una [regla de consulta](/docs/es/permissions#match-by-input-parameter) para `Bash(dangerouslyDisableSandbox:true)` para que se te pida confirmación en los reintentos de Bash. También recibes la solicitud en el modo automático y en el modo `bypassPermissions`, y la regla tiene precedencia sobre una regla de permiso que coincida

237* **[`permissions.blockReadsOutsideWorkingDirectories`](/docs/es/settings-reference#permissions-blockreadsoutsideworkingdirectories)**: [Acciones que ningún modo aprueba automáticamente](/docs/es/permission-modes#actions-no-mode-auto-approves) explica los reintentos que piden confirmación mientras está activado

238 

239<h4 id="turn-off-the-retry-with-strict-sandbox-mode">

240 Desactivar el reintento con el modo estricto del sandbox

241</h4>

172 242 

173* **Una [sesión de fondo](/docs/es/agent-view)**: el modo de sandbox estricto cubre comandos de modo shell también243Puedes desactivar el reintento fuera del sandbox estableciendo `"allowUnsandboxedCommands": false` en tu [configuración del sandbox](/docs/es/settings-reference#sandbox-settings). Con el reintento desactivado, Claude Code ignora el parámetro `dangerouslyDisableSandbox`. Mientras el sandbox está en ejecución, los comandos que ejecuta Claude se ejecutan entonces en el sandbox, a menos que coincidan con una entrada de `excludedCommands`. Para evitar que Claude Code ejecute comandos fuera del sandbox cuando este no puede iniciarse, establece también [`failIfUnavailable`](/docs/es/settings-reference#sandbox-failifunavailable). La pestaña **Overrides** de `/sandbox` muestra este ajuste como **Strict sandbox mode**.

174* **Una sesión de Linux con [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/es/env-vars#variables) establecido**: cada comando se ejecuta aislado, comandos de modo shell incluidos

175 244 

176Antes de v2.1.260, el modo de sandbox estricto aislaba comandos de modo shell en cada sesión.245Un `false` en tu configuración de usuario, en `--settings` o en la configuración administrada se mantiene incluso cuando la configuración de un proyecto establece `true`. Un `false` en tu configuración de usuario no convierte el sandbox en obligatorio por parte del administrador, por lo que los demás ajustes del sandbox de un proyecto siguen aplicándose. Antes de la v2.1.285, el `true` de un proyecto sobrescribía un `false` de tu configuración de usuario.

246 

247Si tú o tu administrador desactivan el reintento en la configuración administrada o con el flag `--settings`, el sandbox pasa a ser obligatorio por parte del administrador. Claude Code entonces ignora los ajustes de los archivos de un repositorio que relajan el sandbox, incluidas las entradas de `excludedCommands`. [Configuración del repositorio con un sandbox obligatorio por parte del administrador](#repository-settings-under-an-admin-required-sandbox) los enumera.

248 

249El modo estricto del sandbox se aplica a los comandos que ejecuta Claude. Los comandos que escribes tú mismo en el [prompt `!` del modo shell](/docs/es/interactive-mode#shell-mode-with-prefix) se ejecutan fuera del sandbox, a menos que la sesión sea una de estas:

250 

251* **Una [sesión en segundo plano](/docs/es/agent-view)**: el modo estricto del sandbox también cubre los comandos del modo shell

252* **Una sesión de Linux con [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/es/env-vars#variables) establecida**: todos los comandos se ejecutan en el sandbox, incluidos los del modo shell

253 

254Antes de la v2.1.260, el modo estricto del sandbox ejecutaba en el sandbox los comandos del modo shell en todas las sesiones.

177 255 

178<h4 id="temporary-directories">256<h4 id="temporary-directories">

179 Directorios temporales257 Directorios temporales

180</h4>258</h4>

181 259 

182El directorio temporal por usuario es escribible dentro del sandbox de forma predeterminada, junto con el directorio de trabajo. A menos que [deshabilite el aislamiento del sistema de archivos](#disable-filesystem-isolation), Claude Code establece `$TMPDIR` en este directorio para comandos aislados, por lo que las herramientas que escriben archivos temporales funcionan sin configuración adicional.260Un directorio temporal por usuario es escribible dentro del sandbox de forma predeterminada, junto con el directorio de trabajo. A menos que [desactives el aislamiento del sistema de archivos](#disable-filesystem-isolation), Claude Code establece `$TMPDIR` en este directorio para los comandos del sandbox, de modo que las herramientas que escriben archivos temporales funcionan sin configuración adicional.

183 261 

184Los comandos sin aislar heredan su `$TMPDIR` de shell cuando está establecido, por lo que mientras el aislamiento del sistema de archivos esté activado, los comandos aislados y sin aislar resuelven `$TMPDIR` a directorios diferentes. Si su shell deja `$TMPDIR` sin establecer o vacío, un comando sin aislar que hace referencia a `$TMPDIR` recibe su anulación [`CLAUDE_CODE_TMPDIR`](/docs/es/env-vars), o el directorio temporal del sistema operativo cuando no ha establecido uno o la anulación es una ruta larga, por lo que la variable no se expande a una cadena vacía. Para pasar archivos temporales entre los dos, escríbalos en el directorio de trabajo en su lugar.262Los comandos fuera del sandbox heredan el `$TMPDIR` de tu shell cuando está establecido, así que, mientras el aislamiento del sistema de archivos está activado, los comandos dentro y fuera del sandbox resuelven `$TMPDIR` en directorios distintos. Si tu shell deja `$TMPDIR` sin establecer o vacío, un comando fuera del sandbox que hace referencia a `$TMPDIR` recibe tu sobrescritura de [`CLAUDE_CODE_TMPDIR`](/docs/es/env-vars), o el directorio temporal del sistema operativo cuando no has establecido ninguna o la sobrescritura es una ruta larga, para que la variable no se expanda a una cadena vacía. Para pasar archivos temporales entre ambos, escríbelos en el directorio de trabajo.

185 263 

186<h2 id="configure-sandboxing">264<h2 id="configure-sandboxing">

187 Configurar sandboxing265 Configurar el sandboxing

188</h2>266</h2>

189 267 

190Personalice el comportamiento del sandbox a través de su archivo `settings.json`. Consulte [Configuración](/docs/es/settings-reference#sandbox-settings) para obtener la referencia de configuración completa.268Personaliza el comportamiento del sandbox a través de tu archivo `settings.json`. Consulta [Configuración](/docs/es/settings-reference#sandbox-settings) para ver la referencia completa de configuración.

191 269 

192De forma predeterminada, los comandos aislados pueden escribir en el directorio de trabajo actual, el directorio temporal de la sesión y cualquier [directorio que haya agregado](/docs/es/permissions#additional-directories-grant-file-access-not-configuration) con `--add-dir`, `/add-dir` o `permissions.additionalDirectories`. Si comandos de subproceso como `kubectl`, `terraform` o `npm` necesitan escribir fuera de esos directorios, use `sandbox.filesystem.allowWrite` para otorgar acceso a rutas específicas:270De 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](/docs/es/permissions#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:

193 271 

194```json theme={null}272```json theme={null}

195{273{


202}280}

203```281```

204 282 

205Estas rutas se aplican a nivel del sistema operativo, por lo que todos los comandos que se ejecutan dentro del sandbox, incluidos sus procesos secundarios, 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`.283Estas 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`.

206 284 

207Cuando define el mismo array del sistema de archivos en múltiples [ámbitos de configuración](/docs/es/settings#settings-precedence), Claude Code los fusiona, combinando rutas de cada ámbito en lugar de reemplazar el array de un ámbito con otro.285Cuando defines el mismo arreglo de sistema de archivos en varios [alcances de configuración](/docs/es/settings#settings-precedence), Claude Code los combina, uniendo las rutas de todos los alcances en lugar de reemplazar el arreglo de un alcance con el de otro.

208 286 

209Si excluye una fuente con [`--setting-sources`](/docs/es/cli-reference) en la CLI o [`settingSources`](/docs/es/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources) en el Agent SDK, Claude Code ignora sus entradas `sandbox.filesystem`, sus reglas de permiso `Edit` y sus reglas de denegación `Read` al construir la configuración del sandbox. Requiere Claude Code v2.1.246 o posterior.287Si excluyes una fuente con [`--setting-sources`](/docs/es/cli-reference) en la CLI o con [`settingSources`](/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.

210 288 

211Cuando edita estas listas del sistema de archivos durante una sesión, Claude Code [aplica el cambio a la sesión en ejecución](/docs/es/settings#when-edits-take-effect), por lo que el siguiente comando aislado se ejecuta bajo las nuevas rutas.289Cuando editas estas listas del sistema de archivos durante una sesión, Claude Code [aplica el cambio a la sesión en ejecución](/docs/es/settings#when-edits-take-effect), por lo que el siguiente comando aislado en el sandbox se ejecuta con las nuevas rutas.

212 290 

213Los prefijos de ruta controlan cómo se resuelven las rutas:291Los prefijos de ruta controlan cómo se resuelven las rutas:

214 292 

215| Prefijo | Significado | Ejemplo |293| Prefijo | Significado | Ejemplo |

216| :- | :- | :- |294| :- | :- | :- |

217| `/` | Ruta absoluta desde la raíz del sistema de archivos | `/tmp/build` se mantiene como `/tmp/build` |295| `/` | Ruta absoluta desde la raíz del sistema de archivos | `/tmp/build` sigue siendo `/tmp/build` |

218| `~/` | Relativo al directorio de inicio | `~/.kube` se convierte en `$HOME/.kube` |296| `~/` | Relativa al directorio home | `~/.kube` se convierte en `$HOME/.kube` |

219| `./` o sin prefijo | Relativo a la raíz del proyecto para configuración de proyecto, o a `~/.claude` para configuración de usuario | `./output` en `.claude/settings.json` se resuelve a `<project-root>/output` |297| `./` o sin prefijo | Relativa a la raíz del proyecto en la configuración del proyecto, o a `~/.claude` en la configuración de usuario | `./output` en `.claude/settings.json` se resuelve como `<project-root>/output` |

220 298 

221Esta sintaxis difiere de las [reglas de permiso Read y Edit](/docs/es/permissions#read-and-edit), que usan `//path` para absoluto y `/path` para relativo al proyecto. Las rutas del sistema de archivos del sandbox usan convenciones estándar: `/tmp/build` es absoluto. Para saber cómo Claude Code trata una barra diagonal final o un comodín en estas rutas, consulte [Prefijos de ruta del sandbox](/docs/es/settings-reference#sandbox-path-prefixes).299Esta sintaxis difiere de las [reglas de permisos de Read y Edit](/docs/es/permissions#read-and-edit), que usan `//path` para rutas absolutas y `/path` para rutas relativas al proyecto. Las rutas del sistema de archivos del sandbox usan las convenciones estándar: `/tmp/build` es absoluta. Para saber cómo trata Claude Code una barra final o un comodín en estas rutas, consulta [Prefijos de ruta del sandbox](/docs/es/settings-reference#sandbox-path-prefixes).

222 300 

223También puede denegar acceso de escritura o lectura usando `sandbox.filesystem.denyWrite` y `sandbox.filesystem.denyRead`, y permitir nuevamente rutas específicas dentro de una región denegada usando `sandbox.filesystem.allowRead`. Cuando las reglas de lectura se superponen, la ruta más específica gana:301Tambié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:

224 302 

225| Reglas de ejemplo | Resultado |303| Reglas de ejemplo | Resultado |

226| :- | :- |304| :- | :- |

227| `"denyRead": ["~/"]` con `"allowRead": ["~/projects"]` | `~/projects` es legible y el resto del directorio de inicio permanece bloqueado. El permiso más estrecho reabre esa parte de la región denegada |305| `"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 |

228| `"allowRead": ["~/"]` con `"denyRead": ["~/.env"]` | `~/.env` permanece bloqueado y el resto del directorio de inicio es legible. La denegación se mantiene dentro de un permiso más amplio, por lo que un permiso amplio no puede reexponer silenciosamente un secreto |306| `"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 |

229| `"allowRead": ["~/"]` con `"denyRead": ["~/**/.env"]` | Cada `.env` bajo el directorio de inicio permanece bloqueado y el resto es legible. Un [comodín de denegación](/docs/es/settings-reference#sandbox-path-prefixes) se mantiene dentro de un permiso más amplio de la misma manera que una ruta exacta |307| `"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](/docs/es/settings-reference#sandbox-path-prefixes) se mantiene dentro de un permiso más amplio de la misma forma que una ruta exacta |

230 308 

231El ejemplo a continuación bloquea la lectura de todo el directorio de inicio mientras aún permite lecturas del proyecto actual. Colóquelo en el `.claude/settings.json` de su proyecto, porque la ruta relativa `.` se resuelve a la raíz del proyecto solo cuando la configuración se encuentra en la configuración del proyecto:309El 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:

232 310 

233```json theme={null}311```json theme={null}

234{312{


242}320}

243```321```

244 322 

245Si colocara la misma configuración en `~/.claude/settings.json`, `.` se resolvería a `~/.claude` en su lugar, y los archivos del proyecto permanecerían bloqueados por la regla `denyRead`.323Si 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`.

324 

325Para 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`](/docs/es/settings-reference#permissions-blockreadsoutsideworkingdirectories) en lugar de escribir reglas de rutas.

326 

327<h3 id="run-commands-outside-the-sandbox-with-excludedcommands">

328 Ejecutar comandos fuera del sandbox con `excludedCommands`

329</h3>

330 

331Agrega un patrón de comando a [`sandbox.excludedCommands`](/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.

332 

333Este ejemplo saca del sandbox los comandos `docker compose`. Guárdalo en `~/.claude/settings.json` para aplicarlo a todos tus proyectos:

334 

335```json theme={null}

336{

337 "sandbox": {

338 "enabled": true,

339 "excludedCommands": ["docker compose *"]

340 }

341}

342```

343 

344Claude 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:

345 

346* **Termina el patrón con ` *`**: las entradas usan la misma sintaxis que una [regla de permisos](/docs/es/permissions#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

347* **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`

348* **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`

349* **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](/docs/es/settings-reference#sandbox-excludedcommands) enumera más llamadas que permanecen en el sandbox

350* **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`

351 

352Un comando excluido pasa por el flujo de permisos habitual:

353 

354* Los [comandos de solo lectura](/docs/es/permissions#read-only-commands) y los comandos que cubren tus reglas de permiso se ejecutan sin pedir confirmación

355* En modo automático, el clasificador revisa los demás comandos excluidos

356* En modo `bypassPermissions`, un comando excluido se ejecuta sin pedir confirmación a menos que coincida con una regla de consulta

246 357 

247Para denegar a los comandos aislados acceso de lectura a directorios de inicio y volúmenes montados mientras se mantienen los directorios de trabajo legibles, establezca [`permissions.blockReadsOutsideWorkingDirectories`](/docs/es/settings-reference#permissions-blockreadsoutsideworkingdirectories) en su lugar de escribir reglas de ruta.358Para confirmar que una entrada coincide, cambia al modo Manual y pídele a Claude que ejecute un comando coincidente que cambie algo, como `docker compose up -d`. La solicitud de permiso se titula "Bash command (unsandboxed)".

359 

360<Warning>

361 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.

362</Warning>

248 363 

249<h3 id="disable-filesystem-isolation">364<h3 id="disable-filesystem-isolation">

250 Deshabilitar aislamiento del sistema de archivos365 Desactivar el aislamiento del sistema de archivos

251</h3>366</h3>

252 367 

253Establezca `sandbox.filesystem.disabled` en `true` para omitir el aislamiento del sistema de archivos mientras se mantiene el aislamiento de red. El ejemplo a continuación desactiva el aislamiento del sistema de archivos mientras se mantiene una lista de permitidos de dominios de red:368Establece `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:

254 369 

255```json theme={null}370```json theme={null}

256{371{


266}381}

267```382```

268 383 

269El sandbox tiene dos capas independientes: el [aislamiento del sistema de archivos](#filesystem-isolation) controla qué rutas pueden leer y escribir los comandos aislados, y el [aislamiento de red](#network-isolation) controla qué dominios pueden alcanzar. Con la capa del sistema de archivos desactivada, los comandos aislados obtienen acceso de lectura y escritura sin restricciones al sistema de archivos del host, mientras que su salida de red permanece confinada a sus dominios permitidos. Desactive la capa cuando aisle para controlar dónde se conectan los comandos en lugar de lo que escriben.384El 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.

270 385 

271La configuración está desactivada de forma predeterminada y se aplica en las plataformas donde se ejecuta el sandbox: macOS, Linux y WSL2. Requiere Claude Code v2.1.216 o posterior.386El ajuste está desactivado de forma predeterminada y se aplica en las plataformas donde se ejecuta el sandbox: macOS, Linux y WSL2. Requiere Claude Code v2.1.216 o posterior.

272 387 

273<Warning>388<Warning>

274 Con el aislamiento del sistema de archivos desactivado y los comandos permitidos automáticamente, un comando aislado puede escribir archivos que comandos posteriores ejecuten o lean, como archivos de inicio de shell, ejecutables en `$PATH` o `~/.claude/settings.json`, y usarlos para ampliar su propio acceso en la siguiente ejecución. Establezca `filesystem.disabled` en `true` solo para cargas de trabajo en las que confía que no escalen su propio acceso. Bloquear 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.389 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.

275</Warning>390</Warning>

276 391 

277<h4 id="which-settings-can-disable-it">392<h4 id="which-settings-can-disable-it">

278 Qué configuraciones pueden deshabilitarlo393 Qué configuraciones pueden desactivarlo

279</h4>394</h4>

280 395 

281Debido a que desactivar el aislamiento del sistema de archivos amplía lo que pueden hacer los comandos aislados, Claude Code honra `filesystem.disabled` solo desde estas fuentes de configuración:396Como 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:

282 397 

283* La configuración de usuario, la configuración administrada y la bandera CLI `--settings` pueden establecerla. La configuración del proyecto en `.claude/settings.json` y `.claude/settings.local.json` no puede, por lo que un proyecto extraído no puede desactivar el aislamiento del sistema de archivos.398* 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.

284* Cuando la configuración administrada configura `sandbox.filesystem` en absoluto, o enumera cualquier entrada `sandbox.credentials.files` con `"mode": "deny"`, solo la configuración administrada puede establecer la clave. Esto mantiene las restricciones del sistema de archivos implementadas por el administrador en vigor; para relajar tal implementación, establezca `"disabled": true` en la configuración administrada.399* 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 mantiene vigentes las restricciones del sistema de archivos desplegadas por el administrador; para flexibilizar un despliegue así, establece `"disabled": true` en la configuración administrada.

285* Cuando [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/es/env-vars) está establecido, Claude Code ignora `filesystem.disabled` de cada fuente, incluida la configuración administrada, y mantiene el aislamiento del sistema de archivos activado.400* Cuando [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/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.

286 401 

287Si una entrada de credenciales administrada `credentials.files` fija `filesystem.disabled`, bloqueando la clave a la configuración administrada para que los desarrolladores no puedan desactivar el aislamiento del sistema de archivos, depende del `mode` de la entrada y de lo que sucede con la entrada cuando se inicia el sandbox:402Si una entrada administrada de `credentials.files` fija `filesystem.disabled`, bloqueando la clave a la configuración administrada para que los desarrolladores no puedan desactivar el aislamiento del sistema de archivos, depende del `mode` de la entrada y de lo que le ocurre a la entrada cuando se inicia el sandbox:

288 403 

289| Entrada administrada | Fija `filesystem.disabled` | Qué protege el archivo cuando el aislamiento está desactivado |404| Entrada administrada | Fija `filesystem.disabled` | Qué protege el archivo cuando el aislamiento está desactivado |

290| - | - | - |405| - | - | - |

291| `"mode": "deny"` | Sí | Nada: el bloqueo de lectura es parte de la capa del sistema de archivos |406| `"mode": "deny"` | Sí | Nada: el bloqueo de lectura forma parte de la capa del sistema de archivos |

292| `"mode": "mask"`, aplicado como máscara | No | El enmascaramiento en sí: la [copia centinela y proxy](#mask-credential-files) en Linux y WSL2, las propias reglas de lectura del sandbox en macOS |407| `"mode": "mask"`, aplicada como máscara | No | El propio enmascaramiento: la [copia centinela y el proxy](#mask-credential-files) en Linux y WSL2, y las propias reglas de lectura del sandbox en macOS |

293| `"mode": "mask"`, [retrocedido a `deny`](#mask-credential-files) en la configuración | No | Nada, igual que `deny`. Enumere una ruta que no se pueda enmascarar, como un directorio, como una entrada explícita `deny`, que fija la clave |408| `"mode": "mask"`, [que recurrió a `deny`](#mask-credential-files) durante la configuración | No | Nada, igual que `deny`. Incluye una ruta que no se puede enmascarar, como un directorio, como una entrada `deny` explícita, que fija la clave |

294| `"mode": "mask"`, [degradado a `deny` por validación](/docs/es/managed-settings#invalid-entries-in-managed-settings) | Sí, como una entrada explícita `deny` | Nada, igual que `deny` |409| `"mode": "mask"`, [degradada a `deny` por la validación](/docs/es/managed-settings#invalid-entries-in-managed-settings) | Sí, como un `deny` explícito | Nada, igual que `deny` |

295 410 

296Un retroceso ocurre cuando se inicia el sandbox, después de que Claude Code ya haya leído la configuración en la que se ejecuta la verificación de fijación, por lo que una entrada retrocedida nunca fija. La validación reescribe una entrada inválida a `deny` mientras se carga la configuración, por lo que una entrada degradada fija como una que escribió como `deny`.411El recurso a `deny` ocurre cuando se inicia el sandbox, después de que Claude Code ya leyó la configuración sobre la que se ejecuta la comprobación de fijación, por lo que una entrada que recurrió a `deny` nunca fija la clave. La validación reescribe una entrada no válida como `deny` mientras se carga la configuración, por lo que una entrada degradada fija la clave igual que una que escribiste como `deny`.

297 412 

298<h4 id="what-changes-when-filesystem-isolation-is-off">413<h4 id="what-changes-when-filesystem-isolation-is-off">

299 Qué cambia cuando el aislamiento del sistema de archivos está desactivado414 Qué cambia cuando el aislamiento del sistema de archivos está desactivado

300</h4>415</h4>

301 416 

302Establecer `filesystem.disabled` levanta las protecciones que la capa del sistema de archivos en sí misma aplica. Las protecciones que otras capas aplican siguen aplicándose:417Establecer `filesystem.disabled` elimina las protecciones que aplica la propia capa del sistema de archivos. Las protecciones que aplican otras capas siguen vigentes:

303 418 

304| Protección | Con aislamiento del sistema de archivos desactivado |419| Protección | Con el aislamiento del sistema de archivos desactivado |

305| - | - |420| - | - |

306| `filesystem.denyRead` y [`credentials.files`](#protect-credentials) bloques de lectura `deny` | No se aplica. La capa del sistema de archivos aplica ambos |421| 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 |

307| `credentials.envVars` entradas `deny` y `mask` | Se aplica. El raspado de variables de entorno es independiente de la capa del sistema de archivos |422| Entradas `deny` y `mask` de `credentials.envVars` | Se aplican. La limpieza de variables de entorno es independiente de la capa del sistema de archivos |

308| Entradas [`credentials.files` `mask`](#mask-credential-files) aplicadas como máscaras | Se aplica: el enmascaramiento es independiente de la capa del sistema de archivos. Una entrada que [retrocedió a `deny`](#mask-credential-files) no se aplica, como cualquier entrada `deny` |423| [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` |

309 424 

310Dos otras cosas cambian:425Cambian otras dos cosas:

311 426 

312* Los comandos aislados heredan el `$TMPDIR` de su shell en lugar del directorio temporal de la sesión, porque cada directorio temporal es escribible y Claude Code ya no redirige los comandos al de la sesión.427* 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.

313 428 

314 En Linux la variable a menudo no está establecida en el shell padre. La orientación de herramienta Bash le dice a Claude que cree directorios de trabajo con `mktemp -d` en lugar de confiar en `$TMPDIR`.429 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`.

315* [`autoAllowBashIfSandboxed`](/docs/es/settings-reference#sandbox-autoallowbashifsandboxed) aún tiene como valor predeterminado `true`, por lo que los comandos aislados siguen ejecutándose sin indicadores. Establézcalo en `false` para solicitar comandos aislados.430* [`autoAllowBashIfSandboxed`](/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.

316 431 

317<h3 id="protect-credentials">432<h3 id="protect-credentials">

318 Proteger credenciales433 Proteger credenciales

319</h3>434</h3>

320 435 

321La configuración `sandbox.credentials` declara archivos de credenciales y variables de entorno a proteger de los comandos aislados. Cada entrada nombra una ruta de archivo o una variable de entorno y un `mode`. El bloque dedicado `credentials` mantiene las reglas de credenciales agrupadas juntas y separadas de las reglas generales del sistema de archivos.436El 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.

322 437 

323Para entradas con `"mode": "deny"`, las rutas de archivo se deniegan para lecturas dentro del sandbox, la misma restricción que aplica `filesystem.denyRead`, y las variables de entorno se desactivan antes de que se ejecute cada comando aislado. La protección de archivo es parte de la capa del sistema de archivos, por lo que no se aplica si [deshabilita el aislamiento del sistema de archivos](#disable-filesystem-isolation); la protección de variable de entorno aún lo hace.438En 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.

324 439 

325El ejemplo a continuación bloquea las lecturas del archivo de credenciales de AWS y el directorio SSH y elimina `GITHUB_TOKEN` y `NPM_TOKEN` del entorno de los comandos aislados:440El 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:

326 441 

327```json theme={null}442```json theme={null}

328{443{


342}457}

343```458```

344 459 

345Las entradas de variables de entorno y archivo también aceptan `"mode": "mask"`, descrito bajo [Enmascarar credenciales](#mask-credentials).460Las entradas de variables de entorno y de archivos también aceptan `"mode": "mask"`, que se describe en [Enmascarar credenciales](#mask-credentials).

346 461 

347Las rutas de archivo siguen las mismas [reglas de prefijo](/docs/es/settings-reference#sandbox-path-prefixes) que las configuraciones `sandbox.filesystem.*`.462Las rutas de archivo siguen las mismas [reglas de prefijos](/docs/es/settings-reference#sandbox-path-prefixes) que los ajustes `sandbox.filesystem.*`.

348 463 

349Claude Code fusiona las entradas `deny` de cada [ámbito de configuración](/docs/es/settings#settings-precedence) que carga la sesión. Una entrada `deny` solo estrecha el acceso, por lo que cualquier ámbito puede agregar una, pero ningún ámbito puede eliminar una que otro ámbito haya agregado.464Claude Code combina las entradas `deny` de todos los [alcances de configuración](/docs/es/settings#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.

350 465 

351Cuando [excluye una fuente de configuración](#configure-sandboxing):466Cuando [excluyes una fuente de configuración](#configure-sandboxing):

352 467 

353* **Configuración de proyecto o local**: Claude Code no aplica ninguna de sus entradas `credentials`. Requiere Claude Code v2.1.246 o posterior.468* **Configuración del proyecto o local**: Claude Code no aplica ninguna de sus entradas de `credentials`. Requiere Claude Code v2.1.246 o posterior.

354* **Configuración de usuario**: Claude Code aún aplica las entradas `deny` en `~/.claude/settings.json` y mantiene sus entradas `mask` de [archivo](#mask-credential-files) como restricciones, pero descarta sus entradas `mask` de [variable de entorno](#mask-environment-variables).469* **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, pero descarta sus [entradas `mask` de variables de entorno](#mask-environment-variables).

355 470 

356No hay una lista de denegación de credenciales integrada, por lo que solo los archivos y variables que enumere están restringidos.471No hay una lista de denegación de credenciales integrada, por lo que solo se restringen los archivos y las variables que indiques.

357 472 

358`sandbox.credentials` afecta solo a los comandos Bash aislados. Para eliminar las credenciales de todos los subprocesos independientemente del sandboxing, establezca [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/es/env-vars).473`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`](/docs/es/env-vars).

359 474 

360<h3 id="mask-credentials">475<h3 id="mask-credentials">

361 Enmascarar credenciales476 Enmascarar credenciales

362</h3>477</h3>

363 478 

364El enmascaramiento va más allá de una entrada `deny` bajo [Proteger credenciales](#protect-credentials). En lugar de bloquear una credencial, Claude Code muestra a los comandos aislados un marcador de posición, el centinela, y el [proxy del sandbox](#network-isolation) intercambia el valor real en solicitudes salientes a hosts que permite. Para archivos, la sustitución es comportamiento de Linux y WSL2; [macOS bloquea el archivo en su lugar](#mask-credential-files).479El enmascaramiento va más allá de una entrada `deny` de [Proteger credenciales](#protect-credentials). En lugar de bloquear una credencial, Claude Code muestra a los comandos aislados en el sandbox un marcador, el centinela, y el [proxy del sandbox](#network-isolation) lo sustituye por el valor real en las solicitudes salientes a los hosts que permitas. En el caso de los archivos, la sustitución es el comportamiento de Linux y WSL2; [macOS bloquea el archivo en su lugar](#mask-credential-files).

365 480 

366<h4 id="mask-environment-variables">481<h4 id="mask-environment-variables">

367 Enmascarar variables de entorno482 Enmascarar variables de entorno

368</h4>483</h4>

369 484 

370`"mode": "mask"` protege una credencial mientras mantiene funcionando las herramientas que se autentican con ella. `deny` elimina la variable por completo, lo que también rompe las herramientas que la necesitan, como `gh` o `npm`. Requiere Claude Code v2.1.199 o posterior.485`"mode": "mask"` protege una credencial y mantiene funcionando las herramientas que se autentican con ella. `deny` elimina la variable por completo, lo que también rompe las herramientas que la necesitan, como `gh` o `npm`. Requiere Claude Code v2.1.199 o posterior.

371 486 

372Con `mask`, el comando aislado ve un valor centinela por sesión en lugar del real. Cada entrada `mask` puede enumerar `injectHosts`, los hosts a los que se permite que el valor real llegue. Cuando una solicitud sale del sandbox para uno de ellos, el [proxy del sandbox](#network-isolation) reemplaza el centinela con el valor real. El comando y cualquier cosa que registre nunca contienen la credencial real, pero sus solicitudes aún se autentican.487Con `mask`, el comando aislado en el sandbox ve un valor centinela por sesión en lugar del real. Cada entrada `mask` puede incluir `injectHosts`, los hosts a los que puede llegar el valor real. Cuando una solicitud sale del sandbox hacia uno de ellos, el [proxy del sandbox](#network-isolation) reemplaza el centinela por el valor real. El comando y todo lo que registra nunca contienen la credencial real, pero sus solicitudes se siguen autenticando.

373 488 

374El proxy sustituye la credencial dentro del contenido de la solicitud, por lo que tiene que verla. Establezca [`network.tlsTerminate`](/docs/es/settings-reference#sandbox-network-tlsterminate) para que el proxy termine TLS por sí mismo.489El proxy sustituye la credencial dentro del contenido de la solicitud, por lo que necesita verlo. Configura [`network.tlsTerminate`](/docs/es/settings-reference#sandbox-network-tlsterminate) para que el proxy termine TLS por sí mismo.

375 490 

376Sin él, el enmascaramiento falla sin exponer nada: el comando aún ve solo el centinela, pero el centinela llega al servidor sin cambios y la autenticación falla. Claude Code reporta esta configuración incorrecta al inicio.491Sin 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. Claude Code informa de esta configuración incorrecta al iniciar.

377 492 

378La sustitución cubre encabezados y cuerpos de solicitud. Las solicitudes que se autentican con una firma derivada de la credencial, en lugar de la credencial en sí, necesitan re-firmarse en el proxy; [Re-firmar solicitudes de AWS](#re-sign-aws-requests) cubre cómo funciona eso para AWS.493La sustitución abarca los encabezados y los cuerpos de las solicitudes. Las solicitudes que se autentican con una firma derivada de la credencial, en lugar de con la credencial misma, necesitan volver a firmarse en el proxy; [Volver a firmar solicitudes de AWS](#re-sign-aws-requests) explica cómo funciona esto para AWS.

379 494 

380El proxy inyecta solo en conexiones que la [lista de permitidos de dominio](#network-isolation) admite, por lo que cada destino `injectHosts` también debe ser alcanzable a través de `network.allowedDomains`.495El proxy solo inyecta en las conexiones que admite la [lista de dominios permitidos](#network-isolation), por lo que cada destino de `injectHosts` también debe ser accesible a través de `network.allowedDomains`.

381 496 

382El ejemplo a continuación enmascara dos tokens. `GH_TOKEN` se sustituye solo en solicitudes a `api.github.com`, mientras que `NPM_TOKEN` no tiene `injectHosts` y se sustituye en solicitudes a cada host en `network.allowedDomains`.497El 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`.

383 498 

384```json theme={null}499```json theme={null}

385{500{


399}514}

400```515```

401 516 

402<span id="ipv6-destinations-in-injecthosts" />Deletree un destino IPv6 de manera diferente en las dos listas, porque cada lista tiene su propio comparador:517<span id="ipv6-destinations-in-injecthosts" />Escribe un destino IPv6 de forma distinta en las dos listas, porque cada lista tiene su propio matcher:

403 518 

404* **`network.allowedDomains`**: la [forma entre corchetes que usan las listas de dominios](#ipv6-addresses-in-domain-lists), como `"[::1]"`. El proxy verifica esta lista para admitir la conexión.519* **`network.allowedDomains`**: la [forma entre corchetes que usan las listas de dominios](#ipv6-addresses-in-domain-lists), como `"[::1]"`. El proxy comprueba esta lista para admitir la conexión.

405* **`injectHosts`**: la dirección desnuda en su forma canónica comprimida, como `"::1"` o `"2001:db8::1"`. El proxy compara cada entrada contra la dirección de destino desnuda de la conexión, ignorando puertos, por lo que una ortografía entre corchetes, con ID de zona o comprimida de manera diferente nunca coincide y el proxy nunca inyecta la credencial allí.520* **`injectHosts`**: la dirección sin corchetes en su forma canónica comprimida, como `"::1"` o `"2001:db8::1"`. El proxy compara cada entrada 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 y el proxy nunca inyecta la credencial allí.

406 521 

407`claude doctor` marca entradas `injectHosts` que nunca pueden coincidir con la advertencia `Sandbox credential injectHosts entries can never match their destination`. Esta verificación requiere Claude Code v2.1.229 o posterior.522`claude doctor` marca las entradas de `injectHosts` 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.

408 523 

409A diferencia de `deny`, el enmascaramiento autoriza al proxy a enviar su credencial real a los hosts enumerados, por lo que Claude Code lo honra solo desde configuraciones que usted o su administrador controlan: configuración de usuario, configuración administrada y la bandera CLI `--settings`. Claude Code ignora entradas `mask` en el `.claude/settings.json` o `.claude/settings.local.json` de un repositorio. En esos archivos también ignora `network.tlsTerminate` y [`credentials.allowPlaintextInject`](/docs/es/settings-reference#sandbox-credentials-allowplaintextinject), la configuración que permite al proxy inyectar credenciales en solicitudes sin cifrar. Si [excluye la configuración de usuario](#configure-sandboxing), Claude Code descarta las entradas `mask` de variable de entorno en `~/.claude/settings.json` también.524A diferencia de `deny`, el enmascaramiento autoriza al proxy a enviar tu credencial real a los hosts indicados, por lo que Claude Code lo respeta solo desde configuraciones que tú o tu administrador controlan: la configuración de usuario, la configuración administrada y el flag de CLI `--settings`. Claude Code ignora las entradas `mask` en el `.claude/settings.json` o el `.claude/settings.local.json` de un repositorio. En esos archivos también ignora `network.tlsTerminate` y [`credentials.allowPlaintextInject`](/docs/es/settings-reference#sandbox-credentials-allowplaintextinject), el ajuste que permite al proxy inyectar credenciales en solicitudes sin cifrar. Si [excluyes la configuración de usuario](#configure-sandboxing), Claude Code también descarta las entradas `mask` de variables de entorno en `~/.claude/settings.json`.

410 525 

411Cuando su administrador entrega entradas `mask`, `network.tlsTerminate` o `credentials.allowPlaintextInject` a través de configuración administrada por servidor, cuentan como [configuraciones que necesitan aprobación](/docs/es/server-managed-settings#security-approval-dialogs).526Cuando 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](/docs/es/server-managed-settings#security-approval-dialogs).

412 527 

413Cuando la misma variable se enumera con `deny` en cualquier ámbito, `deny` tiene prioridad.528Cuando la misma variable aparece con `deny` en cualquier alcance, `deny` tiene precedencia.

414 529 

415El enmascaramiento reemplaza el valor completo de la variable de forma predeterminada, lo que se adapta a un token desnudo. Los campos de entrada opcionales, que requieren Claude Code v2.1.224 o posterior, manejan valores con estructura:530De forma predeterminada, el enmascaramiento reemplaza el valor completo de la variable, lo que es adecuado para un token simple. Los campos opcionales de la entrada, que requieren Claude Code v2.1.224 o posterior, manejan valores con estructura:

416 531 

417* `extract`: una expresión regular que Claude Code aplica en todo el valor, reemplazando solo el texto capturado por el grupo 1 de cada coincidencia, por lo que una herramienta que analiza el valor, como una cadena de conexión `DATABASE_URL`, aún funciona dentro del sandbox. El patrón debe contener al menos un grupo de captura.532* `extract`: una expresión regular que Claude Code aplica a todo el valor y que reemplaza solo el texto capturado por el grupo 1 de cada coincidencia, de modo que una herramienta que analiza el valor, como una cadena de conexión `DATABASE_URL`, sigue funcionando dentro del sandbox. El patrón debe contener al menos un grupo de captura.

418* `onExtractNoMatch` controla qué sucede cuando el patrón no coincide con nada:533* `onExtractNoMatch` controla qué ocurre cuando el patrón no coincide con nada:

419 * `warn`, el valor predeterminado, advierte y pasa la variable sin enmascarar534 * `warn`, el valor predeterminado, muestra una advertencia y deja pasar la variable sin enmascarar

420 * `deny` desactiva la variable dentro del sandbox535 * `deny` elimina la variable dentro del sandbox

421 * `error` detiene la configuración del sandbox hasta que corrija la configuración536 * `error` detiene la configuración del sandbox hasta que corrijas la configuración

422* `decode: "jwt"`: para una variable que contiene un JSON Web Token (JWT). Claude Code verifica que el valor sea un JWT y lo reemplaza con un token falso estructuralmente válido, por lo que el código dentro del sandbox que decodifica el token sigue funcionando. Agregue `maskClaims` para enumerar reclamaciones de carga útil de nivel superior para enmascarar individualmente en lugar de reemplazar el token completo; las otras reclamaciones permanecen legibles. Cuando el valor no se verifica como JWT, o ninguna reclamación enumerada coincide, Claude Code pasa la variable sin enmascarar con una advertencia. `decode` no se puede combinar con `extract`.537* `decode: "jwt"`: para una variable que contiene un JSON Web Token (JWT). Claude Code verifica que el valor sea un JWT y lo reemplaza con un token falso estructuralmente válido, de modo que el código dentro del sandbox que decodifica el token sigue funcionando. Agrega `maskClaims` para indicar claims de nivel superior del payload que se deben enmascarar individualmente en lugar de reemplazar todo el token; los demás claims siguen siendo legibles. Cuando el valor no se verifica como JWT, o ningún claim indicado coincide, Claude Code deja pasar la variable sin enmascarar con una advertencia. `decode` no se puede combinar con `extract`.

423 538 

424Consulte las [filas `credentials.envVars[]` en la referencia de configuración](/docs/es/settings-reference#sandbox-settings) para la lista de campos completa.539Consulta las [filas de `credentials.envVars[]` en la referencia de configuración](/docs/es/settings-reference#sandbox-settings) para ver la lista completa de campos.

425 540 

426<h4 id="re-sign-aws-requests">541<h4 id="re-sign-aws-requests">

427 Re-firmar solicitudes de AWS542 Volver a firmar solicitudes de AWS

428</h4>543</h4>

429 544 

430Las solicitudes de AWS llevan firmas SigV4 sobre el contenido de la solicitud, por lo que enmascare `AWS_ACCESS_KEY_ID` y `AWS_SECRET_ACCESS_KEY` juntos. El proxy detecta una solicitud SigV4 por el centinela de la clave de acceso y la re-firma después de sustituir los valores reales. Enmascarar solo el secreto deja solicitudes firmadas con el marcador de posición, que el proxy no puede detectar, por lo que fallan en AWS; Claude Code advierte sobre este caso al inicio, pero no cuando solo se enmascara el ID de clave de acceso. Una solicitud detectada que el proxy no puede re-firmar, como una que falta su encabezado `x-amz-date`, falla con un error de proxy en lugar de llegar al servidor con una firma rota.545Las 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 de la clave de acceso y la vuelve a firmar después de sustituir los valores reales. Enmascarar solo el secreto deja las solicitudes firmadas con el marcador, que el proxy no puede detectar, por lo que fallan en AWS; Claude Code advierte sobre este caso al iniciar, pero no cuando solo se enmascara el ID de la clave de acceso. Una solicitud detectada que el proxy no puede volver a firmar, como una a la que le falta el encabezado `x-amz-date`, falla con un error del proxy en lugar de llegar al servidor con una firma rota.

431 546 

432Claude Code vincula las variables convencionales `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` y `AWS_SESSION_TOKEN` en una credencial automáticamente cuando enmascara sus valores completos. Si su credencial de AWS vive en variables con otros nombres, agrúpelas usted mismo con [`credentials.awsPairs`](/docs/es/settings-reference#sandbox-credentials-awspairs), que requiere Claude Code v2.1.224 o posterior. Este ejemplo agrega el emparejamiento a una configuración que ya enmascara `MY_KEY_ID`, `MY_SECRET_KEY` y `MY_SESSION_TOKEN` completos, como en la [configuración de enmascaramiento anterior](#mask-environment-variables):547Claude 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 tú mismo con [`credentials.awsPairs`](/docs/es/settings-reference#sandbox-credentials-awspairs), que requiere Claude Code v2.1.224 o posterior. Este ejemplo agrega el emparejamiento a una configuración que ya enmascara los valores completos de `MY_KEY_ID`, `MY_SECRET_KEY` y `MY_SESSION_TOKEN`, como en la [configuración de enmascaramiento anterior](#mask-environment-variables):

433 548 

434```json theme={null}549```json theme={null}

435{550{


449 564 

450Cada entrada sigue estas reglas:565Cada entrada sigue estas reglas:

451 566 

452* `accessKeyIdVar` y `secretAccessKeyVar` nombran las entradas `envVars` enmascaradas que contienen el ID de clave de acceso y la clave secreta. El `sessionTokenVar` opcional nombra la entrada que contiene el token de sesión para credenciales temporales; cuando se establece, el proxy envía el token real como `x-amz-security-token` en solicitudes re-firmadas.567* `accessKeyIdVar` y `secretAccessKeyVar` indican las entradas enmascaradas de `envVars` que contienen el ID de la clave de acceso y la clave secreta. El campo opcional `sessionTokenVar` indica la entrada que contiene el token de sesión para credenciales temporales; cuando se establece, el proxy envía el token real como `x-amz-security-token` en las solicitudes que vuelve a firmar.

453* Cada variable nombrada debe ser una entrada `mask` que enmascara su valor completo, sin `extract` o `decode`.568* Cada variable indicada debe ser una entrada `mask` que enmascare su valor completo, sin `extract` ni `decode`.

454* El proxy re-firma solicitudes en los hosts enumerados en la entrada `injectHosts` del ID de clave de acceso.569* El proxy vuelve a firmar las solicitudes en los hosts indicados en el `injectHosts` de la entrada del ID de la clave de acceso.

455* Nombrar cualquiera de las variables convencionales en un par reemplaza el emparejamiento automático.570* Indicar cualquiera de las variables convencionales en un par reemplaza el emparejamiento automático.

456 571 

457Como entradas `mask`, `awsPairs` se honra solo desde configuración de usuario, configuración administrada y la bandera CLI `--settings`.572Al igual que las entradas `mask`, `awsPairs` solo se respeta desde la configuración de usuario, la configuración administrada y el flag de CLI `--settings`.

458 573 

459Tres formas de solicitud de AWS llevan firmas que el proxy no puede recomputar. Cuando tal solicitud se firma con el marcador de posición de un par enmascarado, el proxy la falla en lugar de reenviar una firma rota; las solicitudes firmadas con credenciales sin enmascarar nunca se ven afectadas. La configuración [`credentials.sigv4`](/docs/es/settings-reference#sandbox-credentials-sigv4), que requiere Claude Code v2.1.224 o posterior, relaja esto por forma: establecer la clave de una forma en `passthrough` reenvía la solicitud con su firma derivada de marcador de posición, por lo que la herramienta que llama recibe el rechazo propio de AWS en lugar de un error de proxy. Como `awsPairs`, `sigv4` se honra solo desde configuración de usuario, configuración administrada y la bandera CLI `--settings`.574Tres formas de solicitud de AWS llevan firmas que el proxy no puede recalcular. Cuando una solicitud de ese tipo 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 nunca se ven afectadas. El ajuste [`credentials.sigv4`](/docs/es/settings-reference#sandbox-credentials-sigv4), que requiere Claude Code v2.1.224 o posterior, flexibiliza esto para cada forma: establecer la clave de una forma en `passthrough` reenvía la solicitud con su firma derivada del marcador, de modo que la herramienta que llama recibe la respuesta de rechazo propia de AWS en lugar de un error del proxy. Al igual que `awsPairs`, `sigv4` solo se respeta desde la configuración de usuario, la configuración administrada y el flag de CLI `--settings`.

460 575 

461| Forma de solicitud | Clave `sigv4` | Por qué el proxy no puede re-firmarla |576| Forma de solicitud | Clave de `sigv4` | Por qué el proxy no puede volver a firmarla |

462| :- | :- | :- |577| :- | :- | :- |

463| cargas de transmisión aws-chunked | `streaming` | Las firmas por fragmento se encadenan desde la firma de semilla, por lo que re-firmar requeriría reescribir el cuerpo |578| Cargas en streaming aws-chunked | `streaming` | Las firmas por fragmento se encadenan a partir de la firma inicial, por lo que volver a firmar requeriría reescribir el cuerpo |

464| URLs pre-firmadas | `presigned` | La firma vive en la URL en sí, sin encabezado `Authorization` |579| URL prefirmadas | `presigned` | La firma está en la propia URL, sin encabezado `Authorization` |

465| Firmas asimétricas SigV4A | `sigv4a` | No hay HMAC de clave compartida para recomputar |580| Firmas asimétricas SigV4A | `sigv4a` | No hay un HMAC de clave compartida que recalcular |

466 581 

467<h4 id="mask-credential-files">582<h4 id="mask-credential-files">

468 Enmascarar archivos de credenciales583 Enmascarar archivos de credenciales

469</h4>584</h4>

470 585 

471Las entradas de archivo también aceptan `"mode": "mask"`, que requiere Claude Code v2.1.221 o posterior. Lo que ve un comando aislado depende de la plataforma:586Las entradas de archivos también aceptan `"mode": "mask"`, que requiere Claude Code v2.1.221 o posterior. Lo que ve un comando aislado en el sandbox depende de la plataforma:

472 587 

473* **Linux y WSL2**: los comandos aislados leen una copia centinela del archivo, un sustituto cuyo secreto se reemplaza con un valor de marcador de posición, y el [proxy del sandbox](#network-isolation) sustituye el valor real en salida.588* **Linux y WSL2**: los comandos aislados en el sandbox leen una copia centinela del archivo, un sustituto en el que el secreto se reemplaza con un valor de marcador, y el [proxy del sandbox](#network-isolation) sustituye el valor real en el tráfico saliente.

474* **macOS**: los comandos aislados no pueden leer el archivo enumerado en absoluto. Claude Code no construye ninguna copia centinela y no sustituye nada en salida, por lo que las herramientas que se autentican con el archivo no funcionan dentro del sandbox, el mismo efecto que `deny`. A diferencia de una entrada `deny`, el bloqueo de lectura se mantiene incluso cuando [deshabilita el aislamiento del sistema de archivos](#disable-filesystem-isolation).589* **macOS**: los comandos aislados en el sandbox no pueden leer el archivo indicado en absoluto. Claude Code no crea ninguna copia centinela ni sustituye nada en el tráfico saliente, por lo que las herramientas que se autentican con el archivo no funcionan dentro del sandbox, el mismo efecto que `deny`. A diferencia de una entrada `deny`, el bloqueo de lectura se mantiene incluso cuando [desactivas el aislamiento del sistema de archivos](#disable-filesystem-isolation).

475 590 

476En cada plataforma, Claude Code aplica el requisito [`network.tlsTerminate`](/docs/es/settings-reference#sandbox-network-tlsterminate) e `injectHosts` de la misma manera que para [variables de entorno enmascaradas](#mask-environment-variables), e ignora configuración de repositorio de la misma manera. Si [excluye la configuración de usuario](#configure-sandboxing), Claude Code mantiene las entradas `mask` de archivo en `~/.claude/settings.json` como restricciones, pero las entradas ya no autorizan al proxy a sustituir el valor real.591En todas las plataformas, Claude Code aplica el requisito de [`network.tlsTerminate`](/docs/es/settings-reference#sandbox-network-tlsterminate) y `injectHosts` de la misma forma que para las [variables de entorno enmascaradas](#mask-environment-variables), e ignora la configuración del repositorio de la misma forma. Si [excluyes la configuración de usuario](#configure-sandboxing), Claude Code mantiene las entradas `mask` de archivos de `~/.claude/settings.json` como restricciones, pero las entradas ya no autorizan al proxy a sustituir el valor real.

477 592 

478El ejemplo a continuación enmascara un token de GitHub almacenado en `~/.config/gh/hosts.yml`; el patrón `extract`, cubierto a continuación, le dice a Claude Code qué parte del archivo es el secreto. En Linux y WSL2, los comandos aislados que leen el archivo obtienen un centinela en lugar del token, y el proxy sustituye el token real en solicitudes a `api.github.com`:593El siguiente ejemplo enmascara un token de GitHub almacenado en `~/.config/gh/hosts.yml`; el patrón `extract`, que se explica más abajo, le indica a Claude Code qué parte del archivo es el secreto. En Linux y WSL2, los comandos aislados en el sandbox que leen el archivo obtienen un centinela en lugar del token, y el proxy sustituye el token real en las solicitudes a `api.github.com`:

479 594 

480```json theme={null}595```json theme={null}

481{596{


499}614}

500```615```

501 616 

502Para confirmar que la máscara está activa, pida a Claude que ejecute `cat ~/.config/gh/hosts.yml` en un comando aislado: en Linux y WSL2 la salida muestra un valor centinela en lugar del token, y en macOS la lectura falla en su lugar.617Para 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 valor centinela en lugar del token, y en macOS la lectura falla.

503 618 

504En Linux y WSL2, el patrón `extract` es lo que mantiene el resto de `hosts.yml` legible. Claude Code aplica la expresión regular en todo el archivo y reemplaza solo el texto capturado por el grupo 1 de cada coincidencia, por lo que `gh` aún analiza su configuración y solo el token es un marcador de posición. Use `extract` para cualquier archivo estructurado que las herramientas analicen, como `.netrc`, JSON o YAML; el patrón debe contener al menos un grupo de captura. Sin `extract`, Claude Code reemplaza todo el contenido del archivo con un valor centinela, que se adapta a un archivo que contiene un único secreto desnudo y nada más.619En Linux y WSL2, el patrón `extract` es lo que mantiene legible el resto de `hosts.yml`. Claude Code aplica la expresión regular a todo el archivo y reemplaza solo el texto capturado por el grupo 1 de cada coincidencia, de modo que `gh` sigue analizando su configuración y solo el token es un marcador. Usa `extract` para cualquier archivo estructurado que analicen las herramientas, como `.netrc`, JSON o YAML; el patrón debe contener al menos un grupo de captura. Sin `extract`, Claude Code reemplaza todo el contenido del archivo con un único valor centinela, lo que es adecuado para un archivo que contiene un único secreto simple y nada más.

505 620 

506Para un archivo que contiene un JSON Web Token (JWT), establezca `decode: "jwt"` en lugar de, o junto con, `extract`. `decode` requiere Claude Code v2.1.224 o posterior. Claude Code encuentra candidatos JWT con un patrón integrado, o con su patrón `extract` cuando se establece, verifica que cada candidato sea un JWT y lo reemplaza con un token falso estructuralmente válido, por lo que el código que decodifica el token dentro del sandbox sigue funcionando. Agregue `maskClaims` para enmascarar solo las reclamaciones de carga útil de nivel superior nombradas dentro de cada token verificado y deje las otras reclamaciones legibles. Cuando ningún candidato se verifica, o ninguna reclamación nombrada coincide, el campo `onExtractNoMatch` a continuación rige el resultado, como lo hace para un patrón que no coincide con nada.621Para un archivo que contiene un JSON Web Token (JWT), establece `decode: "jwt"` en lugar de `extract`, o junto con él. `decode` requiere Claude Code v2.1.224 o posterior. Claude Code encuentra candidatos a JWT con un patrón integrado, o con tu patrón `extract` cuando está establecido, verifica que cada candidato sea un JWT y lo reemplaza con un token falso estructuralmente válido, de modo que el código que decodifica el token dentro del sandbox sigue funcionando. Agrega `maskClaims` para enmascarar solo los claims de nivel superior del payload indicados dentro de cada token verificado y dejar legibles los demás claims. Cuando ningún candidato se verifica, o ningún claim indicado coincide, el campo `onExtractNoMatch` que se describe más abajo determina el resultado, como lo hace para un patrón que no coincide con nada.

507 622 

508Dos campos opcionales refinan cómo se comporta la coincidencia. Ambos se aplican solo cuando `mode` es `mask` y `extract` o `decode` está establecido. En macOS, Claude Code aplica 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 estos campos, y los resultados de no coincidencia a continuación, tienen efecto allí solo cuando [deshabilita el aislamiento del sistema de archivos](#disable-filesystem-isolation):623Dos campos opcionales ajustan el comportamiento de la búsqueda de coincidencias. Ambos se aplican solo cuando `mode` es `mask` y `extract` o `decode` está establecido. 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 estos campos, y los resultados sin coincidencia que se describen a continuación, solo tienen efecto allí cuando [el aislamiento del sistema de archivos está desactivado](#disable-filesystem-isolation):

509 624 

510* `onExtractNoMatch` controla qué sucede cuando la coincidencia no encuentra nada para enmascarar en el archivo:625* `onExtractNoMatch` controla qué ocurre cuando la búsqueda no encuentra nada que enmascarar en el archivo:

511 626 

512 * `warn`, el valor predeterminado, advierte y omite la entrada, por lo que los comandos aislados pueden leer el archivo real sin enmascarar. El valor predeterminado se adapta a credenciales que pueden estar legítimamente ausentes; si el secreto podría estar presente pero el patrón podría no detectarlo, use `deny`627 * `warn`, el valor predeterminado, muestra una advertencia y omite la entrada, de modo que los comandos aislados en el sandbox pueden leer el archivo real sin enmascarar. 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`

513 * `deny` hace que el archivo sea ilegible en su lugar628 * `deny` hace que el archivo no se pueda leer

514 * `error` detiene la configuración del sandbox hasta que corrija la configuración629 * `error` detiene la configuración del sandbox hasta que corrijas la configuración

515 630 

516 Claude Code trata `deny` como `error` siempre que el bloqueo de lectura no se aplicaría: cuando [deshabilita el aislamiento del sistema de archivos](#disable-filesystem-isolation), y cuando una entrada `filesystem.allowRead` de cualquier fuente de configuración reabre la ruta del archivo.631 Claude Code trata `deny` como `error` siempre que el bloqueo de lectura no se aplicaría: cuando [desactivas el aislamiento del sistema de archivos](#disable-filesystem-isolation) y cuando una entrada de `filesystem.allowRead` vuelve a abrir la ruta del archivo.

517* `maskDuplicates` también reemplaza copias verbatim de cada valor de credencial enmascarado, una captura `extract` o un token verificado `decode`, encontrado fuera de los intervalos coincidentes, para un secreto repetido donde la coincidencia no llega. Coincide con subcadenas sin procesar, por lo que un valor corto o común se reemplazaría en todas partes donde aparece; resérvelo para secretos largos y de alta entropía. Valor predeterminado: false.632* `maskDuplicates` también reemplaza las copias literales de cada valor de credencial enmascarado, una captura de `extract` o un token verificado por `decode`, que se encuentren fuera de los tramos coincidentes, para un secreto que se repite donde la búsqueda no llega. Busca subcadenas sin procesar, por lo que un valor corto o común se reemplazaría en todos los lugares donde aparece; resérvalo para secretos largos y de alta entropía. Valor predeterminado: false.

518 633 

519`mask` se aplica a un único archivo, por lo que enumere cada archivo de credencial individualmente. Claude Code retrocede a `deny` para una entrada `mask` que no puede enmascarar de forma segura: una ruta de directorio, un patrón glob, un archivo más grande que 8 MiB o un archivo que no es texto UTF-8. Escriba directorios como entradas explícitas `deny` en su lugar; la tabla bajo [Qué configuraciones pueden deshabilitarlo](#which-settings-can-disable-it) cubre si cada forma fija `filesystem.disabled` y cómo se comporta con el aislamiento del sistema de archivos desactivado.634`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. Escribe los directorios como entradas `deny` explícitas; la tabla de [Qué configuraciones pueden desactivarlo](#which-settings-can-disable-it) explica si cada forma fija `filesystem.disabled` y cómo se comporta con el aislamiento del sistema de archivos desactivado.

520 635 

521<h2 id="how-sandboxing-works">636<h2 id="how-sandboxing-works">

522 Cómo funciona el sandboxing637 Cómo funciona el sandboxing


526 Aislamiento del sistema de archivos641 Aislamiento del sistema de archivos

527</h3>642</h3>

528 643 

529La herramienta Bash aislada restringe el acceso al sistema de archivos a directorios específicos:644La herramienta Bash en el sandbox restringe el acceso al sistema de archivos a directorios específicos:

530 645 

531* **Comportamiento de escritura predeterminado**: acceso de lectura y escritura al directorio de trabajo actual y sus subdirectorios, cualquier directorio que haya agregado con `--add-dir`, `/add-dir`, o [`permissions.additionalDirectories`](/docs/es/settings-reference#permissions-additionaldirectories), más el directorio temporal de sesión al que apunta `$TMPDIR`646* **Comportamiento de escritura predeterminado**: acceso de lectura y escritura al directorio de trabajo actual y sus subdirectorios, a cualquier directorio que hayas agregado con `--add-dir`, `/add-dir` o [`permissions.additionalDirectories`](/docs/es/settings-reference#permissions-additionaldirectories), además del directorio temporal por usuario al que apunta `$TMPDIR`

532* **Comportamiento de lectura predeterminado**: acceso de lectura a toda la computadora, excepto ciertos directorios denegados. Tenga en cuenta que este comportamiento predeterminado aún permite leer archivos de credenciales como `~/.aws/credentials` y `~/.ssh/`. Utilice [`sandbox.credentials`](#protect-credentials) para bloquear lecturas de estos archivos y desconfigurar variables de entorno secretas, o agregue las rutas a `denyRead`.647* **Comportamiento de lectura predeterminado**: acceso de lectura a toda la computadora, excepto ciertos directorios denegados. Este valor predeterminado aún permite leer archivos de credenciales, así que [protege las credenciales](#protect-credentials) que no quieras que los comandos lean.

533* **Bloqueo de lectura**: con [`permissions.blockReadsOutsideWorkingDirectories`](/docs/es/settings-reference#permissions-blockreadsoutsideworkingdirectories) activado, los comandos aislados también pierden acceso de lectura a su directorio de inicio y a los otros directorios que contienen archivos de usuario, aparte de las rutas que [Comandos aislados bajo el bloqueo](/docs/es/settings-reference#sandboxed-commands-under-the-block) enumera. Esa sección también dice cuándo esta parte del bloqueo no se aplica.648* **Bloqueo de lectura**: con [`permissions.blockReadsOutsideWorkingDirectories`](/docs/es/settings-reference#permissions-blockreadsoutsideworkingdirectories) activado, los comandos en el sandbox también pierden el acceso de lectura a tu directorio home y a los demás directorios que contienen archivos de usuario, salvo las rutas que enumera [Comandos en el sandbox bajo el bloqueo](/docs/es/settings-reference#sandboxed-commands-under-the-block). Esa sección también indica cuándo no se aplica esta parte del bloqueo.

534* **Acceso bloqueado**: no puede modificar archivos fuera del directorio de trabajo, directorios agregados y directorio temporal de sesión sin permiso explícito, incluidos archivos de configuración de shell como `~/.bashrc` y binarios del sistema en `/bin/`649* **Git worktrees**: cuando el directorio de trabajo es un [worktree de git vinculado](/docs/es/worktrees), el sandbox también permite escrituras en el directorio `.git` compartido del repositorio principal para que comandos como `git commit` puedan actualizar las refs y el índice. Las escrituras en `hooks/` y `config` dentro de ese directorio siguen denegadas.

535* **Git worktrees**: cuando el directorio de trabajo es un [git worktree vinculado](/docs/es/worktrees), el sandbox también permite escrituras en el directorio compartido `.git` del repositorio principal para que comandos como `git commit` puedan actualizar referencias e índices. Las escrituras a `hooks/` y `config` dentro de ese directorio permanecen denegadas.

536* **Configurable**: defina rutas permitidas y denegadas personalizadas a través de la configuración

537 650 

538Para omitir completamente el aislamiento del sistema de archivos mientras se mantiene el aislamiento de red, establezca [`sandbox.filesystem.disabled`](#disable-filesystem-isolation).651Para omitir por completo el aislamiento del sistema de archivos y mantener el aislamiento de red, configura [`sandbox.filesystem.disabled`](#disable-filesystem-isolation).

539 652 

540<h3 id="protected-paths">653<h3 id="protected-paths">

541 Rutas protegidas654 Rutas protegidas

542</h3>655</h3>

543 656 

544Dentro de los directorios en los que los comandos aislados pueden escribir, el sandbox aún deniega escrituras en los archivos desde los que Claude Code carga configuración y código. Un comando que pudiera editar esos archivos podría otorgarse permisos a sí mismo, o agregar un hook o servidor MCP que Claude Code ejecuta fuera del sandbox. El sistema de permisos tiene sus propias [rutas protegidas](/docs/es/permission-modes#protected-paths), que controlan lo que Claude Code aprueba antes de que se ejecute una herramienta; la lista del sandbox se aplica a un comando que ya está en ejecución. Cubre cuatro grupos de rutas:657Dentro de los directorios en los que los comandos en el sandbox pueden escribir, el sandbox sigue denegando escrituras en los archivos desde los que Claude Code carga configuración y código. Un comando que pudiera editar esos archivos podría otorgarse permisos a sí mismo, o agregar un hook o un servidor MCP que Claude Code ejecute fuera del sandbox. El sistema de permisos tiene sus propias [rutas protegidas](/docs/es/permission-modes#protected-paths), que controlan lo que Claude Code aprueba antes de que se ejecute una herramienta; la lista del sandbox se aplica a un comando que ya se está ejecutando. Abarca cuatro grupos de rutas:

545 658 

546* **En su directorio de trabajo y los directorios por encima de él**: los archivos de configuración `.claude`, los directorios `.claude/skills`, `.claude/agents`, `.claude/commands` y `.claude/hooks`, `.mcp.json`, y los archivos que Claude Code ejecuta por su cuenta, como `.claude/workflows` y `.claude/scheduled_tasks.json`659* **En tu directorio de trabajo y los directorios superiores**: los archivos de configuración de `.claude`, los directorios `.claude/skills`, `.claude/agents`, `.claude/commands` y `.claude/hooks`, `.mcp.json`, y los archivos que Claude Code ejecuta por sí mismo, como `.claude/workflows` y `.claude/scheduled_tasks.json`

547* **Solo en su directorio de trabajo**: archivos de inicio de shell como `.bashrc` y `.zshrc`, `.gitconfig`, los directorios `.vscode` e `.idea`, y `hooks` y `config` dentro de `.git`660* **Solo en tu directorio de trabajo**: archivos de inicio del shell como `.bashrc` y `.zshrc`, `.gitconfig`, los directorios `.vscode` y `.idea`, y `hooks` y `config` dentro de `.git`

548* **Archivos que convertirían su directorio de trabajo en un repositorio git desnudo**: `HEAD`, `objects` y `refs` en el nivel superior, más `config` y `hooks` allí cuando un `HEAD` se sienta junto a ellos. Un archivo denominado `config` se deniega incluso sin `HEAD`. En Linux y WSL2, el sandbox elimina un archivo `HEAD` de nivel superior o un directorio `objects` o `refs` que aparece mientras se ejecuta un comando aislado661* **Archivos que convertirían tu directorio de trabajo en un repositorio git bare**: `HEAD`, `objects` y `refs` en el nivel superior, además de las entradas `config` y `hooks` existentes allí cuando hay un `HEAD` junto a ellas. Un archivo llamado `config` se deniega incluso sin `HEAD`. En Linux y WSL2, el sandbox elimina un archivo `HEAD` o un directorio `objects` o `refs` de nivel superior que aparezca mientras se ejecuta un comando en el sandbox

549* **En `~/.claude`, o el directorio al que apunta `CLAUDE_CONFIG_DIR`**: la mayoría de su contenido, más `~/.claude.json` y el almacén de credenciales `.credentials.json`662* **En `~/.claude`, o el directorio al que apunta `CLAUDE_CONFIG_DIR`**: la mayor parte de su contenido, además de `~/.claude.json` y el almacén de credenciales `.credentials.json`

550 663 

551Si aparece un enlace simbólico en la ruta de un archivo de configuración protegido durante la sesión, el sandbox también deniega escrituras en el archivo al que apunta, comenzando con el siguiente comando.664Si aparece un enlace simbólico en la ruta de un archivo de configuración protegido durante la sesión, el sandbox también deniega las escrituras en el archivo al que apunta, a partir del siguiente comando.

552 665 

553No hay forma de eximir una de estas rutas: una entrada `allowWrite` o una regla de permiso `Edit` que cubra la ruta no levanta la protección. La única forma de desactivar la protección es [`filesystem.disabled`](#disable-filesystem-isolation), que desactiva el aislamiento del sistema de archivos para cada ruta. Para ver la mayoría de estas rutas resueltas para su máquina, ejecute `/sandbox` y abra la pestaña **Config**, que las enumera bajo **Denied within allowed**, mezcladas con sus propias entradas `denyWrite`.666No hay forma de exceptuar una de estas rutas: una entrada `allowWrite` o una regla de permiso `Edit` que cubra la ruta no elimina la protección. La única forma de desactivar la protección es [`filesystem.disabled`](#disable-filesystem-isolation), que desactiva el aislamiento del sistema de archivos para todas las rutas. Para ver la mayoría de estas rutas resueltas para tu máquina, ejecuta `/sandbox` y abre la pestaña **Config**, que las enumera en **Denied within allowed**, mezcladas con tus propias entradas `denyWrite`.

554 667 

555Si `git merge` o `git checkout` falla con `unable to unlink old` en una de estas rutas, consulte [Troubleshooting](#troubleshooting).668Si `git merge` o `git checkout` falla con `unable to unlink old` en una de estas rutas, consulta [Solución de problemas](#troubleshooting).

556 669 

557<h3 id="network-isolation">670<h3 id="network-isolation">

558 Aislamiento de red671 Aislamiento de red

559</h3>672</h3>

560 673 

561El acceso a la red se controla a través de un servidor proxy que se ejecuta fuera del sandbox:674Un comando en el sandbox no tiene una ruta directa a la red:

675 

676* **Linux y WSL2**: el comando se ejecuta en un espacio de nombres de red separado que no tiene conexión con tu red

677* **macOS**: el framework de sandbox Seatbelt bloquea de forma predeterminada las conexiones distintas de la que va al proxy del sandbox

678 

679Claude Code ejecuta el proxy del sandbox en tu máquina, fuera del sandbox, y dirige los comandos hacia él con `HTTP_PROXY`, `HTTPS_PROXY`, `ALL_PROXY` y variables de entorno relacionadas. El proxy compara el nombre de host de cada conexión con tus dominios permitidos y denegados.

562 680 

563* **Restricciones de dominio**: Claude Code no pre-permite dominios de forma predeterminada. La primera vez que un comando necesita un nuevo dominio, Claude Code solicita aprobación; en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), Claude en su lugar nombra los hosts que un comando necesita en el comando mismo, según [Dominios permitidos por comando](#per-command-allowed-domains-in-auto-mode).681Lo que una herramienta puede alcanzar depende de si usa el proxy:

564* **Opciones de aprobación**: si elige Sí cuando se le solicite, Claude Code permite el host para el resto de la sesión actual y no solicita nuevamente para conexiones posteriores al mismo host. Si elige "Sí, y no vuelvas a preguntar", Claude Code guarda una regla de permiso `WebFetch(domain:...)` en su [configuración local](/docs/es/permissions#permission-system), por lo que el host permanece permitido en sesiones futuras.

565* **Dominios pre-permitidos**: pre-permita dominios con [`allowedDomains`](/docs/es/settings-reference#sandbox-network-alloweddomains) para evitar completamente la solicitud. Claude Code también pre-permite dominios de reglas de permiso `WebFetch(domain:...)`, como se describe en [Reglas de permisos](#permission-rules).

566* **Lista de permitidos estricta**: si establece [`strictAllowlist`](/docs/es/settings-reference#sandbox-network-strictallowlist) en `true` en la configuración de usuario, administrada o CLI `--settings`, Claude Code deniega a los comandos aislados el acceso a cualquier host fuera de la lista de permitidos en lugar de solicitar. La lista de permitidos es la misma contra la que el sandbox solicita de otra manera: `allowedDomains` más dominios de reglas de permiso `WebFetch(domain:...)`, o solo las entradas de configuración administrada cuando se establece `allowManagedDomainsOnly`. Claude Code aplica esto solo para comandos aislados; las herramientas en proceso como `WebFetch` aún siguen sus [reglas de permiso](#permission-rules). Establecerlo en `.claude/settings.json` o `.claude/settings.local.json` de un repositorio no tiene efecto. Requiere Claude Code v2.1.219 o posterior.

567* **Bloqueo administrado**: si [`allowManagedDomainsOnly`](/docs/es/settings-reference#sandbox-network-allowmanageddomainsonly) se establece en la configuración administrada, los dominios no permitidos se bloquean automáticamente en lugar de solicitar, y solo se honran `allowedDomains` y reglas de permiso `WebFetch(domain:...)` de la configuración administrada.

568* **Proxy corporativo**: cuando su red requiere que el tráfico saliente pase a través de un proxy corporativo, establezca `HTTPS_PROXY`, `HTTP_PROXY` y `NO_PROXY` como describe [proxy configuration](/docs/es/network-config#proxy-configuration), en el bloque `env` de su configuración para que [agentes de fondo](/docs/es/network-config#set-network-variables-in-settings-not-the-shell) también los obtengan, o en el entorno desde el que inicia Claude Code. Claude Code aplica la lista de permitidos de dominio y luego canaliza las conexiones permitidas a través de ese proxy ascendente.

569* **Soporte de proxy personalizado**: los usuarios avanzados pueden implementar reglas personalizadas en el tráfico saliente

570* **Cobertura integral**: las restricciones se aplican a todos los scripts, programas y subprocesos generados por comandos

571 682 

572En una regla `WebFetch(domain:...)`, el sandbox honra dos formas de comodín: un `*.` inicial, como `*.example.com`, y un `*` desnudo. La forma `*` desnuda requiere Claude Code v2.1.186 o posterior. Un comodín en cualquier otra posición, como `WebFetch(domain:example.*)`, aún coincide con búsquedas pero no tiene efecto en comandos aislados.683* **Herramientas que leen las variables del proxy**: `curl`, `npm`, `git` sobre HTTPS y herramientas similares se conectan una vez que su host está permitido. Una entrada de `allowedDomains` sin puerto permite todos los puertos de ese host

684* **Herramientas que ignoran las variables del proxy**: `ssh` simple, la mayoría de los controladores de bases de datos y herramientas similares no pueden conectarse, ni siquiera a un host permitido. Consulta [Un cliente de base de datos u otra herramienta que no es HTTP no logra alcanzar un host permitido](#a-database-client-or-other-non-http-tool-fails-to-reach-an-allowed-host)

685* **Todo lo que no sea TCP**: UDP, HTTP/3 sobre QUIC y herramientas ICMP como `ping` no pueden salir del sandbox

686 

687Los siguientes ajustes y comportamientos controlan qué hosts permite el proxy:

688 

689* **Restricciones de dominio**: tus dominios permitidos empiezan vacíos. [Hosts fuera de tus dominios permitidos](#hosts-outside-your-allowed-domains) explica qué sucede la primera vez que un comando necesita un dominio nuevo.

690* **Opciones de aprobación**: si eliges Yes cuando se te solicita, Claude Code permite el host durante el resto de la sesión actual. Si eliges "Yes, and don't ask again", Claude Code guarda una regla de permiso `WebFetch(domain:...)` en tu [configuración local](/docs/es/permissions#permission-system), de modo que el host sigue permitido en sesiones futuras. Mientras el sandbox sea [obligatorio por el administrador](#repository-settings-under-an-admin-required-sandbox), Claude Code guarda la regla en tu configuración de usuario, donde se aplica en todos los proyectos.

691* **Dominios permitidos previamente**: permite dominios previamente con [`allowedDomains`](/docs/es/settings-reference#sandbox-network-alloweddomains) para evitar la solicitud por completo. Claude Code también permite previamente los dominios de las reglas de permiso `WebFetch(domain:...)`, como se describe en [Reglas de permisos](#permission-rules).

692* **Lista de permitidos estricta**: si configuras [`strictAllowlist`](/docs/es/settings-reference#sandbox-network-strictallowlist) en `true` en la configuración de usuario, administrada o de `--settings` de la CLI, Claude Code deniega a los comandos en el sandbox el acceso a cualquier host fuera de la lista de permitidos en lugar de pedir confirmación. La lista de permitidos es `allowedDomains` más los dominios de las reglas de permiso `WebFetch(domain:...)`, o solo las entradas de la configuración administrada cuando `allowManagedDomainsOnly` está configurado. [Bloqueos que se aplican sin un sandbox obligatorio por el administrador](#locks-that-apply-without-an-admin-required-sandbox) cubre las entradas de un repositorio. Claude Code aplica esto solo a los comandos en el sandbox; las herramientas en proceso como `WebFetch` siguen sus [reglas de permisos](#permission-rules). Configurarlo en `.claude/settings.json` o `.claude/settings.local.json` de un repositorio no tiene efecto. Requiere Claude Code v2.1.219 o posterior.

693* **Bloqueo administrado**: si [`allowManagedDomainsOnly`](/docs/es/settings-reference#sandbox-network-allowmanageddomainsonly) está configurado en la configuración administrada, los dominios no permitidos se bloquean automáticamente en lugar de pedir confirmación, y solo se respetan `allowedDomains` y las reglas de permiso `WebFetch(domain:...)` de la configuración administrada.

694* **Proxy corporativo**: cuando tu red requiere que el tráfico saliente pase por un proxy corporativo, configura `HTTPS_PROXY`, `HTTP_PROXY` y `NO_PROXY` como se describe en [configuración del proxy](/docs/es/network-config#proxy-configuration), en el bloque `env` de tu configuración para que los [agentes en segundo plano](/docs/es/network-config#set-network-variables-in-settings-not-the-shell) también las reciban, o en el entorno desde el que inicias Claude Code. Claude Code aplica la lista de dominios permitidos y luego canaliza las conexiones permitidas a través de ese proxy upstream. Funcionan las URL de proxy `http://` y `https://`, con autenticación básica en la URL si la necesitas.

695 

696En una regla `WebFetch(domain:...)`, el sandbox respeta dos formas de comodín: un `*.` inicial, como `*.example.com`, y un `*` solo. La forma `*` sola requiere Claude Code v2.1.186 o posterior. Un comodín en cualquier otra posición, como `WebFetch(domain:example.*)`, sigue coincidiendo con las solicitudes de fetch pero no tiene efecto en los comandos en el sandbox.

573 697 

574<Note>698<Note>

575 El proxy integrado aplica la lista de permitidos basada en el nombre de host solicitado y, de forma predeterminada, no termina ni inspecciona el tráfico TLS. La configuración experimental [`network.tlsTerminate`](/docs/es/settings-reference#sandbox-network-tlsterminate), disponible en Claude Code v2.1.199 y posterior, hace que el proxy integrado termine TLS por sí mismo, lo que requieren las entradas de credenciales [`mask`](#mask-credentials). Consulte [Limitaciones de seguridad](#security-limitations) para las implicaciones del comportamiento predeterminado, y [Configuración de proxy personalizado](#custom-proxy-configuration) si su modelo de amenaza requiere inspección de TLS.699 El proxy integrado aplica la lista de permitidos según el nombre de host solicitado y, de forma predeterminada, no termina ni inspecciona el tráfico TLS. El ajuste experimental [`network.tlsTerminate`](/docs/es/settings-reference#sandbox-network-tlsterminate), disponible en Claude Code v2.1.199 y posterior, hace que el proxy integrado termine TLS por sí mismo, lo cual requieren las [entradas de credenciales `mask`](#mask-credentials). Consulta [Limitaciones de seguridad](#security-limitations) para conocer las implicaciones del comportamiento predeterminado, y [Configuración de proxy personalizado](#custom-proxy-configuration) si tu modelo de amenazas requiere inspección de TLS.

576</Note>700</Note>

577 701 

702<h4 id="hosts-outside-your-allowed-domains">

703 Hosts fuera de tus dominios permitidos

704</h4>

705 

706Cuando un comando en el sandbox se conecta a un host que no está en tus dominios permitidos, el comando permanece en el sandbox y espera una decisión. En una sesión interactiva de terminal, la decisión depende de tu modo de permisos:

707 

708| Modo de permisos | Qué sucede con la conexión |

709| :- | :- |

710| Modo `bypassPermissions`, y modo plan con [bypass de permisos disponible](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Se permite sin solicitud |

711| Modo manual, modo `acceptEdits` y modo plan en otros casos | Recibes una solicitud |

712| Modo automático | Se rechaza a menos que el comando [haya listado el host](#per-command-allowed-domains-in-auto-mode) y el clasificador haya aprobado la lista |

713| Modo `dontAsk` | Se rechaza |

714 

715Con [`strictAllowlist`](/docs/es/settings-reference#sandbox-network-strictallowlist) o [`allowManagedDomainsOnly`](/docs/es/settings-reference#sandbox-network-allowmanageddomainsonly) activado, el proxy integrado del sandbox rechaza la conexión en todos los modos de permisos. En el modo `bypassPermissions`, los hosts fuera de tus dominios permitidos se permiten a menos que uno de ellos esté activado. [La vía de escape de reintento sin sandbox](#the-unsandboxed-retry-escape-hatch) explica cuándo un comando puede salir del sandbox en ese modo. Una conexión a un host en [`deniedDomains`](/docs/es/settings-reference#sandbox-network-denieddomains) también se rechaza en todos los modos de permisos.

716 

717<h4 id="hostnames-that-resolve-to-local-addresses">

718 Nombres de host que se resuelven en direcciones locales

719</h4>

720 

721Después de que un nombre de host pasa la lista de permitidos, el proxy del sandbox lo resuelve y rechaza la conexión cuando el nombre se resuelve solo en direcciones locales. Las direcciones locales incluyen direcciones de loopback como `127.0.0.1`, direcciones de enlace local como el endpoint de metadatos en la nube `169.254.169.254`, y direcciones asignadas a tu propia máquina. Los nombres `localhost` y `*.localhost` pueden resolverse en loopback.

722 

723Un nombre de host de intranet permitido que se resuelve en un rango privado como `10.0.0.0/8` se conecta. Para permitir que un nombre se resuelva en una dirección rechazada, agrega esa dirección IP a `allowedDomains`, como `"127.0.0.1:8080"`.

724 

725La comprobación se aplica a nombres de host. Tus dominios permitidos y tu modo de permisos deciden una conexión a una dirección IP. El proxy también omite la comprobación para las conexiones que envía a través de un proxy corporativo upstream, porque ese proxy resuelve el nombre.

726 

578<h4 id="per-command-allowed-domains-in-auto-mode">727<h4 id="per-command-allowed-domains-in-auto-mode">

579 Dominios permitidos por comando en modo automático728 Dominios permitidos por comando en el modo automático

580</h4>729</h4>

581 730 

582En [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) con sandboxing activado, Claude nombra los hosts que un comando necesita en el comando mismo en lugar de desencadenar una aprobación de red para cada conexión. Cada comando Bash, PowerShell o [Monitor](/docs/es/tools-reference#monitor-tool) que se ejecuta en el sandbox puede llevar una lista de hosts más allá de la lista de permitidos del sandbox: un dominio como `registry.npmjs.org`, un comodín como `*.pythonhosted.org`, o una dirección IP, cada uno con un `:port` opcional. El clasificador revisa los hosts junto con el comando. Requiere Claude Code v2.1.271 o posterior.731En el [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) con el sandboxing activado, Claude indica en el propio comando los hosts que este necesita en lugar de activar una aprobación de red para cada conexión. Cada comando Bash, PowerShell o [Monitor](/docs/es/tools-reference#monitor-tool) que se ejecuta en el sandbox puede llevar una lista de hosts más allá de la lista de permitidos del sandbox: un dominio como `registry.npmjs.org`, un comodín como `*.pythonhosted.org` o una dirección IP, cada uno con un `:port` opcional. El clasificador revisa los hosts junto con el comando. Requiere Claude Code v2.1.271 o posterior.

583 732 

584Una lista aprobada abre esos hosts solo para ese comando, mientras se ejecuta. Nada se agrega a los hosts permitidos de su sesión o su configuración; el siguiente comando nombra sus propios hosts.733Una lista aprobada abre esos hosts solo para ese comando, mientras se ejecute. No se agrega nada a los hosts permitidos de tu sesión ni a tu configuración; el siguiente comando indica sus propios hosts.

585 734 

586Un comando que lleva hosts va al clasificador en lugar de ser aprobado por una regla de permiso o el [modo de auto-permitir](#sandbox-modes) del sandbox. Si una [regla ask](/docs/es/permissions#manage-permissions) fuerza una solicitud para el comando, el diálogo de permiso en su terminal enumera los hosts junto a él, y aprobar allí cubre ambos.735Un comando que lleva hosts pasa al clasificador en lugar de ser aprobado por una regla de permisos o por el [modo de permiso automático](#sandbox-modes) del sandbox. Si una [regla ask](/docs/es/permissions#manage-permissions) fuerza una solicitud para el comando, el diálogo de permisos en tu terminal enumera los hosts junto a él, y aprobar allí cubre ambos.

587 736 

588Una lista por comando amplía solo lo que el sandbox deniega de forma predeterminada. Las entradas [`deniedDomains`](/docs/es/settings-reference#sandbox-network-denieddomains) aún bloquean. Cuando [`strictAllowlist`](/docs/es/settings-reference#sandbox-network-strictallowlist) o [`allowManagedDomainsOnly`](/docs/es/settings-reference#sandbox-network-allowmanageddomainsonly) bloquea la lista de permitidos, Claude Code rechaza listas por comando.737Una lista por comando amplía solo lo que el sandbox deniega de forma predeterminada. Las entradas de [`deniedDomains`](/docs/es/settings-reference#sandbox-network-denieddomains) siguen bloqueando. Cuando [`strictAllowlist`](/docs/es/settings-reference#sandbox-network-strictallowlist) o [`allowManagedDomainsOnly`](/docs/es/settings-reference#sandbox-network-allowmanageddomainsonly) bloquea la lista de permitidos, Claude Code rechaza las listas por comando.

589 738 

590Mientras se aplican listas por comando, Claude Code rechaza una conexión a un host que ningún comando aprobado listó, sin una solicitud o una verificación del clasificador. El rechazo nombra el host en el resultado del comando, y Claude vuelve a ejecutar el comando con el host agregado.739Mientras se aplican las listas por comando, Claude Code rechaza una conexión a un host que ningún comando aprobado haya listado, sin solicitud ni comprobación del clasificador. El rechazo indica el host en el resultado del comando, y Claude vuelve a ejecutar el comando con el host agregado.

591 740 

592<h4 id="ipv6-addresses-in-domain-lists">741<h4 id="ipv6-addresses-in-domain-lists">

593 Direcciones IPv6 en listas de dominios742 Direcciones IPv6 en listas de dominios

594</h4>743</h4>

595 744 

596Las listas de dominios del sandbox son `allowedDomains`, `deniedDomains`, y las reglas `WebFetch(domain:...)` que las alimentan. Para coincidir con una dirección IPv6 en cualquiera de ellas, escriba el literal entre corchetes: `"[::1]"` coincide con esa dirección en cada puerto, y `"[::1]:443"` coincide con ella solo en el puerto 443. Escriba el puerto como un número del 1 al 65535 sin ceros iniciales. La forma entre corchetes requiere Claude Code v2.1.229 o posterior. Antes de v2.1.229, cuando el texto después de los dos puntos finales de una entrada sin corchetes era un número de puerto, Claude Code lo leía como uno, por lo que `::1:443` nombraba la dirección `::1` en el puerto 443.745Las listas de dominios del sandbox son `allowedDomains`, `deniedDomains` y las reglas `WebFetch(domain:...)` que las alimentan. Para que coincida una dirección IPv6 en cualquiera de ellas, escribe el literal entre corchetes: `"[::1]"` coincide con esa dirección en todos los puertos, y `"[::1]:443"` coincide con ella solo en el puerto 443. Escribe el puerto como un número de 1 a 65535 sin ceros a la izquierda. La forma entre corchetes requiere Claude Code v2.1.229 o posterior. Antes de v2.1.229, cuando el texto después de los últimos dos puntos de una entrada sin corchetes era un número de puerto, Claude Code lo leía como tal, por lo que `::1:443` indicaba la dirección `::1` en el puerto 443.

597 746 

598Cuando elige "Sí, y no vuelvas a preguntar" en la solicitud de aprobación de red para una dirección IPv6, Claude Code guarda la regla `WebFetch(domain:...)` con la dirección entre corchetes, por lo que la regla sigue coincidiendo con la dirección en sesiones futuras.747Cuando eliges "Yes, and don't ask again" en la solicitud de aprobación de red para una dirección IPv6, Claude Code guarda la regla `WebFetch(domain:...)` con la dirección entre corchetes, de modo que la regla siga coincidiendo con la dirección en sesiones futuras.

599 748 

600Una entrada sin corchetes con dos o más dos puntos es ambigua: `::1:443` es tanto una dirección IPv6 completa como una dirección seguida de un puerto. Claude Code aplica deletreos ambiguos de forma conservadora en lugar de adivinar cuál lectura pretendía:749Una entrada sin corchetes con dos o más signos de dos puntos es ambigua: `::1:443` es a la vez una dirección IPv6 completa y una dirección seguida de un puerto. Claude Code aplica las escrituras ambiguas de forma conservadora en lugar de adivinar qué interpretación quisiste decir:

601 750 

602* **Listas de denegación**: Claude Code deniega cada lectura que la entrada analiza, por lo que cualquiera que sea la lectura que pretendía está bloqueada. Para una entrada sin lectura analizable, Claude Code no bloquea nada.751* **Listas de denegación**: Claude Code deniega todas las interpretaciones con las que se puede analizar la entrada, de modo que se bloquea la interpretación que hayas querido decir. Para una entrada sin ninguna interpretación analizable, Claude Code no bloquea nada.

603* **Listas de permitidos**: Claude Code nunca permite más de lo que escribió. Reescribe una entrada ambigua a su lectura de host-y-puerto cuando esa lectura se analiza limpiamente, y puede descartar la entrada completamente en lugar de ampliar la lista de permitidos.752* **Listas de permitidos**: Claude Code nunca permite más de lo que escribiste. Reescribe una entrada ambigua a su interpretación de host y puerto cuando esa interpretación se analiza correctamente, y puede descartar la entrada por completo en lugar de ampliar la lista de permitidos.

604 753 

605Ejecute `claude doctor` en su terminal para encontrar las entradas afectadas: la advertencia `Sandbox network domain entries have unreliable spellings` nombra hasta tres de ellas y cuenta el resto. Reescriba cada una en la forma entre corchetes para borrar la advertencia. La advertencia también nombra entradas cuyo deletreo es poco confiable por otras razones, como `@`, caracteres de ruta o consulta, o comodines dentro de corchetes.754Ejecuta `claude doctor` en tu terminal para encontrar las entradas afectadas: la advertencia `Sandbox network domain entries have unreliable spellings` indica hasta tres de ellas y cuenta el resto. Reescribe cada una en la forma entre corchetes para eliminar la advertencia. La advertencia también indica entradas cuya escritura no es confiable por otros motivos, como `@`, caracteres de ruta o de consulta, o comodines dentro de corchetes.

606 755 

607<h3 id="os-level-enforcement">756<h3 id="os-level-enforcement">

608 Aplicación a nivel del sistema operativo757 Aplicación a nivel del sistema operativo

609</h3>758</h3>

610 759 

611La herramienta Bash aislada utiliza primitivas de seguridad del sistema operativo:760La herramienta Bash en el sandbox usa primitivas de seguridad del sistema operativo:

612 761 

613* **macOS**: utiliza Seatbelt para la aplicación del sandbox762* **macOS**: usa Seatbelt para aplicar el sandbox

614* **Linux**: utiliza [bubblewrap](https://github.com/containers/bubblewrap) para el aislamiento763* **Linux**: usa [bubblewrap](https://github.com/containers/bubblewrap) para el aislamiento

615* **WSL2**: utiliza bubblewrap, igual que Linux764* **WSL2**: usa bubblewrap, igual que Linux

616 765 

617WSL1 no es compatible porque bubblewrap requiere características del kernel solo disponibles en WSL2.766WSL1 no es compatible porque bubblewrap requiere funciones del kernel disponibles solo en WSL2.

618 767 

619Estas mismas primitivas están disponibles como el paquete independiente [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropic-experimental/sandbox-runtime), que la página [Sandbox environments](/docs/es/sandbox-environments#sandbox-runtime) cubre como un enfoque separado para envolver todo el proceso de Claude Code.768También puedes ejecutar el paquete [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropics/sandbox-runtime) por sí solo para envolver el proceso de Claude Code. Consulta [Sandbox runtime](/docs/es/sandbox-environments#sandbox-runtime).

620 769 

621<h2 id="how-sandboxing-relates-to-permissions-and-permission-modes">770<h2 id="how-sandboxing-relates-to-permissions-and-permission-modes">

622 Cómo se relaciona el sandboxing con los permisos y modos de permiso771 Cómo se relaciona el sandboxing con los permisos y modos de permiso


668El [modo auto-allow](#sandbox-modes) del sandbox es separado del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode): auto-allow aprueba comandos Bash porque el límite del sandbox los contiene, mientras que el modo automático usa un clasificador para revisar acciones. Los dos funcionan independientemente y pueden combinarse, con las excepciones enumeradas en [Modos sandbox](#sandbox-modes). Para elegir un límite de aislamiento para ejecuciones desatendidas, consulte [Entornos sandbox](/docs/es/sandbox-environments#how-isolation-relates-to-permission-modes). Para una tabla de emparejamientos comunes de modo de permiso y sandbox con los indicadores que inician cada uno, consulte [Configuraciones comunes](/docs/es/permission-modes#common-setups).817El [modo auto-allow](#sandbox-modes) del sandbox es separado del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode): auto-allow aprueba comandos Bash porque el límite del sandbox los contiene, mientras que el modo automático usa un clasificador para revisar acciones. Los dos funcionan independientemente y pueden combinarse, con las excepciones enumeradas en [Modos sandbox](#sandbox-modes). Para elegir un límite de aislamiento para ejecuciones desatendidas, consulte [Entornos sandbox](/docs/es/sandbox-environments#how-isolation-relates-to-permission-modes). Para una tabla de emparejamientos comunes de modo de permiso y sandbox con los indicadores que inician cada uno, consulte [Configuraciones comunes](/docs/es/permission-modes#common-setups).

669 818 

670<h2 id="configure-the-sandbox-for-your-organization">819<h2 id="configure-the-sandbox-for-your-organization">

671 Configurar el sandbox para su organización820 Configurar el sandbox para tu organización

672</h2>821</h2>

673 822 

674Los administradores pueden requerir sandboxing para cada usuario, evitar que los desarrolladores amplíen la política y enrutar el tráfico del sandbox a través de un proxy corporativo.823Los administradores pueden requerir sandboxing para cada usuario, evitar que los desarrolladores amplíen la política y enrutar el tráfico del sandbox a través de un proxy corporativo.


677 Aplicar sandboxing con configuración administrada826 Aplicar sandboxing con configuración administrada

678</h3>827</h3>

679 828 

680Para requerir el sandbox para cada desarrollador, entregue las claves `sandbox` a través de [configuración administrada](/docs/es/managed-settings#delivery-mechanisms), ya sea como un archivo administrado por su MDM o a través de [configuración administrada por servidor](/docs/es/server-managed-settings) en claude.ai.829Para requerir el sandbox para cada desarrollador, entrega las claves `sandbox` a través de la [configuración administrada](/docs/es/managed-settings#delivery-mechanisms), ya sea como un archivo administrado por tu MDM o a través de la [configuración administrada por servidor](/docs/es/server-managed-settings) en claude.ai.

681 830 

682La siguiente configuración de configuración administrada habilita el sandbox, se niega a iniciar Claude Code si el sandbox no puede inicializarse y evita que el modelo reintente comandos fuera del sandbox:831La siguiente configuración administrada habilita el sandbox, se niega a iniciar Claude Code cuando la plataforma no es compatible o falta una dependencia, y evita que el modelo reintente comandos fuera del sandbox:

683 832 

684```json theme={null}833```json theme={null}

685{834{


693 842 

694Las dos claves más allá de `enabled` controlan qué sucede cuando el sandbox no puede ejecutar un comando:843Las dos claves más allá de `enabled` controlan qué sucede cuando el sandbox no puede ejecutar un comando:

695 844 

696* **`failIfUnavailable`**: una dependencia faltante como bubblewrap en Linux bloquea que Claude Code se inicie en lugar de mostrar una advertencia y volver a la ejecución sin aislar845* **`failIfUnavailable`**: una dependencia faltante como bubblewrap en Linux impide que Claude Code se inicie en lugar de volver a la ejecución sin aislar

697* **`allowUnsandboxedCommands: false`**: Claude Code ignora la salida de emergencia `dangerouslyDisableSandbox`, por lo que cuando un comando falla bajo el sandbox, Claude no puede reintentarlo sin aislar846* **`allowUnsandboxedCommands: false`**: Claude Code ignora la salida de emergencia `dangerouslyDisableSandbox`, por lo que cuando un comando falla bajo el sandbox, Claude no puede reintentarlo sin aislar

698 847 

699Dos adiciones vale la pena considerar junto con ellas. Agregue `excludedCommands` para cualquier herramienta aprobada por la organización que deba ejecutarse sin aislamiento. Agregue entradas [`sandbox.credentials`](#protect-credentials) para directorios de credenciales como `~/.aws` y `~/.ssh` y para variables de entorno secretas, ya que la política de lectura predeterminada aún las permite.848Considera estas adiciones junto con ellas:

849 

850* Agrega `excludedCommands` para cualquier herramienta aprobada por la organización que deba ejecutarse sin aislamiento, porque esta configuración [impide que la configuración de un repositorio saque comandos del sandbox](#repository-settings-under-an-admin-required-sandbox)

851* Agrega entradas [`sandbox.credentials`](#protect-credentials) para directorios de credenciales como `~/.aws` y `~/.ssh` y para variables de entorno secretas, ya que la política de lectura predeterminada aún las permite

852 

853Esta configuración aísla los comandos que ejecuta Claude. Un desarrollador aún puede escribir un comando en el [prompt del modo shell `!`](/docs/es/interactive-mode#shell-mode-with-prefix) y ejecutarlo fuera del sandbox, con el mismo acceso que ya tiene en cualquier terminal fuera de Claude Code. Consulta el [modo de sandbox estricto](#turn-off-the-retry-with-strict-sandbox-mode) para las sesiones donde los comandos escritos se ejecutan aislados.

700 854 

701Esta configuración aísla los comandos que ejecuta Claude. Un desarrollador aún puede escribir un comando en el [símbolo del sistema del modo shell `!`](/docs/es/interactive-mode#shell-mode-with-prefix) y ejecutarlo fuera del sandbox, con el mismo acceso que ya tienen en cualquier terminal fuera de Claude Code. Consulte [La salida de emergencia de reintento sin aislar](#the-unsandboxed-retry-escape-hatch) para las sesiones donde los comandos escritos se ejecutan aislados.855El sandbox no se ejecuta en Windows nativo, por lo que con `failIfUnavailable` establecido, Claude Code se cierra al iniciar en esas máquinas. Si tu flota incluye hosts de Windows, puedes:

702 856 

703El sandbox no se ejecuta en Windows nativo, por lo que si su flota incluye hosts de Windows, limite esta configuración a macOS y Linux o haga que esos usuarios ejecuten Claude Code dentro de WSL2 o un contenedor.857* **Entregar la configuración por sistema operativo**: impleméntala a través de tu MDM o como un [archivo de configuración administrada](/docs/es/managed-settings#delivery-mechanisms) solo en máquinas macOS y Linux. La [configuración administrada por servidor](/docs/es/server-managed-settings#current-limitations) se aplica a todos los usuarios de la organización

858* **Mover a los usuarios de Windows a un entorno compatible**: haz que ejecuten Claude Code dentro de WSL2 o un contenedor

704 859 

705<h3 id="keep-developers-from-widening-the-policy">860<h3 id="keep-developers-from-widening-the-policy">

706 Evitar que los desarrolladores amplíen la política861 Evitar que los desarrolladores amplíen la política

707</h3>862</h3>

708 863 

709Para claves booleanas como `enabled` y `failIfUnavailable`, Claude Code usa el valor administrado e ignora cualquier cosa que un desarrollador establezca localmente. Para claves de array como `excludedCommands` y `allowRead`, Claude Code fusiona entradas de cada ámbito que carga la sesión, por lo que un desarrollador puede agregar entradas que amplíen la política.864Cuando la configuración administrada establece una clave booleana como `enabled` o `failIfUnavailable`, Claude Code usa el valor administrado e ignora cualquier cosa que un desarrollador establezca localmente. Para claves de array como `allowRead`, Claude Code combina las entradas de los alcances que carga la sesión, por lo que un desarrollador puede agregar entradas que amplíen la política, a menos que un bloqueo cubra esa clave.

865 

866A menos que la configuración administrada las establezca, la configuración de usuario de un desarrollador o `--settings` pueden activar las siguientes claves. El `.claude/settings.json` de un repositorio también puede hacerlo, a menos que el sandbox sea [requerido por el administrador](#repository-settings-under-an-admin-required-sandbox). Cada una debilita el sandbox, así que establécela en `false` en la configuración administrada si no quieres que se use:

867 

868* [`enableWeakerNestedSandbox`](/docs/es/settings-reference#sandbox-enableweakernestedsandbox)

869* [`enableWeakerNetworkIsolation`](/docs/es/settings-reference#sandbox-enableweakernetworkisolation)

870* [`network.allowAllUnixSockets`](/docs/es/settings-reference#sandbox-network-allowallunixsockets)

871* [`network.allowLocalBinding`](/docs/es/settings-reference#sandbox-network-allowlocalbinding)

872* [`allowAppleEvents`](/docs/es/settings-reference#sandbox-allowappleevents), que un repositorio no puede activar

873 

874Establece `allowManagedReadPathsOnly` en `true` en la configuración administrada para que solo se respeten las entradas `allowRead` de la configuración administrada. Esto evita que los desarrolladores amplíen el acceso de lectura más allá de las rutas aprobadas por la organización.

875 

876Para bloquear los dominios de red a los valores administrados de la misma manera, establece [`allowManagedDomainsOnly`](/docs/es/settings-reference#sandbox-network-allowmanageddomainsonly). Con el bloqueo activado, solo la configuración administrada puede establecer un [puerto de proxy](#custom-proxy-configuration).

877 

878Cuando la configuración administrada configura `sandbox.filesystem` o enumera cualquier entrada `sandbox.credentials.files` con `"mode": "deny"`, solo la configuración administrada puede establecer [`filesystem.disabled`](#disable-filesystem-isolation), por lo que los desarrolladores no pueden desactivar las restricciones del sistema de archivos implementadas por el administrador. Si una entrada `mask` fija la clave depende de cómo se resuelva; la tabla bajo [Qué configuración puede desactivarla](#which-settings-can-disable-it) cubre los cuatro casos.

879 

880<h4 id="repository-settings-under-an-admin-required-sandbox">

881 Configuración del repositorio con un sandbox requerido por el administrador

882</h4>

883 

884El sandbox es requerido por el administrador mientras uno de estos ajustes esté en vigor:

885 

886* [`allowUnsandboxedCommands`](/docs/es/settings-reference#sandbox-allowunsandboxedcommands) establecido en `false` en la configuración administrada, o con el flag `--settings` a menos que la configuración administrada lo establezca en `true`

887* [`allowManagedDomainsOnly`](/docs/es/settings-reference#sandbox-network-allowmanageddomainsonly) establecido en `true` en la configuración administrada

888 

889Estos ajustes no activan el sandbox, así que establece también `enabled`.

890 

891Mientras el sandbox es requerido por el administrador, Claude Code toma los ajustes que lo flexibilizan solo de la configuración administrada, el flag `--settings` y el `~/.claude/settings.json` de cada desarrollador. Ignora estos ajustes en el `.claude/settings.json` y el `.claude/settings.local.json` de un repositorio:

892 

893| Ajuste del repositorio | Lo que Claude Code ignora |

894| :- | :- |

895| `excludedCommands`, `ignoreViolations`, `network.allowedDomains`, `network.allowUnixSockets`, `network.allowMachLookup`, `network.httpProxyPort`, `network.socksProxyPort` | Todas las entradas |

896| `filesystem.allowWrite`, reglas de permiso `Edit(...)`, `permissions.additionalDirectories` | El acceso de escritura que cada entrada otorga a los comandos aislados. Las herramientas de archivos de Claude siguen respetando las reglas `Edit(...)` y los directorios adicionales |

897| Reglas de permiso `WebFetch(domain:...)` | El host que cada regla agrega a la lista de permitidos del sandbox. La herramienta WebFetch sigue respetando la regla |

898| `enableWeakerNestedSandbox`, `enableWeakerNetworkIsolation`, `network.allowAllUnixSockets`, `network.allowLocalBinding` | `true`. Un `false` sigue aplicándose |

899| `enabled`, `failIfUnavailable` | `false`, cuando el `~/.claude/settings.json` del desarrollador establece `true` |

900| `filesystem.allowRead` | Una entrada en o bajo una ruta cuya lectura deniegan la configuración administrada, `--settings` o la configuración de usuario, o un glob que podría coincidir con una |

901 

902Estos ajustes siguen aplicándose mientras el sandbox es requerido por el administrador:

903 

904* **En los archivos de un repositorio**: las entradas de denegación y el valor de `autoAllowBashIfSandboxed`. Establece la clave en la configuración administrada para evitar que un repositorio la cambie

905* **En la configuración propia de un desarrollador**: los ajustes de la tabla siguen aplicándose desde `~/.claude/settings.json` o `--settings`, a menos que un bloqueo solo administrado como `allowManagedDomainsOnly` los cubra. La mayoría de ellos, como `excludedCommands` y `filesystem.allowWrite`, no tienen un bloqueo solo administrado

710 906 

711Establezca `allowManagedReadPathsOnly` en `true` en la configuración administrada para que solo se honren las entradas `allowRead` de la configuración administrada. Esto evita que los desarrolladores amplíen el acceso de lectura más allá de las rutas aprobadas por la organización. Para bloquear dominios de red a los valores administrados de la misma manera, establezca [`allowManagedDomainsOnly`](/docs/es/settings-reference#sandbox-network-allowmanageddomainsonly).907La configuración en [Aplicar sandboxing con configuración administrada](#enforce-sandboxing-with-managed-settings) hace que el sandbox sea requerido por el administrador. Agrega a la configuración administrada las entradas de `excludedCommands`, `allowWrite` y sockets que necesitan tus herramientas aprobadas, porque un repositorio no puede proporcionarlas.

712 908 

713Cuando la configuración administrada configura `sandbox.filesystem` o enumera cualquier entrada `sandbox.credentials.files` con `"mode": "deny"`, solo la configuración administrada puede establecer [`filesystem.disabled`](#disable-filesystem-isolation), por lo que los desarrolladores no pueden desactivar las restricciones de aislamiento del sistema de archivos implementadas por el administrador. Si una entrada `mask` fija la clave depende de cómo se resuelva; la tabla bajo [Qué configuración puede desactivarla](#which-settings-can-disable-it) cubre los cuatro casos.909Requiere Claude Code v2.1.285 o posterior. De v2.1.282 a v2.1.284, los mismos ajustes hacían que Claude Code ignorara las entradas `excludedCommands` de un repositorio.

714 910 

715`excludedCommands` no tiene un bloqueo equivalente solo administrado, por lo que un desarrollador siempre puede agregar entradas que ejecuten comandos adicionales fuera del sandbox. Mantenga la lista administrada estrecha.911<h4 id="locks-that-apply-without-an-admin-required-sandbox">

912 Bloqueos que se aplican sin un sandbox requerido por el administrador

913</h4>

914 

915Algunos ajustes hacen que Claude Code ignore las claves del repositorio que sobrescriben directamente una restricción, incluso cuando el sandbox no es requerido por el administrador. Cada uno tiene este efecto solo cuando lo estableces en un archivo que nombra su fila, y los demás ajustes del sandbox del repositorio siguen aplicándose. Requiere Claude Code v2.1.285 o posterior.

916 

917| Ajuste | Dónde lo estableces | Lo que Claude Code ignora en la configuración de un repositorio |

918| :- | :- | :- |

919| `network.deniedDomains` o una regla de denegación `WebFetch(domain:...)` | Configuración administrada, `--settings` | `httpProxyPort` y `socksProxyPort` |

920| `network.strictAllowlist` | Configuración administrada, `--settings`, configuración de usuario | Los puertos de proxy, `allowedDomains` y las reglas de permiso `WebFetch(domain:...)` |

921| `filesystem.denyRead`, una regla de denegación `Read(...)` o una entrada `credentials.files` | Configuración administrada, `--settings` | Una entrada `allowRead`, `allowWrite`, de permiso `Edit(...)` o `additionalDirectories` en o bajo una ruta cuya lectura deniegan la configuración administrada, `--settings` o la configuración de usuario, o un glob que podría coincidir con una |

922 

923Estos bloqueos cambian lo que pueden alcanzar los comandos aislados. La herramienta WebFetch y las herramientas de archivos de Claude siguen respetando las reglas y los directorios adicionales de un repositorio.

716 924 

717<h3 id="custom-proxy-configuration">925<h3 id="custom-proxy-configuration">

718 Configuración de proxy personalizado926 Configuración de proxy personalizado

719</h3>927</h3>

720 928 

721Para organizaciones que requieren seguridad de red avanzada, puede implementar un proxy personalizado para:929Para inspeccionar, filtrar o registrar el tráfico del sandbox con tus propias herramientas, reemplaza el proxy integrado del sandbox por un proxy que ejecutes en la misma máquina.

722 930 

723* Descifrar e inspeccionar tráfico HTTPS931Para enrutar el tráfico del sandbox a través de un proxy corporativo ubicado en otra parte de tu red, establece `HTTPS_PROXY` en su lugar, como describe la entrada **Proxy corporativo** en [Aislamiento de red](#network-isolation). De esa manera, la lista de permitidos de Claude Code sigue aplicándose.

724* Aplicar reglas de filtrado personalizadas

725* Registrar todas las solicitudes de red

726* Integrar con infraestructura de seguridad existente

727 932 

728Para apuntar Claude Code a su proxy, establezca los puertos del proxy en [configuración de sandbox](/docs/es/settings-reference#sandbox-settings):933Para dirigir los comandos aislados a tu proxy, establece los puertos de localhost en los que escucha en la [configuración del sandbox](/docs/es/settings-reference#sandbox-settings):

729 934 

730```json theme={null}935```json theme={null}

731{936{


738}943}

739```944```

740 945 

946Si estableces un puerto y también estableces `HTTPS_PROXY` o `HTTP_PROXY`, Claude Code no reenvía lo que los comandos aislados envían a tu proxy hacia el proxy que nombran esas variables. Para llegar a un proxy corporativo, configura tu propio proxy para que reenvíe a él.

947 

948Qué archivos pueden establecer un puerto depende de tus demás ajustes del sandbox:

949 

950* **`allowManagedDomainsOnly` está activado**: solo la configuración administrada

951* **El sandbox es [requerido por el administrador](#repository-settings-under-an-admin-required-sandbox), o se aplica un [bloqueo de red más limitado](#locks-that-apply-without-an-admin-required-sandbox)**: la configuración administrada, `--settings` y la configuración de usuario

952* **En cualquier otro caso**: cualquier archivo de configuración

953 

954Claude Code ignora un puerto establecido en cualquier otro lugar. Antes de v2.1.285, cualquier archivo de configuración podía establecer un puerto.

955 

956<Warning>

957 Una vez que se aplica cualquiera de los puertos, tu proxy es responsable de filtrar todo lo que se le envía. Los controles de red propios de Claude Code, como `allowedDomains`, `deniedDomains`, `strictAllowlist`, las solicitudes de aprobación y la [verificación de direcciones locales](#hostnames-that-resolve-to-local-addresses), dejan de aplicarse a ese tráfico. Un comando aislado puede conectarse a cualquiera de los dos proxies, así que si estableces solo un puerto, las listas de dominios de Claude Code en el otro proxy no limitan lo que el comando alcanza a través del tuyo.

958</Warning>

959 

741<h2 id="troubleshooting">960<h2 id="troubleshooting">

742 Solución de problemas961 Solución de problemas

743</h2>962</h2>

744 963 

745Algunos comandos fallan dentro del sandbox aunque funcionen fuera de él. Las correcciones a continuación cubren los casos más comunes.964Algunos comandos fallan dentro del sandbox aunque funcionen fuera de él. La siguiente lista cubre correcciones breves. Las fallas que necesitan una explicación más larga tienen cada una su propio encabezado.

965 

966Si el sandbox de tu organización es [obligatorio por parte del administrador](#repository-settings-under-an-admin-required-sandbox), Claude Code ignora los ajustes que mencionan estas correcciones en los archivos de configuración de un proyecto, así que guárdalos en `~/.claude/settings.json`, donde se aplican en todos los proyectos. Si una corrección sigue sin tener efecto, es posible que la configuración administrada de tu organización establezca esa clave.

967 

968Una corrección que agrega un patrón a `excludedCommands` quita el sandbox de los comandos que coinciden con el patrón. Consulta [qué puede hacer un comando excluido](#run-commands-outside-the-sandbox-with-excludedcommands).

746 969 

747* **Los comandos fallan con un error de host no permitido**: muchas herramientas CLI necesitan alcanzar hosts específicos. Otorgar permiso cuando se solicita agrega el host a su lista de permitidos para que la herramienta se ejecute dentro del sandbox en el futuro.970* **Los comandos fallan con un error de host no permitido**: muchas herramientas CLI necesitan alcanzar hosts específicos. Aprueba el host cuando se te solicite, o agrégalo a [`allowedDomains`](/docs/es/settings-reference#sandbox-network-alloweddomains). Si tu organización bloquea la lista de dominios permitidos con `allowManagedDomainsOnly`, no hay solicitud, así que pide a tu administrador que agregue el host.

748* **`jest` se cuelga o falla**: `watchman` es incompatible con el sandbox. Ejecute `jest --no-watchman` en su lugar.971* **`jest` se cuelga o falla**: `watchman` es incompatible con el sandbox. Ejecuta `jest --no-watchman` en su lugar.

749* **Las CLI basadas en Go fallan en la verificación de TLS en macOS**: herramientas como `gh`, `gcloud` y `terraform` pueden fallar en la verificación de TLS bajo Seatbelt. Liste estas herramientas en [`excludedCommands`](/docs/es/settings-reference#sandbox-excludedcommands). Si está usando `httpProxyPort` con un proxy MITM y CA personalizado, establezca [`enableWeakerNetworkIsolation`](/docs/es/settings-reference#sandbox-enableweakernetworkisolation) en `true` en su lugar.972* **Las CLI basadas en Go fallan en la verificación de TLS en macOS**: herramientas como `gh`, `gcloud` y `terraform` pueden fallar en la verificación de TLS bajo Seatbelt. Agrega un patrón para cada herramienta, como `gh *`, a [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands). La herramienta se ejecuta entonces con tu acceso completo y sus credenciales almacenadas. Si estás usando `httpProxyPort` con un proxy MITM y CA personalizado, establece [`enableWeakerNetworkIsolation`](/docs/es/settings-reference#sandbox-enableweakernetworkisolation) en `true` en su lugar.

750* **`open`, `osascript` o los flujos de autenticación basados en navegador fallan con el error `-600` en macOS**: el sandbox bloquea Apple Events de forma predeterminada. Establezca [`allowAppleEvents`](/docs/es/settings-reference#sandbox-allowappleevents) en `true` en su configuración de usuario, administrada o CLI para permitirlos. La configuración del proyecto se ignora para esta clave. Habilitarlo elimina el aislamiento de ejecución de código, ya que los comandos aislados pueden entonces lanzar otras aplicaciones sin aislar sin solicitud del usuario y enviar comandos AppleScript a aplicaciones en ejecución, sujeto a la solicitud de consentimiento de automatización de macOS (TCC). Alternativamente, agregue el comando a [`excludedCommands`](/docs/es/settings-reference#sandbox-excludedcommands).973* **`open`, `osascript` o los flujos de autenticación basados en navegador fallan con el error `-600` en macOS**: el sandbox bloquea Apple Events de forma predeterminada. Establece [`allowAppleEvents`](/docs/es/settings-reference#sandbox-allowappleevents) en `true` en tu configuración de usuario, administrada o CLI para permitirlos. La configuración del proyecto se ignora para esta clave. Habilitarlo elimina el aislamiento de ejecución de código, ya que los comandos aislados pueden entonces lanzar otras aplicaciones sin aislar sin solicitud del usuario y enviar comandos AppleScript a aplicaciones en ejecución, sujeto a la solicitud de consentimiento de automatización de macOS (TCC). Alternativamente, agrega un patrón como `open *` a [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands). Cada llamada a `open` pasa entonces por el flujo de permisos, y `open` puede lanzar cualquier archivo o aplicación, incluido uno que Claude haya escrito.

751* **Los comandos `docker` fallan**: `docker` es incompatible con el sandbox. Agregue `docker *` a [`excludedCommands`](/docs/es/settings-reference#sandbox-excludedcommands).974* **Los comandos `docker` fallan**: `docker` es incompatible con el sandbox. Saca del sandbox los comandos `docker` que necesites con un patrón de [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands) como `docker compose *`. Esa sección explica a qué puede acceder un comando `docker` excluido. Un patrón más específico saca menos comandos del sandbox.

752* **`pbcopy`, `xclip` o `wl-copy` no actualiza el portapapeles**: estas utilidades de portapapeles pueden fallar al alcanzar el portapapeles del sistema desde dentro del sandbox, en cuyo caso el texto canalizado hacia ellas no llega.975* **`pbcopy`, `xclip` o `wl-copy` no actualiza el portapapeles**: estas utilidades de portapapeles pueden fallar al alcanzar el portapapeles del sistema desde dentro del sandbox, en cuyo caso el texto canalizado hacia ellas no llega.

753 976 

754 Para poner la salida de Claude en su portapapeles, pida a Claude que la imprima en su respuesta, luego ejecute [`/copy`](/docs/es/commands). `/copy` escribe en el portapapeles desde el proceso Claude Code en lugar de desde un comando aislado.977 Para poner la salida de Claude en tu portapapeles, pide a Claude que la imprima en su respuesta, luego ejecuta [`/copy`](/docs/es/commands). `/copy` escribe en el portapapeles desde el proceso Claude Code en lugar de desde un comando aislado.

755 978 

756 Cuando Claude canaliza texto a una de estas herramientas, agregar la herramienta a [`excludedCommands`](/docs/es/settings-reference#sandbox-excludedcommands) no saca esa llamada del sandbox por sí sola.979 Cuando Claude canaliza texto a una de estas herramientas, agregar la herramienta a [`excludedCommands`](/docs/es/settings-reference#sandbox-excludedcommands) no saca esa llamada del sandbox por sí sola.

757* **Un comando git falla con `unable to unlink old`**: `git merge`, `git checkout` y comandos similares fallan de esta manera cuando necesitan reemplazar un archivo al que el sandbox deniega escrituras, ya sea que ese archivo esté bajo una [ruta protegida](#protected-paths) como `.claude/skills`, bajo una de sus entradas `denyWrite`, o fuera de los directorios en los que el sandbox permite que los comandos escriban en absoluto. En Linux y WSL2 el error termina con `Read-only file system`.980* **Un comando git falla con `unable to unlink old`**: `git merge`, `git checkout` y comandos similares fallan de esta manera cuando necesitan reemplazar un archivo al que el sandbox deniega escrituras, ya sea que ese archivo esté bajo una [ruta protegida](#protected-paths) como `.claude/skills`, bajo una de tus entradas `denyWrite`, o fuera de los directorios en los que el sandbox permite que los comandos escriban en absoluto. En Linux y WSL2 el error termina con `Read-only file system`.

758 981 

759 Después de la falla, Claude puede [ofrecer ejecutar nuevamente el comando fuera del sandbox](#the-unsandboxed-retry-escape-hatch); apruebe ese reintento o ejecute el comando git usted mismo en otra terminal. Si ha establecido `allowUnsandboxedCommands` en `false`, Claude no puede ofrecer el reintento, así que ejecute el comando usted mismo. Si el mismo comando git falla a menudo, agréguelo a [`excludedCommands`](/docs/es/settings-reference#sandbox-excludedcommands).982 Después de la falla, Claude puede [ofrecer ejecutar nuevamente el comando fuera del sandbox](#the-unsandboxed-retry-escape-hatch); aprueba ese reintento o ejecuta el comando git tú mismo en otra terminal. Si has establecido `allowUnsandboxedCommands` en `false`, Claude no puede ofrecer el reintento, así que ejecuta el comando tú mismo.

760* **Bubblewrap falla al iniciarse dentro de un contenedor**: en un contenedor sin privilegios, bubblewrap no puede montar un sistema de archivos `/proc` nuevo, por lo que los comandos aislados fallan con un error `bwrap` como `Can't mount proc on /newroot/proc: Operation not permitted`. Establezca [`enableWeakerNestedSandbox`](/docs/es/settings-reference#sandbox-enableweakernestedsandbox) en `true` para que el sandbox interno monte el `/proc` existente del contenedor en su lugar. Solo use esta configuración cuando el contenedor externo ya proporcione el límite de aislamiento que necesita, ya que expone información de proceso a comandos aislados que un montaje `/proc` nuevo ocultaría.983* **Bubblewrap falla al iniciarse dentro de un contenedor**: en un contenedor sin privilegios, bubblewrap no puede montar un sistema de archivos `/proc` nuevo, por lo que los comandos aislados fallan con un error `bwrap` como `Can't mount proc on /newroot/proc: Operation not permitted`. Establece [`enableWeakerNestedSandbox`](/docs/es/settings-reference#sandbox-enableweakernestedsandbox) en `true` para que el sandbox interno monte el `/proc` existente del contenedor en su lugar. Solo usa este ajuste cuando el contenedor externo ya proporcione el límite de aislamiento que necesitas, ya que expone información de proceso a comandos aislados que un montaje `/proc` nuevo ocultaría.

761* **Los archivos de solo lectura de 0 bytes aparecen en las rutas de configuración `.claude`, y "Sí, y no preguntar de nuevo" no guarda**: en Linux y WSL2, el sandbox mantiene una denegación de escritura en un archivo que aún no existe creando un marcador de posición de solo lectura de 0 bytes allí mientras se ejecuta un comando aislado. El sandbox elimina el marcador de posición después. Si una sesión se mata antes de que se ejecute esa limpieza, por ejemplo por SIGKILL, los marcadores de posición permanecen. Las sesiones posteriores los vinculan de solo lectura nuevamente en cada inicio, por lo que una escritura de configuración como guardar una opción de permiso falla donde se encuentra uno.984* **Los archivos de solo lectura de 0 bytes aparecen en las rutas de configuración `.claude`, y "Sí, y no preguntar de nuevo" no guarda**: en Linux y WSL2, el sandbox mantiene una denegación de escritura en un archivo que aún no existe creando un marcador de posición de solo lectura de 0 bytes allí mientras se ejecuta un comando aislado. El sandbox elimina el marcador de posición después. Si una sesión se mata antes de que se ejecute esa limpieza, por ejemplo por SIGKILL, los marcadores de posición permanecen. Las sesiones posteriores los vinculan de solo lectura nuevamente en cada inicio, por lo que una escritura de configuración como guardar una opción de permiso falla donde se encuentra uno.

762 985 

763 Ejecute `claude doctor` para enumerar los archivos de marcador de posición restantes. La advertencia [`Stale sandbox mask files left by a killed session`](/docs/es/errors#stale-sandbox-mask-files-left-by-a-killed-session) nombra hasta tres de ellos y cuenta el resto. Elimine cada archivo con `rm` mientras no se ejecute ninguna otra sesión de Claude Code en ese proyecto. Antes de v2.1.257, Claude Code dejaba los mismos marcadores de posición sin marcarlos.986 Ejecuta `claude doctor` para enumerar los archivos de marcador de posición restantes. La advertencia [`Stale sandbox mask files left by a killed session`](/docs/es/errors#stale-sandbox-mask-files-left-by-a-killed-session) nombra hasta tres de ellos y cuenta el resto. Elimina cada archivo con `rm` mientras no se ejecute ninguna otra sesión de Claude Code en ese proyecto. Antes de v2.1.257, Claude Code dejaba los mismos marcadores de posición sin marcarlos.

764* **`--dangerously-skip-permissions` falla como root**: esta bandera se bloquea cuando se ejecuta como root o a través de sudo en Linux y macOS, porque el acceso root combinado sin solicitudes de permiso puede modificar cualquier archivo o servicio en el sistema. La verificación se omite automáticamente dentro de un sandbox reconocido. Para ejecutar de manera autónoma en un contenedor, use la configuración [contenedor de desarrollo](/docs/es/devcontainer), que ejecuta Claude Code como un usuario no root.987* **`--dangerously-skip-permissions` falla como root**: este flag se bloquea cuando se ejecuta como root o a través de sudo en Linux y macOS, porque el acceso root combinado sin solicitudes de permiso puede modificar cualquier archivo o servicio en el sistema. La verificación se omite automáticamente dentro de un sandbox reconocido. Para ejecutar de manera autónoma en un contenedor, usa la configuración [contenedor de desarrollo](/docs/es/devcontainer), que ejecuta Claude Code como un usuario no root.

988 

989<h3 id="git-over-ssh-fails-with-the-sandbox-on">

990 `git` sobre SSH falla con el sandbox activado

991</h3>

992 

993En macOS, `git fetch`, `git pull` y `git push` contra un remoto SSH fallan dentro del sandbox incluso cuando el host está permitido. En Linux y WSL2, funcionan una vez que el host está permitido. Claude Code canaliza la conexión SSH de git a través del [proxy del sandbox](#network-isolation), y el túnel de macOS no puede autenticarse ante ese proxy.

994 

995En Linux y WSL2, revisa lo siguiente si la conexión sigue fallando:

996 

997* **El host está permitido en el puerto 22**: una entrada de `allowedDomains` sin puerto, como `"git.example.com"`, lo cubre

998* **Tu proxy corporativo permite el puerto 22**: si tu red requiere un proxy ascendente, el túnel también pasa por él

999* **La clave se puede leer como archivo**: el sandbox puede bloquear el socket de `ssh-agent`, y una entrada `denyRead` o `credentials` para `~/.ssh` oculta tus archivos de clave

1000 

1001En macOS, cambia el remoto a HTTPS, lo que requiere credenciales HTTPS como un token de acceso personal:

1002 

1003```bash theme={null}

1004git remote set-url origin https://git.example.com/example-org/example-repo.git

1005```

1006 

1007Si tienes que mantener el remoto SSH, saca los comandos de red de git del sandbox con [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands):

1008 

1009```json theme={null}

1010{

1011 "sandbox": {

1012 "excludedCommands": ["git fetch *", "git pull *", "git push *"]

1013 }

1014}

1015```

1016 

1017Estas entradas coinciden con `git push origin main`. Una llamada que agrega un `cd`, usa `git -C` o contiene una sustitución de comandos permanece en el sandbox. Los comandos git excluidos pueden alcanzar cualquier host, no solo los que están en `allowedDomains`.

1018 

1019`ssh`, `scp` y `rsync` sobre SSH por sí solos fallan por la razón que indica [la entrada del cliente de base de datos](#a-database-client-or-other-non-http-tool-fails-to-reach-an-allowed-host).

1020 

1021<h3 id="a-database-client-or-other-non-http-tool-fails-to-reach-an-allowed-host">

1022 Un cliente de base de datos u otra herramienta no HTTP no logra alcanzar un host permitido

1023</h3>

1024 

1025Una herramienta que ignora las variables de entorno del proxy no puede conectarse desde dentro del sandbox, ni siquiera a un host que esté en `allowedDomains`. Un comando aislado [no tiene una ruta directa a la red](#network-isolation), por lo que una herramienta que abre su propia conexión falla. La mayoría de los controladores de bases de datos, `ssh` por sí solo y las herramientas que usan UDP se comportan de esta manera.

1026 

1027La falla se ve como un error de red o de resolución de nombres:

1028 

1029* **macOS**: `Operation not permitted`, o un error de resolución de nombres como `Could not resolve host`

1030* **Linux y WSL2**: `Network is unreachable`, o un error de resolución de nombres como `Temporary failure in name resolution`

1031 

1032Una herramienta que usa el proxy falla de otra manera cuando su host no está permitido. Recibes una solicitud de red, o la herramienta recibe una respuesta `403` del proxy.

1033 

1034Para permitir que la herramienta se conecte, ejecuta el comando que la necesita fuera del sandbox con [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands). Este ejemplo excluye un script y agrega una [regla ask](/docs/es/permissions) para que apruebes cada ejecución:

1035 

1036```json theme={null}

1037{

1038 "sandbox": {

1039 "excludedCommands": ["python scripts/load_orders.py *"]

1040 },

1041 "permissions": {

1042 "ask": ["Bash(python scripts/load_orders.py *)"]

1043 }

1044}

1045```

1046 

1047El script se ejecuta con tu acceso completo, y Claude puede editar un script que esté dentro de tu directorio de trabajo, así que revísalo cuando aparezca la solicitud.

1048 

1049<h3 id="a-command-fails-to-reach-a-server-on-localhost">

1050 Un comando no logra alcanzar un servidor en localhost

1051</h3>

1052 

1053De forma predeterminada, un comando aislado no puede conectarse directamente a un servidor que se ejecuta en tu máquina fuera del sandbox, como un servidor de desarrollo o una base de datos en un contenedor. Lo que puedes cambiar depende de tu plataforma:

1054 

1055* **macOS**: establece [`network.allowLocalBinding`](/docs/es/settings-reference#sandbox-network-allowlocalbinding) en `true`. Los comandos aislados pueden entonces escuchar en puertos de red y conectarse a cualquier puerto en localhost, lo que incluye todos los demás servicios que escuchan allí. Un servicio de localhost que no requiere autenticación, como un depurador, puede entonces actuar en nombre del comando fuera del sandbox, y un comando que escucha en una dirección que no es de loopback acepta conexiones de otras máquinas

1056* **Linux y WSL2**: el `localhost` de un comando aislado es privado para ese comando. El comando puede escuchar en un puerto y alcanzar servidores que él mismo inició. Una conexión directa a `localhost` o `127.0.0.1` no alcanza los servidores del host, y `allowLocalBinding` no tiene efecto. Ejecuta el comando que necesita el servidor del host fuera del sandbox con [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands), donde no tiene límites de sistema de archivos ni de red. Para conexiones que pasan por el proxy del sandbox, consulta [Nombres de host que se resuelven en direcciones locales](#hostnames-that-resolve-to-local-addresses)

1057 

1058Este ejemplo activa el ajuste para macOS:

1059 

1060```json theme={null}

1061{

1062 "sandbox": {

1063 "network": {

1064 "allowLocalBinding": true

1065 }

1066 }

1067}

1068```

1069 

1070Una entrada de `allowedDomains` para `localhost` se aplica a las conexiones que pasan por el proxy, por lo que no cambia una conexión directa. Claude Code establece `NO_PROXY` para los comandos aislados de modo que se conecten a `localhost` directamente en lugar de a través del proxy. La entrada también expone todos los puertos del localhost de tu máquina a un comando que sí usa el proxy. Para un nombre de host de desarrollo que apunta a `127.0.0.1`, consulta [Un nombre de host permitido se rechaza con `resolved to a loopback address`](#an-allowed-hostname-is-refused-with-resolved-to-a-loopback-address).

1071 

1072<h3 id="an-allowed-hostname-is-refused-with-resolved-to-a-loopback-address">

1073 Un nombre de host permitido se rechaza con `resolved to a loopback address`

1074</h3>

1075 

1076El proxy del sandbox rechaza un nombre de host permitido que [se resuelve en una dirección local](#hostnames-that-resolve-to-local-addresses), lo que afecta a nombres de desarrollo como `myapp.test` que apuntan a `127.0.0.1`. El comando ve una respuesta `403` cuyo cuerpo indica el tipo de dirección, como `Connection to myapp.test blocked: resolved to a loopback address`.

1077 

1078Agrega la dirección IP en la que se resuelve el nombre junto al nombre de host en `allowedDomains`, cada uno con el puerto en el que escucha tu servidor:

1079 

1080```json theme={null}

1081{

1082 "sandbox": {

1083 "network": {

1084 "allowedDomains": ["myapp.test:3000", "127.0.0.1:3000"]

1085 }

1086 }

1087}

1088```

1089 

1090Una entrada de dirección IP sin puerto permite que los comandos aislados alcancen todos los servicios que escuchan en esa dirección.

1091 

1092Antes de v2.1.284, el proxy se conectaba a cualquier dirección en la que se resolviera un nombre de host permitido.

1093 

1094<h3 id="/sandbox-fails-with-sandbox-settings-are-overridden-by-a-higher-priority-configuration">

1095 `/sandbox` falla con `Sandbox settings are overridden by a higher-priority configuration`

1096</h3>

1097 

1098`/sandbox` imprime `Error: Sandbox settings are overridden by a higher-priority configuration and cannot be changed locally.` en lugar de abrir su panel cuando un [nivel de configuración](/docs/es/settings#settings-precedence) superior establece `sandbox.enabled`, `sandbox.autoAllowBashIfSandboxed` o `sandbox.allowUnsandboxedCommands`. El panel guarda tus elecciones en `.claude/settings.local.json`, y un valor guardado allí no puede sobrescribir esos niveles.

1099 

1100La configuración administrada y `--settings` tienen prioridad sobre la configuración local. Para ver cuáles de ellas cargó esta sesión, ejecuta `/status` y lee la línea `Setting sources`:

1101 

1102* **`Command line arguments`**: si iniciaste Claude Code con [`--settings`](/docs/es/settings#change-a-setting-for-one-session), comprueba si el archivo o JSON que pasaste establece una de esas claves. Si es así, cambia el valor allí, o inicia Claude Code de nuevo sin esas claves.

1103* **`Enterprise managed settings`**: la configuración administrada de tu organización está cargada. Si establece una de esas claves, no puedes cambiar esa clave desde `/sandbox` ni desde ningún archivo de configuración que controles, así que consulta a tu administrador.

765 1104 

766<h2 id="limitations">1105<h2 id="limitations">

767 Limitaciones1106 Limitaciones

768</h2>1107</h2>

769 1108 

770El sandboxing reduce el riesgo pero no es un límite de aislamiento completo. Revise las limitaciones a continuación antes de confiar en él como un control de seguridad duro.1109El sandboxing reduce el riesgo pero no es un límite de aislamiento completo. Revisa las limitaciones a continuación antes de confiar en él como un control de seguridad duro.

771 1110 

772<h3 id="security-limitations">1111<h3 id="security-limitations">

773 Limitaciones de seguridad1112 Limitaciones de seguridad

774</h3>1113</h3>

775 1114 

776* **Filtrado de red**: el sandbox restringe los dominios a los que se permite que se conecten los procesos. De forma predeterminada, el proxy integrado no termina ni inspecciona TLS en el tráfico saliente, por lo que el contenido de las conexiones cifradas no se examina. La configuración experimental [`network.tlsTerminate`](/docs/es/settings-reference#sandbox-network-tlsterminate) termina TLS en el proxy para [sustitución de credenciales `mask`](#mask-credentials) pero no añade filtrado de contenido. Usted es responsable de asegurarse de que solo se permitan dominios confiables en su política.1115* **Filtrado de red**: el sandbox restringe los dominios a los que se permite que se conecten los procesos. De forma predeterminada, el proxy integrado no termina ni inspecciona TLS en el tráfico saliente, por lo que el contenido de las conexiones cifradas no se examina. El ajuste experimental [`network.tlsTerminate`](/docs/es/settings-reference#sandbox-network-tlsterminate) termina TLS en el proxy para [sustitución de credenciales `mask`](#mask-credentials) pero no añade filtrado de contenido. Eres responsable de asegurarte de que solo se permitan dominios confiables en tu política.

777 1116 

778<Warning>1117<Warning>

779 Permitir dominios amplios como `github.com` puede crear caminos para exfiltración de datos. Porque el proxy toma su decisión de permitir del nombre de host suministrado por el cliente sin inspeccionar TLS, el código que se ejecuta dentro del sandbox puede potencialmente usar [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) u técnicas similares para alcanzar hosts fuera de la lista de permitidos. Si su modelo de amenaza requiere garantías más fuertes, configure un [proxy personalizado](#custom-proxy-configuration) que termine TLS e inspeccione tráfico, e instale su certificado CA dentro del sandbox. El aislamiento de red consciente de TLS más fuerte es un área activa de desarrollo.1118 Permitir dominios amplios como `github.com` puede crear caminos para exfiltración de datos. Porque el proxy toma su decisión de permitir del nombre de host suministrado por el cliente sin inspeccionar TLS, el código que se ejecuta dentro del sandbox puede potencialmente usar [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) o técnicas similares para alcanzar hosts fuera de la lista de permitidos. Si tu modelo de amenaza requiere garantías más fuertes, configura un [proxy personalizado](#custom-proxy-configuration) que termine TLS e inspeccione tráfico, e instala su certificado CA dentro del sandbox. El aislamiento de red consciente de TLS más fuerte es un área activa de desarrollo.

780</Warning>1119</Warning>

781 1120 

782* **Escalada de privilegios a través de sockets Unix**: la configuración `allowUnixSockets` puede otorgar inadvertidamente acceso a servicios del sistema que podrían llevar a omisiones del sandbox. Por ejemplo, permitir acceso a `/var/run/docker.sock` efectivamente otorga acceso al sistema host a través del socket de Docker. Considere cuidadosamente cualquier socket Unix que permita a través del sandbox.1121* **Escalada de privilegios a través de sockets Unix**: la configuración `allowUnixSockets` puede otorgar inadvertidamente acceso a servicios del sistema que podrían llevar a omisiones del sandbox. Por ejemplo, permitir acceso a `/var/run/docker.sock` efectivamente otorga acceso al sistema host a través del socket de Docker. Considera cuidadosamente cualquier socket Unix que permitas a través del sandbox.

783* **Escalada de permisos del sistema de archivos**: los permisos de escritura del sistema de archivos demasiado amplios pueden permitir ataques de escalada de privilegios. Permitir escrituras en directorios que contienen ejecutables en `$PATH`, directorios de configuración del sistema o archivos de configuración de shell del usuario como `.bashrc` o `.zshrc` puede llevar a ejecución de código en diferentes contextos de seguridad cuando otros usuarios o procesos del sistema acceden a estos archivos.1122* **Escalada de permisos del sistema de archivos**: los permisos de escritura del sistema de archivos demasiado amplios pueden permitir ataques de escalada de privilegios. Permitir escrituras en directorios que contienen ejecutables en `$PATH`, directorios de configuración del sistema o archivos de configuración de shell del usuario como `.bashrc` o `.zshrc` puede llevar a ejecución de código en diferentes contextos de seguridad cuando otros usuarios o procesos del sistema acceden a estos archivos.

784* **Fortaleza del sandbox de Linux**: la implementación de Linux proporciona un fuerte aislamiento del sistema de archivos y la red pero incluye un modo `enableWeakerNestedSandbox` que le permite funcionar dentro de entornos Docker sin espacios de nombres privilegiados, o en hosts Linux donde los espacios de nombres de usuario sin privilegios están deshabilitados por sysctl. Esta opción debilita considerablemente la seguridad y solo debe usarse cuando se aplica aislamiento adicional de otra manera.1123* **Fortaleza del sandbox de Linux**: la implementación de Linux proporciona un fuerte aislamiento del sistema de archivos y la red pero incluye un modo `enableWeakerNestedSandbox` que le permite funcionar dentro de entornos Docker sin espacios de nombres privilegiados. Esta opción debilita considerablemente la seguridad y solo debe usarse cuando se aplica aislamiento adicional de otra manera.

785* **Apple Events en macOS**: el sandbox de macOS bloquea Apple Events de forma predeterminada. La configuración `allowAppleEvents` levanta esta restricción para que herramientas como `open` y `osascript` funcionen, pero elimina el aislamiento de ejecución de código: los comandos aislados pueden lanzar otras aplicaciones sin aislar sin solicitud del usuario, y pueden enviar comandos AppleScript a aplicaciones en ejecución, sujeto al aviso de consentimiento de automatización por aplicación de macOS (TCC). Solo se honra desde configuración de usuario, administrada o CLI. La configuración del proyecto no puede habilitarla.1124* **Apple Events en macOS**: el sandbox de macOS bloquea Apple Events de forma predeterminada. El ajuste `allowAppleEvents` levanta esta restricción para que herramientas como `open` y `osascript` funcionen, pero elimina el aislamiento de ejecución de código: los comandos aislados pueden lanzar otras aplicaciones sin aislar sin solicitud del usuario, y pueden enviar comandos AppleScript a aplicaciones en ejecución, sujeto a la solicitud de consentimiento de automatización por aplicación de macOS (TCC). Solo se honra desde configuración de usuario, administrada o CLI. La configuración del proyecto no puede habilitarlo.

786 1125 

787<h3 id="platform-and-tool-compatibility">1126<h3 id="platform-and-tool-compatibility">

788 Compatibilidad de plataforma y herramienta1127 Compatibilidad de plataforma y herramienta


796 Alcance1135 Alcance

797</h3>1136</h3>

798 1137 

799El sandbox aísla subprocesos Bash. Otras herramientas operan bajo límites diferentes:1138El sandbox aísla los comandos de shell y sus procesos hijos. [Qué se ejecuta fuera del sandbox](#what-runs-outside-the-sandbox) enumera las herramientas y los procesos auxiliares que no cubre. El uso de computadora y los subagentes se relacionan con el sandbox de la siguiente manera:

800 1139 

801* **Herramientas de archivo integradas**: Read, Edit y Write usan el sistema de permisos directamente en lugar de ejecutarse a través del sandbox. Consulte [permisos](/docs/es/permissions).1140* **Uso de computadora**: cuando Claude abre aplicaciones y controla tu pantalla, se ejecuta en tu escritorio real en lugar de en un entorno aislado. Las solicitudes de permiso por aplicación controlan cada aplicación. Consulta [uso de computadora en la CLI](/docs/es/computer-use) o [uso de computadora en Desktop](/docs/es/desktop#let-claude-use-your-computer).

802* **Uso de computadora**: cuando Claude abre aplicaciones y controla su pantalla, se ejecuta en su escritorio real en lugar de en un entorno aislado. Las solicitudes de permiso por aplicación controlan cada aplicación. Consulte [uso de computadora en CLI](/docs/es/computer-use) o [uso de computadora en Desktop](/docs/es/desktop#let-claude-use-your-computer).

803* **Variables de entorno**: los comandos Bash aislados heredan el entorno del proceso padre de forma predeterminada, incluidas las credenciales establecidas allí. Use [`sandbox.credentials`](#protect-credentials) para desactivar o enmascarar variables específicas para comandos aislados, o establezca [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/es/env-vars) para eliminar credenciales de todos los subprocesos.

804* **Subagentes**: los [subagentes](/docs/es/sub-agents) se ejecutan en el mismo proceso que la sesión padre y usan la misma configuración de sandbox. Los comandos Bash dentro de un subagente están aislados cuando el sandboxing está habilitado en la sesión padre.1141* **Subagentes**: los [subagentes](/docs/es/sub-agents) se ejecutan en el mismo proceso que la sesión padre y usan la misma configuración de sandbox. Los comandos Bash dentro de un subagente están aislados cuando el sandboxing está habilitado en la sesión padre.

1142* **Mods**: un [mod](/docs/es/plugins/mods/overview) es un plugin que ejecuta su propio código dentro de Claude Code, y un proceso que inicia un mod se ejecuta fuera del sandbox. Consulta [Qué puede alcanzar un mod](/docs/es/plugins/mods/overview#what-a-mod-can-reach).

805 1143 

806<Warning>1144<Warning>

807 El sandboxing efectivo requiere tanto aislamiento del sistema de archivos como de la red. Sin aislamiento de red, un agente comprometido podría exfiltrar archivos sensibles como claves SSH. Sin aislamiento del sistema de archivos, ya sea por una política permisiva o por [deshabilitar la capa del sistema de archivos](#disable-filesystem-isolation), un agente comprometido podría instalar una puerta trasera en recursos del sistema para obtener acceso a la red. Cuando amplíe los valores predeterminados, verifique que una ruta `allowWrite`, una entrada `allowedDomains` amplia o una excepción `excludedCommands` no deshaga una restricción en el otro lado.1145 El sandboxing efectivo requiere tanto aislamiento del sistema de archivos como de la red. Sin aislamiento de red, un agente comprometido podría exfiltrar archivos sensibles como claves SSH. Sin aislamiento del sistema de archivos, ya sea por una política permisiva o por [deshabilitar la capa del sistema de archivos](#disable-filesystem-isolation), un agente comprometido podría instalar una puerta trasera en recursos del sistema para obtener acceso a la red. Cuando amplíes los valores predeterminados, verifica que una ruta `allowWrite`, una entrada `allowedDomains` amplia o una excepción `excludedCommands` no deshaga una restricción en el otro lado.

808</Warning>1146</Warning>

809 1147 

810<h2 id="see-also">1148<h2 id="see-also">

security.md +15 −19

Details

20 Arquitectura basada en permisos20 Arquitectura basada en permisos

21</h3>21</h3>

22 22 

23En modo Manual, Claude Code comienza con permisos de solo lectura. Cuando Claude Code necesita editar archivos, ejecutar pruebas o ejecutar comandos, le pregunta primero, y usted elige si aprobar la acción una sola vez o permitirla a partir de entonces.23El modo de permisos de una sesión determina qué acciones puede realizar Claude sin preguntarte primero. El modo automático es el modo de permisos inicial integrado para las sesiones interactivas en la terminal y en VS Code. [En qué modo comienza una sesión](/docs/es/permission-modes#which-mode-a-session-starts-in) cubre las versiones anteriores, otras superficies y los ajustes que cambian el modo de permisos inicial.

24 24 

25En modo Manual, Claude Code también pregunta antes de ejecutar comandos Bash que pueden modificar su sistema. Ejecuta un conjunto integrado de [comandos de solo lectura](/docs/es/permissions#read-only-commands) como `ls`, `cat`, y `git status` sin preguntar. Usted y su organización configuran estos permisos directamente.25* **Modo automático**: Un modelo clasificador separado revisa las acciones en lugar de ti y bloquea las que juzga inseguras. [Cómo el clasificador evalúa las acciones](/docs/es/permission-modes#how-the-classifier-evaluates-actions) enumera qué acciones Claude Code aprueba directamente, cuáles envía al clasificador y sobre cuáles Claude Code aún te pregunta. Tus reglas explícitas de solicitud y denegación aún se aplican, y tu organización puede [desactivar el modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode)

26* **Modo Manual**: Claude Code comienza con permisos de solo lectura. Cuando necesita editar archivos, ejecutar pruebas o ejecutar comandos, te pregunta primero, y tú eliges si aprobar la acción una sola vez o permitirla a partir de entonces. Ejecuta un conjunto integrado de [comandos de solo lectura](/docs/es/permissions#read-only-commands) como `ls`, `cat` y `git status` sin preguntar

26 27 

27En [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), un modelo clasificador separado revisa las acciones en lugar de usted y bloquea las que juzga inseguras. [Cómo el clasificador evalúa las acciones](/docs/es/permission-modes#how-the-classifier-evaluates-actions) enumera qué acciones Claude Code aprueba directamente, cuáles envía al clasificador y cuáles Claude Code aún le pregunta. Sus reglas explícitas de solicitud y denegación aún se aplican, y su organización puede [desactivar el modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode).28Tú y tu organización configuran estos permisos directamente. Para la configuración detallada de permisos, consulta [Permissions](/docs/es/permissions).

28 

29El modo de permiso en el que comienza una sesión depende de su plan, la superficie desde la que la inicia y su configuración y la de su organización; consulte [Permission modes](/docs/es/permission-modes#which-mode-a-session-starts-in).

30 

31Para la configuración detallada de permisos, consulte [Permissions](/docs/es/permissions).

32 29 

33<h3 id="built-in-protections">30<h3 id="built-in-protections">

34 Protecciones integradas31 Protecciones integradas


37Para mitigar riesgos en sistemas agénticos:34Para mitigar riesgos en sistemas agénticos:

38 35 

39* **Herramienta bash en sandbox**: [Sandbox](/docs/es/sandboxing) comandos bash con aislamiento del sistema de archivos y red, reduciendo solicitudes de permiso mientras se mantiene la seguridad. Configure con `/sandbox` para definir límites donde Claude Code puede trabajar de forma autónoma36* **Herramienta bash en sandbox**: [Sandbox](/docs/es/sandboxing) comandos bash con aislamiento del sistema de archivos y red, reduciendo solicitudes de permiso mientras se mantiene la seguridad. Configure con `/sandbox` para definir límites donde Claude Code puede trabajar de forma autónoma

40* **Límite de directorio de trabajo**: En modo Manual, Claude Code solo puede escribir en la carpeta donde se inició y sus subcarpetas, y no puede modificar archivos en directorios principales sin permiso explícito. En modo Manual, Claude Code también le pregunta antes de leer rutas fuera de este límite con las herramientas Read, Grep y Glob. Extienda el límite con [directorios adicionales](/docs/es/permissions#working-directories) para omitir la solicitud, o restrinja el acceso de lectura más amplio disponible para comandos Bash de solo lectura con [reglas de sandbox `denyRead`](/docs/es/sandboxing#filesystem-isolation), que se aplican solo cuando el sandbox está habilitado37* **Límite del directorio de trabajo**: En modo Manual, Claude Code te pregunta antes de que sus herramientas de archivos lean o escriban fuera de la carpeta donde se inició y sus subcarpetas. El límite es una solicitud de permiso, por lo que un comando Bash que apruebes aún puede escribir en cualquier lugar donde pueda hacerlo tu cuenta de usuario

38 * Para leer una carpeta sin la solicitud, agrégala como [directorio adicional](/docs/es/permissions#working-directories)

39 * Para restringir los comandos Bash a nivel del sistema operativo, activa el [sandboxing](/docs/es/sandboxing#filesystem-isolation)

41* **Mitigación de fatiga de solicitudes**: Soporte para listas de permitidos de comandos seguros frecuentemente utilizados por usuario, por base de código u por organización40* **Mitigación de fatiga de solicitudes**: Soporte para listas de permitidos de comandos seguros frecuentemente utilizados por usuario, por base de código u por organización

42* **Modo Aceptar Ediciones**: Aprueba automáticamente ediciones de archivos y un conjunto fijo de comandos Bash del sistema de archivos como `mkdir`, `touch`, `rm`, `mv`, `cp`, y `sed` para rutas en el directorio de trabajo. Otros comandos Bash y rutas fuera del alcance aún solicitan aprobación41* **Modo Aceptar Ediciones**: Aprueba automáticamente ediciones de archivos y un conjunto fijo de comandos Bash del sistema de archivos como `mkdir`, `touch`, `rm`, `mv`, `cp`, y `sed` para rutas en el directorio de trabajo. Otros comandos Bash y rutas fuera del alcance aún solicitan aprobación

43 42 


45 Responsabilidad del usuario44 Responsabilidad del usuario

46</h3>45</h3>

47 46 

48Claude Code solo tiene los permisos que usted le otorga. Usted es responsable de revisar el código y los comandos propuestos para verificar su seguridad antes de aprobarlos.47Eres responsable de revisar el código y los comandos propuestos para verificar su seguridad antes de aprobarlos.

49 48 

50<h2 id="protect-against-prompt-injection">49<h2 id="protect-against-prompt-injection">

51 Protéjase contra la inyección de solicitudes50 Protéjase contra la inyección de solicitudes


58</h3>57</h3>

59 58 

60* **Sistema de permisos**: En modo Manual, las operaciones sensibles requieren aprobación explícita59* **Sistema de permisos**: En modo Manual, las operaciones sensibles requieren aprobación explícita

61* **Análisis consciente del contexto**: Detecta instrucciones potencialmente dañinas analizando la solicitud completa

62* **Sanitización de entrada**: Previene la inyección de comandos procesando entradas del usuario

63* **Aprobación de comandos de red**: Los comandos que obtienen contenido de la web como `curl` y `wget` no se aprueban automáticamente de forma predeterminada. En modo Manual solicitan aprobación como cualquier otro comando Bash que no sea de solo lectura, por lo que aún puede aprobarlos una vez o agregar una regla de permiso explícita como `Bash(curl *)`. Para detenerlos, agréguelos a [`permissions.deny`](/docs/es/permissions#tool-specific-permission-rules). Una regla de denegación coincide con el comando [tal como está escrito](/docs/es/permissions#bash-rule-limits); para la aplicación de red que no depende del texto del comando, consulte [aislamiento de red de sandbox](/docs/es/sandboxing#network-isolation)60* **Aprobación de comandos de red**: Los comandos que obtienen contenido de la web como `curl` y `wget` no se aprueban automáticamente de forma predeterminada. En modo Manual solicitan aprobación como cualquier otro comando Bash que no sea de solo lectura, por lo que aún puede aprobarlos una vez o agregar una regla de permiso explícita como `Bash(curl *)`. Para detenerlos, agréguelos a [`permissions.deny`](/docs/es/permissions#tool-specific-permission-rules). Una regla de denegación coincide con el comando [tal como está escrito](/docs/es/permissions#bash-rule-limits); para la aplicación de red que no depende del texto del comando, consulte [aislamiento de red de sandbox](/docs/es/sandboxing#network-isolation)

64 61 

65<h3 id="privacy-safeguards">62<h3 id="privacy-safeguards">


79</h3>76</h3>

80 77 

81* **Aprobación de solicitudes de red**: En modo Manual, la mayoría de las herramientas que realizan solicitudes de red requieren aprobación del usuario de forma predeterminada78* **Aprobación de solicitudes de red**: En modo Manual, la mayoría de las herramientas que realizan solicitudes de red requieren aprobación del usuario de forma predeterminada

82* **Ventanas de contexto aisladas**: La obtención web utiliza una ventana de contexto separada para evitar inyectar solicitudes potencialmente maliciosas79* **Resúmenes de páginas web**: En la mayoría de las obtenciones, WebFetch ejecuta una llamada separada al modelo sobre la página, y Claude recibe la respuesta de esa llamada en lugar de la página sin procesar. Consulta [Comportamiento de la herramienta WebFetch](/docs/es/tools-reference#webfetch-tool-behavior)

83* **Verificación de confianza**: Las primeras ejecuciones de base de código y los nuevos servidores MCP requieren verificación de confianza80* **Verificación de confianza**: En una sesión interactiva, Claude Code muestra el diálogo de confianza del espacio de trabajo cuando lo inicias en una carpeta en la que no has confiado. Los servidores del `.mcp.json` de un proyecto tienen su propia solicitud de aprobación, y [Alcance de proyecto](/docs/es/mcp#project-scope) enumera las sesiones que la omiten

84 * Nota: La verificación de confianza está deshabilitada cuando se ejecuta de forma no interactiva con la bandera `-p`81 * Nota: Una sesión con `-p` no muestra ninguna de las dos solicitudes. [Qué se ejecuta antes de que confíes en una carpeta](/docs/es/permissions#what-runs-before-you-trust-a-folder) enumera lo que los archivos de un repositorio pueden ejecutar allí

85 * Nota: Cuando inicia Claude Code directamente en su directorio de inicio, la aceptación de confianza se mantiene solo para la sesión actual y no se escribe en el disco, por lo que el mensaje reaparece en cada lanzamiento. No hay ninguna configuración para persistirlo. Inicie Claude Code desde un subdirectorio de proyecto en su lugar, donde la aceptación de confianza se guarda por directorio82 * Nota: Cuando inicias Claude Code directamente en tu directorio home, la aceptación de confianza se mantiene solo para la sesión actual y no se escribe en el disco, por lo que el diálogo reaparece en cada lanzamiento. No hay ningún ajuste para persistirla. En su lugar, inicia Claude Code desde un subdirectorio de proyecto, donde la aceptación de confianza se guarda por directorio

86* **Detección de inyección de comandos**: En modo Manual, los comandos bash sospechosos requieren aprobación manual incluso si fueron permitidos previamente83* **Detección de inyección de comandos**: En modo Manual, Claude Code pide confirmación antes de ejecutar un comando Bash que no puede analizar por completo. Una regla de permiso para parte de un comando, como `Bash(git *)`, no omite esa solicitud. Los [comandos en sandbox](/docs/es/permissions#how-permissions-interact-with-sandboxing) pueden ejecutarse sin ella

87* **Coincidencia de cierre seguro**: En modo Manual, los comandos no coincidentes requieren aprobación de forma predeterminada84* **Coincidencia de cierre seguro**: En modo Manual, los comandos no coincidentes requieren aprobación de forma predeterminada

88* **Descripciones en lenguaje natural**: Los comandos bash complejos incluyen explicaciones para la comprensión del usuario85* **Almacenamiento seguro de credenciales**: Las claves de API y los tokens se almacenan en el Keychain de macOS cuando está disponible. En Linux se almacenan en un archivo con modo `0600`, y en Windows en un archivo que hereda los controles de acceso del directorio de tu perfil de usuario. Consulta [Credential Management](/docs/es/authentication#credential-management)

89* **Almacenamiento seguro de credenciales**: Las claves API y tokens se almacenan en el Keychain de macOS cuando está disponible, y están protegidos por permisos de archivo en Windows y Linux. Consulte [Credential Management](/docs/es/authentication#credential-management)

90 86 

91<Warning>87<Warning>

92 **Riesgo de seguridad de WebDAV en Windows**: Cuando ejecute Claude Code en Windows, le recomendamos que no habilite WebDAV ni permita que Claude Code acceda a rutas como `\\*` que pueden contener subdirectorios de WebDAV. [WebDAV ha sido deprecado por Microsoft](https://learn.microsoft.com/en-us/windows/whats-new/deprecated-features#:~:text=The%20Webclient%20\(WebDAV\)%20service%20is%20deprecated) debido a riesgos de seguridad. Habilitar WebDAV puede permitir que Claude Code desencadene solicitudes de red a hosts remotos, eludiendo el sistema de permisos.88 **Riesgo de seguridad de WebDAV en Windows**: Cuando ejecute Claude Code en Windows, le recomendamos que no habilite WebDAV ni permita que Claude Code acceda a rutas como `\\*` que pueden contener subdirectorios de WebDAV. [WebDAV ha sido deprecado por Microsoft](https://learn.microsoft.com/en-us/windows/whats-new/deprecated-features#:~:text=The%20Webclient%20\(WebDAV\)%20service%20is%20deprecated) debido a riesgos de seguridad. Habilitar WebDAV puede permitir que Claude Code desencadene solicitudes de red a hosts remotos, eludiendo el sistema de permisos.


110 Seguridad de MCP106 Seguridad de MCP

111</h2>107</h2>

112 108 

113Claude Code permite a los usuarios configurar servidores del Protocolo de Contexto del Modelo (MCP). La lista de servidores MCP permitidos se configura en su código fuente, como parte de la configuración de Claude Code que los ingenieros verifican en el control de versiones.109Puedes conectar Claude Code a servidores de Model Context Protocol (MCP). Los servidores con alcance de proyecto se definen en `.mcp.json`, que puedes incluir en el control de versiones. Los servidores con [otros alcances](/docs/es/mcp#mcp-installation-scopes) y los [conectores de claude.ai](/docs/es/mcp#how-connectors-reach-claude-code) se configuran fuera del repositorio, y los plugins también pueden agregar servidores, por lo que revisar `.mcp.json` no muestra todos los servidores que una sesión puede cargar. Para restringir qué servidores se ejecutan en tu organización, consulta [Configuración de MCP administrada](/docs/es/managed-mcp).

114 110 

115Le recomendamos que escriba sus propios servidores MCP o utilice servidores MCP de proveedores en los que confíe. Puede configurar permisos de Claude Code para servidores MCP. Anthropic revisa los conectores según sus [criterios de listado](https://claude.com/docs/connectors/building/review-criteria) antes de agregarlos al [Directorio de Anthropic](https://claude.ai/directory), pero no realiza auditorías de seguridad ni gestiona ningún servidor MCP.111Le recomendamos que escriba sus propios servidores MCP o utilice servidores MCP de proveedores en los que confíe. Puede configurar permisos de Claude Code para servidores MCP. Anthropic revisa los conectores según sus [criterios de listado](https://claude.com/docs/connectors/building/review-criteria) antes de agregarlos al [Directorio de Anthropic](https://claude.ai/directory), pero no realiza auditorías de seguridad ni gestiona ningún servidor MCP.

116 112 

Details

61 61 

62No cierre ni reutilice el descriptor de archivo 3 en el contenedor. Redirigir stdout y stderr del hijo está bien.62No cierre ni reutilice el descriptor de archivo 3 en el contenedor. Redirigir stdout y stderr del hijo está bien.

63 63 

64<h3 id="pass-the-system-prompt-flags-through">

65 Transmitir los flags del prompt del sistema

66</h3>

67 

68El prompt del sistema y el prompt del sistema anexado que el plano de control de Anthropic envía para una sesión llegan a tu contenedor como rutas de archivo, no como texto en línea. El ejecutor escribe cada prompt en un archivo en el directorio de configuración de la sesión, `CLAUDE_CONFIG_DIR`, y pasa su ruta en los argumentos que recibe tu contenedor, como [`--system-prompt-file <path>` o `--append-system-prompt-file <path>`](/docs/es/cli-reference#system-prompt-flags).

69 

70Los ejecutores en Claude Code v2.1.281 o posterior entregan los prompts como archivos. Antes de v2.1.281, el ejecutor los pasaba como `--system-prompt <text>` y `--append-system-prompt <text>`.

71 

72En tu script contenedor o [hook `command`](#command), maneja estos flags de la siguiente manera:

73 

74* **Transmítelos**: termina el contenedor con `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"`, que reenvía los flags de archivo junto con todos los demás argumentos. No los descartes ni los reescribas. Si una sesión pierde un flag de archivo de prompt, se ejecuta sin las instrucciones que el plano de control envió para ella.

75* **En un ejecutor con v2.1.281 o posterior, un flag de archivo que agregues reemplaza el del servidor, nunca se suma a él**: cada flag de archivo de prompt toma un único valor y Claude Code conserva la última aparición, por lo que si agregas `--append-system-prompt-file <path>` después de `"$@"`, el contenido de tu archivo reemplaza las instrucciones anexadas del servidor. Para agregar instrucciones además de las del servidor, colócalas en el `CLAUDE.md` de la imagen del ejecutor, que el ejecutor [incorpora en la configuración a nivel de usuario de cada sesión](#how-each-session’s-config-is-assembled).

76 

64<h3 id="provision-credentials-scoped-to-the-session-creator">77<h3 id="provision-credentials-scoped-to-the-session-creator">

65 Aprovisionar credenciales limitadas al creador de la sesión78 Aprovisionar credenciales limitadas al creador de la sesión

66</h3>79</h3>


447* **Quién los autor**: el plano de control puebla los scripts desde constantes fijas en su propia implementación, nunca desde entrada por sesión o de terceros.460* **Quién los autor**: el plano de control puebla los scripts desde constantes fijas en su propia implementación, nunca desde entrada por sesión o de terceros.

448* **Qué aún los rige**: los hooks entregados a través de `--settings` entran en la configuración de hook ordinaria fusionada, no en el nivel administrado, por lo que su configuración administrada aún se aplica. `disableAllHooks` los deshabilita, y no están entre las categorías que [`allowManagedHooksOnly`](/docs/es/settings-reference#allowmanagedhooksonly) mantiene cargadas.461* **Qué aún los rige**: los hooks entregados a través de `--settings` entran en la configuración de hook ordinaria fusionada, no en el nivel administrado, por lo que su configuración administrada aún se aplica. `disableAllHooks` los deshabilita, y no están entre las categorías que [`allowManagedHooksOnly`](/docs/es/settings-reference#allowmanagedhooksonly) mantiene cargadas.

449 462 

463Fuera de las sesiones de [Claude Tag](https://claude.com/docs/claude-tag/overview), una sesión en un entorno autohospedado se ejecuta con la [memoria automática](/docs/es/memory#auto-memory) desactivada de forma predeterminada. Para instrucciones que deban mantenerse entre sesiones, usa el `CLAUDE.md` de tu imagen del ejecutor o del repositorio.

464 

465La instantánea del `~/.claude/` del host que toma el ejecutor excluye el directorio `projects/`. La ubicación de almacenamiento predeterminada de la memoria automática está dentro de ese directorio. Si colocas archivos de memoria allí, el ejecutor no los copia a las sesiones, y no activan la memoria automática.

466 

450<h3 id="repository-committed-permission-rules">467<h3 id="repository-committed-permission-rules">

451 Reglas de permiso confirmadas en el repositorio468 Reglas de permiso confirmadas en el repositorio

452</h3>469</h3>

Details

174 ```jsonc .claude/settings.json theme={null}174 ```jsonc .claude/settings.json theme={null}

175 {175 {

176 "permissions": {176 "permissions": {

177 // Ejecute scripts npm sin preguntar177 // Ejecuta scripts npm sin preguntar

178 "allow": [178 "allow": [

179 "Bash(npm run *)"179 "Bash(npm run *)"

180 ],180 ],

181 // Confirme antes de comandos git push181 // Confirma antes de comandos git push

182 "ask": [182 "ask": [

183 "Bash(git push *)"183 "Bash(git push *)"

184 ],184 ],

185 // Deniegue lecturas de archivos env y la carpeta de secretos por las herramientas de archivo y comandos que leen archivos185 // Deniega lecturas de archivos env y la carpeta de secretos por las herramientas de archivo y comandos que leen archivos

186 "deny": [186 "deny": [

187 "Read(./.env)",187 "Read(./.env)",

188 "Read(./.env.*)",188 "Read(./.env.*)",

189 "Read(./secrets/**)"189 "Read(./secrets/**)"

190 ]190 ]

191 },191 },

192 // Antes de cada comando Bash, ejecute un script en el repositorio que pueda bloquearlo192 // Antes de cada comando Bash, ejecuta un script en el repositorio que pueda bloquearlo

193 "hooks": {193 "hooks": {

194 "PreToolUse": [194 "PreToolUse": [

195 {195 {


203 }203 }

204 ]204 ]

205 },205 },

206 // Registre el marketplace de plugins del equipo en cada clon206 // Registra el marketplace de plugins del equipo en cada clon

207 "extraKnownMarketplaces": {207 "extraKnownMarketplaces": {

208 "acme-tools": {208 "acme-tools": {

209 "source": {209 "source": {


212 }212 }

213 }213 }

214 },214 },

215 // Habilite un plugin de ese marketplace; un plugin de una fuente externa como un repositorio de GitHub aún necesita que cada persona lo instale una vez215 // Habilita un plugin de ese marketplace; un plugin de una fuente externa como un repositorio de GitHub aún necesita que cada persona lo instale una vez

216 "enabledPlugins": {216 "enabledPlugins": {

217 "code-formatter@acme-tools": true217 "code-formatter@acme-tools": true

218 },218 },

219 // Comandos de sandbox: directorio de compilación escribible; npm y example.com preaprobados, otros hosts aún solicitan219 // Comandos de sandbox: directorio de compilación escribible; npm y example.com preaprobados

220 "sandbox": {220 "sandbox": {

221 "enabled": true,221 "enabled": true,

222 "filesystem": {222 "filesystem": {


231 ]231 ]

232 }232 }

233 },233 },

234 // Mantenga los archivos de plan dentro del repositorio234 // Mantén los archivos de plan dentro del repositorio

235 "plansDirectory": "./plans"235 "plansDirectory": "./plans"

236 }236 }

237 ```237 ```


250* [`allowManagedPermissionRulesOnly`](/docs/es/settings-reference#allowmanagedpermissionrulesonly) y [`allowManagedMcpServersOnly`](/docs/es/settings-reference#allowmanagedmcpserversonly) hacen que las listas de permisos administrados y MCP sean las únicas que se apliquen250* [`allowManagedPermissionRulesOnly`](/docs/es/settings-reference#allowmanagedpermissionrulesonly) y [`allowManagedMcpServersOnly`](/docs/es/settings-reference#allowmanagedmcpserversonly) hacen que las listas de permisos administrados y MCP sean las únicas que se apliquen

251* `allowedMcpServers` fija el servidor MCP por URL251* `allowedMcpServers` fija el servidor MCP por URL

252* `strictKnownMarketplaces` permite un marketplace de plugins252* `strictKnownMarketplaces` permite un marketplace de plugins

253* `sandbox` coloca los comandos en sandbox con una lista de permisos de red fija y sin reintento sin sandbox253* `sandbox` ejecuta los comandos en el sandbox con una lista de dominios permitidos fija y sin reintento fuera del sandbox. Su clave `failIfUnavailable` [impide que Claude Code se inicie donde el sandbox no puede ejecutarse](/docs/es/sandboxing#enforce-sandboxing-with-managed-settings)

254* `requiredMinimumVersion` establece una versión mínima de Claude Code254* `requiredMinimumVersion` establece una versión mínima de Claude Code

255* `cleanupPeriodDays` acorta la retención de transcripciones de sesión y otros datos locales a siete días255* `cleanupPeriodDays` acorta la retención de transcripciones de sesión y otros datos locales a siete días

256* `companyAnnouncements` muestra un mensaje al inicio256* `companyAnnouncements` muestra un mensaje al inicio

settings-reference.md +660 −631

Details

577 Índice de configuración577 Índice de configuración

578</h2>578</h2>

579 579 

580Cada clave a continuación enlaza a su entrada. El alcance enumera los [archivos](/docs/es/settings#settings-files-and-who-they-affect) en los que puede ir: `User` es `~/.claude/settings.json`, `Project` es `.claude/settings.json`, `Local` es `.claude/settings.local.json`, y `Managed` es [lo que su organización implementa](/docs/es/managed-settings). `Any file` significa los cuatro, y `Global config` significa [`~/.claude.json`](#global-config-settings).580Cada clave a continuación enlaza a su entrada. El alcance enumera los [archivos](/docs/es/settings#settings-files-and-who-they-affect) en los que puede ir: `User` es `~/.claude/settings.json`, `Project` es `.claude/settings.json`, `Local` es `.claude/settings.local.json`, y `Managed` es [lo que tu organización implementa](/docs/es/managed-settings). `Any file` significa los cuatro, y `Global config` significa [`~/.claude.json`](#global-config-settings).

581 581 

582<ReferenceFilter582<ReferenceFilter

583 noun="settings"583 noun="settings"


591 591 

592| Clave | Descripción | Tema | Alcance |592| Clave | Descripción | Tema | Alcance |

593| :- | :- | :- | :- |593| :- | :- | :- | :- |

594| [`advisorModel`](#advisormodel) | Elija qué modelo responde cuando Claude pregunta la [herramienta asesor](/docs/es/advisor) | Modelo y respuestas | Any file |594| [`advisorModel`](#advisormodel) | Elige qué modelo responde cuando Claude consulta la [herramienta asesor](/docs/es/advisor) | Modelo y respuestas | Any file |

595| [`agent`](#agent) | Inicie cada sesión como un [subagente](/docs/es/sub-agents) nombrado con su prompt, herramientas y modelo | Agentes, sesiones y worktrees | Any file |595| [`agent`](#agent) | Inicia cada sesión como un [subagente](/docs/es/sub-agents) con nombre, con su prompt, herramientas y modelo | Agentes, sesiones y worktrees | Any file |

596| [`agentPushNotifEnabled`](#agentpushnotifenabled) | Permita que Claude envíe una [notificación push a su teléfono](/docs/es/remote-control#mobile-push-notifications) cuando decida hacerlo | Remoto, escritorio y notificaciones | Any file |596| [`agentPushNotifEnabled`](#agentpushnotifenabled) | Permite que Claude envíe una [notificación push a tu teléfono](/docs/es/remote-control#mobile-push-notifications) cuando lo decida | Remoto, escritorio y notificaciones | Any file |

597| [`allowAllClaudeAiMcps`](#allowallclaudeaimcps) | Cargue los [conectores de claude.ai](/docs/es/mcp) que Claude Code obtiene por sí mismo junto con un [`managed-mcp.json`](/docs/es/managed-mcp#exclusive-control-with-managed-mcp-json) implementado | MCP | Managed |597| [`allowAllClaudeAiMcps`](#allowallclaudeaimcps) | Carga los [conectores de claude.ai](/docs/es/mcp) que Claude Code obtiene por sí mismo junto con un [`managed-mcp.json`](/docs/es/managed-mcp#exclusive-control-with-managed-mcp-json) implementado | MCP | Managed |

598| [`allowClaudeInChromeWithManagedMcp`](#allowclaudeinchromewithmanagedmcp) | Permita que el servidor [Claude en Chrome](/docs/es/chrome) integrado se ejecute junto con un [`managed-mcp.json`](/docs/es/managed-mcp#exclusive-control-with-managed-mcp-json) implementado | MCP | Managed |598| [`allowClaudeInChromeWithManagedMcp`](#allowclaudeinchromewithmanagedmcp) | Permite que el servidor integrado de [Claude en Chrome](/docs/es/chrome) se ejecute junto con un [`managed-mcp.json`](/docs/es/managed-mcp#exclusive-control-with-managed-mcp-json) implementado | MCP | Managed |

599| [`allowedChannelPlugins`](#allowedchannelplugins) | Reemplace la lista de permitidos predeterminada de [plugins de canal](/docs/es/channels#restrict-which-channel-plugins-can-run) que pueden enviar mensajes | Plugins y skills | Managed |599| [`allowedChannelPlugins`](#allowedchannelplugins) | Reemplaza la lista de permitidos predeterminada de [plugins de canal](/docs/es/channels#restrict-which-channel-plugins-can-run) que pueden enviar mensajes | Plugins y skills | Managed |

600| [`allowedHttpHookUrls`](#allowedhttphookurls) | Limite qué URLs pueden dirigirse a los [hooks HTTP](/docs/es/hooks) | Hooks y automatización | Any file |600| [`allowedHttpHookUrls`](#allowedhttphookurls) | Limita a qué URLs pueden dirigirse los [hooks HTTP](/docs/es/hooks) | Hooks y automatización | Any file |

601| [`allowedMcpServers`](#allowedmcpservers) | Lista de permitidos de qué [servidores MCP](/docs/es/mcp) pueden agregar los usuarios | MCP | Any file |601| [`allowedMcpServers`](#allowedmcpservers) | Define una lista de permitidos de los [servidores MCP](/docs/es/mcp) que los usuarios pueden agregar | MCP | Any file |

602| [`allowedProviders`](#allowedproviders) | Limite qué [proveedores de API](/docs/es/third-party-integrations) puede usar una máquina | Autenticación y proveedores | Managed |602| [`allowedProviders`](#allowedproviders) | Limita qué [proveedores de API](/docs/es/third-party-integrations) puede usar una máquina | Autenticación y proveedores | Managed |

603| [`allowManagedHooksOnly`](#allowmanagedhooksonly) | Ejecute solo los [hooks](/docs/es/hooks) que su organización implementa | Hooks y automatización | Managed |603| [`allowManagedHooksOnly`](#allowmanagedhooksonly) | Ejecuta solo los [hooks](/docs/es/hooks) que tu organización implementa | Hooks y automatización | Managed |

604| [`allowManagedMcpServersOnly`](#allowmanagedmcpserversonly) | Haga que la lista de permitidos de [MCP](/docs/es/mcp) administrada sea la única que se aplique | MCP | Managed |604| [`allowManagedMcpServersOnly`](#allowmanagedmcpserversonly) | Haz que la lista de permitidos de [MCP](/docs/es/mcp) administrada sea la única que se aplique | MCP | Managed |

605| [`allowManagedPermissionRulesOnly`](#allowmanagedpermissionrulesonly) | Haga que la [configuración administrada](/docs/es/managed-settings) sea la única fuente de configuración de [reglas de permisos](/docs/es/permissions#managed-settings) | Configuración de permisos | Managed |605| [`allowManagedPermissionRulesOnly`](#allowmanagedpermissionrulesonly) | Haz que la [configuración administrada](/docs/es/managed-settings) sea la única fuente de configuración de [reglas de permisos](/docs/es/permissions#managed-settings) | Configuración de permisos | Managed |

606| [`alwaysThinkingEnabled`](#alwaysthinkingenabled) | Desactive el [pensamiento extendido](/docs/es/model-config#extended-thinking) para cada sesión | Modelo y respuestas | Any file |606| [`alwaysThinkingEnabled`](#alwaysthinkingenabled) | Desactiva el [pensamiento extendido](/docs/es/model-config#extended-thinking) en todas las sesiones | Modelo y respuestas | Any file |

607| [`apiKeyHelper`](#apikeyhelper) | Genere la [credencial de API](/docs/es/authentication#credential-management) con su propio comando | Autenticación y proveedores | Any file |607| [`apiKeyHelper`](#apikeyhelper) | Genera la [credencial de API](/docs/es/authentication#credential-management) con tu propio comando | Autenticación y proveedores | Any file |

608| [`askUserQuestionTimeout`](#askuserquestiontimeout) | Permita que una pregunta sin respuesta [continúe automáticamente](/docs/es/tools-reference#question-auto-continue-timeout) después del tiempo de inactividad | Interfaz y terminal | User or managed |608| [`askUserQuestionTimeout`](#askuserquestiontimeout) | Permite que una pregunta sin respuesta [continúe automáticamente](/docs/es/tools-reference#question-auto-continue-timeout) después de un tiempo de inactividad | Interfaz y terminal | User or managed |

609| [`appendPlugins`](#appendplugins) | Ejecute los [mods](/docs/es/plugins/mods/admin) de su organización después de cada mod que instale un usuario | Plugins y skills | User or managed |609| [`appendPlugins`](#appendplugins) | Ejecuta los [mods](/docs/es/plugins/mods/admin) de tu organización después de cada mod que instale un usuario | Plugins y skills | User or managed |

610| [`attribution`](#attribution) | Personalice la atribución que Claude Code agrega a commits y pull requests | Git y atribución | Any file |610| [`attribution`](#attribution) | Personaliza la atribución que Claude Code agrega a los commits y pull requests | Git y atribución | Any file |

611| [`attribution.commit`](#attribution-commit) | Cambie u oculte el tráiler que Claude Code agrega a los commits | Git y atribución | Any file |611| [`attribution.commit`](#attribution-commit) | Cambia u oculta el tráiler que Claude Code agrega a los commits | Git y atribución | Any file |

612| [`attribution.pr`](#attribution-pr) | Cambie u oculte la línea de atribución en las descripciones de pull requests | Git y atribución | Any file |612| [`attribution.pr`](#attribution-pr) | Cambia u oculta la línea de atribución en las descripciones de los pull requests | Git y atribución | Any file |

613| [`attribution.sessionUrl`](#attribution-sessionurl) | Omita el enlace de sesión de claude.ai de los commits de [nube](/docs/es/claude-code-on-the-web) y [Control Remoto](/docs/es/remote-control) | Git y atribución | Any file |613| [`attribution.sessionUrl`](#attribution-sessionurl) | Omite el enlace de sesión de claude.ai en los commits de [la nube](/docs/es/claude-code-on-the-web) y de [Remote Control](/docs/es/remote-control) | Git y atribución | Any file |

614| [`autoCompactEnabled`](#autocompactenabled) | Desactive o active la [compactación automática](/docs/es/context-window) | Memoria y contexto | Any file |614| [`autoCompactEnabled`](#autocompactenabled) | Desactiva o activa la [compactación automática](/docs/es/context-window) | Memoria y contexto | Any file |

615| [`autoCompactWindow`](#autocompactwindow) | Establezca qué tan lleno se llena el contexto antes de que Claude Code [compacte](/docs/es/context-window) | Memoria y contexto | Any file |615| [`autoCompactWindow`](#autocompactwindow) | Establece qué tan lleno puede estar el contexto antes de que Claude Code lo [compacte](/docs/es/context-window) | Memoria y contexto | Any file |

616| [`autoConnectIde`](#autoconnectide) | Conéctese automáticamente a un [VS Code](/docs/es/vs-code) o [JetBrains](/docs/es/jetbrains#from-external-terminals) IDE en ejecución desde una terminal externa | Configuración de configuración global | Global config |616| [`autoConnectIde`](#autoconnectide) | Conéctate automáticamente a un IDE de [VS Code](/docs/es/vs-code) o [JetBrains](/docs/es/jetbrains#from-external-terminals) en ejecución desde una terminal externa | Configuración de configuración global | Global config |

617| [`autoContinueAtUsageLimit`](#autocontinueatusagelimit) | Espere en la sesión abierta y [continúe la tarea automáticamente](/docs/es/interactive-mode#wait-for-a-usage-limit-to-reset) después de que se restablezca un límite de uso de claude.ai | Interfaz y terminal | User or managed |617| [`autoContinueAtUsageLimit`](#autocontinueatusagelimit) | Espera en la sesión abierta y [continúa la tarea automáticamente](/docs/es/interactive-mode#wait-for-a-usage-limit-to-reset) después de que se restablezca un límite de uso de claude.ai | Interfaz y terminal | User or managed |

618| [`autoInstallIdeExtension`](#autoinstallideextension) | Desactive la instalación automática de la [extensión IDE](/docs/es/vs-code#install-the-extension) desde una terminal de VS Code | Configuración de configuración global | Global config |618| [`autoInstallIdeExtension`](#autoinstallideextension) | Desactiva la instalación automática de la [extensión del IDE](/docs/es/vs-code#install-the-extension) desde una terminal de VS Code | Configuración de configuración global | Global config |

619| [`autoMemoryDirectory`](#automemorydirectory) | Almacene la [memoria automática](/docs/es/memory#auto-memory) en un directorio que elija | Memoria y contexto | Any file |619| [`autoMemoryDirectory`](#automemorydirectory) | Almacena la [memoria automática](/docs/es/memory#auto-memory) en un directorio que elijas | Memoria y contexto | Any file |

620| [`autoMemoryEnabled`](#automemoryenabled) | Desactive o active la [memoria automática](/docs/es/memory#auto-memory) | Memoria y contexto | Any file |620| [`autoMemoryEnabled`](#automemoryenabled) | Desactiva o activa la [memoria automática](/docs/es/memory#auto-memory) | Memoria y contexto | Any file |

621| [`autoMode`](#automode) | Agregue sus propias reglas de permitir y denegar al clasificador de [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) | Configuración de permisos | User or managed |621| [`autoMode`](#automode) | Agrega tus propias reglas de permitir y denegar al clasificador del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) | Configuración de permisos | User or managed |

622| [`autoMode.classifyAllShell`](#automode-classifyallshell) | Envíe cada comando shell a través del [clasificador de modo automático](/docs/es/permission-modes#what-the-classifier-blocks-by-default), incluso los que coinciden con una regla de permitir estrecha | Configuración de permisos | User or managed |622| [`autoMode.classifyAllShell`](#automode-classifyallshell) | Envía cada comando de shell a través del [clasificador del modo automático](/docs/es/permission-modes#what-the-classifier-blocks-by-default), incluso los que coinciden con una regla de permitir específica | Configuración de permisos | User or managed |

623| [`autoScrollEnabled`](#autoscrollenabled) | [Siga la nueva salida](/docs/es/fullscreen#auto-follow) hasta el final en la representación de pantalla completa | Interfaz y terminal | Any file |623| [`autoScrollEnabled`](#autoscrollenabled) | [Sigue la nueva salida](/docs/es/fullscreen#auto-follow) hasta el final en el renderizado de pantalla completa | Interfaz y terminal | Any file |

624| [`autoUpdatesChannel`](#autoupdateschannel) | Siga el [canal de lanzamiento](/docs/es/setup#configure-release-channel) estable en lugar del más reciente | Actualizaciones y versiones | Any file |624| [`autoUpdatesChannel`](#autoupdateschannel) | Sigue el [canal de lanzamiento](/docs/es/setup#configure-release-channel) estable en lugar del más reciente | Actualizaciones y versiones | Any file |

625| [`availableModels`](#availablemodels) | [Restrinja qué modelos](/docs/es/model-config#restrict-model-selection) pueden elegir las personas | Modelo y respuestas | Any file |625| [`availableModels`](#availablemodels) | [Restringe qué modelos](/docs/es/model-config#restrict-model-selection) pueden elegir las personas | Modelo y respuestas | Any file |

626| [`availableModelsMatch`](#availablemodelsmatch) | Haga que cada entrada de ID de modelo `availableModels` [permita solo la versión que nombra](/docs/es/model-config#block-specific-models-or-versions) | Modelo y respuestas | Managed |626| [`availableModelsMatch`](#availablemodelsmatch) | Haz que cada entrada de ID de modelo de `availableModels` [permita solo la versión que nombra](/docs/es/model-config#block-specific-models-or-versions) | Modelo y respuestas | Managed |

627| [`awaySummaryEnabled`](#awaysummaryenabled) | Desactive el [resumen de sesión](/docs/es/interactive-mode#session-recap) que se muestra cuando regresa a la terminal | Remoto, escritorio y notificaciones | Any file |627| [`awaySummaryEnabled`](#awaysummaryenabled) | Desactiva el [resumen de sesión](/docs/es/interactive-mode#session-recap) que se muestra cuando regresas a la terminal | Remoto, escritorio y notificaciones | Any file |

628| [`awsAuthRefresh`](#awsauthrefresh) | Actualice las [credenciales de Bedrock](/docs/es/amazon-bedrock#advanced-credential-configuration) expiradas en `.aws` con su propio comando | Autenticación y proveedores | Any file |628| [`awsAuthRefresh`](#awsauthrefresh) | Actualiza las [credenciales de Bedrock](/docs/es/amazon-bedrock#advanced-credential-configuration) expiradas en `.aws` con tu propio comando | Autenticación y proveedores | Any file |

629| [`awsCredentialExport`](#awscredentialexport) | Suministre [credenciales de Bedrock](/docs/es/amazon-bedrock#advanced-credential-configuration) como JSON desde su propio comando | Autenticación y proveedores | Any file |629| [`awsCredentialExport`](#awscredentialexport) | Proporciona [credenciales de Bedrock](/docs/es/amazon-bedrock#advanced-credential-configuration) como JSON desde tu propio comando | Autenticación y proveedores | Any file |

630| [`axScreenReader`](#axscreenreader) | Represente la [salida amigable con lectores de pantalla](/docs/es/accessibility) | Interfaz y terminal | Any file |630| [`axScreenReader`](#axscreenreader) | Genera una [salida compatible con lectores de pantalla](/docs/es/accessibility) | Interfaz y terminal | Any file |

631| [`bashEditDiffEnabled`](#basheditdiffenabled) | Registre los [archivos que cambiaron mientras se ejecutaba un comando Bash](/docs/es/hooks#bash) en cada modo de permisos | Interfaz y terminal | User or managed |631| [`bashEditDiffEnabled`](#basheditdiffenabled) | Registra los [archivos que cambiaron mientras se ejecutaba un comando Bash](/docs/es/hooks#bash) en todos los modos de permisos | Interfaz y terminal | User or managed |

632| [`bashOutputMaxChars`](#bashoutputmaxchars) | Establezca cuánta [salida](/docs/es/tools-reference#output-limits) de un comando exitoso recibe Claude en línea | Memoria y contexto | Any file |632| [`bashOutputMaxChars`](#bashoutputmaxchars) | Establece cuánta [salida](/docs/es/tools-reference#output-limits) de un comando exitoso recibe Claude en línea | Memoria y contexto | Any file |

633| [`blockedMarketplaces`](#blockedmarketplaces) | Bloquee las fuentes del [marketplace de plugins](/docs/es/plugins/overview) para su organización | Plugins y skills | Managed |633| [`blockedMarketplaces`](#blockedmarketplaces) | Bloquea fuentes de [marketplaces de plugins](/docs/es/plugins/overview) para tu organización | Plugins y skills | Managed |

634| [`browserExternalPageTools`](#browserexternalpagetools) | Mantenga las herramientas de Claude fuera de las páginas externas en el panel [escritorio](/docs/es/desktop) Browser | Herramientas | Managed |634| [`browserExternalPageTools`](#browserexternalpagetools) | Mantén las herramientas de Claude fuera de las páginas externas en el panel Browser de [escritorio](/docs/es/desktop) | Herramientas | Managed |

635| [`channelsEnabled`](#channelsenabled) | Permita [canales](/docs/es/channels#enable-channels-for-your-organization) para su organización | Plugins y skills | Managed |635| [`channelsEnabled`](#channelsenabled) | Permite los [canales](/docs/es/channels#enable-channels-for-your-organization) para tu organización | Plugins y skills | Managed |

636| [`claudeInChromeDefaultEnabled`](#claudeinchromedefaultenabled) | Active la [integración de Chrome](/docs/es/chrome) en cada sesión CLI interactiva sin pasar `--chrome` | Configuración de configuración global | Global config |636| [`claudeInChromeDefaultEnabled`](#claudeinchromedefaultenabled) | Activa la [integración con Chrome](/docs/es/chrome) en cada sesión interactiva de la CLI sin pasar `--chrome` | Configuración de configuración global | Global config |

637| [`claudeMd`](#claudemd) | Inyecte instrucciones de [CLAUDE.md](/docs/es/memory#deploy-organization-wide-claude-md) en toda la organización desde la configuración administrada | Memoria y contexto | Managed |637| [`claudeMd`](#claudemd) | Inyecta instrucciones de [CLAUDE.md](/docs/es/memory#deploy-organization-wide-claude-md) para toda la organización desde la configuración administrada | Memoria y contexto | Managed |

638| [`claudeMdExcludes`](#claudemdexcludes) | Omita archivos específicos de [CLAUDE.md](/docs/es/memory#exclude-specific-claude-md-files) cuando se carga la memoria | Memoria y contexto | Any file |638| [`claudeMdExcludes`](#claudemdexcludes) | Omite archivos [CLAUDE.md](/docs/es/memory#exclude-specific-claude-md-files) específicos cuando se carga la memoria | Memoria y contexto | Any file |

639| [`cleanupPeriodDays`](#cleanupperioddays) | Elija cuántos días Claude Code mantiene las [transcripciones](/docs/es/data-usage#data-retention) antes de eliminarlas | Privacidad y telemetría | Any file |639| [`cleanupPeriodDays`](#cleanupperioddays) | Elige cuántos días conserva Claude Code las [transcripciones](/docs/es/data-usage#data-retention) antes de eliminarlas | Privacidad y telemetría | Any file |

640| [`companyAnnouncements`](#companyannouncements) | Muestre los anuncios de su organización al iniciar | Interfaz y terminal | Any file |640| [`companyAnnouncements`](#companyannouncements) | Muestra los anuncios de tu organización al iniciar | Interfaz y terminal | Any file |

641| [`copyFullResponse`](#copyfullresponse) | Haga que [`/copy`](/docs/es/commands) copie la respuesta completa sin mostrar el selector de bloques de código | Configuración de configuración global | Global config |641| [`copyFullResponse`](#copyfullresponse) | Haz que [`/copy`](/docs/es/commands) copie la respuesta completa sin mostrar el selector de bloques de código | Configuración de configuración global | Global config |

642| [`copyOnSelect`](#copyonselect) | Desactive la copia automática del texto que selecciona con el ratón en la [representación de pantalla completa](/docs/es/fullscreen#use-the-mouse) y la vista de agente | Configuración de configuración global | Global config |642| [`copyOnSelect`](#copyonselect) | Desactiva la copia automática del texto que seleccionas con el mouse en el [renderizado de pantalla completa](/docs/es/fullscreen#use-the-mouse) y en la vista de agentes | Configuración de configuración global | Global config |

643| [`crossSessionInbound`](#crosssessioninbound) | Elija si Claude Code entrega [mensajes de sus otras sesiones](/docs/es/cross-session-messaging#control-inbound-messages), muestra un aviso sin entregarlos, o los rechaza | Agentes, sesiones y worktrees | Any file |643| [`crossSessionInbound`](#crosssessioninbound) | Elige si Claude Code entrega los [mensajes de tus otras sesiones](/docs/es/cross-session-messaging#control-inbound-messages), muestra un aviso sin entregarlos o los rechaza | Agentes, sesiones y worktrees | Any file |

644| [`defaultShell`](#defaultshell) | Elija si Bash o PowerShell ejecuta los comandos shell que escribe con el prefijo [`!`](/docs/es/interactive-mode#shell-mode-with-prefix) | Interfaz y terminal | Any file |644| [`defaultShell`](#defaultshell) | Elige si Bash o PowerShell ejecuta los comandos de shell que escribes con el [prefijo `!`](/docs/es/interactive-mode#shell-mode-with-prefix) | Interfaz y terminal | Any file |

645| [`defaultToAgentsView`](#defaulttoagentsview) | Abra la [vista de agente](/docs/es/agent-view) en lugar de una nueva conversación cuando ejecute `claude` sin argumentos | Configuración de configuración global | Global config |645| [`defaultToAgentsView`](#defaulttoagentsview) | Abre la [vista de agentes](/docs/es/agent-view) en lugar de una nueva conversación cuando ejecutas `claude` sin argumentos | Configuración de configuración global | Global config |

646| [`deniedMcpServers`](#deniedmcpservers) | Bloquee [servidores MCP](/docs/es/mcp) específicos por URL, comando o nombre | MCP | Any file |646| [`deniedMcpServers`](#deniedmcpservers) | Bloquea [servidores MCP](/docs/es/mcp) específicos por URL, comando o nombre | MCP | Any file |

647| [`deniedModels`](#deniedmodels) | [Bloquee modelos específicos](/docs/es/model-config#block-specific-models-or-versions), incluso los que `availableModels` permite | Modelo y respuestas | Managed |647| [`deniedModels`](#deniedmodels) | [Bloquea modelos específicos](/docs/es/model-config#block-specific-models-or-versions), incluso los que `availableModels` permite | Modelo y respuestas | Managed |

648| [`desktopSessionCleanupPeriodDays`](#desktopsessioncleanupperioddays) | Establezca un límite de antigüedad en días para las [transcripciones de Claude Desktop y Cowork](/docs/es/claude-directory#cleaned-up-automatically) | Privacidad y telemetría | User or managed |648| [`desktopSessionCleanupPeriodDays`](#desktopsessioncleanupperioddays) | Establece un límite de antigüedad en días para las [transcripciones de Claude Desktop y Cowork](/docs/es/claude-directory#cleaned-up-automatically) | Privacidad y telemetría | User or managed |

649| [`dialogExpiry`](#dialogexpiry) | Establezca cuánto tiempo Claude Code espera a que [Control Remoto](/docs/es/remote-control) o un host SDK responda a un diálogo reenviado antes de cancelar el diálogo | Interfaz y terminal | User or managed |649| [`dialogExpiry`](#dialogexpiry) | Establece cuánto tiempo espera Claude Code a que [Remote Control](/docs/es/remote-control) o un host del SDK responda a un diálogo reenviado antes de cancelarlo | Interfaz y terminal | User or managed |

650| [`diffTool`](#difftool) | Elija si los cambios de archivo propuestos por Claude se abren en el visor de diferencias de [VS Code](/docs/es/vs-code) o [JetBrains](/docs/es/jetbrains#features) o permanecen en la terminal | Configuración de configuración global | Global config |650| [`diffTool`](#difftool) | Elige si los cambios de archivos que propone Claude se abren en el visor de diffs de [VS Code](/docs/es/vs-code) o [JetBrains](/docs/es/jetbrains#features) o permanecen en la terminal | Configuración de configuración global | Global config |

651| [`disableAgentView`](#disableagentview) | Desactive los agentes de fondo y la [vista de agente](/docs/es/agent-view) | Agentes, sesiones y worktrees | Any file |651| [`disableAgentView`](#disableagentview) | Desactiva los agentes en segundo plano y la [vista de agentes](/docs/es/agent-view) | Agentes, sesiones y worktrees | Any file |

652| [`disableAllHooks`](#disableallhooks) | Desactive los [hooks](/docs/es/hooks), una [línea de estado](/docs/es/statusline) personalizada, y un comando de [sugerencia de archivo `@`](/docs/es/interactive-mode#quick-commands) personalizado de una vez | Hooks y automatización | Any file |652| [`disableAllHooks`](#disableallhooks) | Desactiva a la vez los [hooks](/docs/es/hooks), una [línea de estado](/docs/es/statusline) personalizada y un comando personalizado de [sugerencias de archivos `@`](/docs/es/interactive-mode#quick-commands) | Hooks y automatización | Any file |

653| [`disableArtifact`](#disableartifact) | Obsoleto; use `enableArtifact` para desactivar la [herramienta Artifact](/docs/es/artifacts) | Remoto, escritorio y notificaciones | Any file |653| [`disableArtifact`](#disableartifact) | Obsoleto; usa `enableArtifact` para desactivar la [herramienta Artifact](/docs/es/artifacts) | Remoto, escritorio y notificaciones | Any file |

654| [`disableAutoMode`](#disableautomode) | Elimine el [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) del ciclo de modo de permisos | Configuración de permisos | Any file |654| [`disableAutoMode`](#disableautomode) | Elimina el [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) del ciclo de modos de permisos | Configuración de permisos | Any file |

655| [`disableBrowserExternalNavigation`](#disablebrowserexternalnavigation) | Limite el panel [escritorio](/docs/es/desktop) Browser a localhost para personas y Claude | Herramientas | Managed |655| [`disableBrowserExternalNavigation`](#disablebrowserexternalnavigation) | Limita el panel Browser de [escritorio](/docs/es/desktop) a localhost, tanto para las personas como para Claude | Herramientas | Managed |

656| [`disableBundledSkills`](#disablebundledskills) | Desactive los [skills](/docs/es/skills#bundled-skills) y [workflows](/docs/es/workflows) incluidos con Claude Code | Plugins y skills | Any file |656| [`disableBundledSkills`](#disablebundledskills) | Desactiva los [skills](/docs/es/skills#bundled-skills) y [workflows](/docs/es/workflows) incluidos con Claude Code | Plugins y skills | Any file |

657| [`disableClaudeAiConnectors`](#disableclaudeaiconnectors) | Desactive los [conectores de claude.ai](/docs/es/mcp#disable-claude-ai-connectors) para que Claude Code no los obtenga | MCP | Any file |657| [`disableClaudeAiConnectors`](#disableclaudeaiconnectors) | Desactiva los [conectores de claude.ai](/docs/es/mcp#disable-claude-ai-connectors) para que Claude Code no los obtenga | MCP | Any file |

658| [`disableCommandPluginSources`](#disablecommandpluginsources) | Bloquee los [plugins](/docs/es/plugins/overview) que se instalan ejecutando un comando declarado por el marketplace | Plugins y skills | Managed |658| [`disableCommandPluginSources`](#disablecommandpluginsources) | Bloquea los [plugins](/docs/es/plugins/overview) que se instalan ejecutando un comando declarado por el marketplace | Plugins y skills | Managed |

659| [`disableDeepLinkRegistration`](#disabledeeplinkregistration) | Impida que Claude Code registre el [controlador `claude-cli://`](/docs/es/deep-links) | Remoto, escritorio y notificaciones | Any file |659| [`disableDeepLinkRegistration`](#disabledeeplinkregistration) | Impide que Claude Code registre el [manejador `claude-cli://`](/docs/es/deep-links) | Remoto, escritorio y notificaciones | Any file |

660| [`disableDesktopLocalSessions`](#disabledesktoplocalsessions) | Desactive las [sesiones de Desktop Code](/docs/es/desktop#local-sessions-on-managed-devices) que se ejecutan en el dispositivo, dejando SSH para otros hosts y nube | Remoto, escritorio y notificaciones | Managed |660| [`disableDesktopLocalSessions`](#disabledesktoplocalsessions) | Desactiva las [sesiones de Desktop Code](/docs/es/desktop#local-sessions-on-managed-devices) que se ejecutan en el dispositivo, y deja disponibles SSH a otros hosts y la nube | Remoto, escritorio y notificaciones | Managed |

661| [`disabledMcpjsonServers`](#disabledmcpjsonservers) | Rechace servidores específicos del [`.mcp.json`](/docs/es/mcp#project-scope) de un proyecto | MCP | Any file |661| [`disabledMcpjsonServers`](#disabledmcpjsonservers) | Rechaza servidores específicos del [`.mcp.json`](/docs/es/mcp#project-scope) de un proyecto | MCP | Any file |

662| [`disableMobileSimulatorTools`](#disablemobilesimulatortools) | Bloquee las herramientas de Claude en el panel [escritorio](/docs/es/desktop) iOS Simulator | Herramientas | Managed |662| [`disableMobileSimulatorTools`](#disablemobilesimulatortools) | Bloquea las herramientas de Claude en el panel iOS Simulator de [escritorio](/docs/es/desktop) | Herramientas | Managed |

663| [`disableRemoteControl`](#disableremotecontrol) | Desactive el [Control Remoto](/docs/es/remote-control) en todas partes donde pueda iniciarse | Remoto, escritorio y notificaciones | Any file |663| [`disableRemoteControl`](#disableremotecontrol) | Desactiva [Remote Control](/docs/es/remote-control) en todos los lugares donde puede iniciarse | Remoto, escritorio y notificaciones | Any file |

664| [`disableSideloadFlags`](#disablesideloadflags) | Rechace los indicadores CLI que cargan lateralmente [plugins](/docs/es/plugins/overview), [subagentes](/docs/es/sub-agents), y [servidores MCP](/docs/es/mcp) | Configuración empresarial y administrada | Managed |664| [`disableSideloadFlags`](#disablesideloadflags) | Rechaza los flags de la CLI que cargan de forma lateral [plugins](/docs/es/plugins/overview), [subagentes](/docs/es/sub-agents) y [servidores MCP](/docs/es/mcp) | Configuración empresarial y administrada | Managed |

665| [`disableSkillShellExecution`](#disableskillshellexecution) | Impida que los [skills](/docs/es/skills) y comandos personalizados ejecuten shell en línea | Plugins y skills | Any file |665| [`disableSkillShellExecution`](#disableskillshellexecution) | Impide que los [skills](/docs/es/skills) y los comandos personalizados ejecuten shell en línea | Plugins y skills | Any file |

666| [`disableWorkflows`](#disableworkflows) | Desactive los [workflows dinámicos](/docs/es/workflows) para todos; use `enableWorkflows` para usted mismo | Hooks y automatización | Any file |666| [`disableWorkflows`](#disableworkflows) | Desactiva los [workflows dinámicos](/docs/es/workflows) para todos; usa `enableWorkflows` para ti | Hooks y automatización | Any file |

667| [`editorMode`](#editormode) | Use los [atajos de teclado vim](/docs/es/interactive-mode#vim-editor-mode) en el prompt de entrada | Interfaz y terminal | Any file |667| [`editorMode`](#editormode) | Usa los [atajos de teclado de vim](/docs/es/interactive-mode#vim-editor-mode) en el prompt de entrada | Interfaz y terminal | Any file |

668| [`effortLevel`](#effortlevel) | Establezca un [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) predeterminado para modelos sin un nivel guardado propio | Modelo y respuestas | Any file |668| [`effortLevel`](#effortlevel) | Establece un [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) predeterminado para los modelos que no tienen un nivel guardado propio | Modelo y respuestas | Any file |

669| [`emojiCompletionEnabled`](#emojicompletionenabled) | Desactive las [sugerencias y reemplazo de emoji `:shortcode:`](/docs/es/interactive-mode#emoji-shortcodes) en la entrada del prompt | Interfaz y terminal | Any file |669| [`emojiCompletionEnabled`](#emojicompletionenabled) | Desactiva las [sugerencias y el reemplazo de emojis `:shortcode:`](/docs/es/interactive-mode#emoji-shortcodes) en la entrada del prompt | Interfaz y terminal | Any file |

670| [`enableAllProjectMcpServers`](#enableallprojectmcpservers) | Apruebe cada servidor en los archivos [`.mcp.json`](/docs/es/mcp#project-server-approvals-and-workspace-trust) del proyecto sin un prompt | MCP | Any file |670| [`enableAllProjectMcpServers`](#enableallprojectmcpservers) | Aprueba todos los servidores de los archivos [`.mcp.json`](/docs/es/mcp#project-server-approvals-and-workspace-trust) del proyecto sin pedir confirmación | MCP | Any file |

671| [`enableArtifact`](#enableartifact) | Desactive la [herramienta Artifact](/docs/es/artifacts) con un `false` en cualquier archivo; ningún archivo puede volver a activarla | Remoto, escritorio y notificaciones | Any file |671| [`enableArtifact`](#enableartifact) | Desactiva la [herramienta Artifact](/docs/es/artifacts) con un `false` en cualquier archivo; ningún archivo puede volver a activarla | Remoto, escritorio y notificaciones | Any file |

672| [`enabledMcpjsonServers`](#enabledmcpjsonservers) | Apruebe servidores específicos del [`.mcp.json`](/docs/es/mcp#project-server-approvals-and-workspace-trust) de un proyecto | MCP | Any file |672| [`enabledMcpjsonServers`](#enabledmcpjsonservers) | Aprueba servidores específicos del [`.mcp.json`](/docs/es/mcp#project-server-approvals-and-workspace-trust) de un proyecto | MCP | Any file |

673| [`enabledPlugins`](#enabledplugins) | Active o desactive [plugins](/docs/es/plugins/overview) individuales por alcance | Plugins y skills | Any file |673| [`enabledPlugins`](#enabledplugins) | Activa o desactiva [plugins](/docs/es/plugins/overview) individuales por alcance | Plugins y skills | Any file |

674| [`enableWorkflows`](#enableworkflows) | Active o desactive los [workflows dinámicos](/docs/es/workflows) contra el predeterminado de su plan | Hooks y automatización | Any file |674| [`enableWorkflows`](#enableworkflows) | Activa o desactiva los [workflows dinámicos](/docs/es/workflows) frente al valor predeterminado de tu plan | Hooks y automatización | Any file |

675| [`enforceAvailableModels`](#enforceavailablemodels) | Mantenga la [opción Predeterminada de `/model`](/docs/es/model-config#enforce-the-allowlist-for-the-default-model) dentro de su lista de permitidos `availableModels` | Modelo y respuestas | Any file |675| [`enforceAvailableModels`](#enforceavailablemodels) | Mantén la [opción Default de `/model`](/docs/es/model-config#enforce-the-allowlist-for-the-default-model) dentro de tu lista de permitidos `availableModels` | Modelo y respuestas | Any file |

676| [`env`](#env) | Establezca [variables de entorno](/docs/es/env-vars#in-settings-files) para cada sesión y sus subprocesos | Memoria y contexto | Any file |676| [`env`](#env) | Establece [variables de entorno](/docs/es/env-vars#in-settings-files) para cada sesión y sus subprocesos | Memoria y contexto | Any file |

677| [`externalEditorContext`](#externaleditorcontext) | Muestre la última respuesta de Claude como comentarios cuando presione [Ctrl+G](/docs/es/interactive-mode#general-controls) para editar | Configuración de configuración global | Global config |677| [`externalEditorContext`](#externaleditorcontext) | Muestra la última respuesta de Claude como comentarios cuando presionas [Ctrl+G](/docs/es/interactive-mode#general-controls) para editar | Configuración de configuración global | Global config |

678| [`extraKnownMarketplaces`](#extraknownmarketplaces) | Registre [marketplaces](/docs/es/plugins/overview) para un repositorio u organización | Plugins y skills | Any file |678| [`extraKnownMarketplaces`](#extraknownmarketplaces) | Registra [marketplaces](/docs/es/plugins/overview) para un repositorio o una organización | Plugins y skills | Any file |

679| [`fallbackModel`](#fallbackmodel) | Nombre [modelos de respaldo](/docs/es/model-config#fallback-model-chains) para cuando el principal está sobrecargado | Modelo y respuestas | Any file |679| [`fallbackModel`](#fallbackmodel) | Indica [modelos de respaldo](/docs/es/model-config#fallback-model-chains) para cuando el principal esté sobrecargado | Modelo y respuestas | Any file |

680| [`fastMode`](#fastmode) | Active el [modo rápido](/docs/es/fast-mode) para sesiones donde está disponible | Modelo y respuestas | Any file |680| [`fastMode`](#fastmode) | Activa el [modo rápido](/docs/es/fast-mode) en las sesiones donde esté disponible | Modelo y respuestas | Any file |

681| [`fastModePerSessionOptIn`](#fastmodepersessionoptin) | Requiera que las personas activen el [modo rápido](/docs/es/fast-mode) en cada sesión | Modelo y respuestas | Any file |681| [`fastModePerSessionOptIn`](#fastmodepersessionoptin) | Exige que las personas activen el [modo rápido](/docs/es/fast-mode) en cada sesión | Modelo y respuestas | Any file |

682| [`feedbackDrafts`](#feedbackdrafts) | Controle si Claude pone en cola [borradores de comentarios](/docs/es/tools-reference#sendfeedback-tool-behavior) para que usted revise | Privacidad y telemetría | User or managed |682| [`feedbackDrafts`](#feedbackdrafts) | Controla si Claude pone en cola [borradores de comentarios](/docs/es/tools-reference#sendfeedback-tool-behavior) para que los revises | Privacidad y telemetría | User or managed |

683| [`feedbackSurveyRate`](#feedbacksurveyrate) | Cambie la frecuencia con la que aparece la [encuesta de calidad de sesión](/docs/es/data-usage#session-quality-surveys) | Privacidad y telemetría | Any file |683| [`feedbackSurveyRate`](#feedbacksurveyrate) | Cambia la frecuencia con la que aparece la [encuesta de calidad de la sesión](/docs/es/data-usage#session-quality-surveys) | Privacidad y telemetría | Any file |

684| [`fileCheckpointingEnabled`](#filecheckpointingenabled) | Desactive o active las instantáneas de archivo que [`/rewind`](/docs/es/checkpointing) restaura | Memoria y contexto | Any file |684| [`fileCheckpointingEnabled`](#filecheckpointingenabled) | Desactiva o activa las instantáneas de archivos que restaura [`/rewind`](/docs/es/checkpointing) | Memoria y contexto | Any file |

685| [`fileSuggestion`](#filesuggestion) | Suministre el [autocompletado de archivo `@`](/docs/es/interactive-mode#quick-commands) desde su propio comando | Interfaz y terminal | Any file |685| [`fileSuggestion`](#filesuggestion) | Proporciona el [autocompletado de archivos `@`](/docs/es/interactive-mode#quick-commands) desde tu propio comando | Interfaz y terminal | Any file |

686| [`footerLinksRegexes`](#footerlinksregexes) | Haga que los ID de problemas o revisiones en la salida se conviertan en [enlaces clickeables](/docs/es/statusline#clickable-links) debajo del cuadro de entrada | Interfaz y terminal | User or managed |686| [`footerLinksRegexes`](#footerlinksregexes) | Convierte los ID de issues o revisiones de la salida en [enlaces en los que se puede hacer clic](/docs/es/statusline#clickable-links) debajo del cuadro de entrada | Interfaz y terminal | User or managed |

687| [`forceLoginGatewayUrl`](#forcelogingatewayurl) | Establezca la [URL de puerta de enlace](/docs/es/claude-apps-gateway#set-the-gateway-url) a la que se conecta la pantalla de inicio de sesión | Autenticación y proveedores | Managed |687| [`forceLoginGatewayUrl`](#forcelogingatewayurl) | Establece la [URL del gateway](/docs/es/claude-apps-gateway#set-the-gateway-url) a la que se conecta la pantalla de inicio de sesión | Autenticación y proveedores | Managed |

688| [`forceLoginMethod`](#forceloginmethod) | [Restrinja el inicio de sesión](/docs/es/authentication#restrict-login-to-your-organization) a claude.ai, Claude Console, o una [puerta de enlace en la nube](/docs/es/claude-apps-gateway) | Autenticación y proveedores | Any file |688| [`forceLoginMethod`](#forceloginmethod) | [Restringe el inicio de sesión](/docs/es/authentication#restrict-login-to-your-organization) a claude.ai, Claude Console o un [gateway en la nube](/docs/es/claude-apps-gateway) | Autenticación y proveedores | Any file |

689| [`forceLoginOrgUUID`](#forceloginorguuid) | [Fije los inicios de sesión de claude.ai a su organización](/docs/es/authentication#restrict-login-to-your-organization); solo una fuente administrada lo aplica | Autenticación y proveedores | Any file |689| [`forceLoginOrgUUID`](#forceloginorguuid) | [Fija los inicios de sesión de claude.ai a tu organización](/docs/es/authentication#restrict-login-to-your-organization); solo una fuente administrada lo aplica | Autenticación y proveedores | Any file |

690| [`forceRemoteSettingsRefresh`](#forceremotesettingsrefresh) | Bloquee el inicio hasta que la [configuración administrada por servidor](/docs/es/server-managed-settings) se obtenga recientemente | Configuración empresarial y administrada | Managed |690| [`forceRemoteSettingsRefresh`](#forceremotesettingsrefresh) | Bloquea el inicio hasta que la [configuración administrada por el servidor](/docs/es/server-managed-settings) se haya obtenido de nuevo | Configuración empresarial y administrada | Managed |

691| [`gatewayInternalNetworks`](#gatewayinternalnetworks) | Permita que `/login` alcance una [puerta de enlace en la nube](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) en el espacio IPv4 público que su organización usa internamente | Autenticación y proveedores | Managed |691| [`gatewayInternalNetworks`](#gatewayinternalnetworks) | Permite que `/login` alcance un [gateway en la nube](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) en espacio IPv4 público que tu organización usa internamente | Autenticación y proveedores | Managed |

692| [`gcpAuthRefresh`](#gcpauthrefresh) | Actualice las [credenciales de Google Cloud](/docs/es/google-vertex-ai#advanced-credential-configuration) con su propio comando | Autenticación y proveedores | Any file |692| [`gcpAuthRefresh`](#gcpauthrefresh) | Actualiza las [credenciales de Google Cloud](/docs/es/google-vertex-ai#advanced-credential-configuration) con tu propio comando | Autenticación y proveedores | Any file |

693| [`hooks`](#hooks) | Ejecute sus propios comandos como [hooks](/docs/es/hooks) en puntos del ciclo de vida de Claude Code | Hooks y automatización | Any file |693| [`hooks`](#hooks) | Ejecuta tus propios comandos como [hooks](/docs/es/hooks) en distintos puntos del ciclo de vida de Claude Code | Hooks y automatización | Any file |

694| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Limite qué variables de entorno pueden poner los [hooks HTTP](/docs/es/hooks) en los encabezados | Hooks y automatización | Any file |694| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Limita qué variables de entorno pueden poner los [hooks HTTP](/docs/es/hooks) en los encabezados | Hooks y automatización | Any file |

695| [`includeCoAuthoredBy`](#includecoauthoredby) | Obsoleto; use `attribution` para ocultar o cambiar la atribución de commits y PR | Git y atribución | Any file |695| [`includeCoAuthoredBy`](#includecoauthoredby) | Obsoleto; usa `attribution` para ocultar o cambiar la atribución de commits y PR | Git y atribución | Any file |

696| [`includeGitInstructions`](#includegitinstructions) | Elimine las instrucciones de commit y PR integradas del contexto de Claude | Git y atribución | Any file |696| [`includeGitInstructions`](#includegitinstructions) | Elimina del contexto de Claude las instrucciones integradas de commits y PR | Git y atribución | Any file |

697| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | Obtenga una [notificación push](/docs/es/remote-control#mobile-push-notifications) cuando Claude esté esperando por usted | Remoto, escritorio y notificaciones | Any file |697| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | Recibe una [notificación push](/docs/es/remote-control#mobile-push-notifications) cuando Claude esté esperándote | Remoto, escritorio y notificaciones | Any file |

698| [`isolatePeerMachines`](#isolatepeermachines) | Pregúntele antes de que Claude [envíe un mensaje a una de sus sesiones en otra máquina](/docs/es/cross-session-messaging#require-approval-for-cross-machine-messages) | Agentes, sesiones y worktrees | Any file |698| [`isolatePeerMachines`](#isolatepeermachines) | Pide tu aprobación antes de que Claude [envíe un mensaje a una de tus sesiones en otra máquina](/docs/es/cross-session-messaging#require-approval-for-cross-machine-messages) | Agentes, sesiones y worktrees | Any file |

699| [`keybindingFlavor`](#keybindingflavor) | Obsoleto y sin efecto; los atajos de edición de palabras siempre [siguen las convenciones de readline](/docs/es/interactive-mode#make-ctrl-w-delete-back-to-whitespace) | Interfaz y terminal | Any file |699| [`keybindingFlavor`](#keybindingflavor) | Obsoleto y sin efecto; los atajos de edición de palabras siempre [siguen las convenciones de readline](/docs/es/interactive-mode#make-ctrl-w-delete-back-to-whitespace) | Interfaz y terminal | Any file |

700| [`language`](#language) | Haga que Claude responda en un idioma distinto al inglés | Modelo y respuestas | Any file |700| [`language`](#language) | Haz que Claude responda en un idioma distinto del inglés | Modelo y respuestas | Any file |

701| [`leftArrowOpensAgents`](#leftarrowopensagents) | Desactive el atajo `←` que [coloca la sesión en segundo plano y abre la vista de agente](/docs/es/agent-view#switch-sessions-without-leaving-the-terminal) | Configuración de configuración global | Global config |701| [`leftArrowOpensAgents`](#leftarrowopensagents) | Desactiva el atajo `←` que [pasa la sesión a segundo plano y abre la vista de agentes](/docs/es/agent-view#switch-sessions-without-leaving-the-terminal) | Configuración de configuración global | Global config |

702| [`managedMcpServers`](#managedmcpservers) | Proporcione [servidores MCP](/docs/es/managed-mcp#provide-servers-through-managed-settings) remotos a cada usuario junto con los que agregan | MCP | Managed |702| [`managedMcpServers`](#managedmcpservers) | Proporciona [servidores MCP](/docs/es/managed-mcp#provide-servers-through-managed-settings) remotos a todos los usuarios, junto con los que ellos agregan | MCP | Managed |

703| [`managedSourcesBehavior`](#managedsourcesbehavior) | Componga cada [fuente administrada](/docs/es/managed-settings#how-claude-code-combines-managed-sources) que implemente en lugar de usar solo la de mayor prioridad | Configuración empresarial y administrada | Managed |703| [`managedSourcesBehavior`](#managedsourcesbehavior) | Combina todas las [fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) que implementes en lugar de usar solo la de mayor prioridad | Configuración empresarial y administrada | Managed |

704| [`maxEffortLevel`](#maxeffortlevel) | Limite el [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) para cada modelo o por modelo, en cada proveedor | Modelo y respuestas | Any file |704| [`maxEffortLevel`](#maxeffortlevel) | Limita el [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) para todos los modelos o por modelo, en todos los proveedores | Modelo y respuestas | Any file |

705| [`maxProseWidth`](#maxprosewidth) | Limite el ancho de la prosa en las respuestas de Claude en una terminal ancha | Interfaz y terminal | Any file |705| [`maxProseWidth`](#maxprosewidth) | Limita el ancho de la prosa de las respuestas de Claude en una terminal ancha | Interfaz y terminal | Any file |

706| [`minimumVersion`](#minimumversion) | Impida que las [actualizaciones automáticas](/docs/es/setup#pin-a-minimum-version) instalen nada por debajo de una versión | Actualizaciones y versiones | Any file |706| [`minimumVersion`](#minimumversion) | Impide que las [actualizaciones automáticas](/docs/es/setup#pin-a-minimum-version) instalen cualquier versión inferior a una dada | Actualizaciones y versiones | Any file |

707| [`model`](#model) | Cambie el [modelo](/docs/es/model-config#set-a-default-model-for-new-sessions) con el que Claude Code comienza | Modelo y respuestas | Any file |707| [`model`](#model) | Cambia el [modelo](/docs/es/model-config#set-a-default-model-for-new-sessions) con el que inicia Claude Code | Modelo y respuestas | Any file |

708| [`modelOverrides`](#modeloverrides) | [Asigne ID de modelos](/docs/es/model-config#override-model-ids-per-version) a los ID de su proveedor, como ARN de Bedrock | Modelo y respuestas | Any file |708| [`modelOverrides`](#modeloverrides) | [Asigna los ID de modelo](/docs/es/model-config#override-model-ids-per-version) a los ID de tu proveedor, como los ARN de Bedrock | Modelo y respuestas | Any file |

709| [`modelPicker`](#modelpicker) | Elija qué modelos lista el [selector `/model`](/docs/es/model-config#available-models), en su propio orden y con sus propias etiquetas | Modelo y respuestas | User or managed |709| [`modelPicker`](#modelpicker) | Elige qué modelos muestra el [selector de `/model`](/docs/es/model-config#available-models), en tu propio orden y con tus propias etiquetas | Modelo y respuestas | User or managed |

710| [`modelPricing`](#modelpricing) | Reporte el gasto a las tasas contratadas de su organización en lugar del precio de lista | Modelo y respuestas | Managed |710| [`modelPricing`](#modelpricing) | Reporta el gasto con las tarifas contratadas por tu organización en lugar del precio de lista | Modelo y respuestas | Managed |

711| [`modelSettings`](#modelsettings) | Mantenga un [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) guardado por modelo, o limite el esfuerzo de un modelo | Modelo y respuestas | Any file |711| [`modelSettings`](#modelsettings) | Guarda un [nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) por modelo, o limita el esfuerzo de un modelo | Modelo y respuestas | Any file |

712| [`otelHeadersHelper`](#otelheadershelper) | Genere encabezados [OpenTelemetry](/docs/es/monitoring-usage#dynamic-headers) rotativos con su propio comando | Autenticación y proveedores | Any file |712| [`otelHeadersHelper`](#otelheadershelper) | Genera encabezados rotativos de [OpenTelemetry](/docs/es/monitoring-usage#dynamic-headers) con tu propio comando | Autenticación y proveedores | Any file |

713| [`outputStyle`](#outputstyle) | Cambie el rol, tono y formato de salida de Claude con un [estilo de salida](/docs/es/output-styles) | Modelo y respuestas | Any file |713| [`outputStyle`](#outputstyle) | Cambia el rol, el tono y el formato de salida de Claude con un [estilo de salida](/docs/es/output-styles) | Modelo y respuestas | Any file |

714| [`parentSettingsBehavior`](#parentsettingsbehavior) | Aplique o elimine restricciones que un [host SDK o IDE](/docs/es/managed-settings#let-an-embedding-host-add-policy) pasa cuando implementa la [configuración administrada](/docs/es/managed-settings) | Configuración empresarial y administrada | Managed |714| [`parentSettingsBehavior`](#parentsettingsbehavior) | Aplica o descarta las restricciones que pasa un [host de SDK o IDE](/docs/es/managed-settings#let-an-embedding-host-add-policy) cuando implementas la [configuración administrada](/docs/es/managed-settings) | Configuración empresarial y administrada | Managed |

715| [`permissionExplainerEnabled`](#permissionexplainerenabled) | Eliminado en v2.1.257, junto con la explicación del comando `Ctrl+E` en los prompts de permisos de shell | Configuración de configuración global | Global config |715| [`permissionExplainerEnabled`](#permissionexplainerenabled) | Eliminado en v2.1.257, junto con la explicación de comandos con `Ctrl+E` en las solicitudes de permiso de shell | Configuración de configuración global | Global config |

716| [`permissions`](#permissions) | Establezca las reglas de permitir, preguntar y denegar y el [modo de permisos](/docs/es/permission-modes) inicial | Configuración de permisos | Any file |716| [`permissions`](#permissions) | Establece las reglas de permitir, preguntar y denegar, y el [modo de permisos](/docs/es/permission-modes) inicial | Configuración de permisos | Any file |

717| [`permissions.additionalDirectories`](#permissions-additionaldirectories) | Dé a Claude acceso a archivos en [directorios fuera del actual](/docs/es/permissions#working-directories) | Configuración de permisos | Any file |717| [`permissions.additionalDirectories`](#permissions-additionaldirectories) | Da a Claude acceso a archivos en [directorios fuera del actual](/docs/es/permissions#working-directories) | Configuración de permisos | Any file |

718| [`permissions.allow`](#permissions-allow) | Apruebe los [usos de herramientas](/docs/es/permissions#permission-rule-syntax) enumerados sin un prompt | Configuración de permisos | Any file |718| [`permissions.allow`](#permissions-allow) | Aprueba los [usos de herramientas](/docs/es/permissions#permission-rule-syntax) enumerados sin pedir confirmación | Configuración de permisos | Any file |

719| [`permissions.ask`](#permissions-ask) | Siempre pregunte antes de los [usos de herramientas](/docs/es/permissions#permission-rule-syntax) enumerados | Configuración de permisos | Any file |719| [`permissions.ask`](#permissions-ask) | Pide confirmación siempre antes de los [usos de herramientas](/docs/es/permissions#permission-rule-syntax) enumerados | Configuración de permisos | Any file |

720| [`permissions.blockReadsOutsideWorkingDirectories`](#permissions-blockreadsoutsideworkingdirectories) | Haga que las herramientas de archivo rechacen lecturas fuera de los [directorios de trabajo](/docs/es/permissions#working-directories) en cada modo de permisos | Configuración de permisos | Any file |720| [`permissions.blockReadsOutsideWorkingDirectories`](#permissions-blockreadsoutsideworkingdirectories) | Haz que las herramientas de archivos rechacen las lecturas fuera de los [directorios de trabajo](/docs/es/permissions#working-directories) en todos los modos de permisos | Configuración de permisos | Any file |

721| [`permissions.defaultMode`](#permissions-defaultmode) | Establezca el [modo de permisos](/docs/es/permission-modes#which-mode-a-session-starts-in) en el que comienzan las nuevas sesiones | Configuración de permisos | Any file |721| [`permissions.defaultMode`](#permissions-defaultmode) | Establece el [modo de permisos](/docs/es/permission-modes#which-mode-a-session-starts-in) en el que inician las nuevas sesiones | Configuración de permisos | Any file |

722| [`permissions.deny`](#permissions-deny) | Bloquee los [usos de herramientas](/docs/es/permissions#permission-rule-syntax) enumerados, incluidas las lecturas de archivos que contienen secretos | Configuración de permisos | Any file |722| [`permissions.deny`](#permissions-deny) | Bloquea los [usos de herramientas](/docs/es/permissions#permission-rule-syntax) enumerados, incluidas las lecturas de archivos que contienen secretos | Configuración de permisos | Any file |

723| [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) | Impida que alguien entre en el [modo bypassPermissions](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Configuración de permisos | Any file |723| [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) | Impide que cualquiera entre en el [modo bypassPermissions](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Configuración de permisos | Any file |

724| [`plansDirectory`](#plansdirectory) | Elija dónde [plan mode](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) escribe archivos de plan | Memoria y contexto | Any file |724| [`plansDirectory`](#plansdirectory) | Elige dónde escribe el [modo plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) los archivos de plan | Memoria y contexto | Any file |

725| [`pluginConfigs`](#pluginconfigs) | Almacene las respuestas que dio al diálogo de configuración de un [plugin](/docs/es/plugins/overview) | Plugins y skills | User or managed |725| [`pluginConfigs`](#pluginconfigs) | Almacena las respuestas que diste en el diálogo de configuración de un [plugin](/docs/es/plugins/overview) | Plugins y skills | User or managed |

726| [`pluginSuggestionMarketplaces`](#pluginsuggestionmarketplaces) | Elija qué [marketplaces](/docs/es/plugins/org#restrict-what-users-can-install) pueden mostrar sugerencias de instalación de plugins en `/plugin` | Plugins y skills | Managed |726| [`pluginSuggestionMarketplaces`](#pluginsuggestionmarketplaces) | Elige qué [marketplaces](/docs/es/plugins/org#restrict-what-users-can-install) pueden mostrar sugerencias de instalación de plugins en `/plugin` | Plugins y skills | Managed |

727| [`pluginTrustMessage`](#plugintrustmessage) | Agregue su propio texto a la [advertencia de confianza](/docs/es/plugins/overview) del plugin | Plugins y skills | Managed |727| [`pluginTrustMessage`](#plugintrustmessage) | Agrega tu propio texto a la advertencia de confianza de los [plugins](/docs/es/plugins/overview) | Plugins y skills | Managed |

728| [`policyHelper`](#policyhelper) | Ejecute un ejecutable que calcule la [configuración administrada](/docs/es/managed-settings#compute-the-policy-with-a-helper-program) al iniciar | Configuración empresarial y administrada | Managed |728| [`policyHelper`](#policyhelper) | Ejecuta un ejecutable que calcula la [configuración administrada](/docs/es/managed-settings#compute-the-policy-with-a-helper-program) al iniciar | Configuración empresarial y administrada | Managed |

729| [`policyHelper.path`](#policyhelper-path) | Nombre el [ejecutable auxiliar](/docs/es/managed-settings#compute-the-policy-with-a-helper-program) que Claude Code ejecuta | Configuración empresarial y administrada | Managed |729| [`policyHelper.path`](#policyhelper-path) | Indica el [ejecutable auxiliar](/docs/es/managed-settings#compute-the-policy-with-a-helper-program) que ejecuta Claude Code | Configuración empresarial y administrada | Managed |

730| [`policyHelper.refreshIntervalMs`](#policyhelper-refreshintervalms) | Vuelva a ejecutar el [auxiliar](/docs/es/managed-settings#compute-the-policy-with-a-helper-program) en segundo plano en un intervalo | Configuración empresarial y administrada | Managed |730| [`policyHelper.refreshIntervalMs`](#policyhelper-refreshintervalms) | Vuelve a ejecutar el [auxiliar](/docs/es/managed-settings#compute-the-policy-with-a-helper-program) en segundo plano a intervalos | Configuración empresarial y administrada | Managed |

731| [`policyHelper.timeoutMs`](#policyhelper-timeoutms) | Establezca cuánto tiempo Claude Code espera al [auxiliar](/docs/es/managed-settings#compute-the-policy-with-a-helper-program) | Configuración empresarial y administrada | Managed |731| [`policyHelper.timeoutMs`](#policyhelper-timeoutms) | Establece cuánto tiempo espera Claude Code al [auxiliar](/docs/es/managed-settings#compute-the-policy-with-a-helper-program) | Configuración empresarial y administrada | Managed |

732| [`preferredNotifChannel`](#preferrednotifchannel) | Elija un [timbre de terminal o notificación de escritorio](/docs/es/terminal-config#get-a-terminal-bell-or-notification) para la finalización de tareas | Remoto, escritorio y notificaciones | Any file |732| [`preferredNotifChannel`](#preferrednotifchannel) | Elige un [timbre de terminal o una notificación de escritorio](/docs/es/terminal-config#get-a-terminal-bell-or-notification) al completarse las tareas | Remoto, escritorio y notificaciones | Any file |

733| [`prefersReducedMotion`](#prefersreducedmotion) | [Reduzca o desactive](/docs/es/accessibility#accessibility-settings) las animaciones de spinner, shimmer y flash | Interfaz y terminal | Any file |733| [`prefersReducedMotion`](#prefersreducedmotion) | [Reduce o desactiva](/docs/es/accessibility#accessibility-settings) las animaciones de spinner, shimmer y flash | Interfaz y terminal | Any file |

734| [`prependPlugins`](#prependplugins) | Ejecute los [mods](/docs/es/plugins/mods/admin) de su organización antes de cada mod que instale un usuario | Plugins y skills | User or managed |734| [`prependPlugins`](#prependplugins) | Ejecuta los [mods](/docs/es/plugins/mods/admin) de tu organización antes de cada mod que instale un usuario | Plugins y skills | User or managed |

735| [`processWrapper`](#processwrapper) | Ejecute los procesos de fondo de Claude Code a través de un [iniciador corporativo](/docs/es/corporate-launcher) en macOS y Linux | Agentes, sesiones y worktrees | User or managed |735| [`processWrapper`](#processwrapper) | Ejecuta los procesos en segundo plano de Claude Code a través de un [iniciador corporativo](/docs/es/corporate-launcher) en macOS y Linux | Agentes, sesiones y worktrees | User or managed |

736| [`promptCacheTtl`](#promptcachettl) | Elija la [duración del caché de prompt](/docs/es/prompt-caching#cache-lifetime) para la conversación principal | Modelo y respuestas | Any file |736| [`promptCacheTtl`](#promptcachettl) | Elige la [duración de la caché de prompts](/docs/es/prompt-caching#cache-lifetime) para la conversación principal | Modelo y respuestas | Any file |

737| [`promptSuggestionEnabled`](#promptsuggestionenabled) | Oculte las [sugerencias de prompt](/docs/es/interactive-mode#prompt-suggestions) atenuadas en el cuadro de entrada | Interfaz y terminal | Any file |737| [`promptSuggestionEnabled`](#promptsuggestionenabled) | Oculta las [sugerencias de prompts](/docs/es/interactive-mode#prompt-suggestions) atenuadas en el cuadro de entrada | Interfaz y terminal | Any file |

738| [`prStatusFooterEnabled`](#prstatusfooterenabled) | Desactive la [insignia de estado de revisión de PR](/docs/es/interactive-mode#pr-review-status) del pie de página del prompt y la verificación de pull request detrás de ella | Configuración de configuración global | Global config |738| [`prStatusFooterEnabled`](#prstatusfooterenabled) | Desactiva la insignia de [estado de revisión del PR](/docs/es/interactive-mode#pr-review-status) en el pie del prompt y la verificación del pull request que la alimenta | Configuración de configuración global | Global config |

739| [`prUrlTemplate`](#prurltemplate) | Apunte los enlaces de PR a una herramienta de revisión de código interna en lugar de github.com | Git y atribución | Any file |739| [`prUrlTemplate`](#prurltemplate) | Apunta los enlaces de PR a una herramienta interna de revisión de código en lugar de github.com | Git y atribución | Any file |

740| [`remote.defaultEnvironmentId`](#remote-defaultenvironmentid) | Elija el [entorno en la nube](/docs/es/cloud-environments) predeterminado para `claude --cloud`; un ID `ccpool_` autohospedado es de solo lectura desde la configuración de usuario y administrada y `--settings` | Remoto, escritorio y notificaciones | Any file |740| [`remote.defaultEnvironmentId`](#remote-defaultenvironmentid) | Elige el [entorno en la nube](/docs/es/cloud-environments) predeterminado para `claude --cloud`; un ID `ccpool_` autohospedado solo se lee desde la configuración de usuario y administrada y desde `--settings` | Remoto, escritorio y notificaciones | Any file |

741| [`remoteControlAtStartup`](#remotecontrolatstartup) | Conecte el [Control Remoto](/docs/es/remote-control#enable-remote-control-for-all-sessions) automáticamente cuando comience una sesión | Remoto, escritorio y notificaciones | Any file |741| [`remoteControlAtStartup`](#remotecontrolatstartup) | Conecta [Remote Control](/docs/es/remote-control#enable-remote-control-for-all-sessions) automáticamente cuando se inicia una sesión | Remoto, escritorio y notificaciones | Any file |

742| [`requiredMaximumVersion`](#requiredmaximumversion) | [Rechace iniciar](/docs/es/setup#pin-a-minimum-version) en una versión más nueva de la que su organización permite | Actualizaciones y versiones | Managed |742| [`requiredMaximumVersion`](#requiredmaximumversion) | [Impide el inicio](/docs/es/setup#pin-a-minimum-version) con una versión más nueva de la que tu organización permite | Actualizaciones y versiones | Managed |

743| [`requiredMinimumVersion`](#requiredminimumversion) | [Rechace iniciar](/docs/es/setup#pin-a-minimum-version) en una versión más antigua de la que su organización requiere | Actualizaciones y versiones | Managed |743| [`requiredMinimumVersion`](#requiredminimumversion) | [Impide el inicio](/docs/es/setup#pin-a-minimum-version) con una versión más antigua de la que tu organización exige | Actualizaciones y versiones | Managed |

744| [`respectGitignore`](#respectgitignore) | Mantenga los archivos ignorados por git fuera del [selector de archivo `@`](/docs/es/interactive-mode#quick-commands) | Interfaz y terminal | Any file |744| [`respectGitignore`](#respectgitignore) | Mantén los archivos ignorados por git fuera del [selector de archivos `@`](/docs/es/interactive-mode#quick-commands) | Interfaz y terminal | Any file |

745| [`respondToBashCommands`](#respondtobashcommands) | Impida que Claude responda después de que se ejecute un [comando shell `!`](/docs/es/interactive-mode#shell-mode-with-prefix) | Interfaz y terminal | Any file |745| [`respondToBashCommands`](#respondtobashcommands) | Impide que Claude responda después de que se ejecuta un [comando de shell con `!`](/docs/es/interactive-mode#shell-mode-with-prefix) | Interfaz y terminal | Any file |

746| [`sandbox`](#sandbox) | [Aisle los comandos Bash](/docs/es/sandboxing) de su sistema de archivos y red en macOS, Linux y WSL2 | Configuración de sandbox | Any file |746| [`sandbox`](#sandbox) | [Aísla los comandos Bash](/docs/es/sandboxing) de tu sistema de archivos y tu red en macOS, Linux y WSL2 | Configuración de sandbox | Any file |

747| [`sandbox.allowAppleEvents`](#sandbox-allowappleevents) | Permita que los [comandos en sandbox](/docs/es/sandboxing) envíen Apple Events en macOS | Configuración de sandbox | User or managed |747| [`sandbox.allowAppleEvents`](#sandbox-allowappleevents) | Permite que los [comandos en sandbox](/docs/es/sandboxing) envíen Apple Events en macOS | Configuración de sandbox | User or managed |

748| [`sandbox.allowUnsandboxedCommands`](#sandbox-allowunsandboxedcommands) | Permita que Claude reintente un comando bloqueado fuera del [sandbox](/docs/es/sandboxing#the-unsandboxed-retry-escape-hatch), o prohíbalo | Configuración de sandbox | Any file |748| [`sandbox.allowUnsandboxedCommands`](#sandbox-allowunsandboxedcommands) | Permite que Claude reintente un comando bloqueado fuera del [sandbox](/docs/es/sandboxing#the-unsandboxed-retry-escape-hatch), o prohíbelo | Configuración de sandbox | Any file |

749| [`sandbox.autoAllowBashIfSandboxed`](#sandbox-autoallowbashifsandboxed) | Ejecute los [comandos en sandbox](/docs/es/sandboxing#auto-allow-mode) sin un prompt de permisos | Configuración de sandbox | Any file |749| [`sandbox.autoAllowBashIfSandboxed`](#sandbox-autoallowbashifsandboxed) | Ejecuta los [comandos en sandbox](/docs/es/sandboxing#auto-allow-mode) sin una solicitud de permiso | Configuración de sandbox | Any file |

750| [`sandbox.bwrapPath`](#sandbox-bwrappath) | Apunte el [sandbox](/docs/es/sandboxing) a un binario bubblewrap fuera de `PATH` | Configuración de sandbox | Managed |750| [`sandbox.bwrapPath`](#sandbox-bwrappath) | Apunta el [sandbox](/docs/es/sandboxing) a un binario de bubblewrap fuera de `PATH` | Configuración de sandbox | Managed |

751| [`sandbox.credentials`](#sandbox-credentials) | Oculte o enmascare archivos y variables de credenciales dentro del [sandbox](/docs/es/sandboxing#protect-credentials) | Configuración de sandbox | Any file |751| [`sandbox.credentials`](#sandbox-credentials) | Oculta o enmascara archivos y variables de credenciales dentro del [sandbox](/docs/es/sandboxing#protect-credentials) | Configuración de sandbox | Any file |

752| [`sandbox.credentials.allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) | Permita que las [credenciales enmascaradas](/docs/es/sandboxing#mask-credentials) lleguen a servicios HTTP simples en redes de prueba de confianza | Configuración de sandbox | User or managed |752| [`sandbox.credentials.allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) | Permite que las [credenciales enmascaradas](/docs/es/sandboxing#mask-credentials) lleguen a servicios HTTP simples en redes de prueba de confianza | Configuración de sandbox | User or managed |

753| [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs) | Vincule variables de clave AWS con nombre personalizado en una credencial para [re-firmar](/docs/es/sandboxing#re-sign-aws-requests) | Configuración de sandbox | User or managed |753| [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs) | Vincula variables de claves de AWS con nombres personalizados en una sola credencial para [volver a firmar](/docs/es/sandboxing#re-sign-aws-requests) | Configuración de sandbox | User or managed |

754| [`sandbox.credentials.envVars`](#sandbox-credentials-envvars) | Desactive o enmascare una variable de entorno dentro del [sandbox](/docs/es/sandboxing#mask-environment-variables) | Configuración de sandbox | Any file |754| [`sandbox.credentials.envVars`](#sandbox-credentials-envvars) | Elimina o enmascara una variable de entorno dentro del [sandbox](/docs/es/sandboxing#mask-environment-variables) | Configuración de sandbox | Any file |

755| [`sandbox.credentials.files`](#sandbox-credentials-files) | Bloquee o enmascare lecturas de un archivo de credenciales dentro del [sandbox](/docs/es/sandboxing#mask-credential-files) | Configuración de sandbox | Any file |755| [`sandbox.credentials.files`](#sandbox-credentials-files) | Bloquea o enmascara las lecturas de un archivo de credenciales dentro del [sandbox](/docs/es/sandboxing#mask-credential-files) | Configuración de sandbox | Any file |

756| [`sandbox.credentials.sigv4`](#sandbox-credentials-sigv4) | Elija si las solicitudes [SigV4A de AWS](/docs/es/sandboxing#re-sign-aws-requests) de streaming, presignadas o fallan o pasan | Configuración de sandbox | User or managed |756| [`sandbox.credentials.sigv4`](#sandbox-credentials-sigv4) | Elige si las solicitudes de AWS en streaming, prefirmadas o [SigV4A](/docs/es/sandboxing#re-sign-aws-requests) fallan o pasan sin cambios | Configuración de sandbox | User or managed |

757| [`sandbox.enabled`](#sandbox-enabled) | Active el [sandbox de Bash](/docs/es/sandboxing#get-started) en macOS, Linux y WSL2 | Configuración de sandbox | Any file |757| [`sandbox.enabled`](#sandbox-enabled) | Activa el [sandboxing de Bash](/docs/es/sandboxing#get-started) en macOS, Linux y WSL2 | Configuración de sandbox | Any file |

758| [`sandbox.enableWeakerNestedSandbox`](#sandbox-enableweakernestedsandbox) | Ejecute el [sandbox](/docs/es/sandboxing) de Linux dentro de un contenedor sin privilegios | Configuración de sandbox | Any file |758| [`sandbox.enableWeakerNestedSandbox`](#sandbox-enableweakernestedsandbox) | Ejecuta el [sandbox](/docs/es/sandboxing) de Linux dentro de un contenedor sin privilegios | Configuración de sandbox | Any file |

759| [`sandbox.enableWeakerNetworkIsolation`](#sandbox-enableweakernetworkisolation) | Permita que `gh`, `gcloud` y `terraform` verifiquen TLS detrás de un proxy MITM dentro del [sandbox](/docs/es/sandboxing#troubleshooting) en macOS | Configuración de sandbox | Any file |759| [`sandbox.enableWeakerNetworkIsolation`](#sandbox-enableweakernetworkisolation) | Permite que `gh`, `gcloud` y `terraform` verifiquen TLS detrás de un proxy MITM dentro del [sandbox](/docs/es/sandboxing#troubleshooting) en macOS | Configuración de sandbox | Any file |

760| [`sandbox.excludedCommands`](#sandbox-excludedcommands) | Nombre los comandos que Claude Code puede ejecutar fuera del [sandbox](/docs/es/sandboxing) | Configuración de sandbox | Any file |760| [`sandbox.excludedCommands`](#sandbox-excludedcommands) | Indica los comandos que Claude Code puede ejecutar fuera del [sandbox](/docs/es/sandboxing) | Configuración de sandbox | Any file |

761| [`sandbox.failIfUnavailable`](#sandbox-failifunavailable) | Rechace iniciar cuando el [sandbox](/docs/es/sandboxing) no pueda, en lugar de ejecutarse sin sandbox | Configuración de sandbox | Any file |761| [`sandbox.failIfUnavailable`](#sandbox-failifunavailable) | Impide el inicio cuando el [sandbox](/docs/es/sandboxing) no puede iniciarse, en lugar de ejecutar sin sandbox | Configuración de sandbox | Any file |

762| [`sandbox.filesystem`](#sandbox-filesystem) | Controle qué rutas pueden leer y escribir los [comandos en sandbox](/docs/es/sandboxing#filesystem-isolation) | Configuración de sandbox | Any file |762| [`sandbox.filesystem`](#sandbox-filesystem) | Controla qué rutas pueden leer y escribir los [comandos en sandbox](/docs/es/sandboxing#filesystem-isolation) | Configuración de sandbox | Any file |

763| [`sandbox.filesystem.allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) | Impida que los desarrolladores vuelvan a abrir [rutas de lectura que su organización bloqueó](/docs/es/sandboxing#keep-developers-from-widening-the-policy) | Configuración de sandbox | Managed |763| [`sandbox.filesystem.allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) | Impide que los desarrolladores vuelvan a abrir [rutas de lectura que tu organización bloqueó](/docs/es/sandboxing#keep-developers-from-widening-the-policy) | Configuración de sandbox | Managed |

764| [`sandbox.filesystem.allowRead`](#sandbox-filesystem-allowread) | Vuelva a abrir la lectura dentro de una región que [`denyRead`](#sandbox-filesystem-denyread) bloquea | Configuración de sandbox | Any file |764| [`sandbox.filesystem.allowRead`](#sandbox-filesystem-allowread) | Vuelve a permitir la lectura dentro de una región que [`denyRead`](#sandbox-filesystem-denyread) bloquea | Configuración de sandbox | Any file |

765| [`sandbox.filesystem.allowWrite`](#sandbox-filesystem-allowwrite) | Agregue rutas que los [comandos en sandbox](/docs/es/sandboxing) pueden escribir | Configuración de sandbox | Any file |765| [`sandbox.filesystem.allowWrite`](#sandbox-filesystem-allowwrite) | Agrega rutas en las que pueden escribir los [comandos en sandbox](/docs/es/sandboxing) | Configuración de sandbox | Any file |

766| [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread) | Bloquee los [comandos en sandbox](/docs/es/sandboxing) de leer rutas específicas | Configuración de sandbox | Any file |766| [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread) | Impide que los [comandos en sandbox](/docs/es/sandboxing) lean rutas específicas | Configuración de sandbox | Any file |

767| [`sandbox.filesystem.denyWrite`](#sandbox-filesystem-denywrite) | Bloquee los [comandos en sandbox](/docs/es/sandboxing) de escribir en rutas específicas | Configuración de sandbox | Any file |767| [`sandbox.filesystem.denyWrite`](#sandbox-filesystem-denywrite) | Impide que los [comandos en sandbox](/docs/es/sandboxing) escriban en rutas específicas | Configuración de sandbox | Any file |

768| [`sandbox.filesystem.disabled`](#sandbox-filesystem-disabled) | [Desactive el aislamiento del sistema de archivos](/docs/es/sandboxing#disable-filesystem-isolation) mientras mantiene el aislamiento de red | Configuración de sandbox | User or managed |768| [`sandbox.filesystem.disabled`](#sandbox-filesystem-disabled) | [Desactiva el aislamiento del sistema de archivos](/docs/es/sandboxing#disable-filesystem-isolation) y mantén el aislamiento de red | Configuración de sandbox | User or managed |

769| [`sandbox.ignoreViolations`](#sandbox-ignoreviolations) | Silenciar reportes de violaciones para rutas que se espera que un comando sondee | Configuración de sandbox | Any file |769| [`sandbox.ignoreViolations`](#sandbox-ignoreviolations) | Silencia los reportes de violaciones para las rutas que se espera que un comando sondee | Configuración de sandbox | Any file |

770| [`sandbox.network`](#sandbox-network) | Controle qué hosts, puertos y sockets pueden alcanzar los [comandos en sandbox](/docs/es/sandboxing#network-isolation) | Configuración de sandbox | Any file |770| [`sandbox.network`](#sandbox-network) | Controla a qué hosts, puertos y sockets pueden acceder los [comandos en sandbox](/docs/es/sandboxing#network-isolation) | Configuración de sandbox | Any file |

771| [`sandbox.network.allowAllUnixSockets`](#sandbox-network-allowallunixsockets) | Permita que los [comandos en sandbox](/docs/es/sandboxing) se conecten a cada socket Unix | Configuración de sandbox | Any file |771| [`sandbox.network.allowAllUnixSockets`](#sandbox-network-allowallunixsockets) | Permite que los [comandos en sandbox](/docs/es/sandboxing) se conecten a cualquier socket Unix | Configuración de sandbox | Any file |

772| [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) | Pre-permita dominios para que los [comandos en sandbox](/docs/es/sandboxing) no soliciten permiso | Configuración de sandbox | Any file |772| [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) | Permite dominios de antemano para que los [comandos en sandbox](/docs/es/sandboxing) no pidan permiso para ellos | Configuración de sandbox | Any file |

773| [`sandbox.network.allowLocalBinding`](#sandbox-network-allowlocalbinding) | Permita que los [comandos en sandbox](/docs/es/sandboxing) se vinculen a puertos localhost en macOS | Configuración de sandbox | Any file |773| [`sandbox.network.allowLocalBinding`](#sandbox-network-allowlocalbinding) | Permite que los [comandos en sandbox](/docs/es/sandboxing) escuchen en puertos de red y se conecten a localhost en macOS | Configuración de sandbox | Any file |

774| [`sandbox.network.allowMachLookup`](#sandbox-network-allowmachlookup) | Permita que las herramientas [en sandbox](/docs/es/sandboxing) de macOS como el iOS Simulator o Playwright alcancen sus servicios XPC | Configuración de sandbox | Any file |774| [`sandbox.network.allowMachLookup`](#sandbox-network-allowmachlookup) | Permite que las herramientas [en sandbox](/docs/es/sandboxing) de macOS, como iOS Simulator o Playwright, accedan a sus servicios XPC | Configuración de sandbox | Any file |

775| [`sandbox.network.allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) | Bloquee la lista de permitidos de red a la [configuración administrada](/docs/es/sandboxing#keep-developers-from-widening-the-policy) | Configuración de sandbox | Managed |775| [`sandbox.network.allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) | Restringe la lista de dominios permitidos de red a la [configuración administrada](/docs/es/sandboxing#keep-developers-from-widening-the-policy) | Configuración de sandbox | Managed |

776| [`sandbox.network.allowUnixSockets`](#sandbox-network-allowunixsockets) | Liste las rutas de socket Unix que los [comandos en sandbox](/docs/es/sandboxing) pueden usar en macOS | Configuración de sandbox | Any file |776| [`sandbox.network.allowUnixSockets`](#sandbox-network-allowunixsockets) | Enumera las rutas de sockets Unix que pueden usar los [comandos en sandbox](/docs/es/sandboxing) en macOS | Configuración de sandbox | Any file |

777| [`sandbox.network.deniedDomains`](#sandbox-network-denieddomains) | Bloquee dominios para los [comandos en sandbox](/docs/es/sandboxing), incluso dentro de un comodín permitido | Configuración de sandbox | Any file |777| [`sandbox.network.deniedDomains`](#sandbox-network-denieddomains) | Bloquea dominios para los [comandos en sandbox](/docs/es/sandboxing), incluso dentro de un comodín permitido | Configuración de sandbox | Any file |

778| [`sandbox.network.httpProxyPort`](#sandbox-network-httpproxyport) | Enrute el tráfico HTTP del [sandbox](/docs/es/sandboxing#custom-proxy-configuration) a través de su propio proxy | Configuración de sandbox | Any file |778| [`sandbox.network.httpProxyPort`](#sandbox-network-httpproxyport) | Enruta el tráfico HTTP del [sandbox](/docs/es/sandboxing#custom-proxy-configuration) a través de tu propio proxy | Configuración de sandbox | Any file |

779| [`sandbox.network.socksProxyPort`](#sandbox-network-socksproxyport) | Enrute el tráfico SOCKS del [sandbox](/docs/es/sandboxing#custom-proxy-configuration) a través de su propio proxy | Configuración de sandbox | Any file |779| [`sandbox.network.socksProxyPort`](#sandbox-network-socksproxyport) | Enruta el tráfico SOCKS del [sandbox](/docs/es/sandboxing#custom-proxy-configuration) a través de tu propio proxy | Configuración de sandbox | Any file |

780| [`sandbox.network.strictAllowlist`](#sandbox-network-strictallowlist) | Deniegue hosts fuera de la [lista de permitidos](/docs/es/sandboxing#network-isolation) en lugar de solicitar permiso | Configuración de sandbox | User or managed |780| [`sandbox.network.strictAllowlist`](#sandbox-network-strictallowlist) | Deniega los hosts que están fuera de la [lista de permitidos](/docs/es/sandboxing#network-isolation) en lugar de pedir permiso | Configuración de sandbox | User or managed |

781| [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate) | Haga que el [sandbox](/docs/es/sandboxing#network-isolation) proxy termine TLS para que pueda leer solicitudes HTTPS | Configuración de sandbox | User or managed |781| [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate) | Haz que el proxy del [sandbox](/docs/es/sandboxing#network-isolation) termine TLS para que pueda leer las solicitudes HTTPS | Configuración de sandbox | User or managed |

782| [`sandbox.ripgrep`](#sandbox-ripgrep) | Use su propio binario ripgrep dentro del [sandbox](/docs/es/sandboxing) | Configuración de sandbox | User or managed |782| [`sandbox.ripgrep`](#sandbox-ripgrep) | Usa tu propio binario de ripgrep dentro del [sandbox](/docs/es/sandboxing) | Configuración de sandbox | User or managed |

783| [`sandbox.socatPath`](#sandbox-socatpath) | Apunte el proxy del [sandbox](/docs/es/sandboxing) a un binario `socat` fuera de `PATH` | Configuración de sandbox | Managed |783| [`sandbox.socatPath`](#sandbox-socatpath) | Apunta el proxy del [sandbox](/docs/es/sandboxing) a un binario de `socat` fuera de `PATH` | Configuración de sandbox | Managed |

784| [`showClearContextOnPlanAccept`](#showclearcontextonplanaccept) | Muestre una opción "borrar contexto" en la [pantalla de aceptación del plan](/docs/es/permission-modes#review-and-approve-a-plan) | Interfaz y terminal | Any file |784| [`showClearContextOnPlanAccept`](#showclearcontextonplanaccept) | Muestra una opción "borrar contexto" en la [pantalla de aceptación del plan](/docs/es/permission-modes#review-and-approve-a-plan) | Interfaz y terminal | Any file |

785| [`showThinkingSummaries`](#showthinkingsummaries) | Vea resúmenes del [pensamiento](/docs/es/model-config#extended-thinking) de Claude en lugar de un stub colapsado | Modelo y respuestas | Any file |785| [`showThinkingSummaries`](#showthinkingsummaries) | Ve resúmenes del [pensamiento](/docs/es/model-config#extended-thinking) de Claude en lugar de un marcador contraído | Modelo y respuestas | Any file |

786| [`showTurnDuration`](#showturnduration) | Oculte la duración "Cooked for" después de cada respuesta | Interfaz y terminal | Any file |786| [`showTurnDuration`](#showturnduration) | Oculta la duración "Cooked for" después de cada respuesta | Interfaz y terminal | Any file |

787| [`skillListingBudgetFraction`](#skilllistingbudgetfraction) | Reserve más o menos contexto para el [listado de skills](/docs/es/skills#skill-descriptions-are-cut-short) | Memoria y contexto | Any file |787| [`skillListingBudgetFraction`](#skilllistingbudgetfraction) | Reserva más o menos contexto para el [listado de skills](/docs/es/skills#skill-descriptions-are-cut-short) | Memoria y contexto | Any file |

788| [`skillListingMaxDescChars`](#skilllistingmaxdescchars) | Limite la longitud de la descripción de cada skill en el [listado de skills](/docs/es/skills#skill-descriptions-are-cut-short) | Memoria y contexto | Any file |788| [`skillListingMaxDescChars`](#skilllistingmaxdescchars) | Limita la longitud de la descripción de cada skill en el [listado de skills](/docs/es/skills#skill-descriptions-are-cut-short) | Memoria y contexto | Any file |

789| [`skillOverrides`](#skilloverrides) | [Oculte o contraiga un skill](/docs/es/skills#override-skill-visibility-from-settings) sin editar su SKILL.md | Plugins y skills | Any file |789| [`skillOverrides`](#skilloverrides) | [Oculta o contrae un skill](/docs/es/skills#override-skill-visibility-from-settings) sin editar su SKILL.md | Plugins y skills | Any file |

790| [`skipAutoPermissionPrompt`](#skipautopermissionprompt) | Omita el aviso único que Claude Code muestra cuando entra por primera vez en el [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) usted mismo en lugar de a través del predeterminado integrado | Configuración de permisos | User or managed |790| [`skipAutoPermissionPrompt`](#skipautopermissionprompt) | Omite el aviso único que Claude Code muestra cuando entras por primera vez al [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) por tu cuenta en lugar de a través del valor predeterminado integrado | Configuración de permisos | User or managed |

791| [`skipDangerousModePermissionPrompt`](#skipdangerousmodepermissionprompt) | Omita el diálogo de confirmación antes del [modo bypassPermissions](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Configuración de permisos | User, local, or managed |791| [`skipDangerousModePermissionPrompt`](#skipdangerousmodepermissionprompt) | Omite el diálogo de confirmación antes del [modo bypassPermissions](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Configuración de permisos | User, local, or managed |

792| [`skipWebFetchPreflight`](#skipwebfetchpreflight) | Omita la [verificación de nombre de host de WebFetch](/docs/es/tools-reference#webfetch-tool-behavior) cuando Anthropic no es accesible | Privacidad y telemetría | Any file |792| [`skipWebFetchPreflight`](#skipwebfetchpreflight) | Omite la [verificación del nombre de host de WebFetch](/docs/es/tools-reference#webfetch-tool-behavior) cuando Anthropic no está accesible | Privacidad y telemetría | Any file |

793| [`spellcheck`](#spellcheck) | Subraye las palabras mal escritas en la entrada del prompt con un [corrector ortográfico](/docs/es/interactive-mode#check-spelling-as-you-type) que instale | Interfaz y terminal | User or managed |793| [`spellcheck`](#spellcheck) | Subraya las palabras mal escritas en la entrada del prompt con un [corrector ortográfico](/docs/es/interactive-mode#check-spelling-as-you-type) que instales | Interfaz y terminal | User or managed |

794| [`spinnerTipsEnabled`](#spinnertipsenabled) | Oculte consejos en el spinner mientras Claude trabaja | Interfaz y terminal | Any file |794| [`spinnerTipsEnabled`](#spinnertipsenabled) | Oculta los consejos en el spinner mientras Claude trabaja | Interfaz y terminal | Any file |

795| [`spinnerTipsOverride`](#spinnertipsoverride) | Agregue sus propios consejos a la rotación del spinner, o reemplace los consejos integrados | Interfaz y terminal | Any file |795| [`spinnerTipsOverride`](#spinnertipsoverride) | Agrega tus propios consejos a la rotación del spinner, o reemplaza los consejos integrados | Interfaz y terminal | Any file |

796| [`spinnerVerbs`](#spinnerverbs) | Agregue o reemplace los verbos mostrados mientras se ejecuta un turno | Interfaz y terminal | Any file |796| [`spinnerVerbs`](#spinnerverbs) | Agrega o reemplaza los verbos que se muestran mientras se ejecuta un turno | Interfaz y terminal | Any file |

797| [`sshConfigs`](#sshconfigs) | Agregue [conexiones SSH](/docs/es/desktop#pre-configure-ssh-connections-for-your-team) al menú desplegable del entorno de Desktop | Remoto, escritorio y notificaciones | User or managed |797| [`sshConfigs`](#sshconfigs) | Agrega [conexiones SSH](/docs/es/desktop#pre-configure-ssh-connections-for-your-team) al menú desplegable de entornos de Desktop | Remoto, escritorio y notificaciones | User or managed |

798| [`sshHostAllowlist`](#sshhostallowlist) | Limite qué hosts pueden alcanzar las [sesiones SSH de Desktop](/docs/es/desktop#restrict-which-ssh-hosts-users-can-connect-to) | Remoto, escritorio y notificaciones | Managed |798| [`sshHostAllowlist`](#sshhostallowlist) | Limita a qué hosts pueden conectarse las [sesiones SSH de Desktop](/docs/es/desktop#restrict-which-ssh-hosts-users-can-connect-to) | Remoto, escritorio y notificaciones | Managed |

799| [`statusLine`](#statusline) | Ejecute su propio comando para representar una [línea de estado](/docs/es/statusline) debajo del prompt | Interfaz y terminal | Any file |799| [`statusLine`](#statusline) | Ejecuta tu propio comando para mostrar una [línea de estado](/docs/es/statusline) debajo del prompt | Interfaz y terminal | Any file |

800| [`strictKnownMarketplaces`](#strictknownmarketplaces) | Lista de permitidos de las fuentes del [marketplace](/docs/es/plugins/overview) que los usuarios pueden agregar e instalar | Plugins y skills | Managed |800| [`strictKnownMarketplaces`](#strictknownmarketplaces) | Define una lista de permitidos de las fuentes de [marketplaces](/docs/es/plugins/overview) que los usuarios pueden agregar y desde las que pueden instalar | Plugins y skills | Managed |

801| [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | Bloquee los [skills](/docs/es/skills), [agentes](/docs/es/sub-agents), [hooks](/docs/es/hooks) y [servidores MCP](/docs/es/mcp) de fuentes de usuario y proyecto | Plugins y skills | Managed |801| [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | Bloquea los [skills](/docs/es/skills), [agentes](/docs/es/sub-agents), [hooks](/docs/es/hooks) y [servidores MCP](/docs/es/mcp) de fuentes de usuario y de proyecto | Plugins y skills | Managed |

802| [`strictPluginOnlyCustomization.agents`](#strictpluginonlycustomization-agents) | Bloquee los [agentes](/docs/es/sub-agents) a fuentes de plugin y administradas | Plugins y skills | Managed |802| [`strictPluginOnlyCustomization.agents`](#strictpluginonlycustomization-agents) | Restringe los [agentes](/docs/es/sub-agents) a fuentes de plugins y administradas | Plugins y skills | Managed |

803| [`strictPluginOnlyCustomization.hooks`](#strictpluginonlycustomization-hooks) | Bloquee los [hooks](/docs/es/hooks) a fuentes de plugin y administradas | Plugins y skills | Managed |803| [`strictPluginOnlyCustomization.hooks`](#strictpluginonlycustomization-hooks) | Restringe los [hooks](/docs/es/hooks) a fuentes de plugins y administradas | Plugins y skills | Managed |

804| [`strictPluginOnlyCustomization.mcp`](#strictpluginonlycustomization-mcp) | Bloquee los [servidores MCP](/docs/es/mcp) a fuentes de plugin y administradas | Plugins y skills | Managed |804| [`strictPluginOnlyCustomization.mcp`](#strictpluginonlycustomization-mcp) | Restringe los [servidores MCP](/docs/es/mcp) a fuentes de plugins y administradas | Plugins y skills | Managed |

805| [`strictPluginOnlyCustomization.skills`](#strictpluginonlycustomization-skills) | Bloquee los [skills](/docs/es/skills) a fuentes de plugin y administradas | Plugins y skills | Managed |805| [`strictPluginOnlyCustomization.skills`](#strictpluginonlycustomization-skills) | Restringe los [skills](/docs/es/skills) a fuentes de plugins y administradas | Plugins y skills | Managed |

806| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Elija la [duración del caché de prompt](/docs/es/prompt-caching#cache-lifetime) para subagentes y otras solicitudes fuera de la conversación principal | Modelo y respuestas | Any file |806| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Elige la [duración de la caché de prompts](/docs/es/prompt-caching#cache-lifetime) para los subagentes y otras solicitudes fuera de la conversación principal | Modelo y respuestas | Any file |

807| [`subagentStatusLine`](#subagentstatusline) | Reescriba filas en la [pantalla de tareas del subagente](/docs/es/sub-agents) con su propio comando | Interfaz y terminal | Any file |807| [`subagentStatusLine`](#subagentstatusline) | Reescribe filas de la visualización de tareas del [subagente](/docs/es/sub-agents) con tu propio comando | Interfaz y terminal | Any file |

808| [`switchModelsOnFlag`](#switchmodelsonflag) | Cambie modelos automáticamente o pause cuando un [clasificador de seguridad](/docs/es/model-config#ask-before-switching) marque una solicitud | Modelo y respuestas | Any file |808| [`switchModelsOnFlag`](#switchmodelsonflag) | Cambia de modelo automáticamente o haz una pausa cuando un [clasificador de seguridad](/docs/es/model-config#ask-before-switching) marca una solicitud | Modelo y respuestas | Any file |

809| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | Deje de cargar los [plugins habilitados en su cuenta de claude.ai](/docs/es/plugins/loading#synced-plugins) y deje de descargar nuevos | Plugins y skills | User, local, or managed |809| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | Deja de cargar los [plugins habilitados en tu cuenta de claude.ai](/docs/es/plugins/loading#synced-plugins) y deja de descargar nuevos | Plugins y skills | User, local, or managed |

810| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Deje de cargar los [skills habilitados en su cuenta de claude.ai](/docs/es/skills#how-synced-skills-behave) y deje de descargar nuevos | Plugins y skills | User, local, or managed |810| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Deja de cargar los [skills habilitados en tu cuenta de claude.ai](/docs/es/skills#how-synced-skills-behave) y deja de descargar nuevos | Plugins y skills | User, local, or managed |

811| [`syntaxHighlightingDisabled`](#syntaxhighlightingdisabled) | Desactive el resaltado de sintaxis en diffs y bloques de código | Interfaz y terminal | Any file |811| [`syntaxHighlightingDisabled`](#syntaxhighlightingdisabled) | Desactiva el resaltado de sintaxis en los diffs y los bloques de código | Interfaz y terminal | Any file |

812| [`taskOutputMaxChars`](#taskoutputmaxchars) | Eliminado en v2.1.277, junto con la herramienta `TaskOutput` que dimensionaba | Memoria y contexto | Any file |812| [`taskOutputMaxChars`](#taskoutputmaxchars) | Eliminado en v2.1.277, junto con la herramienta `TaskOutput` cuyo tamaño definía | Memoria y contexto | Any file |

813| [`teammateDefaultModel`](#teammatedefaultmodel) | Eliminado en v2.1.234; vea [Especificar compañeros de equipo y modelos](/docs/es/agent-teams#specify-teammates-and-models) para cómo Claude Code elige el modelo de un compañero de equipo | Configuración de configuración global | Global config |813| [`teammateDefaultModel`](#teammatedefaultmodel) | Eliminado en v2.1.234; consulta [Especificar compañeros de equipo y modelos](/docs/es/agent-teams#specify-teammates-and-models) para ver cómo elige Claude Code el modelo de un compañero de equipo | Configuración de configuración global | Global config |

814| [`teammateMode`](#teammatemode) | Elija cómo se muestran los [compañeros de equipo del equipo de agentes](/docs/es/agent-teams#choose-a-display-mode) | Agentes, sesiones y worktrees | Any file |814| [`teammateMode`](#teammatemode) | Elige cómo se muestran los [compañeros de equipo de un equipo de agentes](/docs/es/agent-teams#choose-a-display-mode) | Agentes, sesiones y worktrees | Any file |

815| [`terminalProgressBarEnabled`](#terminalprogressbarenabled) | Oculte la barra de progreso del terminal en terminales que la admitan | Interfaz y terminal | Any file |815| [`terminalProgressBarEnabled`](#terminalprogressbarenabled) | Oculta la barra de progreso de la terminal en las terminales que la admiten | Interfaz y terminal | Any file |

816| [`terminalTitleFromRename`](#terminaltitlefromrename) | Impida que [`/rename`](/docs/es/sessions#name-your-sessions) y `--name` cambien el título de la pestaña del terminal | Interfaz y terminal | Any file |816| [`terminalTitleFromRename`](#terminaltitlefromrename) | Impide que [`/rename`](/docs/es/sessions#name-your-sessions) y `--name` cambien el título de la pestaña de la terminal | Interfaz y terminal | Any file |

817| [`theme`](#theme) | Elija el [tema de color](/docs/es/terminal-config#match-the-color-theme) de la interfaz, integrado o personalizado | Interfaz y terminal | Any file |817| [`theme`](#theme) | Elige el [tema de color](/docs/es/terminal-config#match-the-color-theme) de la interfaz, integrado o personalizado | Interfaz y terminal | Any file |

818| [`timeFormat`](#timeformat) | Muestre las horas en la interfaz en un reloj de 12 horas o 24 horas, en UTC, o con un patrón strftime | Interfaz y terminal | Any file |818| [`timeFormat`](#timeformat) | Muestra las horas de la interfaz en formato de 12 o 24 horas, en UTC o con un patrón strftime | Interfaz y terminal | Any file |

819| [`timeZone`](#timezone) | Muestre las horas en la interfaz en una zona horaria distinta a la de su sistema | Interfaz y terminal | Any file |819| [`timeZone`](#timezone) | Muestra las horas de la interfaz en una zona horaria distinta de la de tu sistema | Interfaz y terminal | Any file |

820| [`tui`](#tui) | Elija el [renderizador de pantalla completa](/docs/es/fullscreen) o terminal clásico | Interfaz y terminal | Any file |820| [`tui`](#tui) | Elige el renderizador de terminal [de pantalla completa](/docs/es/fullscreen) o el clásico | Interfaz y terminal | Any file |

821| [`ultracode`](#ultracode) | Haga que Claude planifique un [workflow](/docs/es/workflows#let-claude-decide-with-ultracode) para cada tarea sustancial sin ser preguntado | Modelo y respuestas | Any file |821| [`ultracode`](#ultracode) | Haz que Claude planifique un [workflow](/docs/es/workflows#let-claude-decide-with-ultracode) para cada tarea sustancial sin que se lo pidas | Modelo y respuestas | Any file |

822| [`useAutoModeDuringPlan`](#useautomodeduringplan) | Permita que el [clasificador de modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) revise comandos shell en el [modo plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode); establezca `false` para obtener prompts en su lugar | Configuración de permisos | User, local, or managed |822| [`useAutoModeDuringPlan`](#useautomodeduringplan) | Permite que el clasificador del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) revise los comandos de shell en el [modo plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode); establece `false` para recibir solicitudes de permiso en su lugar | Configuración de permisos | User, local, or managed |

823| [`verbose`](#verbose) | Muestre la [salida completa de herramientas](/docs/es/cli-reference#cli-flags) en lugar de resúmenes truncados; `viewMode` tiene prioridad cuando ambos se establecen | Interfaz y terminal | Any file |823| [`verbose`](#verbose) | Muestra la [salida completa de las herramientas](/docs/es/cli-reference#cli-flags) en lugar de resúmenes truncados; `viewMode` tiene prioridad cuando ambos están establecidos | Interfaz y terminal | Any file |

824| [`viewMode`](#viewmode) | Inicie cada sesión en [vista predeterminada, detallada o enfocada](/docs/es/cli-reference#cli-flags) | Interfaz y terminal | Any file |824| [`viewMode`](#viewmode) | Inicia cada sesión en la [vista predeterminada, detallada o enfocada](/docs/es/cli-reference#cli-flags) | Interfaz y terminal | Any file |

825| [`vimInsertModeRemaps`](#viminsertmoderemaps) | Asigne una [secuencia de modo INSERT](/docs/es/interactive-mode#remap-insert-mode-key-sequences) de dos teclas como `jj` a Escape | Interfaz y terminal | User or managed |825| [`vimInsertModeRemaps`](#viminsertmoderemaps) | Asigna una [secuencia de dos teclas del modo INSERT](/docs/es/interactive-mode#remap-insert-mode-key-sequences), como `jj`, a Escape | Interfaz y terminal | User or managed |

826| [`voice`](#voice) | Active la [dictación por voz](/docs/es/voice-dictation) y elija el modo de mantener o tocar | Interfaz y terminal | Any file |826| [`voice`](#voice) | Activa el [dictado por voz](/docs/es/voice-dictation) y elige el modo mantener o tocar | Interfaz y terminal | Any file |

827| [`voiceEnabled`](#voiceenabled) | Active la [dictación por voz](/docs/es/voice-dictation) con la forma de una sola tecla más antigua | Interfaz y terminal | Any file |827| [`voiceEnabled`](#voiceenabled) | Activa el [dictado por voz](/docs/es/voice-dictation) con la forma anterior de una sola tecla | Interfaz y terminal | Any file |

828| [`wheelScrollAccelerationEnabled`](#wheelscrollaccelerationenabled) | Desactive la [aceleración de rueda del ratón](/docs/es/fullscreen#mouse-wheel-scrolling) en la representación de pantalla completa | Interfaz y terminal | Any file |828| [`wheelScrollAccelerationEnabled`](#wheelscrollaccelerationenabled) | Desactiva la [aceleración de la rueda del mouse](/docs/es/fullscreen#mouse-wheel-scrolling) en el renderizado de pantalla completa | Interfaz y terminal | Any file |

829| [`workflowKeywordTriggerEnabled`](#workflowkeywordtriggerenabled) | Permita que la palabra `ultracode` en un prompt inicie un [workflow](/docs/es/workflows); establezca `false` para escribirla sin iniciar uno | Hooks y automatización | Any file |829| [`workflowKeywordTriggerEnabled`](#workflowkeywordtriggerenabled) | Permite que la palabra `ultracode` en un prompt inicie un [workflow](/docs/es/workflows); establece `false` para escribirla sin iniciar uno | Hooks y automatización | Any file |

830| [`workflowSizeGuideline`](#workflowsizeguideline) | Establezca el número de agentes que Claude apunta en los [workflows dinámicos](/docs/es/workflows) | Hooks y automatización | Any file |830| [`workflowSizeGuideline`](#workflowsizeguideline) | Establece la cantidad de agentes que Claude busca usar en los [workflows dinámicos](/docs/es/workflows) | Hooks y automatización | Any file |

831| [`worktree`](#worktree) | Configure cómo Claude Code crea [worktrees](/docs/es/worktrees) de git | Agentes, sesiones y worktrees | Any file |831| [`worktree`](#worktree) | Configura cómo crea Claude Code los [worktrees](/docs/es/worktrees) de git | Agentes, sesiones y worktrees | Any file |

832| [`worktree.baseRef`](#worktree-baseref) | Rama nuevos [worktrees](/docs/es/worktrees) desde la rama predeterminada remota o su HEAD local | Agentes, sesiones y worktrees | Any file |832| [`worktree.baseRef`](#worktree-baseref) | Crea nuevos [worktrees](/docs/es/worktrees) a partir de la rama predeterminada remota o de tu HEAD local | Agentes, sesiones y worktrees | Any file |

833| [`worktree.bgIsolation`](#worktree-bgisolation) | Permita que las sesiones de fondo editen la copia de trabajo sin un [worktree](/docs/es/worktrees) | Agentes, sesiones y worktrees | Any file |833| [`worktree.bgIsolation`](#worktree-bgisolation) | Permite que las sesiones en segundo plano editen la copia de trabajo sin un [worktree](/docs/es/worktrees) | Agentes, sesiones y worktrees | Any file |

834| [`worktree.sparsePaths`](#worktree-sparsepaths) | Verifique solo los directorios que necesita en cada [worktree](/docs/es/worktrees) | Agentes, sesiones y worktrees | Any file |834| [`worktree.sparsePaths`](#worktree-sparsepaths) | Haz checkout solo de los directorios que necesitas en cada [worktree](/docs/es/worktrees) | Agentes, sesiones y worktrees | Any file |

835| [`worktree.symlinkDirectories`](#worktree-symlinkdirectories) | Cree enlaces simbólicos de directorios grandes en cada [worktree](/docs/es/worktrees) en lugar de duplicarlos | Agentes, sesiones y worktrees | Any file |835| [`worktree.symlinkDirectories`](#worktree-symlinkdirectories) | Crea enlaces simbólicos de directorios grandes en cada [worktree](/docs/es/worktrees) en lugar de duplicarlos | Agentes, sesiones y worktrees | Any file |

836| [`wslInheritsWindowsSettings`](#wslinheritswindowssettings) | Haga que WSL lea la [configuración administrada](/docs/es/managed-settings) de la cadena de política de Windows | Configuración empresarial y administrada | Managed |836| [`wslInheritsWindowsSettings`](#wslinheritswindowssettings) | Haz que WSL lea la [configuración administrada](/docs/es/managed-settings) desde la cadena de políticas de Windows | Configuración empresarial y administrada | Managed |

837 837 

838<h2 id="model-and-responses">838<h2 id="model-and-responses">

839 Modelo y respuestas839 Modelo y respuestas


1433 Configuración de permisos1433 Configuración de permisos

1434</h2>1434</h2>

1435 1435 

1436Decida qué puede hacer Claude sin preguntar, en qué modo de permisos comienza una sesión y qué permite el clasificador del modo automático. Para la sintaxis de reglas y el modelo de permisos, consulte [Configurar permisos](/docs/es/permissions).1436Decide qué puede hacer Claude sin preguntar, en qué modo de permisos comienza una sesión y qué permite el clasificador del modo automático. Para la sintaxis de reglas y el modelo de permisos, consulta [Configurar permisos](/docs/es/permissions).

1437 1437 

1438<h3 id="allowmanagedpermissionrulesonly">1438<h3 id="allowmanagedpermissionrulesonly">

1439 `allowManagedPermissionRulesOnly`1439 `allowManagedPermissionRulesOnly`

1440</h3>1440</h3>

1441 1441 

1442Haga que la configuración administrada sea la única fuente de reglas de permisos. Claude Code ignora entonces las reglas `allow`, `ask` y `deny` en archivos de usuario, proyecto, local y `--settings`, ignora `--allowedTools`, oculta las opciones de permitir siempre en los avisos de permisos y deja de guardar nuevas reglas.1442Haz que la configuración administrada sea la única fuente de reglas de permisos. Claude Code ignora entonces las reglas `allow`, `ask` y `deny` en archivos de usuario, proyecto, local y `--settings`, ignora `--allowedTools`, oculta las opciones de permitir siempre en las solicitudes de permiso y deja de guardar nuevas reglas.

1443 1443 

1444Cuando se aplican [configuraciones principales de un host de incrustación](/docs/es/managed-settings#let-an-embedding-host-add-policy), Claude Code las trata como parte del nivel administrado. Descarta sus reglas `allow` y `additionalDirectories`, y mantiene sus reglas `deny` y `ask` excepto las reglas `Read` y `Edit` cuyo patrón comienza con `!`. Un host no puede excluir rutas de las reglas administradas con una regla `!`, independientemente de si establece esta clave.1444Cuando se aplica la [configuración principal de un host de incrustación](/docs/es/managed-settings#let-an-embedding-host-add-policy), Claude Code la trata como parte del nivel administrado. Descarta sus reglas `allow` y `additionalDirectories`, y mantiene sus reglas `deny` y `ask` excepto las reglas `Read` y `Edit` cuyo patrón comienza con `!`. Un host no puede excluir rutas de las reglas administradas con una regla `!`, independientemente de si estableces esta clave.

1445 1445 

1446Las reglas `--disallowedTools` y las reglas `deny` y `ask` de la sesión actual aún se aplican, incluso después de que Claude Code recargue la configuración a mitad de la sesión. Solo restringen, por lo que no pueden ampliar lo que otorgan las reglas administradas. Antes de v2.1.257, Claude Code descartaba esas reglas de línea de comandos y sesión en la primera recarga de configuración.1446Las reglas `--disallowedTools` y las reglas `deny` y `ask` de la sesión actual aún se aplican, incluso después de que Claude Code recargue la configuración a mitad de la sesión. Solo restringen, por lo que no pueden ampliar lo que otorgan las reglas administradas. Antes de v2.1.257, Claude Code descartaba esas reglas de línea de comandos y de sesión en la primera recarga de configuración.

1447 1447 

1448Para lo que un patrón `!` en una regla `--disallowedTools` o de sesión puede excluir, consulte [Reglas Read y Edit](/docs/es/permissions#read-and-edit).1448Para lo que un patrón `!` en una regla `--disallowedTools` o de sesión puede excluir, consulta [Reglas Read y Edit](/docs/es/permissions#read-and-edit).

1449 

1450Cuando estableces esta clave, Claude Code v2.1.282 o posterior también ignora el frontmatter [`allowed-tools`](/docs/es/skills#pre-approve-tools-for-a-skill) en los skills y en los archivos de `.claude/commands/` de estas fuentes:

1451 

1452* El directorio `.claude/` de un repositorio

1453* Tus directorios `~/.claude/skills/` y `~/.claude/commands/`, incluidos los [skills sincronizados desde claude.ai](/docs/es/skills#where-synced-skills-load)

1454* Un directorio `--add-dir`

1455* [Plugins declarados con un manifiesto `.claude-plugin`](/docs/es/plugins/loading#plugins-shared-through-a-repository) dentro de `~/.claude/skills/` o del `.claude/skills/` del proyecto

1456 

1457Los skills de la configuración administrada y los skills incluidos conservan su `allowed-tools`. El `disallowed-tools` de un skill sigue aplicándose. Para ver lo que ve un desarrollador cuando Claude Code ignora el campo, consulta [Cuando solo se aplican las reglas de permisos administradas](/docs/es/skills#when-only-managed-permission-rules-apply).

1449 1458 

1450* **Scope**: [`Managed`](#scopes)1459* **Scope**: [`Managed`](#scopes)

1451* **Type**: Boolean1460* **Type**: Boolean


1459}1468}

1460```1469```

1461 1470 

1462Esta clave no bloquea la lista de permitidos del servidor MCP; para eso, establezca [`allowManagedMcpServersOnly`](#allowmanagedmcpserversonly). Consulte [Configuración solo administrada](/docs/es/managed-settings#managed-only-settings).1471Esta clave no bloquea la lista de servidores MCP permitidos; para eso, establece [`allowManagedMcpServersOnly`](#allowmanagedmcpserversonly). Consulta [Configuración solo administrada](/docs/es/managed-settings#managed-only-settings).

1463 1472 

1464<h3 id="automode">1473<h3 id="automode">

1465 `autoMode`1474 `autoMode`

1466</h3>1475</h3>

1467 1476 

1468Agregue sus propias reglas a lo que el clasificador del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) bloquea y permite. Úselo para indicar al clasificador qué repositorios, depósitos y dominios confía su organización, para que deje de bloquear operaciones internas rutinarias. El clasificador incluye [reglas de permitir y denegar integradas](/docs/es/auto-mode-config#inspect-the-defaults-and-your-effective-config). Incluya la cadena literal `"$defaults"` en una matriz para mantener esas reglas integradas en esa posición y agregue las suyas alrededor; omítala para reemplazarlas con las suyas.1477Agrega tus propias reglas a lo que el clasificador del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) bloquea y permite. Úsalo para indicar al clasificador en qué repositorios, buckets y dominios confía tu organización, para que deje de bloquear operaciones internas habituales. El clasificador incluye [reglas de permitir y denegar integradas](/docs/es/auto-mode-config#inspect-the-defaults-and-your-effective-config). Incluye la cadena literal `"$defaults"` en una matriz para mantener esas reglas integradas en esa posición y agregar las tuyas alrededor; omítela para reemplazarlas con las tuyas.

1469 1478 

1470* **Scope**: [`User or managed`](#scopes)1479* **Scope**: [`User or managed`](#scopes)

1471* **Type**: objeto con matrices `environment`, `allow`, `soft_deny` y `hard_deny` de reglas en prosa, más el Boolean [`classifyAllShell`](#automode-classifyallshell)1480* **Type**: objeto con matrices `environment`, `allow`, `soft_deny` y `hard_deny` de reglas en prosa, más el Boolean [`classifyAllShell`](#automode-classifyallshell)


1481}1490}

1482```1491```

1483 1492 

1484Cuando más de uno de esos archivos establece la misma matriz, Claude Code concatena las entradas. Para el formato de regla y cómo se aplica cada matriz, consulte [Configurar modo automático](/docs/es/auto-mode-config).1493Cuando más de uno de esos archivos establece la misma matriz, Claude Code concatena las entradas. Para el formato de regla y cómo se aplica cada matriz, consulta [Configurar el modo automático](/docs/es/auto-mode-config).

1485 1494 

1486<h3 id="automode-classifyallshell">1495<h3 id="automode-classifyallshell">

1487 `autoMode.classifyAllShell`1496 `autoMode.classifyAllShell`

1488</h3>1497</h3>

1489 1498 

1490Envíe cada comando Bash y PowerShell a través del clasificador del modo automático mientras el modo automático está activo. De forma predeterminada, el modo automático suspende solo las reglas de permitir que podrían ejecutar código arbitrario: reglas de herramienta completa y comodín como `Bash(*)`, y prefijos de intérprete o contenedor de shell como `Bash(python *)`. Un comando que coincida con cualquier otra regla de permitir, como `Bash(npm test)`, omite el clasificador a menos que lleve [dominios permitidos por comando](/docs/es/sandboxing#per-command-allowed-domains-in-auto-mode). Cuando lo omite, un argumento destructivo que el prefijo de la regla no anticipó puede pasar desapercibido. Al establecer esta clave, suspende cada regla de permitir shell para la sesión para que el clasificador vea cada comando. Requiere Claude Code v2.1.193 o posterior.1499Envía cada comando Bash y PowerShell a través del clasificador del modo automático mientras el modo automático está activo. De forma predeterminada, el modo automático suspende solo las reglas de permitir que podrían ejecutar código arbitrario: reglas de herramienta completa y comodín como `Bash(*)`, y prefijos de intérprete o contenedor de shell como `Bash(python *)`. Un comando que coincida con cualquier otra regla de permitir, como `Bash(npm test)`, omite el clasificador a menos que lleve [dominios permitidos por comando](/docs/es/sandboxing#per-command-allowed-domains-in-auto-mode). Cuando lo omite, un argumento destructivo que el prefijo de la regla no anticipó puede pasar desapercibido. Al establecer esta clave, se suspende cada regla de permitir de shell para la sesión para que el clasificador vea cada comando. Requiere Claude Code v2.1.193 o posterior.

1491 1500 

1492* **Scope**: [`User or managed`](#scopes). Léase donde se lee [`autoMode`](#automode).1501* **Scope**: [`User or managed`](#scopes). Se lee donde se lee [`autoMode`](#automode).

1493* **Type**: Boolean1502* **Type**: Boolean

1494 * `true`: mientras el modo automático está activo, Claude Code envía cada comando Bash y PowerShell a través del clasificador y suspende sus reglas de permitir shell; fuera del modo automático las reglas aún se aplican1503 * `true`: mientras el modo automático está activo, Claude Code envía cada comando Bash y PowerShell a través del clasificador y suspende tus reglas de permitir de shell; fuera del modo automático las reglas aún se aplican

1495 * `false`: el modo automático suspende solo las reglas de permitir que podrían ejecutar código arbitrario, como `Bash(*)` y `Bash(python *)`; un comando que coincida con cualquier otra regla de permitir omite el clasificador a menos que lleve [dominios permitidos por comando](/docs/es/sandboxing#per-command-allowed-domains-in-auto-mode), y cada otro comando shell pasa por él1504 * `false`: el modo automático suspende solo las reglas de permitir que podrían ejecutar código arbitrario, como `Bash(*)` y `Bash(python *)`; un comando que coincida con cualquier otra regla de permitir omite el clasificador a menos que lleve [dominios permitidos por comando](/docs/es/sandboxing#per-command-allowed-domains-in-auto-mode), y todos los demás comandos de shell pasan por él

1496* **Default**: `false`1505* **Default**: `false`

1497 1506 

1498```json settings.json theme={null}1507```json settings.json theme={null}


1503}1512}

1504```1513```

1505 1514 

1506Consulte [Enrutar todos los comandos shell a través del clasificador](/docs/es/auto-mode-config#route-all-shell-commands-through-the-classifier). Requiere Claude Code v2.1.193 o posterior.1515Consulta [Enrutar todos los comandos de shell a través del clasificador](/docs/es/auto-mode-config#route-all-shell-commands-through-the-classifier). Requiere Claude Code v2.1.193 o posterior.

1507 1516 

1508<h3 id="disableautomode">1517<h3 id="disableautomode">

1509 `disableAutoMode`1518 `disableAutoMode`

1510</h3>1519</h3>

1511 1520 

1512Elimine el [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) del ciclo `Shift+Tab`. Cualquier sesión que de otro modo [comenzaría en modo automático](/docs/es/permission-modes#which-mode-a-session-starts-in), ya sea desde `--permission-mode auto`, un archivo de configuración o el valor predeterminado integrado, comienza en `default` en su lugar. Los administradores lo establecen en la configuración administrada para evitar que los desarrolladores de su organización usen el modo automático.1521Elimina el [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) del ciclo `Shift+Tab`. Cualquier sesión que de otro modo [comenzaría en modo automático](/docs/es/permission-modes#which-mode-a-session-starts-in), ya sea desde `--permission-mode auto`, un archivo de configuración o el valor predeterminado integrado, comienza en `default` en su lugar. Los administradores lo establecen en la configuración administrada para evitar que los desarrolladores de su organización usen el modo automático.

1513 1522 

1514* **Scope**: [`Any file`](#scopes). Más útil en [configuración administrada](/docs/es/managed-settings), donde los usuarios no pueden anularlo. También aceptado bajo `permissions` como `permissions.disableAutoMode`.1523* **Scope**: [`Any file`](#scopes). Más útil en la [configuración administrada](/docs/es/managed-settings), donde los usuarios no pueden sobrescribirlo. También se acepta bajo `permissions` como `permissions.disableAutoMode`.

1515* **Type**: la cadena `"disable"`1524* **Type**: la cadena `"disable"`

1516* **Default**: sin establecer1525* **Default**: sin establecer

1517 1526 


1525 `permissions`1534 `permissions`

1526</h3>1535</h3>

1527 1536 

1528Controle qué herramientas puede usar Claude sin preguntar, cuáles siempre solicitan confirmación y cuáles están bloqueadas, y establezca el [modo de permisos](/docs/es/permission-modes) en el que comienza una sesión. Cada clave `permissions.*` a continuación se anida bajo este objeto.1537Controla qué herramientas puede usar Claude sin preguntar, cuáles siempre piden confirmación y cuáles están bloqueadas, y establece el [modo de permisos](/docs/es/permission-modes) en el que comienza una sesión. Cada clave `permissions.*` a continuación se anida bajo este objeto.

1529 1538 

1530* **Scope**: [`Any file`](#scopes)1539* **Scope**: [`Any file`](#scopes)

1531* **Type**: objeto con `allow`, `ask`, `deny`, `additionalDirectories`, `blockReadsOutsideWorkingDirectories`, `defaultMode`, `disableBypassPermissionsMode` y `disableAutoMode`1540* **Type**: objeto con `allow`, `ask`, `deny`, `additionalDirectories`, `blockReadsOutsideWorkingDirectories`, `defaultMode`, `disableBypassPermissionsMode` y `disableAutoMode`

1532* **Default**: sin establecer1541* **Default**: sin establecer

1533 1542 

1534Este ejemplo aprueba comandos `npm run` sin preguntar, solicita confirmación antes de `git push`, bloquea lecturas de `.env` e inicia sesiones en `acceptEdits`:1543Este ejemplo aprueba comandos `npm run` sin preguntar, pide confirmación antes de `git push`, bloquea lecturas de `.env` e inicia sesiones en `acceptEdits`:

1535 1544 

1536```json settings.json theme={null}1545```json settings.json theme={null}

1537{1546{


1544}1553}

1545```1554```

1546 1555 

1547Las tres matrices de reglas comparten una sintaxis; consulte [Sintaxis de regla de permisos](#permission-rule-syntax) bajo `permissions.allow`. Para cómo se combinan las reglas de permisos de diferentes archivos, consulte [cómo se fusionan las reglas de permisos entre ámbitos](/docs/es/permissions#settings-precedence); para cómo se combinan las claves de configuración en general, consulte [Precedencia de configuración](/docs/es/settings#settings-precedence) en la guía de configuración.1556Las tres matrices de reglas comparten una sintaxis; consulta [Sintaxis de reglas de permisos](#permission-rule-syntax) bajo `permissions.allow`. Para ver cómo se combinan las reglas de permisos de diferentes archivos, consulta [cómo se combinan las reglas de permisos entre alcances](/docs/es/permissions#settings-precedence); para ver cómo se combinan las claves de configuración en general, consulta [Precedencia de configuración](/docs/es/settings#settings-precedence) en la guía de configuración.

1548 1557 

1549<h3 id="useautomodeduringplan">1558<h3 id="useautomodeduringplan">

1550 `useAutoModeDuringPlan`1559 `useAutoModeDuringPlan`

1551</h3>1560</h3>

1552 1561 

1553Elija si Claude Code usa el clasificador del modo automático para revisar comandos shell en modo de plan. Con el valor predeterminado `true`, el clasificador revisa cada comando durante la planificación cuando el modo automático está disponible y no ve ningún aviso, excepto para [eliminaciones de ruta crítica](/docs/es/permission-modes#critical-paths). Establezca `false` para obtener un aviso de permisos para cada comando fuera del conjunto integrado de solo lectura. Aparece en `/config` como **Use auto mode during plan**.1562Elige si Claude Code usa el clasificador del modo automático para revisar comandos de shell en modo plan. Con el valor predeterminado `true`, el clasificador revisa cada comando durante la planificación cuando el modo automático está disponible y no ves ninguna solicitud, excepto para [eliminaciones de rutas críticas](/docs/es/permission-modes#critical-paths). Establece `false` para obtener una solicitud de permiso para cada comando fuera del conjunto integrado de solo lectura. Aparece en `/config` como **Use auto mode during plan**.

1554 1563 

1555* **Scope**: [`User, local, or managed`](#scopes). Un repositorio no puede desactivarlo para usted.1564* **Scope**: [`User, local, or managed`](#scopes). Un repositorio no puede desactivarlo por ti.

1556* **Type**: Boolean1565* **Type**: Boolean

1557 * `true`: lo mismo que sin establecer; cuando el modo automático está disponible, el clasificador revisa cada comando shell durante la planificación en lugar de solicitarle confirmación, excepto [eliminaciones de ruta crítica](/docs/es/permission-modes#critical-paths). Un `false` en cualquiera de estos archivos aún lo desactiva1566 * `true`: lo mismo que sin establecer; cuando el modo automático está disponible, el clasificador revisa cada comando de shell durante la planificación en lugar de pedirte confirmación, excepto [eliminaciones de rutas críticas](/docs/es/permission-modes#critical-paths). Un `false` en cualquiera de estos archivos aún lo desactiva

1558 * `false`: obtiene un aviso de permisos para cada comando fuera del conjunto integrado de solo lectura1567 * `false`: obtienes una solicitud de permiso para cada comando fuera del conjunto integrado de solo lectura

1559* **Default**: `true`1568* **Default**: `true`

1560 1569 

1561```json settings.json theme={null}1570```json settings.json theme={null}


1568 `permissions.allow`1577 `permissions.allow`

1569</h3>1578</h3>

1570 1579 

1571Enumere los usos de herramientas que Claude Code aprueba sin preguntarle. En una regla MCP, `*` puede aparecer solo en el nombre de la herramienta después del prefijo `mcp__<server>__`, como `mcp__github__get_*`; no puede aparecer en el nombre del servidor.1580Enumera los usos de herramientas que Claude Code aprueba sin preguntarte. En una regla MCP, `*` puede aparecer solo en el nombre de la herramienta después del prefijo `mcp__<server>__`, como `mcp__github__get_*`; no puede aparecer en el nombre del servidor.

1572 1581 

1573* **Scope**: [`Any file`](#scopes)1582* **Scope**: [`Any file`](#scopes)

1574* **Type**: matriz de cadenas de regla de permisos1583* **Type**: matriz de cadenas de reglas de permisos

1575* **Default**: sin establecer1584* **Default**: sin establecer

1576* **Per-session overrides**: `--allowedTools` agrega reglas de permitir para una sesión, y una regla de denegar de cualquier archivo de configuración aún bloquea una herramienta que nombra1585* **Per-session overrides**: `--allowedTools` agrega reglas de permitir para una sesión, y una regla de denegar de cualquier archivo de configuración aún bloquea una herramienta que nombra

1577 1586 

1578Este ejemplo aprueba `git diff` y permite que Claude Code lea su `.zshrc` sin preguntar:1587Este ejemplo aprueba `git diff` y permite que Claude Code lea tu `.zshrc` sin preguntar:

1579 1588 

1580```json settings.json theme={null}1589```json settings.json theme={null}

1581{1590{


1585}1594}

1586```1595```

1587 1596 

1588Claude Code aplica reglas `allow` del `.claude/settings.json` de un proyecto solo después de que acepte el [diálogo de confianza del espacio de trabajo](/docs/es/permissions#project-allow-rules-and-workspace-trust) para esa carpeta.1597Claude Code aplica reglas `allow` del `.claude/settings.json` de un proyecto solo después de que aceptes el [diálogo de confianza del espacio de trabajo](/docs/es/permissions#project-allow-rules-and-workspace-trust) para esa carpeta.

1589 1598 

1590<h4 id="permission-rule-syntax">1599<h4 id="permission-rule-syntax">

1591 Sintaxis de regla de permisos1600 Sintaxis de reglas de permisos

1592</h4>1601</h4>

1593 1602 

1594Las reglas de permisos siguen el formato `Tool` o `Tool(specifier)`. Claude Code evalúa primero las reglas `deny`, luego `ask`, luego `allow`, y la primera coincidencia decide independientemente de cuán específica sea cada regla; consulte el [orden de evaluación de reglas de permisos](/docs/es/permissions#manage-permissions).1603Las reglas de permisos siguen el formato `Tool` o `Tool(specifier)`. Claude Code evalúa primero las reglas `deny`, luego `ask`, luego `allow`, y la primera coincidencia decide independientemente de cuán específica sea cada regla; consulta el [orden de evaluación de reglas de permisos](/docs/es/permissions#manage-permissions).

1595 1604 

1596Cada fila muestra una forma de regla y lo que coincide.1605Cada fila muestra una forma de regla y lo que coincide.

1597 1606 

1598| Rule | What it matches |1607| Regla | Con qué coincide |

1599| :- | :- |1608| :- | :- |

1600| `Bash` | Every Bash command |1609| `Bash` | Todos los comandos Bash |

1601| `Bash(npm run *)` | Commands starting with `npm run` |1610| `Bash(npm run *)` | Comandos que comienzan con `npm run` |

1602| `Read(./.env)` | Reads of the `.env` file |1611| `Read(./.env)` | Lecturas del archivo `.env` |

1603| `WebFetch(domain:example.com)` | Fetch requests to example.com |1612| `WebFetch(domain:example.com)` | Solicitudes de fetch a example.com |

1604 1613 

1605Para la sintaxis de regla completa, incluido el comportamiento de comodín, patrones específicos de herramientas para Read, Edit, WebFetch, MCP y reglas de Agent, y las limitaciones de seguridad de patrones Bash, consulte [Sintaxis de regla de permisos](/docs/es/permissions#permission-rule-syntax).1614Para la sintaxis de reglas completa, incluido el comportamiento de los comodines, los patrones específicos de herramientas para reglas de Read, Edit, WebFetch, MCP y Agent, y las limitaciones de seguridad de los patrones Bash, consulta [Sintaxis de reglas de permisos](/docs/es/permissions#permission-rule-syntax).

1606 1615 

1607<h3 id="permissions-ask">1616<h3 id="permissions-ask">

1608 `permissions.ask`1617 `permissions.ask`

1609</h3>1618</h3>

1610 1619 

1611Enumere los usos de herramientas que le solicitan confirmación incluso en un modo de permisos que de otro modo los aprobaría, como `acceptEdits` o `bypassPermissions`. En modo `dontAsk`, Claude Code deniega un uso de herramienta coincidente en lugar de solicitar confirmación.1620Enumera los usos de herramientas que te piden confirmación incluso en un modo de permisos que de otro modo los aprobaría, como `acceptEdits` o `bypassPermissions`. En modo `dontAsk`, Claude Code deniega un uso de herramienta coincidente en lugar de pedir confirmación.

1612 1621 

1613* **Scope**: [`Any file`](#scopes)1622* **Scope**: [`Any file`](#scopes)

1614* **Type**: matriz de cadenas de regla de permisos1623* **Type**: matriz de cadenas de reglas de permisos

1615* **Default**: sin establecer1624* **Default**: sin establecer

1616 1625 

1617```json settings.json theme={null}1626```json settings.json theme={null}


1628 `permissions.deny`1637 `permissions.deny`

1629</h3>1638</h3>

1630 1639 

1631Enumere los usos de herramientas que Claude Code bloquea. Úselo para archivos que contienen claves API, secretos o valores de entorno: Claude Code excluye archivos coincidentes del descubrimiento de archivos y resultados de búsqueda, deniega lecturas de ellos y bloquea las herramientas [Edit y Write](/docs/es/permissions#read-and-edit) en las rutas coincidentes.1640Enumera los usos de herramientas que Claude Code bloquea. Úsalo para archivos que contienen claves de API, secretos o valores de entorno: Claude Code excluye los archivos coincidentes del descubrimiento de archivos y de los resultados de búsqueda, deniega sus lecturas y bloquea las [herramientas Edit y Write](/docs/es/permissions#read-and-edit) en las rutas coincidentes.

1632 1641 

1633Las reglas de denegar Read y Edit se aplican a las herramientas de archivo integradas de Claude, a comandos de archivo que Claude Code reconoce en Bash, como `cat`, `head`, `tail`, `sed` y `tee`, y a los destinos de [redirecciones](/docs/es/permissions#redirections) de Bash como `> file` y `< file`; no se aplican a un comando que lee archivos sin nombrarlos, como `grep -r pattern .`, o a subprocesos arbitrarios, por lo que para la aplicación a nivel del SO [habilite el sandbox](/docs/es/sandboxing).1642Las reglas de denegar de Read y Edit se aplican a las herramientas de archivo integradas de Claude, a los comandos de archivo que Claude Code reconoce en Bash, como `cat`, `head`, `tail`, `sed` y `tee`, y a los destinos de [redirecciones](/docs/es/permissions#redirections) de Bash como `> file` y `< file`; no se aplican a un comando que lee archivos sin nombrarlos, como `grep -r pattern .`, ni a subprocesos arbitrarios, por lo que para la aplicación a nivel del sistema operativo [habilita el sandbox](/docs/es/sandboxing).

1634 1643 

1635* **Scope**: [`Any file`](#scopes)1644* **Scope**: [`Any file`](#scopes)

1636* **Type**: matriz de cadenas de regla de permisos1645* **Type**: matriz de cadenas de reglas de permisos

1637* **Default**: sin establecer1646* **Default**: sin establecer

1638* **Per-session overrides**: `--disallowedTools` agrega reglas de denegar para una sesión junto a esta clave1647* **Per-session overrides**: `--disallowedTools` agrega reglas de denegar para una sesión junto a esta clave

1639 1648 

1640Este ejemplo deniega lecturas de archivos `.env`, el directorio `secrets` y un archivo de credenciales, y bloquea comandos `curl`:1649Este ejemplo deniega lecturas de archivos `.env`, del directorio `secrets` y de un archivo de credenciales, y bloquea comandos `curl`:

1641 1650 

1642```json settings.json theme={null}1651```json settings.json theme={null}

1643{1652{


1653}1662}

1654```1663```

1655 1664 

1656Los nombres de herramientas aceptan patrones glob, por lo que `"*"` deniega cada herramienta y `"mcp__*"` deniega cada herramienta MCP. Claude Code ignora una regla de denegar para la herramienta [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior) siempre que cualquier otra herramienta aún esté disponible para Claude. Una regla de denegar `Bash` coincide con el comando tal como Claude lo escribe, por lo que `Bash(curl *)` no detiene `/usr/bin/curl` o `sh -c 'curl …'`; consulte [lo que una regla Bash no coincide](/docs/es/permissions#bash-rule-limits). Esta clave reemplaza la configuración `ignorePatterns` obsoleta.1665Los nombres de herramientas aceptan patrones glob, por lo que `"*"` deniega todas las herramientas y `"mcp__*"` deniega todas las herramientas MCP. Claude Code ignora una regla de denegar para la herramienta [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior) siempre que alguna otra herramienta siga disponible para Claude. Una regla de denegar `Bash` coincide con el comando tal como Claude lo escribe, por lo que `Bash(curl *)` no detiene `/usr/bin/curl` ni `sh -c 'curl …'`; consulta [con qué no coincide una regla Bash](/docs/es/permissions#bash-rule-limits). Esta clave reemplaza la configuración obsoleta `ignorePatterns`.

1657 1666 

1658<h3 id="permissions-additionaldirectories">1667<h3 id="permissions-additionaldirectories">

1659 `permissions.additionalDirectories`1668 `permissions.additionalDirectories`

1660</h3>1669</h3>

1661 1670 

1662Otorgue a Claude acceso a archivos en directorios fuera del que comenzó, como [directorios de trabajo](/docs/es/permissions#working-directories) adicionales. La mayoría de la configuración `.claude/` [no se descubre](/docs/es/permissions#additional-directories-grant-file-access-not-configuration) desde estos directorios.1671Otorga a Claude acceso a archivos en directorios fuera de aquel en el que comenzaste, como [directorios de trabajo](/docs/es/permissions#working-directories) adicionales. La mayor parte de la configuración de `.claude/` [no se descubre](/docs/es/permissions#additional-directories-grant-file-access-not-configuration) desde estos directorios.

1663 1672 

1664* **Scope**: [`Any file`](#scopes)1673* **Scope**: [`Any file`](#scopes), con [límites en el acceso de escritura del sandbox](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox) que otorgan las entradas de proyecto y locales

1665* **Type**: matriz de rutas de directorio1674* **Type**: matriz de rutas de directorio

1666* **Default**: sin establecer1675* **Default**: sin establecer

1667* **Per-session overrides**: `--add-dir` y `/add-dir` agregan directorios para una sesión junto a esta clave1676* **Per-session overrides**: `--add-dir` y `/add-dir` agregan directorios para una sesión junto a esta clave


1674}1683}

1675```1684```

1676 1685 

1677Como las reglas `allow`, las entradas en el `.claude/settings.json` de un proyecto tienen efecto solo después de que acepte el [diálogo de confianza del espacio de trabajo](/docs/es/permissions#project-allow-rules-and-workspace-trust) para esa carpeta.1686Como las reglas `allow`, las entradas en el `.claude/settings.json` de un proyecto tienen efecto solo después de que aceptes el [diálogo de confianza del espacio de trabajo](/docs/es/permissions#project-allow-rules-and-workspace-trust) para esa carpeta.

1678 1687 

1679<h3 id="permissions-blockreadsoutsideworkingdirectories">1688<h3 id="permissions-blockreadsoutsideworkingdirectories">

1680 `permissions.blockReadsOutsideWorkingDirectories`1689 `permissions.blockReadsOutsideWorkingDirectories`

1681</h3>1690</h3>

1682 1691 

1683Haga que las herramientas de archivo de Claude rechacen lecturas fuera de sus [directorios de trabajo](/docs/es/permissions#working-directories) en cada modo de permisos, incluyendo `bypassPermissions`. Claude Code deniega llamadas `Read`, `Grep`, `Glob` y `LSP` en esas rutas y le dice a Claude que le pida que agregue el directorio con `/add-dir`. Los archivos que Claude Code necesita permanecen legibles, como sus skills, plugins, reglas, agents, comandos y el archivo de memoria `CLAUDE.md` bajo `~/.claude/`. Requiere Claude Code v2.1.257 o posterior.1692Haz que las herramientas de archivo de Claude rechacen lecturas fuera de tus [directorios de trabajo](/docs/es/permissions#working-directories) en cada modo de permisos, incluido `bypassPermissions`. Claude Code deniega las llamadas a `Read`, `Grep`, `Glob` y `LSP` en esas rutas y le indica a Claude que te pida agregar el directorio con `/add-dir`. Los archivos que Claude Code necesita siguen siendo legibles, como tus skills, plugins, reglas, agentes, comandos y el archivo de memoria `CLAUDE.md` bajo `~/.claude/`. Requiere Claude Code v2.1.257 o posterior.

1684 1693 

1685Claude Code no rechaza comandos shell de la misma manera:1694Claude Code no rechaza los comandos de shell de la misma manera:

1686 1695 

1687* [Acciones que ningún modo aprueba automáticamente](/docs/es/permission-modes#actions-no-mode-auto-approves) cubre cuándo un comando shell que lee tal ruta le solicita confirmación1696* [Acciones que ningún modo aprueba automáticamente](/docs/es/permission-modes#actions-no-mode-auto-approves) explica cuándo un comando de shell que lee una ruta así te pide confirmación

1688* [Comandos en sandbox bajo el bloqueo](#sandboxed-commands-under-the-block) cubre lo que un comando en sandbox puede leer1697* [Comandos en el sandbox bajo el bloqueo](#sandboxed-commands-under-the-block) explica lo que puede leer un comando en el sandbox

1689 1698 

1690Un comando Bash que el analizador de shell no puede rastrear, como uno que cambia de directorio más de una vez o ejecuta un subshell, le solicita confirmación incluso en modo automático y modo `bypassPermissions`. El aviso aparece incluso cuando el comando no nombra ninguna ruta fuera de los directorios de trabajo. Este aviso no se aplica cuando el comando se ejecuta en el [sandbox](/docs/es/sandboxing) y el sandbox hace cumplir el bloqueo.1699Un comando Bash que el analizador de shell no puede rastrear, como uno que cambia de directorio más de una vez o ejecuta un subshell, te pide confirmación incluso en modo automático y en modo `bypassPermissions`. La solicitud aparece incluso cuando el comando no nombra ninguna ruta fuera de los directorios de trabajo. Esta solicitud no se aplica cuando el comando se ejecuta en el [sandbox](/docs/es/sandboxing) y el sandbox hace cumplir el bloqueo.

1691 1700 

1692Claude Code también escribe `true` aquí cuando elige bloquear tales lecturas en [el aviso del modo automático antes de la primera lectura fuera de los directorios de trabajo](/docs/es/permission-modes#first-read-outside-the-working-directories).1701Claude Code también escribe `true` aquí cuando eliges bloquear esas lecturas en [la solicitud del modo automático antes de la primera lectura fuera de los directorios de trabajo](/docs/es/permission-modes#first-read-outside-the-working-directories).

1693 1702 

1694* **Scope**: [`Any file`](#scopes). Un `true` en cualquier archivo se aplica, por lo que un repositorio puede activar el bloqueo para sí mismo pero no puede levantarlo.1703* **Scope**: [`Any file`](#scopes). Un `true` en cualquier archivo se aplica, por lo que un repositorio puede activar el bloqueo para sí mismo, pero no puede levantar el tuyo.

1695* **Type**: Boolean1704* **Type**: Boolean

1696 * `true`: las herramientas de archivo de Claude rechazan lecturas fuera de los directorios de trabajo1705 * `true`: las herramientas de archivo de Claude rechazan lecturas fuera de los directorios de trabajo

1697 * `false`: lo mismo que sin establecer; el bloqueo aún se aplica si otro archivo establece `true`1706 * `false`: lo mismo que sin establecer; el bloqueo aún se aplica si otro archivo establece `true`

1698* **Default**: sin establecer, por lo que las lecturas fuera de los directorios de trabajo siguen su [modo de permisos](/docs/es/permission-modes)1707* **Default**: sin establecer, por lo que las lecturas fuera de los directorios de trabajo siguen tu [modo de permisos](/docs/es/permission-modes)

1699 1708 

1700```json settings.json theme={null}1709```json settings.json theme={null}

1701{1710{


1705}1714}

1706```1715```

1707 1716 

1708Los directorios que agrega con `--add-dir`, `/add-dir` o `additionalDirectories` en su configuración de usuario o administrada cuentan como directorios de trabajo para el bloqueo. Los directorios agregados solo en configuración de repositorio no cuentan: los de `.claude/settings.json`, y los de `.claude/settings.local.json` a menos que git informe que ese archivo no está rastreado. En un directorio que no es un repositorio git, o cuando git rastrea el archivo, Claude Code trata `.claude/settings.local.json` como configuración de repositorio, por lo que ponga los directorios que desea mantener legibles en su configuración de usuario en su lugar.1717Los directorios que agregas con `--add-dir`, `/add-dir` o `additionalDirectories` en tu configuración de usuario o administrada cuentan como directorios de trabajo para el bloqueo. Los directorios agregados solo en la configuración del repositorio no cuentan: los de `.claude/settings.json`, y los de `.claude/settings.local.json` a menos que git informe que ese archivo no está rastreado. En un directorio que no es un repositorio git, o cuando git rastrea el archivo, Claude Code trata `.claude/settings.local.json` como configuración del repositorio, así que pon los directorios que quieras mantener legibles en tu configuración de usuario en su lugar.

1709 1718 

1710Cuando [`autoMemoryDirectory`](#automemorydirectory) proviene del `.claude/settings.json` del proyecto, o de un `.claude/settings.local.json` [tratado como suministrado por repositorio](/docs/es/permissions#when-your-local-settings-file-needs-trust), Claude Code no carga ninguna [memoria automática](/docs/es/memory#storage-location) desde ese directorio y no guarda ninguna en él.1719Cuando [`autoMemoryDirectory`](#automemorydirectory) proviene del `.claude/settings.json` del proyecto, o de un `.claude/settings.local.json` [tratado como suministrado por el repositorio](/docs/es/permissions#when-your-local-settings-file-needs-trust), Claude Code no carga ninguna [memoria automática](/docs/es/memory#storage-location) desde ese directorio ni guarda ninguna en él.

1711 1720 

1712Para levantar el bloqueo, elimine la clave de cada archivo de configuración que la establece, luego inicie una nueva sesión.1721Para levantar el bloqueo, elimina la clave de cada archivo de configuración que la establezca y luego inicia una nueva sesión.

1713 1722 

1714<h4 id="sandboxed-commands-under-the-block">1723<h4 id="sandboxed-commands-under-the-block">

1715 Comandos en sandbox bajo el bloqueo1724 Comandos en el sandbox bajo el bloqueo

1716</h4>1725</h4>

1717 1726 

1718Cuando [sandboxing](/docs/es/sandboxing) está activado, el bloqueo también cubre comandos en sandbox. Claude Code les deniega acceso de lectura a su directorio de inicio y a las otras raíces que contienen archivos de usuario: `/Users`, `/home`, `/root`, `/Volumes`, `/mnt`, `/media`, `/run/media` y `/srv`. Luego reabre los directorios de trabajo, [worktrees](/docs/es/worktrees) que Claude Code crea en la sesión, el directorio temporal de la sesión, y las partes de `~/.claude` que los comandos necesitan, como skills y plugins. Mientras el bloqueo está en vigor, las entradas `allowRead` y `allowWrite` de la configuración de repositorio no cuentan.1727Cuando el [sandboxing](/docs/es/sandboxing) está activado, el bloqueo también cubre los comandos en el sandbox. Claude Code les deniega el acceso de lectura a tu directorio home y a las demás raíces que contienen archivos de usuario: `/Users`, `/home`, `/root`, `/Volumes`, `/mnt`, `/media`, `/run/media` y `/srv`. Luego vuelve a abrir los directorios de trabajo, los [worktrees](/docs/es/worktrees) que Claude Code crea en la sesión, el directorio temporal de la sesión y las partes de `~/.claude` que los comandos necesitan, como skills y plugins. Mientras el bloqueo está en vigor, las entradas `allowRead` y `allowWrite` de la configuración del repositorio no cuentan.

1719 1728 

1720Cuando el directorio de trabajo de la sesión es un [git worktree](/docs/es/worktrees) vinculado, incluyendo uno que Claude Code ingresó a mitad de la sesión, el directorio común `.git` del repositorio permanece legible y escribible para comandos en sandbox, por lo que git sigue funcionando allí.1729Cuando el directorio de trabajo de la sesión es un [worktree de git](/docs/es/worktrees) vinculado, incluido uno en el que Claude Code entró a mitad de la sesión, el directorio `.git` común del repositorio sigue siendo legible y escribible para los comandos en el sandbox, por lo que git sigue funcionando allí.

1721 1730 

1722En estos casos el bloqueo no llega a comandos en sandbox, mientras que las herramientas de archivo de Claude siguen haciéndolo cumplir:1731En estos casos el bloqueo no alcanza a los comandos en el sandbox, mientras que las herramientas de archivo de Claude siguen haciéndolo cumplir:

1723 1732 

1724* El aislamiento del sistema de archivos está desactivado a través de [`sandbox.filesystem.disabled`](#sandbox-filesystem-disabled)1733* El aislamiento del sistema de archivos está desactivado mediante [`sandbox.filesystem.disabled`](#sandbox-filesystem-disabled)

1725* [`allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) está establecido1734* [`allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) está establecido

1726* La ruta del directorio en el que comenzó Claude Code contiene un carácter glob como `*`, `?` o `[`1735* La ruta del directorio en el que iniciaste Claude Code contiene un carácter glob como `*`, `?` o `[`

1727 1736 

1728Bajo el bloqueo, Claude Code reabre sus archivos de configuración git global a comandos en sandbox para que `git` mantenga su identidad y configuración:1737Bajo el bloqueo, Claude Code vuelve a abrir tus archivos de configuración global de git para los comandos en el sandbox, de modo que `git` conserve tu identidad y tu configuración:

1729 1738 

1730* `~/.gitconfig`1739* `~/.gitconfig`

1731* Los archivos `config`, `ignore` y `attributes` bajo `$XDG_CONFIG_HOME/git`, que por defecto es `~/.config/git`1740* Los archivos `config`, `ignore` y `attributes` bajo `$XDG_CONFIG_HOME/git`, que de forma predeterminada es `~/.config/git`

1732* Archivos que su configuración git global nombra a través de `[include]`, `[includeIf]`, `core.excludesFile` o `core.attributesFile`1741* Los archivos que tu configuración global de git nombra mediante `[include]`, `[includeIf]`, `core.excludesFile` o `core.attributesFile`

1733 1742 

1734Claude Code juzga cada archivo por separado. Cuando un archivo se encuentra donde un comando en sandbox puede escribir, directamente o a través de un symlink, Claude Code no reabre los archivos que nombra.1743Claude Code evalúa cada archivo por separado. Cuando un archivo se encuentra donde un comando en el sandbox puede escribir, directamente o a través de un enlace simbólico, Claude Code no vuelve a abrir los archivos que nombra.

1735 1744 

1736En Linux y WSL2, un archivo de configuración que es un symlink puede permanecer ilegible en su propia ruta, y `git` entonces se ejecuta sin él. `~/.git-credentials` y `$XDG_CONFIG_HOME/git/credentials` permanecen bloqueados.1745En Linux y WSL2, un archivo de configuración que es un enlace simbólico puede seguir siendo ilegible en su propia ruta, y entonces `git` se ejecuta sin él. `~/.git-credentials` y `$XDG_CONFIG_HOME/git/credentials` siguen bloqueados.

1737 1746 

1738Si un archivo reabierto contiene un secreto, como un token `http.extraHeader`, agregue su ruta a [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread). Una entrada `denyRead` que cubre un archivo siempre tiene precedencia sobre esta reapertura.1747Si un archivo que se vuelve a abrir contiene un secreto, como un token `http.extraHeader`, agrega su ruta a [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread). Una entrada `denyRead` que cubre un archivo siempre tiene precedencia sobre esta reapertura.

1739 1748 

1740<h3 id="permissions-defaultmode">1749<h3 id="permissions-defaultmode">

1741 `permissions.defaultMode`1750 `permissions.defaultMode`

1742</h3>1751</h3>

1743 1752 

1744Establezca el [modo de permisos](/docs/es/permission-modes) en el que comienzan las nuevas sesiones. Cuando lo deja sin establecer, las sesiones comienzan en el [valor predeterminado integrado](/docs/es/permission-modes#which-mode-a-session-starts-in) para su plan y superficie.1753Establece el [modo de permisos](/docs/es/permission-modes) en el que comienzan las nuevas sesiones. Cuando lo dejas sin establecer, las sesiones comienzan en el [valor predeterminado integrado](/docs/es/permission-modes#which-mode-a-session-starts-in) para tu superficie.

1745 1754 

1746* **Scope**: [`Any file`](#scopes). `auto` y `bypassPermissions` no tienen efecto desde la configuración de proyecto o local, por lo que establézcalos en `~/.claude/settings.json` en su lugar. Antes de v2.1.257, `bypassPermissions` tenía efecto desde cualquier archivo. Para conversaciones que inicia la extensión VS Code, Claude Code lee solo valores de usuario, administrado y `--settings`.1755* **Scope**: [`Any file`](#scopes). `auto` y `bypassPermissions` no tienen efecto desde la configuración de proyecto o local, así que establécelos en `~/.claude/settings.json` en su lugar. Antes de v2.1.257, `bypassPermissions` tenía efecto desde cualquier archivo. Para las conversaciones que inicia la extensión de VS Code, Claude Code lee solo los valores de usuario, administrados y de `--settings`.

1747* **Type**: cadena, una de:1756* **Type**: cadena, una de:

1748 * `"default"`: Claude Code ejecuta solo lecturas sin preguntar1757 * `"default"`: Claude Code ejecuta solo lecturas sin preguntar

1749 * `"acceptEdits"`: Claude Code también ejecuta ediciones de archivos y comandos comunes del sistema de archivos como `mkdir` y `mv` sin preguntar1758 * `"acceptEdits"`: Claude Code también ejecuta ediciones de archivos y comandos comunes del sistema de archivos como `mkdir` y `mv` sin preguntar

1750 * `"plan"`: Claude Code lee y planifica pero bloquea ediciones hasta que apruebe un plan1759 * `"plan"`: Claude Code lee y planifica, pero bloquea las ediciones hasta que apruebes un plan

1751 * `"auto"`: Claude Code ejecuta sin avisos rutinarios; antes de que se ejecuten acciones como comandos shell y solicitudes de red, un clasificador en segundo plano verifica que se alineen con su solicitud1760 * `"auto"`: Claude Code se ejecuta sin solicitudes 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

1752 * `"dontAsk"`: Claude Code auto-deniega cada llamada que de otro modo solicitaría confirmación; las lecturas, otras acciones que no necesitan aprobación y herramientas pre-aprobadas aún se ejecutan1761 * `"dontAsk"`: Claude Code deniega automáticamente cada llamada que de otro modo pediría confirmación; las lecturas, otras acciones que no necesitan aprobación y las herramientas preaprobadas se siguen ejecutando

1753 * `"bypassPermissions"`: Claude Code ejecuta todo sin preguntar1762 * `"bypassPermissions"`: Claude Code ejecuta todo sin preguntar

1754 * `"manual"`: un alias para `"default"`, en Claude Code v2.1.200 o posterior1763 * `"manual"`: un alias de `"default"`, en Claude Code v2.1.200 o posterior

1755* **Default**: sin establecer1764* **Default**: sin establecer

1756* **Per-session overrides**: `--permission-mode`, y su equivalente `--dangerously-skip-permissions` para `bypassPermissions`, tienen precedencia sobre esta clave para una sesión1765* **Per-session overrides**: `--permission-mode`, y su equivalente `--dangerously-skip-permissions` para `bypassPermissions`, tienen precedencia sobre esta clave para una sesión

1757 1766 


1763}1772}

1764```1773```

1765 1774 

1766Las reglas de permisos se superponen en cada modo: las reglas `deny` bloquean en cada modo, incluyendo `bypassPermissions`. Consulte [Modos de permisos](/docs/es/permission-modes). `manual` nombra el modo de permisos etiquetado Manual en la CLI y la extensión VS Code; el alias requiere Claude Code v2.1.200 o posterior. En sesiones en la nube, Claude Code honra solo `acceptEdits`, `plan`, `default` y `auto` de esta clave. Para conversaciones que inicia la extensión VS Code, consulte [qué configuración lee la extensión para el modo de permisos inicial](/docs/es/permission-modes#switch-permission-modes).1775Las reglas de permisos se superponen a todos los modos: las reglas `deny` bloquean en todos los modos, incluido `bypassPermissions`. Consulta [Modos de permisos](/docs/es/permission-modes). `manual` nombra el modo de permisos etiquetado como Manual en la CLI y en la extensión de VS Code; el alias requiere Claude Code v2.1.200 o posterior. En las sesiones en la nube, Claude Code respeta solo `acceptEdits`, `plan`, `default` y `auto` de esta clave. Para las conversaciones que inicia la extensión de VS Code, consulta [qué ajuste lee la extensión para el modo de permisos inicial](/docs/es/permission-modes#switch-permission-modes).

1767 1776 

1768<h3 id="permissions-disablebypasspermissionsmode">1777<h3 id="permissions-disablebypasspermissionsmode">

1769 `permissions.disableBypassPermissionsMode`1778 `permissions.disableBypassPermissionsMode`

1770</h3>1779</h3>

1771 1780 

1772Impida que alguien ingrese al modo `bypassPermissions`. Claude Code rechaza entonces la bandera `--dangerously-skip-permissions` e ignora una [definición de agent](/docs/es/sub-agents#permission-modes) `permissionMode: bypassPermissions`, por lo que el subagente se ejecuta con el modo de permisos de la sesión principal.1781Impide que cualquiera entre en el modo `bypassPermissions`. Claude Code rechaza entonces el flag `--dangerously-skip-permissions` e ignora el `permissionMode: bypassPermissions` de una [definición de agente](/docs/es/sub-agents#permission-modes), por lo que el subagente se ejecuta con el modo de permisos de la sesión principal.

1773 1782 

1774* **Scope**: [`Any file`](#scopes). Típicamente establecido en [configuración administrada](/docs/es/managed-settings) para hacer cumplir la política organizacional.1783* **Scope**: [`Any file`](#scopes). Normalmente se establece en la [configuración administrada](/docs/es/managed-settings) para hacer cumplir la política de la organización.

1775* **Type**: la cadena `"disable"`1784* **Type**: la cadena `"disable"`

1776* **Default**: sin establecer1785* **Default**: sin establecer

1777* **Per-session overrides**: esta clave tiene precedencia sobre `--dangerously-skip-permissions`, que Claude Code rechaza mientras la clave está establecida1786* **Per-session overrides**: esta clave tiene precedencia sobre `--dangerously-skip-permissions`, que Claude Code rechaza mientras la clave está establecida


1784}1793}

1785```1794```

1786 1795 

1787Antes de v2.1.223, Claude Code aplicaba el modo de permisos de frontmatter incluso con bypass deshabilitado.1796Antes de v2.1.223, Claude Code aplicaba el modo de permisos del frontmatter incluso con bypass deshabilitado.

1788 1797 

1789<h3 id="skipautopermissionprompt">1798<h3 id="skipautopermissionprompt">

1790 `skipAutoPermissionPrompt`1799 `skipAutoPermissionPrompt`

1791</h3>1800</h3>

1792 1801 

1793Omita el aviso único que describe el [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) que Claude Code muestra cuando ingresa al modo automático usted mismo, por ejemplo a través de su propia configuración o el selector de modo, en lugar de cuando el valor predeterminado integrado inicia una sesión en él. Claude Code muestra ese aviso una vez y luego registra que fue mostrado, por lo que esta clave solo importa donde el aviso aún no ha aparecido.1802Omite el aviso único que describe el [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) y que Claude Code muestra cuando entras por primera vez en el modo automático por tu cuenta, por ejemplo mediante tu propia configuración o el selector de modo, en lugar de cuando el valor predeterminado integrado inicia una sesión en él. Claude Code muestra ese aviso una vez y luego registra que se mostró, por lo que esta clave solo importa donde el aviso aún no ha aparecido.

1794 1803 

1795* **Scope**: [`User or managed`](#scopes). Un repositorio no puede establecerlo para usted.1804* **Scope**: [`User or managed`](#scopes). Un repositorio no puede establecerlo por ti.

1796* **Type**: Boolean1805* **Type**: Boolean

1797 * `true`: Claude Code omite el aviso1806 * `true`: Claude Code omite el aviso

1798 * `false`: lo mismo que sin establecer; el aviso aparece una vez a menos que otro de estos archivos establezca `true`1807 * `false`: lo mismo que sin establecer; el aviso aparece una vez a menos que otro de estos archivos establezca `true`


1808 `skipDangerousModePermissionPrompt`1817 `skipDangerousModePermissionPrompt`

1809</h3>1818</h3>

1810 1819 

1811Omita el diálogo de confirmación que Claude Code muestra antes de que una sesión ingrese al modo `bypassPermissions`, ya sea desde `--dangerously-skip-permissions` o desde `defaultMode: "bypassPermissions"`. Claude Code escribe `true` aquí en su configuración de usuario cuando acepta ese diálogo una vez.1820Omite el diálogo de confirmación que Claude Code muestra antes de que una sesión entre en el modo `bypassPermissions`, ya sea desde `--dangerously-skip-permissions` o desde `defaultMode: "bypassPermissions"`. Claude Code escribe `true` aquí en tu configuración de usuario cuando aceptas ese diálogo una vez.

1812 1821 

1813* **Scope**: [`User, local, or managed`](#scopes). Un repositorio que no es de confianza no puede omitir el diálogo para usted.1822* **Scope**: [`User, local, or managed`](#scopes). Un repositorio que no es de confianza no puede omitir el diálogo por ti.

1814* **Type**: Boolean1823* **Type**: Boolean

1815 * `true`: Claude Code omite el diálogo de confirmación antes de que una sesión ingrese al modo `bypassPermissions`1824 * `true`: Claude Code omite el diálogo de confirmación antes de que una sesión entre en el modo `bypassPermissions`

1816 * `false`: lo mismo que sin establecer; el diálogo aparece a menos que otro de estos archivos establezca `true`1825 * `false`: lo mismo que sin establecer; el diálogo aparece a menos que otro de estos archivos establezca `true`

1817* **Default**: sin establecer, por lo que el diálogo aparece1826* **Default**: sin establecer, por lo que el diálogo aparece

1818 1827 


1826 Configuración de sandbox1835 Configuración de sandbox

1827</h2>1836</h2>

1828 1837 

1829Aísle los comandos que Claude ejecuta de su sistema de archivos, su red y sus credenciales. Para saber cómo funciona el sandboxing y los requisitos de plataforma, consulte [Sandboxing](/docs/es/sandboxing).1838Aísla los comandos que Claude ejecuta de tu sistema de archivos, tu red y tus credenciales. Para saber cómo funciona el sandboxing y los requisitos de plataforma, consulta [Sandboxing](/docs/es/sandboxing).

1830 1839 

1831<h3 id="sandbox">1840<h3 id="sandbox">

1832 `sandbox`1841 `sandbox`

1833</h3>1842</h3>

1834 1843 

1835Aísle los comandos Bash que Claude ejecuta de su sistema de archivos y red con [sandboxing](/docs/es/sandboxing). Active el sandbox con `enabled`, luego reduzca o amplíe lo que los comandos en sandbox pueden tocar con los subobjetos `filesystem`, `network` y `credentials`. El sandbox se ejecuta en macOS, Linux y WSL2.1844Aísla los comandos Bash que Claude ejecuta de tu sistema de archivos y tu red con [sandboxing](/docs/es/sandboxing). Activa el sandbox con `enabled` y luego reduce o amplía lo que los comandos en sandbox pueden tocar con los subobjetos `filesystem`, `network` y `credentials`. El sandbox se ejecuta en macOS, Linux y WSL2.

1836 1845 

1837* **Scope**: [`Any file`](#scopes)1846* **Scope**: [`Any file`](#scopes)

1838* **Type**: object con `enabled`, `failIfUnavailable`, `autoAllowBashIfSandboxed`, `excludedCommands`, `allowUnsandboxedCommands`, `enableWeakerNestedSandbox`, `enableWeakerNetworkIsolation`, `allowAppleEvents`, `bwrapPath`, `socatPath`, `ignoreViolations` y `ripgrep`, más los objetos `filesystem`, `network` y `credentials`1847* **Type**: object con `enabled`, `failIfUnavailable`, `autoAllowBashIfSandboxed`, `excludedCommands`, `allowUnsandboxedCommands`, `enableWeakerNestedSandbox`, `enableWeakerNetworkIsolation`, `allowAppleEvents`, `bwrapPath`, `socatPath`, `ignoreViolations` y `ripgrep`, más los objetos `filesystem`, `network` y `credentials`

1839* **Default**: sin establecer, por lo que Claude Code ejecuta comandos sin sandbox1848* **Default**: sin establecer, por lo que Claude Code ejecuta comandos sin sandbox

1840 1849 

1841Esto activa el sandbox, omite las solicitudes de permiso para comandos en sandbox, ejecuta `docker` fuera del sandbox, abre dos rutas de escritura adicionales, oculta su archivo de credenciales de AWS y pre-permite GitHub y npm:1850Esto activa el sandbox, omite las solicitudes de permiso para comandos en sandbox, ejecuta `docker` fuera del sandbox, abre dos rutas de escritura adicionales, oculta tu archivo de credenciales de AWS y permite de antemano GitHub y npm:

1842 1851 

1843```json settings.json theme={null}1852```json settings.json theme={null}

1844{1853{


1857}1866}

1858```1867```

1859 1868 

1860Claude Code toma el valor de una clave booleana del ámbito de configuración con mayor precedencia que la establece, por lo que un `enabled` o `failIfUnavailable` administrado anula cualquier cosa que establezca un desarrollador. Fusiona claves de matriz en todos los ámbitos de configuración que carga la sesión, por lo que un desarrollador puede agregar entradas; consulte [Keep developers from widening the policy](/docs/es/sandboxing#keep-developers-from-widening-the-policy) para los bloqueos solo administrados. Para requerir el sandbox para una organización, consulte [Enforce sandboxing with managed settings](/docs/es/sandboxing#enforce-sandboxing-with-managed-settings).1869Cuando la configuración administrada establece una clave booleana como `enabled` o `failIfUnavailable`, ese valor sobrescribe cualquier cosa que establezca un desarrollador. Claude Code combina las claves de array en todos los alcances de configuración que carga la sesión, por lo que un desarrollador puede agregar entradas; consulta [Evitar que los desarrolladores amplíen la política](/docs/es/sandboxing#keep-developers-from-widening-the-policy) para ver los bloqueos exclusivos de la configuración administrada. Para exigir el sandbox en una organización, consulta [Aplicar el sandboxing con configuración administrada](/docs/es/sandboxing#enforce-sandboxing-with-managed-settings).

1861 1870 

1862<h3 id="sandbox-enabled">1871<h3 id="sandbox-enabled">

1863 `sandbox.enabled`1872 `sandbox.enabled`

1864</h3>1873</h3>

1865 1874 

1866Active [sandboxing](/docs/es/sandboxing) para comandos Bash. Cuando elige un modo en el panel `/sandbox`, Claude Code escribe esta clave en `.claude/settings.local.json` para el proyecto actual; establézcala en `~/.claude/settings.json` para sandbox en cada proyecto.1875Activa el [sandboxing](/docs/es/sandboxing) para los comandos Bash. Cuando eliges un modo en el panel `/sandbox`, Claude Code escribe esta clave en `.claude/settings.local.json` para el proyecto actual; establécela en `~/.claude/settings.json` para aplicar el sandbox en todos los proyectos.

1867 1876 

1868* **Scope**: [`Any file`](#scopes)1877* **Scope**: [`Any file`](#scopes), con [límites en la configuración de proyecto y local](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox)

1869* **Type**: Boolean1878* **Type**: Boolean

1870 * `true`: Claude Code coloca en sandbox los comandos Bash1879 * `true`: Claude Code ejecuta los comandos Bash en sandbox

1871 * `false`: Los comandos Bash se ejecutan sin sandbox1880 * `false`: los comandos Bash se ejecutan sin sandbox

1872* **Default**: `false`1881* **Default**: `false`

1873 1882 

1874```json settings.json theme={null}1883```json settings.json theme={null}


1879}1888}

1880```1889```

1881 1890 

1882En Linux y WSL2, el sandbox necesita `bubblewrap` y `socat`; consulte [Set up Linux and WSL2](/docs/es/sandboxing#set-up-linux-and-wsl2). Cuando el sandbox no puede iniciarse, Claude Code muestra una advertencia y ejecuta comandos sin sandbox a menos que también establezca [`failIfUnavailable`](#sandbox-failifunavailable).1891En Linux y WSL2, el sandbox necesita `bubblewrap` y `socat`; consulta [Configurar Linux y WSL2](/docs/es/sandboxing#set-up-linux-and-wsl2). Cuando el sandbox no puede iniciarse, Claude Code ejecuta los comandos sin sandbox a menos que también establezcas [`failIfUnavailable`](#sandbox-failifunavailable).

1883 1892 

1884<h3 id="sandbox-failifunavailable">1893<h3 id="sandbox-failifunavailable">

1885 `sandbox.failIfUnavailable`1894 `sandbox.failIfUnavailable`

1886</h3>1895</h3>

1887 1896 

1888Haga que Claude Code salga con un error al inicio cuando `sandbox.enabled` es `true` pero el sandbox no puede iniciarse, porque falta una dependencia o la plataforma no es compatible. Sin él, Claude Code muestra una advertencia y ejecuta comandos sin sandbox. Úselo en configuración administrada cuando su organización requiera sandboxing como una puerta dura.1897Haz que Claude Code salga con un error al inicio cuando `sandbox.enabled` es `true` pero el sandbox no puede iniciarse, porque falta una dependencia o la plataforma no es compatible. Sin esta clave, Claude Code ejecuta los comandos sin sandbox. Los despliegues administrados que requieren el sandboxing como barrera de seguridad pueden usar este ajuste.

1889 1898 

1890* **Scope**: [`Any file`](#scopes)1899En una plataforma que el sandbox no admite, Claude Code no se inicia con esta clave activada. Consulta [Aplicar el sandboxing con configuración administrada](/docs/es/sandboxing#enforce-sandboxing-with-managed-settings).

1900 

1901* **Scope**: [`Any file`](#scopes), con [límites en la configuración de proyecto y local](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox)

1891* **Type**: Boolean1902* **Type**: Boolean

1892 * `true`: Claude Code sale con un error al inicio cuando `sandbox.enabled` es `true` pero el sandbox no puede iniciarse1903 * `true`: Claude Code sale con un error al inicio cuando `sandbox.enabled` es `true` pero el sandbox no puede iniciarse

1893 * `false`: Claude Code muestra una advertencia y ejecuta comandos sin sandbox1904 * `false`: Claude Code ejecuta los comandos sin sandbox cuando el sandbox no puede iniciarse

1894* **Default**: `false`1905* **Default**: `false`

1895 1906 

1896Esto hace que cada máquina administrada coloque en sandbox los comandos o se niegue a iniciarse:1907Esto hace que cada máquina administrada ejecute los comandos en sandbox o se niegue a iniciarse:

1897 1908 

1898```json managed-settings.json theme={null}1909```json managed-settings.json theme={null}

1899{1910{


1904}1915}

1905```1916```

1906 1917 

1907Consulte [Enforce sandboxing with managed settings](/docs/es/sandboxing#enforce-sandboxing-with-managed-settings).1918Consulta [Aplicar el sandboxing con configuración administrada](/docs/es/sandboxing#enforce-sandboxing-with-managed-settings).

1908 1919 

1909<h3 id="sandbox-autoallowbashifsandboxed">1920<h3 id="sandbox-autoallowbashifsandboxed">

1910 `sandbox.autoAllowBashIfSandboxed`1921 `sandbox.autoAllowBashIfSandboxed`

1911</h3>1922</h3>

1912 1923 

1913Permita que Claude Code ejecute comandos Bash en sandbox sin una solicitud de permiso. Los comandos que no pueden ejecutarse en el sandbox aún pasan por el flujo de permiso regular, y las reglas `deny` y las reglas `ask` con ámbito de contenido como `Bash(git push *)` aún se aplican; una regla `ask` de Bash desnuda se omite para comandos en sandbox. Establézcalo en `false` para enviar comandos en sandbox también a través del flujo de permiso regular, que la pestaña **Mode** de `/sandbox` llama modo de permisos regular.1924Permite que Claude Code ejecute comandos Bash en sandbox sin una solicitud de permiso. Los comandos que no pueden ejecutarse en el sandbox siguen pasando por el flujo de permisos normal, y las reglas `deny` y las reglas `ask` limitadas por contenido, como `Bash(git push *)`, siguen aplicándose; una regla ask de `Bash` sin contenido se omite para los comandos en sandbox. Establécela en `false` para que los comandos en sandbox también pasen por el flujo de permisos normal, lo que la pestaña **Mode** de `/sandbox` llama modo de permisos normal.

1914 1925 

1915* **Scope**: [`Any file`](#scopes)1926* **Scope**: [`Any file`](#scopes)

1916* **Type**: Boolean1927* **Type**: Boolean

1917 * `true`: Claude Code ejecuta comandos Bash en sandbox sin una solicitud de permiso, sujeto a reglas `deny` y reglas `ask` con ámbito de contenido; `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` desactiva la auto-permisión1928 * `true`: Claude Code ejecuta comandos Bash en sandbox sin una solicitud de permiso, sujeto a las reglas `deny` y a las reglas `ask` limitadas por contenido; `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` desactiva la aprobación automática

1918 * `false`: los comandos en sandbox pasan por el flujo de permiso regular, por lo que sus reglas de permiso y modo de permiso deciden. La pestaña **Mode** de `/sandbox` llama a esto modo de permisos regular1929 * `false`: los comandos en sandbox pasan por el flujo de permisos normal, por lo que deciden tus reglas allow y tu modo de permisos. La pestaña **Mode** de `/sandbox` llama a esto modo de permisos normal

1919* **Default**: `true`1930* **Default**: `true`

1920 1931 

1921Esto mantiene el sandbox activado y envía comandos en sandbox a través del flujo de permiso regular:1932Esto mantiene el sandbox activado y envía los comandos en sandbox por el flujo de permisos normal:

1922 1933 

1923```json settings.json theme={null}1934```json settings.json theme={null}

1924{1935{


1929}1940}

1930```1941```

1931 1942 

1932Consulte [Sandbox modes](/docs/es/sandboxing#sandbox-modes) para saber qué modo de auto-permisión aún solicita y cómo se comporta en modo plan.1943Consulta [Modos del sandbox](/docs/es/sandboxing#sandbox-modes) para saber qué sigue solicitando el modo de aprobación automática y cómo se comporta en modo plan.

1933 1944 

1934<h3 id="sandbox-excludedcommands">1945<h3 id="sandbox-excludedcommands">

1935 `sandbox.excludedCommands`1946 `sandbox.excludedCommands`

1936</h3>1947</h3>

1937 1948 

1938Nombre los comandos que Claude Code ejecuta fuera del sandbox, como herramientas que no funcionan bajo él. Cada entrada utiliza la misma sintaxis que el contenido de una [regla de permiso](/docs/es/permissions#permission-rule-syntax) `Bash(...)`: un comando exacto, un prefijo como `docker *` o un patrón comodín.1949Nombra los comandos que Claude Code ejecuta fuera del sandbox, como herramientas que no funcionan dentro de él. Cada entrada usa la misma sintaxis que el contenido de una [regla de permisos](/docs/es/permissions#permission-rule-syntax) `Bash(...)`: un comando exacto, un prefijo como `docker *` o un patrón con comodines. Un patrón sin comodín es una coincidencia exacta, por lo que `docker` solo coincide con `docker` sin argumentos.

1939 1950 

1940Sus entradas sacan una llamada Bash del sandbox solo cuando cubren cada comando en ella, y algunas formas de llamada permanecen en sandbox incluso entonces. Una entrada `docker *` sola no saca `npm ci && docker build .` del sandbox.1951Tus entradas sacan una llamada Bash del sandbox solo cuando cubren todos los comandos que contiene, y algunas formas de llamada permanecen en sandbox incluso así. Una entrada `docker *` por sí sola no saca `npm ci && docker build .` del sandbox.

1941 1952 

1942* **Scope**: [`Any file`](#scopes)1953* **Scope**: [`Any file`](#scopes), con [límites en la configuración de proyecto y local](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox)

1943* **Type**: array de patrones de comando1954* **Type**: array de patrones de comando

1944* **Default**: sin establecer, por lo que ningún comando se excluye1955* **Default**: sin establecer, por lo que no se excluye ningún comando

1945 1956 

1946```json settings.json theme={null}1957```json settings.json theme={null}

1947{1958{


1956* Un comando que comienza con `sudo`, `eval` o `xargs`1967* Un comando que comienza con `sudo`, `eval` o `xargs`

1957* Un `cd`, `pushd` o `popd`, dondequiera que aparezca en la llamada1968* Un `cd`, `pushd` o `popd`, dondequiera que aparezca en la llamada

1958* Una sustitución de comando, un subshell o un bloque de flujo de control como `if` o `for`1969* Una sustitución de comando, un subshell o un bloque de flujo de control como `if` o `for`

1959* Una redirección, como `docker build . > build.log`, que no sea una que solo duplique un descriptor de archivo, como `2>&1` hace1970* Una redirección, como `docker build . > build.log`, salvo una que solo duplique un descriptor de archivo, como hace `2>&1`

1960* Un nombre de comando que proviene de una variable1971* Un nombre de comando que proviene de una variable

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

1961 1973 

1962Por ejemplo, `cd build && docker compose up` permanece en sandbox bajo una entrada `docker *`, y agregar una entrada `cd` no cambia eso.1974Por ejemplo, `cd build && docker compose up` permanece en sandbox con una entrada `docker *`, y agregar una entrada `cd` no cambia eso. Con una entrada `git *`, `git clone <url> vendor/lib` se ejecuta fuera del sandbox, pero `git clone <url> ~/tools` permanece en sandbox. Un clon escribe todo un árbol de archivos, posiblemente ejecutables, dondequiera que apunte su ruta de destino.

1963 1975 

1964Los comandos excluidos aún pasan por el flujo de permiso regular. La exclusión es una conveniencia, no un límite de seguridad: prefiera [`filesystem.allowWrite`](#sandbox-filesystem-allowwrite) cuando una herramienta solo necesita escribir en algún lugar específico. Claude Code fusiona entradas en todos los ámbitos de configuración que carga la sesión, y no hay un bloqueo solo administrado para esta lista, así que mantenga una lista administrada estrecha.1976Los comandos excluidos siguen pasando por el flujo de permisos normal. La exclusión es una comodidad, no un límite de seguridad: cuando una herramienta solo necesita escribir en un lugar específico, [`filesystem.allowWrite`](#sandbox-filesystem-allowwrite) la mantiene en sandbox.

1977 

1978Las entradas de los alcances de configuración que carga la sesión se combinan en una sola lista, a menos que el sandbox sea [requerido por el administrador](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox). Mientras lo sea, Claude Code ignora las entradas de `.claude/settings.json` y `.claude/settings.local.json`, para que un repositorio clonado no pueda sacar comandos del sandbox. Las entradas de la configuración administrada, de `--settings` y de tu `~/.claude/settings.json` siguen aplicándose, y ningún bloqueo exclusivo de la configuración administrada cubre esta lista.

1965 1979 

1966<h3 id="sandbox-allowunsandboxedcommands">1980<h3 id="sandbox-allowunsandboxedcommands">

1967 `sandbox.allowUnsandboxedCommands`1981 `sandbox.allowUnsandboxedCommands`

1968</h3>1982</h3>

1969 1983 

1970Permita que Claude reintente un comando fuera del sandbox con el parámetro `dangerouslyDisableSandbox` después de que el sandbox lo bloquee. Establézcalo en `false` para que Claude Code ignore ese parámetro completamente y cada comando que Claude ejecute debe estar en sandbox o aparecer en [`excludedCommands`](#sandbox-excludedcommands). La pestaña **Overrides** de `/sandbox` muestra ese estado como **Strict sandbox mode**. Use `false` en configuración administrada para políticas que requieren sandboxing estricto.1984Permite que Claude reintente un comando fuera del sandbox con el parámetro `dangerouslyDisableSandbox` después de que el sandbox lo bloquee. Cuando es `false`, Claude Code ignora ese parámetro. Mientras el sandbox está en ejecución, los comandos que Claude ejecuta quedan entonces en sandbox a menos que coincidan con una entrada de [`excludedCommands`](#sandbox-excludedcommands). La pestaña **Overrides** de `/sandbox` muestra ese estado como **Strict sandbox mode**. Un `false` en la configuración administrada activa el modo sandbox estricto para los desarrolladores que cubre.

1971 1985 

1972* **Scope**: [`Any file`](#scopes)1986* **Scope**: [`Any file`](#scopes), con [un límite en la configuración de proyecto y local](/docs/es/sandboxing#turn-off-the-retry-with-strict-sandbox-mode)

1973* **Type**: Boolean1987* **Type**: Boolean

1974 * `true`: Claude puede reintentarlo un comando fuera del sandbox con el parámetro `dangerouslyDisableSandbox` después de que el sandbox lo bloquee1988 * `true`: Claude puede reintentar un comando fuera del sandbox con el parámetro `dangerouslyDisableSandbox` después de que el sandbox lo bloquee

1975 * `false`: Claude Code ignora ese parámetro, por lo que cada comando que Claude ejecuta está en sandbox o aparece en `excludedCommands`1989 * `false`: Claude Code ignora ese parámetro, por lo que, mientras el sandbox está en ejecución, los comandos que Claude ejecuta quedan en sandbox a menos que coincidan con una entrada de `excludedCommands`

1976* **Default**: `true`1990* **Default**: `true`

1977 1991 

1978Esto aplica el modo sandbox estricto para todos los que cubre la configuración administrada:1992Esto aplica el modo sandbox estricto para todas las personas que cubre la configuración administrada:

1979 1993 

1980```json managed-settings.json theme={null}1994```json managed-settings.json theme={null}

1981{1995{


1986}2000}

1987```2001```

1988 2002 

1989Un reintento sin sandbox pasa por el flujo de permiso regular, con una solicitud en modo Manual. Consulte [The unsandboxed retry escape hatch](/docs/es/sandboxing#the-unsandboxed-retry-escape-hatch).2003Un `false` de la configuración administrada o de `--settings` también hace que el sandbox sea [requerido por el administrador](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox). Un `false` en tu configuración de usuario prevalece sobre un `true` de un proyecto, pero no hace que el sandbox sea requerido por el administrador. Prevalecer sobre el valor de un proyecto requiere Claude Code v2.1.285 o posterior.

1990 2004 

1991Para ver cuándo los comandos que escribe usted mismo en el [símbolo del sistema de modo shell `!`](/docs/es/interactive-mode#shell-mode-with-prefix) se ejecutan en sandbox, consulte [strict sandbox mode](/docs/es/sandboxing#the-unsandboxed-retry-escape-hatch).2005Quién aprueba un reintento sin sandbox depende de tu modo de permisos y tus reglas allow. Consulta [La vía de escape del reintento sin sandbox](/docs/es/sandboxing#the-unsandboxed-retry-escape-hatch).

2006 

2007Para saber cuándo se ejecutan en sandbox los comandos que escribes tú mismo en el [prompt del modo shell `!`](/docs/es/interactive-mode#shell-mode-with-prefix), consulta [modo sandbox estricto](/docs/es/sandboxing#turn-off-the-retry-with-strict-sandbox-mode).

1992 2008 

1993<h3 id="sandbox-filesystem">2009<h3 id="sandbox-filesystem">

1994 `sandbox.filesystem`2010 `sandbox.filesystem`

1995</h3>2011</h3>

1996 2012 

1997Controle qué rutas pueden leer y escribir los comandos en sandbox. De forma predeterminada, pueden escribir en el directorio de trabajo, el directorio temporal de la sesión y los directorios que agregue con `--add-dir`, `/add-dir` o `permissions.additionalDirectories`, y pueden leer el resto del sistema de archivos, incluidos los archivos de credenciales. Amplíe o reduzca eso con las cuatro listas de rutas, o desactive la capa del sistema de archivos con `disabled`. Consulte [Filesystem isolation](/docs/es/sandboxing#filesystem-isolation) para los límites predeterminados.2013Controla qué rutas pueden leer y escribir los comandos en sandbox. De forma predeterminada, pueden escribir en el directorio de trabajo, el directorio temporal por usuario y los directorios que agregues con `--add-dir`, `/add-dir` o `permissions.additionalDirectories`, y pueden leer el resto del sistema de archivos, incluidos los archivos de credenciales. Amplía o reduce eso con las cuatro listas de rutas, o desactiva la capa del sistema de archivos con `disabled`. Consulta [Aislamiento del sistema de archivos](/docs/es/sandboxing#filesystem-isolation) para ver los límites predeterminados.

1998 2014 

1999* **Scope**: [`Any file`](#scopes)2015* **Scope**: [`Any file`](#scopes)

2000* **Type**: object con matrices `allowWrite`, `denyWrite`, `denyRead` y `allowRead`, más los booleanos `allowManagedReadPathsOnly` y `disabled`2016* **Type**: object con los arrays `allowWrite`, `denyWrite`, `denyRead` y `allowRead`, más los booleanos `allowManagedReadPathsOnly` y `disabled`

2001* **Default**: sin establecer, por lo que se aplican los límites de lectura y escritura predeterminados2017* **Default**: sin establecer, por lo que se aplican los límites de lectura y escritura predeterminados

2002 2018 

2003Esto permite que los comandos en sandbox escriban en un directorio de compilación y su kubeconfig, y oculta su archivo de credenciales de AWS:2019Esto permite que los comandos en sandbox escriban en un directorio de compilación y en tu kubeconfig, y oculta tu archivo de credenciales de AWS:

2004 2020 

2005```json settings.json theme={null}2021```json settings.json theme={null}

2006{2022{


2013}2029}

2014```2030```

2015 2031 

2016Claude Code aplica estas listas en el límite del sandbox del SO, por lo que se aplican a cada subproceso que inicia un comando en sandbox, como `kubectl`, `terraform` o `npm`. Claude Code agrega sus [reglas de permiso](/docs/es/sandboxing#permission-rules) a las mismas listas: reglas `Edit` allow y deny a `allowWrite` y `denyWrite`, reglas `Read` deny a `denyRead` y reglas `WebFetch(domain:...)` allow y deny a las listas de dominio [`network`](#sandbox-network).2032Claude Code aplica estas listas en el límite del sandbox del sistema operativo, por lo que afectan a cada subproceso que inicia un comando en sandbox, como `kubectl`, `terraform` o `npm`. Claude Code agrega tus [reglas de permisos](/docs/es/sandboxing#permission-rules) a las mismas listas: las reglas allow y deny de `Edit` a `allowWrite` y `denyWrite`, las reglas deny de `Read` a `denyRead`, y las reglas allow y deny de `WebFetch(domain:...)` a las listas de dominios de [`network`](#sandbox-network).

2017 2033 

2018A menos que se establezca un bloqueo solo administrado, Claude Code fusiona cada lista en los archivos de configuración que carga la sesión. [`allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) limita `allowRead` a entradas de configuración administrada, y [`allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) hace lo mismo para dominios permitidos.2034A menos que se aplique un bloqueo, Claude Code combina estas listas de todos los archivos de configuración que carga la sesión. [`allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) limita `allowRead` a las entradas de la configuración administrada, y [`allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) hace lo mismo con los dominios permitidos. Los [bloqueos de repositorio](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox) dejan fuera las entradas de los archivos de configuración de un repositorio.

2019 2035 

2020[Configure sandboxing](/docs/es/sandboxing#configure-sandboxing) cubre fuentes que excluye con `--setting-sources`. Cuando edita una lista durante una sesión, Claude Code [aplica el cambio a la sesión en ejecución](/docs/es/settings#when-edits-take-effect).2036[Configurar el sandboxing](/docs/es/sandboxing#configure-sandboxing) cubre las fuentes que excluyes con `--setting-sources`. Cuando editas una lista durante una sesión, Claude Code [aplica el cambio a la sesión en ejecución](/docs/es/settings#when-edits-take-effect).

2021 2037 

2022<h4 id="sandbox-path-prefixes">2038<h4 id="sandbox-path-prefixes">

2023 Prefijos de ruta de sandbox2039 Prefijos de ruta del sandbox

2024</h4>2040</h4>

2025 2041 

2026Las rutas en `allowWrite`, `denyWrite`, `denyRead`, `allowRead` y [`credentials.files`](#sandbox-credentials-files) se resuelven por su prefijo:2042Las rutas en `allowWrite`, `denyWrite`, `denyRead`, `allowRead` y [`credentials.files`](#sandbox-credentials-files) se resuelven según su prefijo:

2027 2043 

2028| Prefijo | Significado | Ejemplo |2044| Prefijo | Significado | Ejemplo |

2029| :- | :- | :- |2045| :- | :- | :- |

2030| `/` | Ruta absoluta desde la raíz del sistema de archivos | `/tmp/build` permanece `/tmp/build` |2046| `/` | Ruta absoluta desde la raíz del sistema de archivos | `/tmp/build` sigue siendo `/tmp/build` |

2031| `~/` | Relativo al directorio de inicio | `~/.kube` se convierte en `$HOME/.kube` |2047| `~/` | Relativa al directorio home | `~/.kube` se convierte en `$HOME/.kube` |

2032| `./` o sin prefijo | Relativo a la raíz del proyecto para configuración de proyecto, o a `~/.claude` para configuración de usuario | `./output` en `.claude/settings.json` se resuelve a `<project-root>/output` |2048| `./` o sin prefijo | Relativa a la raíz del proyecto en la configuración de proyecto, o a `~/.claude` en la configuración de usuario | `./output` en `.claude/settings.json` se resuelve como `<project-root>/output` |

2033 2049 

2034El prefijo `//path` para rutas absolutas también funciona. Si usa una sola barra `/path` esperando resolución relativa al proyecto, cambie a `./path`. Esta sintaxis difiere de las [reglas de permiso Read y Edit](/docs/es/permissions#read-and-edit), que usan `//path` para absoluto y `/path` para relativo al proyecto: las rutas del sistema de archivos de sandbox usan convenciones estándar, por lo que `/tmp/build` es una ruta absoluta.2050El prefijo `//path` para rutas absolutas también funciona. Si usas una sola barra `/path` esperando una resolución relativa al proyecto, cambia a `./path`. Esta sintaxis difiere de las [reglas de permisos Read y Edit](/docs/es/permissions#read-and-edit), que usan `//path` para rutas absolutas y `/path` para rutas relativas al proyecto: las rutas del sistema de archivos del sandbox usan las convenciones estándar, por lo que `/tmp/build` es una ruta absoluta.

2035 2051 

2036Claude Code elimina una barra diagonal final de una ruta de directorio, por lo que `~/.aws` y `~/.aws/` coinciden con el mismo directorio. Antes de v2.1.224, Claude Code pasaba la barra diagonal final al sandbox, y Claude aún podía leer o escribir rutas bajo una entrada `denyRead` o `denyWrite` escrita con una.2052Claude Code elimina la barra final de una ruta de directorio, por lo que `~/.aws` y `~/.aws/` coinciden con el mismo directorio. Antes de v2.1.224, Claude Code pasaba la barra final al sandbox, y Claude aún podía leer o escribir rutas bajo una entrada `denyRead` o `denyWrite` escrita con ella.

2037 2053 

2038Claude Code también elimina un `/**` final, por lo que `~/build/**` y `~/build` cubren el mismo directorio. Si un comodín como `*` funciona depende de en qué lista esté la entrada y de la plataforma:2054Claude Code también elimina un `/**` final, por lo que `~/build/**` y `~/build` cubren el mismo directorio. Que un comodín como `*` funcione depende de la lista en la que esté la entrada y de la plataforma:

2039 2055 

2040* **`allowWrite` y `denyWrite`**: en macOS, los comodines funcionan. En Linux y WSL2, el sandbox monta rutas concretas, por lo que Claude Code omite una entrada que contiene `*`, `?` o `[` una vez que se elimina el `/**` final, y esa entrada no tiene efecto. Claude Code agrega las rutas de sus reglas de permiso `Edit` a estas listas, por lo que se aplica el mismo límite a ellas, y la pestaña **Config** de `/sandbox` advierte sobre reglas de permiso `Edit` y `Read` que contienen comodines.2056* **`allowWrite` y `denyWrite`**: en macOS, los comodines funcionan. En Linux y WSL2, el sandbox monta rutas concretas, por lo que Claude Code omite una entrada que contiene `*`, `?` o `[` una vez eliminado el `/**` final, y esa entrada no tiene efecto. Claude Code agrega a estas listas las rutas de tus reglas de permisos `Edit`, por lo que el mismo límite se aplica a ellas, y la pestaña **Config** de `/sandbox` advierte sobre las reglas de permisos `Edit` y `Read` que contienen comodines.

2041* **`denyRead` y `allowRead`**: los comodines funcionan en cada plataforma. En Linux y WSL2, Claude Code expande una entrada de lectura a las rutas concretas que coincide, lo que no hace para las listas de escritura.2057* **`denyRead` y `allowRead`**: los comodines funcionan en todas las plataformas. En Linux y WSL2, Claude Code expande una entrada de lectura a las rutas concretas con las que coincide, algo que no hace con las listas de escritura.

2042 2058 

2043<h3 id="sandbox-filesystem-allowwrite">2059<h3 id="sandbox-filesystem-allowwrite">

2044 `sandbox.filesystem.allowWrite`2060 `sandbox.filesystem.allowWrite`

2045</h3>2061</h3>

2046 2062 

2047Agregue rutas donde los comandos en sandbox pueden escribir, más allá del directorio de trabajo, el directorio temporal de la sesión y los directorios que ha agregado con `--add-dir`, `/add-dir` o `permissions.additionalDirectories`. Úselo cuando un subproceso como `kubectl` o una herramienta de compilación necesite escribir fuera del proyecto.2063Agrega rutas donde los comandos en sandbox pueden escribir, además del directorio de trabajo, el directorio temporal por usuario y los directorios que agregaste con `--add-dir`, `/add-dir` o `permissions.additionalDirectories`. Úsalo cuando un subproceso como `kubectl` o una herramienta de compilación necesite escribir fuera del proyecto.

2048 2064 

2049* **Scope**: [`Any file`](#scopes)2065* **Scope**: [`Any file`](#scopes), con [límites en la configuración de proyecto y local](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox)

2050* **Type**: array de cadenas de ruta, usando los [prefijos de ruta de sandbox](#sandbox-path-prefixes)2066* **Type**: array de cadenas de ruta, con los [prefijos de ruta del sandbox](#sandbox-path-prefixes)

2051* **Default**: sin establecer, por lo que los comandos en sandbox pueden escribir en el directorio de trabajo, el directorio temporal de la sesión, directorios que ha agregado con `--add-dir` o `/add-dir` y directorios en [`permissions.additionalDirectories`](#permissions-additionaldirectories)2067* **Default**: sin establecer, por lo que los comandos en sandbox pueden escribir en el directorio de trabajo, el directorio temporal por usuario, los directorios que agregaste con `--add-dir` o `/add-dir` y los directorios de [`permissions.additionalDirectories`](#permissions-additionaldirectories)

2052 2068 

2053Esto permite que una compilación escriba bajo `/tmp/build` y permite que `kubectl` actualice su kubeconfig:2069Esto permite que una compilación escriba bajo `/tmp/build` y que `kubectl` actualice tu kubeconfig:

2054 2070 

2055```json settings.json theme={null}2071```json settings.json theme={null}

2056{2072{


2062}2078}

2063```2079```

2064 2080 

2065Claude Code fusiona entradas `allowWrite` y las rutas de sus reglas de permiso `Edit(...)` allow en todos los ámbitos de configuración que carga la sesión, dejando fuera las de configuración de repositorio mientras [`permissions.blockReadsOutsideWorkingDirectories`](#sandboxed-commands-under-the-block) está activado. Una entrada `allowWrite` no puede levantar una [ruta protegida](/docs/es/sandboxing#protected-paths).2081Claude Code combina las entradas de `allowWrite` y las rutas de tus reglas de permisos allow `Edit(...)` de todos los alcances de configuración que carga la sesión, y deja fuera las de la configuración del repositorio mientras [`permissions.blockReadsOutsideWorkingDirectories`](#sandboxed-commands-under-the-block) está activado. Los [bloqueos de repositorio](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox) también pueden dejar fuera las entradas de un repositorio. Una entrada `allowWrite` no puede levantar una [ruta protegida](/docs/es/sandboxing#protected-paths).

2066 2082 

2067<h3 id="sandbox-filesystem-denywrite">2083<h3 id="sandbox-filesystem-denywrite">

2068 `sandbox.filesystem.denyWrite`2084 `sandbox.filesystem.denyWrite`

2069</h3>2085</h3>

2070 2086 

2071Bloquee los comandos en sandbox para que no escriban en rutas específicas, incluidas las rutas dentro de un directorio que de otro modo sería escribible.2087Impide que los comandos en sandbox escriban en rutas específicas, incluidas las rutas dentro de un directorio que de otro modo sería escribible.

2072 2088 

2073* **Scope**: [`Any file`](#scopes)2089* **Scope**: [`Any file`](#scopes)

2074* **Type**: array de cadenas de ruta, usando los [prefijos de ruta de sandbox](#sandbox-path-prefixes)2090* **Type**: array de cadenas de ruta, con los [prefijos de ruta del sandbox](#sandbox-path-prefixes)

2075* **Default**: sin establecer2091* **Default**: sin establecer

2076 2092 

2077Esto evita que los comandos en sandbox cambien la configuración del sistema o instalen binarios:2093Esto evita que los comandos en sandbox cambien la configuración del sistema o instalen binarios:


2086}2102}

2087```2103```

2088 2104 

2089Claude Code fusiona entradas en todos los ámbitos de configuración que carga la sesión, y agrega las rutas de sus reglas de permiso `Edit(...)` deny.2105Claude Code combina las entradas de todos los alcances de configuración que carga la sesión y agrega las rutas de tus reglas de permisos deny `Edit(...)`.

2090 2106 

2091<h3 id="sandbox-filesystem-denyread">2107<h3 id="sandbox-filesystem-denyread">

2092 `sandbox.filesystem.denyRead`2108 `sandbox.filesystem.denyRead`

2093</h3>2109</h3>

2094 2110 

2095Bloquee los comandos en sandbox para que no lean rutas específicas, como archivos de credenciales que la política de lectura predeterminada de otro modo expondría. Para proteger un archivo de credenciales y mantenerlo utilizable a través del proxy de sandbox, consulte [`sandbox.credentials`](#sandbox-credentials) en su lugar.2111Impide que los comandos en sandbox lean rutas específicas, como archivos de credenciales que la política de lectura predeterminada expondría. Para proteger un archivo de credenciales y mantenerlo utilizable a través del proxy del sandbox, consulta [`sandbox.credentials`](#sandbox-credentials) en su lugar.

2096 2112 

2097* **Scope**: [`Any file`](#scopes)2113* **Scope**: [`Any file`](#scopes)

2098* **Type**: array de cadenas de ruta, usando los [prefijos de ruta de sandbox](#sandbox-path-prefixes)2114* **Type**: array de cadenas de ruta, con los [prefijos de ruta del sandbox](#sandbox-path-prefixes)

2099* **Default**: sin establecer, por lo que los comandos en sandbox mantienen el [acceso de lectura predeterminado](/docs/es/sandboxing#filesystem-isolation), que incluye archivos de credenciales como `~/.aws/credentials`2115* **Default**: sin establecer, por lo que los comandos en sandbox conservan el [acceso de lectura predeterminado](/docs/es/sandboxing#filesystem-isolation), que incluye archivos de credenciales como `~/.aws/credentials`

2100 2116 

2101```json settings.json theme={null}2117```json settings.json theme={null}

2102{2118{


2108}2124}

2109```2125```

2110 2126 

2111Claude Code fusiona entradas en todos los ámbitos de configuración que carga la sesión, y agrega las rutas de sus reglas de permiso `Read(...)` deny. Cuando [`filesystem.disabled`](#sandbox-filesystem-disabled) es `true`, Claude Code no aplica estas entradas.2127Claude Code combina las entradas de todos los alcances de configuración que carga la sesión y agrega las rutas de tus reglas de permisos deny `Read(...)`. Cuando [`filesystem.disabled`](#sandbox-filesystem-disabled) es `true`, Claude Code no aplica estas entradas.

2112 2128 

2113<h3 id="sandbox-filesystem-allowread">2129<h3 id="sandbox-filesystem-allowread">

2114 `sandbox.filesystem.allowRead`2130 `sandbox.filesystem.allowRead`

2115</h3>2131</h3>

2116 2132 

2117Reabra la lectura para rutas específicas dentro de una región que [`denyRead`](#sandbox-filesystem-denyread) bloquea, para construir acceso de lectura solo para el espacio de trabajo. Una entrada `denyRead` exacta o comodín permanece bloqueada dentro de un `allowRead` más amplio, como muestra la [tabla de superposición](/docs/es/sandboxing#configure-sandboxing). Cuando una entrada `denyRead` comodín como `~/**/.env` coincide con un directorio, Claude Code bloquea las lecturas de su contenido también. Antes de v2.1.236 en macOS, Claude Code reabrió las rutas que una entrada `denyRead` comodín coincidía dondequiera que una entrada `allowRead` más amplia las cubriera, y dejaba el contenido de un directorio coincidente legible.2133Vuelve a habilitar la lectura de rutas específicas dentro de una región que [`denyRead`](#sandbox-filesystem-denyread) bloquea, para crear un acceso de lectura limitado al espacio de trabajo. Una entrada `denyRead` exacta o con comodines sigue bloqueada dentro de un `allowRead` más amplio, como muestra la [tabla de superposición](/docs/es/sandboxing#configure-sandboxing). Cuando una entrada `denyRead` con comodines, como `~/**/.env`, coincide con un directorio, Claude Code también bloquea la lectura de su contenido. Antes de v2.1.236 en macOS, Claude Code volvía a habilitar las rutas con las que coincidía una entrada `denyRead` con comodines siempre que una entrada `allowRead` más amplia las cubriera, y dejaba legible el contenido de un directorio coincidente.

2118 2134 

2119* **Scope**: [`Any file`](#scopes)2135* **Scope**: [`Any file`](#scopes), con [límites en la configuración de proyecto y local](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox)

2120* **Type**: array de cadenas de ruta, usando los [prefijos de ruta de sandbox](#sandbox-path-prefixes)2136* **Type**: array de cadenas de ruta, con los [prefijos de ruta del sandbox](#sandbox-path-prefixes)

2121* **Default**: sin establecer2137* **Default**: sin establecer

2122 2138 

2123Esto bloquea las lecturas de su directorio de inicio excepto el proyecto mismo:2139Esto bloquea la lectura de tu directorio home excepto el propio proyecto:

2124 2140 

2125```json settings.json theme={null}2141```json settings.json theme={null}

2126{2142{


2133}2149}

2134```2150```

2135 2151 

2136Claude Code resuelve una entrada `.` a la raíz del proyecto en configuración de proyecto y a `~/.claude` en configuración de usuario. Claude Code fusiona entradas en todos los archivos de configuración que carga la sesión a menos que [`allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) esté establecido, y deja fuera entradas de configuración de repositorio mientras [`permissions.blockReadsOutsideWorkingDirectories`](#sandboxed-commands-under-the-block) está activado.2152Claude Code resuelve una entrada `.` como la raíz del proyecto en la configuración de proyecto y como `~/.claude` en la configuración de usuario. Claude Code combina las entradas de los archivos de configuración que carga la sesión a menos que [`allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) esté establecido, y deja fuera las entradas de la configuración del repositorio mientras [`permissions.blockReadsOutsideWorkingDirectories`](#sandboxed-commands-under-the-block) está activado. Los [bloqueos de repositorio](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox) también pueden dejar fuera las entradas de un repositorio.

2137 2153 

2138<h3 id="sandbox-filesystem-allowmanagedreadpathsonly">2154<h3 id="sandbox-filesystem-allowmanagedreadpathsonly">

2139 `sandbox.filesystem.allowManagedReadPathsOnly`2155 `sandbox.filesystem.allowManagedReadPathsOnly`

2140</h3>2156</h3>

2141 2157 

2142Honre solo las entradas [`allowRead`](#sandbox-filesystem-allowread) que provienen de configuración administrada, para que los desarrolladores no puedan reabrir el acceso de lectura a rutas que su organización bloqueó. Claude Code aún fusiona entradas `denyRead` de todos los ámbitos de configuración que carga la sesión.2158Respeta solo las entradas de [`allowRead`](#sandbox-filesystem-allowread) que provienen de la configuración administrada, para que los desarrolladores no puedan volver a habilitar el acceso de lectura a rutas que tu organización bloqueó. Claude Code sigue combinando las entradas de `denyRead` de todos los alcances de configuración que carga la sesión.

2143 2159 

2144* **Scope**: [`Managed`](#scopes)2160* **Scope**: [`Managed`](#scopes)

2145* **Type**: Boolean2161* **Type**: Boolean

2146 * `true`: Claude Code honra solo las entradas `allowRead` de configuración administrada2162 * `true`: Claude Code respeta solo las entradas de `allowRead` de la configuración administrada

2147 * `false`: las entradas `allowRead` se fusionan de todos los ámbitos de configuración que carga la sesión2163 * `false`: las entradas de `allowRead` de otros archivos de configuración pueden combinarse

2148* **Default**: `false`2164* **Default**: `false`

2149 2165 

2150Esto bloquea las lecturas del directorio de inicio, reabre `~/work` y evita que los desarrolladores reabran cualquier otra cosa:2166Esto bloquea la lectura del directorio home, vuelve a habilitar `~/work` e impide que los desarrolladores habiliten cualquier otra cosa:

2151 2167 

2152```json managed-settings.json theme={null}2168```json managed-settings.json theme={null}

2153{2169{


2161}2177}

2162```2178```

2163 2179 

2164Consulte [Keep developers from widening the policy](/docs/es/sandboxing#keep-developers-from-widening-the-policy).2180Consulta [Evitar que los desarrolladores amplíen la política](/docs/es/sandboxing#keep-developers-from-widening-the-policy).

2165 2181 

2166<h3 id="sandbox-filesystem-disabled">2182<h3 id="sandbox-filesystem-disabled">

2167 `sandbox.filesystem.disabled`2183 `sandbox.filesystem.disabled`

2168</h3>2184</h3>

2169 2185 

2170Omita el aislamiento del sistema de archivos mientras mantiene el aislamiento de red. Los comandos en sandbox obtienen acceso de lectura y escritura sin restricciones al sistema de archivos del host, y su salida de red permanece confinada a [`network.allowedDomains`](#sandbox-network-alloweddomains). Úselo cuando coloque en sandbox para controlar dónde se conectan los comandos en lugar de lo que escriben. Requiere Claude Code v2.1.216 o posterior.2186Omite 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.

2171 2187 

2172* **Scope**: [`User or managed`](#scopes). Cuando la configuración administrada configura `sandbox.filesystem` en absoluto, o enumera una entrada `sandbox.credentials.files` con `"mode": "deny"`, solo la configuración administrada puede establecerla.2188* **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.

2173* **Type**: Boolean2189* **Type**: Boolean

2174 * `true`: Claude Code omite el aislamiento del sistema de archivos y mantiene el aislamiento de red2190 * `true`: Claude Code omite el aislamiento del sistema de archivos y mantiene el aislamiento de red

2175 * `false`: el aislamiento del sistema de archivos permanece activado2191 * `false`: el aislamiento del sistema de archivos permanece activado

2176* **Default**: `false`, por lo que el aislamiento del sistema de archivos permanece activado2192* **Default**: `false`, por lo que el aislamiento del sistema de archivos permanece activado

2177 2193 

2178Esto deja el sistema de archivos abierto y confina la salida de red a GitHub y npm:2194Esto deja el sistema de archivos abierto y limita el tráfico de red saliente a GitHub y npm:

2179 2195 

2180```json settings.json theme={null}2196```json settings.json theme={null}

2181{2197{


2191}2207}

2192```2208```

2193 2209 

2194Con la capa desactivada, Claude Code no aplica entradas `denyRead` o `credentials.files` `deny`, mientras que las entradas `credentials.envVars` y las entradas `mask` aplicadas siguen funcionando. [`autoAllowBashIfSandboxed`](#sandbox-autoallowbashifsandboxed) aún tiene el valor predeterminado `true`, así que establézcalo en `false` para mantener la solicitud. Consulte [Disable filesystem isolation](/docs/es/sandboxing#disable-filesystem-isolation) para la lista completa de fuentes que pueden establecerla y qué cambia cuando el aislamiento está desactivado. Requiere Claude Code v2.1.216 o posterior.2210Con 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](/docs/es/sandboxing#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.

2195 2211 

2196<h3 id="sandbox-ignoreviolations">2212<h3 id="sandbox-ignoreviolations">

2197 `sandbox.ignoreViolations`2213 `sandbox.ignoreViolations`

2198</h3>2214</h3>

2199 2215 

2200Silenciar los informes de violación de sandbox para rutas que espera que un comando sondee y sea rechazado, como una herramienta que verifica `/etc/hosts` al inicio, para que esos rechazos no aparezcan como violaciones o en lo que Claude ve. El sandbox aún bloquea el acceso; solo se suprime el informe. Las claves son subcadenas para coincidir con el comando, con `*` coincidiendo con cada comando, y los valores son subcadenas de la violación a ignorar para ese comando, como una ruta del sistema de archivos.2216Silencia los informes de violaciones del sandbox para rutas que esperas que un comando sondee y que se le rechacen, como una herramienta que verifica `/etc/hosts` al iniciarse, para que esos rechazos no aparezcan como violaciones ni en lo que Claude ve. El sandbox sigue bloqueando el acceso; solo se suprime el informe. Las claves son subcadenas que se comparan con el comando, donde `*` coincide con todos los comandos, y los valores son subcadenas de la violación que se ignorará para ese comando, como una ruta del sistema de archivos.

2201 2217 

2202* **Scope**: [`Any file`](#scopes)2218* **Scope**: [`Any file`](#scopes), con [límites en la configuración de proyecto y local](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox)

2203* **Type**: object que asigna una subcadena de comando a una matriz de subcadenas de violación, generalmente rutas2219* **Type**: object que asigna una subcadena de comando a un array de subcadenas de violación, generalmente rutas

2204* **Default**: sin establecer, por lo que cada violación se informa2220* **Default**: sin establecer, por lo que se informa cada violación

2205 2221 

2206```json settings.json theme={null}2222```json settings.json theme={null}

2207{2223{


2217 `sandbox.enableWeakerNestedSandbox`2233 `sandbox.enableWeakerNestedSandbox`

2218</h3>2234</h3>

2219 2235 

2220Ejecute el sandbox de Linux dentro de un contenedor Docker sin privilegios, donde bubblewrap no puede montar un `/proc` nuevo. En su lugar, el sandbox interno vincula el `/proc` existente del contenedor, que expone información de proceso que un montaje nuevo ocultaría. Esto reduce la seguridad; úselo solo cuando el contenedor externo ya proporciona el aislamiento que necesita.2236Ejecuta el sandbox de Linux dentro de un contenedor Docker sin privilegios, donde bubblewrap no puede montar un `/proc` nuevo. En su lugar, el sandbox interno monta mediante bind el `/proc` existente del contenedor, lo que expone información de procesos que un montaje nuevo ocultaría. Esto reduce la seguridad; úsalo solo cuando el contenedor externo ya proporcione el aislamiento que necesitas.

2221 2237 

2222* **Scope**: [`Any file`](#scopes)2238* **Scope**: [`Any file`](#scopes), con [límites en la configuración de proyecto y local](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox)

2223* **Type**: Boolean2239* **Type**: Boolean

2224 * `true`: el sandbox interno vincula el `/proc` existente del contenedor en lugar de montar uno nuevo2240 * `true`: el sandbox interno monta mediante bind el `/proc` existente del contenedor en lugar de montar uno nuevo

2225 * `false`: el sandbox monta un `/proc` nuevo, que no funciona en un contenedor Docker sin privilegios2241 * `false`: el sandbox monta un `/proc` nuevo, lo que no funciona en un contenedor Docker sin privilegios

2226* **Default**: `false`2242* **Default**: `false`

2227 2243 

2228```json settings.json theme={null}2244```json settings.json theme={null}


2234}2250}

2235```2251```

2236 2252 

2237Solo Linux y WSL2. Consulte [Bubblewrap fails to start inside a container](/docs/es/sandboxing#troubleshooting).2253Solo Linux y WSL2. Consulta [Bubblewrap no se inicia dentro de un contenedor](/docs/es/sandboxing#troubleshooting).

2238 2254 

2239<h3 id="sandbox-enableweakernetworkisolation">2255<h3 id="sandbox-enableweakernetworkisolation">

2240 `sandbox.enableWeakerNetworkIsolation`2256 `sandbox.enableWeakerNetworkIsolation`

2241</h3>2257</h3>

2242 2258 

2243Permita que los comandos en sandbox en macOS lleguen al servicio de confianza TLS del sistema, `com.apple.trustd.agent`. Las herramientas basadas en Go como `gh`, `gcloud` y `terraform` lo necesitan para verificar certificados TLS cuando usa [`network.httpProxyPort`](#sandbox-network-httpproxyport) con un proxy MITM y una CA personalizada. Esto reduce la seguridad al abrir una posible ruta de exfiltración de datos a través del servicio de confianza.2259Permite que los comandos en sandbox en macOS accedan al servicio de confianza TLS del sistema, `com.apple.trustd.agent`. Las herramientas basadas en Go, como `gh`, `gcloud` y `terraform`, lo necesitan para verificar certificados TLS cuando usas [`network.httpProxyPort`](#sandbox-network-httpproxyport) con un proxy MITM y una CA personalizada. Esto reduce la seguridad al abrir una posible vía de exfiltración de datos a través del servicio de confianza.

2244 2260 

2245* **Scope**: [`Any file`](#scopes)2261* **Scope**: [`Any file`](#scopes), con [límites en la configuración de proyecto y local](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox)

2246* **Type**: Boolean2262* **Type**: Boolean

2247 * `true`: los comandos en sandbox en macOS pueden llegar a `com.apple.trustd.agent`2263 * `true`: los comandos en sandbox en macOS pueden acceder a `com.apple.trustd.agent`

2248 * `false`: los comandos en sandbox en macOS no pueden llegar al servicio de confianza TLS del sistema2264 * `false`: los comandos en sandbox en macOS no pueden acceder al servicio de confianza TLS del sistema

2249* **Default**: `false`2265* **Default**: `false`

2250 2266 

2251```json settings.json theme={null}2267```json settings.json theme={null}


2257}2273}

2258```2274```

2259 2275 

2260Si no usa un proxy MITM, enumere las herramientas que fallan en [`excludedCommands`](#sandbox-excludedcommands) en su lugar; consulte [Go-based CLIs fail TLS verification on macOS](/docs/es/sandboxing#troubleshooting).2276Si no usas un proxy MITM, incluye las herramientas que fallan en [`excludedCommands`](#sandbox-excludedcommands) en su lugar; consulta [Las CLI basadas en Go fallan en la verificación TLS en macOS](/docs/es/sandboxing#troubleshooting).

2261 2277 

2262<h3 id="sandbox-allowappleevents">2278<h3 id="sandbox-allowappleevents">

2263 `sandbox.allowAppleEvents`2279 `sandbox.allowAppleEvents`

2264</h3>2280</h3>

2265 2281 

2266Permita que los comandos en sandbox en macOS envíen Apple Events, que `open`, `osascript` y herramientas que abren URLs en un navegador necesitan; sin él fallan con error `-600`. Esto elimina el aislamiento de ejecución de código: los comandos en sandbox pueden lanzar otras aplicaciones sin sandbox sin solicitud del usuario, y pueden enviar comandos AppleScript a aplicaciones en ejecución como Terminal, sujeto a la solicitud de consentimiento de automatización por aplicación de macOS (TCC).2282Permite que los comandos en sandbox en macOS envíen Apple Events, que necesitan `open`, `osascript` y las herramientas que abren URLs en un navegador; sin esto, fallan con el error `-600`. Esto elimina el aislamiento de ejecución de código: los comandos en sandbox pueden iniciar otras aplicaciones sin sandbox y sin preguntarle al usuario, y pueden enviar comandos AppleScript a aplicaciones en ejecución como Terminal, sujeto a la solicitud de consentimiento de automatización por aplicación de macOS (TCC).

2267 2283 

2268* **Scope**: [`User or managed`](#scopes)2284* **Scope**: [`User or managed`](#scopes)

2269* **Type**: Boolean2285* **Type**: Boolean

2270 * `true`: los comandos en sandbox en macOS pueden enviar Apple Events2286 * `true`: los comandos en sandbox en macOS pueden enviar Apple Events

2271 * `false`: los comandos en sandbox en macOS no pueden enviar Apple Events, por lo que `open` y `osascript` fallan con error `-600`2287 * `false`: los comandos en sandbox en macOS no pueden enviar Apple Events, por lo que `open` y `osascript` fallan con el error `-600`

2272* **Default**: `false`2288* **Default**: `false`

2273 2289 

2274```json settings.json theme={null}2290```json settings.json theme={null}


2280}2296}

2281```2297```

2282 2298 

2283Para mantener el aislamiento y aún ejecutar una herramienta de este tipo, agréguela a [`excludedCommands`](#sandbox-excludedcommands) en su lugar. Consulte [Apple Events on macOS](/docs/es/sandboxing#security-limitations).2299Para mantener el aislamiento y aun así ejecutar una de esas herramientas, agrégala a [`excludedCommands`](#sandbox-excludedcommands) en su lugar. Consulta [Apple Events en macOS](/docs/es/sandboxing#security-limitations).

2284 2300 

2285<h3 id="sandbox-ripgrep">2301<h3 id="sandbox-ripgrep">

2286 `sandbox.ripgrep`2302 `sandbox.ripgrep`

2287</h3>2303</h3>

2288 2304 

2289Apunte el sandbox a un binario ripgrep propio en lugar del que usa Claude Code, por ejemplo cuando su plataforma necesita un `rg` construido de manera diferente.2305Apunta el sandbox a un binario de ripgrep propio en lugar del que usa Claude Code, por ejemplo cuando tu plataforma necesita un `rg` compilado de otra manera.

2290 2306 

2291* **Scope**: [`User or managed`](#scopes)2307* **Scope**: [`User or managed`](#scopes)

2292* **Type**: object con `command`, la ruta al binario ripgrep, y `args` opcional, una matriz de argumentos para anteponer2308* **Type**: object con `command`, la ruta al binario de ripgrep, y `args` opcional, un array de argumentos que se anteponen

2293* **Default**: sin establecer, por lo que el sandbox usa el mismo binario ripgrep que Claude Code. Ese es el binario incluido a menos que establezca [`USE_BUILTIN_RIPGREP`](/docs/es/env-vars) en `0`2309* **Default**: sin establecer, por lo que el sandbox usa el mismo binario de ripgrep que Claude Code. Ese es el binario incluido a menos que establezcas [`USE_BUILTIN_RIPGREP`](/docs/es/env-vars) en `0`

2294 2310 

2295```json settings.json theme={null}2311```json settings.json theme={null}

2296{2312{


2306 `sandbox.bwrapPath`2322 `sandbox.bwrapPath`

2307</h3>2323</h3>

2308 2324 

2309Apunte el sandbox a un binario bubblewrap instalado fuera de `PATH`, como una copia vendida en un host aislado. Claude Code usa la ruta tanto para la verificación de dependencia de inicio como cuando envuelve cada comando en sandbox.2325Apunta el sandbox a un binario de bubblewrap instalado fuera de `PATH`, como una copia incluida localmente en un host aislado de la red. Claude Code usa la ruta tanto para la verificación de dependencias al inicio como al envolver cada comando en sandbox.

2310 2326 

2311* **Scope**: [`Managed`](#scopes). Claude Code lo lee solo de configuración administrada para que un archivo de usuario, proyecto o local no pueda apuntar el sandbox a un binario diferente.2327* **Scope**: [`Managed`](#scopes). Claude Code lo lee solo de la configuración administrada para que un archivo de usuario, de proyecto o local no pueda apuntar el sandbox a otro binario.

2312* **Type**: string, una ruta absoluta; Claude Code descarta una ruta relativa y vuelve a la búsqueda de `PATH`2328* **Type**: string, una ruta absoluta; Claude Code descarta una ruta relativa y recurre a la búsqueda en `PATH`

2313* **Default**: sin establecer, por lo que Claude Code encuentra `bwrap` en `PATH`2329* **Default**: sin establecer, por lo que Claude Code busca `bwrap` en `PATH`

2314 2330 

2315```json managed-settings.json theme={null}2331```json managed-settings.json theme={null}

2316{2332{


2327 `sandbox.socatPath`2343 `sandbox.socatPath`

2328</h3>2344</h3>

2329 2345 

2330Apunte el proxy de red de sandbox a un binario `socat` instalado fuera de `PATH`.2346Apunta el proxy de red del sandbox a un binario de `socat` instalado fuera de `PATH`.

2331 2347 

2332* **Scope**: [`Managed`](#scopes)2348* **Scope**: [`Managed`](#scopes)

2333* **Type**: string, una ruta absoluta; Claude Code descarta una ruta relativa y vuelve a la búsqueda de `PATH`2349* **Type**: string, una ruta absoluta; Claude Code descarta una ruta relativa y recurre a la búsqueda en `PATH`

2334* **Default**: sin establecer, por lo que Claude Code encuentra `socat` en `PATH`2350* **Default**: sin establecer, por lo que Claude Code busca `socat` en `PATH`

2335 2351 

2336```json managed-settings.json theme={null}2352```json managed-settings.json theme={null}

2337{2353{


2348 `sandbox.credentials`2364 `sandbox.credentials`

2349</h3>2365</h3>

2350 2366 

2351Declare los archivos de credenciales y variables de entorno para [proteger de comandos en sandbox](/docs/es/sandboxing#protect-credentials). Cada entrada nombra un archivo `path` o una variable `name` y un `mode`: `deny` oculta la credencial dentro del sandbox, y `mask` muestra a los comandos en sandbox un marcador de posición mientras el [proxy de sandbox](/docs/es/sandboxing#mask-credentials) sustituye el valor real en solicitudes salientes. Claude Code protege solo las entradas que enumera; no hay una lista de negación de credenciales integrada.2367Declara los archivos de credenciales y las variables de entorno que se [protegerán de los comandos en sandbox](/docs/es/sandboxing#protect-credentials). Cada entrada indica un archivo `path` o una variable `name` y un `mode`: `deny` oculta la credencial dentro del sandbox, y `mask` muestra a los comandos en sandbox un marcador de posición mientras el [proxy del sandbox](/docs/es/sandboxing#mask-credentials) sustituye el valor real en las solicitudes salientes. Claude Code protege solo las entradas que incluyes; no hay una lista integrada de credenciales denegadas.

2352 2368 

2353* **Scope**: [`Any file`](#scopes). Claude Code honra entradas `mask`, `allowPlaintextInject`, `awsPairs` y `sigv4` solo de configuración de usuario, configuración administrada y la bandera `--settings`.2369* **Scope**: [`Any file`](#scopes). Claude Code respeta las entradas `mask`, `allowPlaintextInject`, `awsPairs` y `sigv4` solo desde la configuración de usuario, la configuración administrada y el flag `--settings`.

2354* **Type**: object con `files`, `envVars`, `allowPlaintextInject`, `awsPairs` y `sigv4`2370* **Type**: object con `files`, `envVars`, `allowPlaintextInject`, `awsPairs` y `sigv4`

2355* **Default**: sin establecer, por lo que no se protegen credenciales2371* **Default**: sin establecer, por lo que no se protege ninguna credencial

2356 2372 

2357Esto oculta su archivo de credenciales de AWS y elimina `GITHUB_TOKEN` de comandos en sandbox:2373Esto oculta tu archivo de credenciales de AWS y elimina `GITHUB_TOKEN` de los comandos en sandbox:

2358 2374 

2359```json settings.json theme={null}2375```json settings.json theme={null}

2360{2376{


2367}2383}

2368```2384```

2369 2385 

2370La protección de archivo `deny` es parte de la capa del sistema de archivos, por lo que no se aplica cuando [deshabilita el aislamiento del sistema de archivos](/docs/es/sandboxing#disable-filesystem-isolation); la protección de variable de entorno aún lo hace.2386La protección de archivos `deny` forma parte de la capa del sistema de archivos, por lo que no se aplica cuando [desactivas el aislamiento del sistema de archivos](/docs/es/sandboxing#disable-filesystem-isolation); la protección de variables de entorno sí se sigue aplicando.

2371 2387 

2372<h4 id="invalid-credential-entries-in-managed-settings">2388<h4 id="invalid-credential-entries-in-managed-settings">

2373 Entradas de credenciales inválidas en configuración administrada2389 Entradas de credenciales no válidas en la configuración administrada

2374</h4>2390</h4>

2375 2391 

2376Cuando una entrada `sandbox.credentials` administrada falla en la validación, Claude Code sigue protegiendo la credencial donde puede:2392Cuando una entrada administrada de `sandbox.credentials` no supera la validación, Claude Code sigue protegiendo la credencial en la medida de lo posible:

2377 2393 

2378* Una entrada en `files` o `envVars` que aún tiene un `path` o `name` válido y un `mode` de `mask` o `deny`, como uno cuyo patrón `extract` no tiene grupo de captura, se degrada a `mode: "deny"` con una advertencia, por lo que la credencial permanece bloqueada, no enmascarada, hasta que corrija la entrada. Una entrada `files` degradada fija [`filesystem.disabled`](/docs/es/sandboxing#disable-filesystem-isolation) como una entrada `deny` explícita, y la advertencia señala que su bloqueo de lectura no se aplica si la configuración administrada desactiva el aislamiento del sistema de archivos.2394* Una entrada de `files` o `envVars` que aún tiene un `path` o `name` válido y un `mode` de `mask` o `deny`, como una cuyo patrón `extract` no tiene grupo de captura, se degrada a `mode: "deny"` con una advertencia, por lo que la credencial permanece bloqueada, no enmascarada, hasta que corrijas la entrada. Una entrada de `files` degradada fija [`filesystem.disabled`](/docs/es/sandboxing#disable-filesystem-isolation) igual que una entrada `deny` explícita, y la advertencia indica que su bloqueo de lectura no se aplica si la configuración administrada desactiva el aislamiento del sistema de archivos.

2379* Una entrada con un `mode` desconocido o un `path` o `name` inválido se elimina.2395* Una entrada con un `mode` desconocido o con un `path` o `name` no válido se elimina.

2380* Cada caso advierte; ya sea que una entrada se degrade o se elimine, las entradas válidas restantes aún se aplican, y un valor `credentials` completamente inválido se descarta mientras el resto de `sandbox` aún se aplica.2396* Cada caso genera una advertencia; tanto si una entrada se degrada como si se elimina, las entradas válidas restantes siguen aplicándose, y un valor de `credentials` completamente no válido se descarta mientras el resto de `sandbox` sigue aplicándose.

2381 2397 

2382Se aplica en v2.1.191 y posterior; antes de v2.1.221, cada entrada inválida se eliminaba. Para las otras claves administradas con manejo por campo, consulte [Invalid entries in managed settings](/docs/es/managed-settings#invalid-entries-in-managed-settings).2398Se aplica en v2.1.191 y posterior; antes de v2.1.221, se eliminaba cada entrada no válida. Para las demás claves administradas con tratamiento por campo, consulta [Entradas no válidas en la configuración administrada](/docs/es/managed-settings#invalid-entries-in-managed-settings).

2383 2399 

2384<h3 id="sandbox-credentials-files">2400<h3 id="sandbox-credentials-files">

2385 `sandbox.credentials.files`2401 `sandbox.credentials.files`

2386</h3>2402</h3>

2387 2403 

2388Proteja archivos o directorios de credenciales de comandos en sandbox. Con `"mode": "deny"`, Claude Code bloquea las lecturas de la ruta dentro del sandbox, el mismo bloqueo de lectura que [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread). Con `"mode": "mask"`, los comandos en sandbox en Linux y WSL2 leen una copia centinela del archivo, y el proxy de sandbox sustituye el valor real en solicitudes salientes a `injectHosts` de esa entrada; en macOS el archivo es ilegible dentro del sandbox en su lugar. `"mode": "mask"` requiere Claude Code v2.1.221 o posterior.2404Protege archivos o directorios de credenciales de los comandos en sandbox. Con `"mode": "deny"`, Claude Code bloquea la lectura de la ruta dentro del sandbox, el mismo bloqueo de lectura que [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread). Con `"mode": "mask"`, los comandos en sandbox en Linux y WSL2 leen una copia centinela del archivo, y el proxy del sandbox sustituye el valor real en las solicitudes salientes a los `injectHosts` de esa entrada; en macOS, en cambio, el archivo no se puede leer dentro del sandbox. `"mode": "mask"` requiere Claude Code v2.1.221 o posterior.

2389 2405 

2390* **Scope**: [`Any file`](#scopes). Claude Code descarta entradas `mask` de `.claude/settings.json` de proyecto y `.claude/settings.local.json` local.2406* **Scope**: [`Any file`](#scopes). Claude Code descarta las entradas `mask` del `.claude/settings.json` del proyecto y del `.claude/settings.local.json` local.

2391* **Type**: array de objetos, cada uno con `path` y un `mode` de `"deny"` o `"mask"`, más los [campos de máscara opcionales para archivos](#mask-fields-for-files)2407* **Type**: array de objetos, cada uno con `path` y un `mode` de `"deny"` o `"mask"`, más los [campos de máscara para archivos](#mask-fields-for-files) opcionales

2392* **Default**: sin establecer, por lo que no se protegen archivos de credenciales2408* **Default**: sin establecer, por lo que no se protege ningún archivo de credenciales

2393 2409 

2394Esto oculta su archivo de credenciales de AWS y enmascara el archivo de hosts `gh`, sustituyendo el valor real solo en solicitudes a `api.github.com`:2410Esto oculta tu archivo de credenciales de AWS y enmascara el archivo de hosts de `gh`, sustituyendo el valor real solo en las solicitudes a `api.github.com`:

2395 2411 

2396```json settings.json theme={null}2412```json settings.json theme={null}

2397{2413{


2406}2422}

2407```2423```

2408 2424 

2409Las rutas usan los mismos [prefijos](#sandbox-path-prefixes) que la configuración `sandbox.filesystem.*`, y Claude Code fusiona las matrices de todos los ámbitos de configuración que carga la sesión. [Protect credentials](/docs/es/sandboxing#protect-credentials) cubre lo que aún se aplica de fuentes que excluye con `--setting-sources`. Las entradas `mask` requieren Claude Code v2.1.221 o posterior.2425Las rutas usan los mismos [prefijos](#sandbox-path-prefixes) que los ajustes `sandbox.filesystem.*`, y Claude Code combina los arrays de todos los alcances de configuración que carga la sesión. [Proteger credenciales](/docs/es/sandboxing#protect-credentials) cubre lo que sigue aplicándose de las fuentes que excluyes con `--setting-sources`. Las entradas `mask` requieren Claude Code v2.1.221 o posterior.

2410 2426 

2411La sustitución `mask` se ejecuta solo a través del proxy de sandbox, así que establezca [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), o [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) para redes de prueba HTTP simple. `mask` se aplica a un único archivo, así que enumere cada archivo de credenciales individualmente. Claude Code acepta pero ignora los campos `mask` en una entrada `deny`. [Mask credential files](/docs/es/sandboxing#mask-credential-files) cubre qué fuentes de configuración se honran y cuándo una entrada vuelve a `deny`.2427La sustitución `mask` solo se realiza a través del proxy del sandbox, así que establece [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), o [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) para redes de prueba con HTTP simple. `mask` se aplica a un solo archivo, así que incluye cada archivo de credenciales por separado. Claude Code acepta pero ignora los campos `mask` en una entrada `deny`. [Enmascarar archivos de credenciales](/docs/es/sandboxing#mask-credential-files) cubre qué fuentes de configuración se respetan y cuándo una entrada pasa a `deny`.

2412 2428 

2413<span id="sandbox-credentials-files-extract" />2429<span id="sandbox-credentials-files-extract" />

2414 2430 


2426 Campos de máscara para archivos2442 Campos de máscara para archivos

2427</h4>2443</h4>

2428 2444 

2429Una entrada `mask` acepta estos campos opcionales. Sin `extract` o `decode`, Claude Code reemplaza todo el contenido del archivo con un centinela. En macOS con aislamiento del sistema de archivos activado, Claude Code aplica una entrada `mask` como `deny` antes de que se ejecute `extract` o `decode`; consulte [Mask credential files](/docs/es/sandboxing#mask-credential-files).2445Una entrada `mask` acepta estos campos opcionales. Sin `extract` ni `decode`, Claude Code reemplaza todo el contenido del archivo con un solo centinela. En macOS, con el aislamiento del sistema de archivos activado, Claude Code aplica una entrada `mask` como `deny` antes de que se ejecute `extract` o `decode`; consulta [Enmascarar archivos de credenciales](/docs/es/sandboxing#mask-credential-files).

2430 2446 

2431| Campo | Tipo | Lo que hace |2447| Campo | Tipo | Qué hace |

2432| :- | :- | :- |2448| :- | :- | :- |

2433| `extract` | string, una expresión regular con al menos un grupo de captura | Enmascare solo el texto capturado por el grupo 1 de cada coincidencia, para que el resto del archivo permanezca analizable. Con `decode` también establecido, Claude Code verifica cada captura como un JWT posible en lugar de reemplazarlo directamente. Requiere v2.1.221 o posterior |2449| `extract` | string, una expresión regular con al menos un grupo de captura | Enmascara solo el texto capturado por el grupo 1 de cada coincidencia, para que el resto del archivo siga siendo analizable. Si también se establece `decode`, Claude Code verifica cada captura como un posible JWT en lugar de reemplazarla directamente. Requiere v2.1.221 o posterior |

2434| `onExtractNoMatch` | `"warn"`, `"deny"` o `"error"`; predeterminado `"warn"` | Qué sucede cuando `extract` o `decode` no encuentra nada para enmascarar. `warn` deja el archivo legible tal como está dentro del sandbox, `deny` lo hace ilegible, y `error` detiene la configuración del sandbox hasta que corrija la configuración. Claude Code trata `deny` como `error` cuando el bloqueo de lectura no se aplicaría, porque [deshabilita el aislamiento del sistema de archivos](/docs/es/sandboxing#disable-filesystem-isolation) o una entrada [`sandbox.filesystem.allowRead`](#sandbox-filesystem-allowread) reabre la ruta. Requiere v2.1.221 o posterior; el caso `decode` requiere v2.1.224 o posterior |2450| `onExtractNoMatch` | `"warn"`, `"deny"` o `"error"`; predeterminado `"warn"` | Qué sucede cuando `extract` o `decode` no encuentra nada que enmascarar. `warn` deja el archivo legible tal cual dentro del sandbox, `deny` lo hace ilegible y `error` detiene la configuración del sandbox hasta que corrijas la configuración. Claude Code trata `deny` como `error` cuando el bloqueo de lectura no se aplicaría, porque [desactivas el aislamiento del sistema de archivos](/docs/es/sandboxing#disable-filesystem-isolation) o una entrada de [`sandbox.filesystem.allowRead`](#sandbox-filesystem-allowread) vuelve a habilitar la ruta. Requiere v2.1.221 o posterior; el caso de `decode` requiere v2.1.224 o posterior |

2435| `decode` | la cadena `"jwt"` | Encuentre JSON Web Tokens (JWTs) en el archivo, con un patrón integrado o con `extract` cuando esté establecido, verifique cada candidato y reemplácelo con un token falso estructuralmente válido, para que el código dentro del sandbox que decodifica el token siga funcionando. Cuando ningún candidato se verifica, `onExtractNoMatch` rige el resultado. Requiere v2.1.224 o posterior |2451| `decode` | la cadena `"jwt"` | Busca JSON Web Tokens (JWTs) en el archivo, con un patrón integrado o con `extract` si está establecido, verifica cada candidato y lo reemplaza con un token falso estructuralmente válido, para que el código dentro del sandbox que decodifica el token siga funcionando. Cuando ningún candidato se verifica, `onExtractNoMatch` determina el resultado. Requiere v2.1.224 o posterior |

2436| `maskClaims` | array de strings, al menos un nombre de claim; requiere `decode` | Enmascare solo los claims de carga útil de nivel superior nombrados dentro de cada JWT verificado y reconstruya el token alrededor de la carga útil modificada, para que los otros claims permanezcan legibles. Cuando ningún claim nombrado coincide, `onExtractNoMatch` rige el resultado. Requiere v2.1.224 o posterior |2452| `maskClaims` | array de strings, al menos un nombre de claim; requiere `decode` | Enmascara solo los claims de nivel superior indicados del payload de cada JWT verificado y reconstruye el token en torno al payload modificado, para que los demás claims sigan siendo legibles. Cuando ningún claim indicado coincide, `onExtractNoMatch` determina el resultado. Requiere v2.1.224 o posterior |

2437| `maskDuplicates` | Boolean, predeterminado `false` | También reemplace copias verbatim de cada valor enmascarado en otro lugar del archivo, como un secreto pegado en un comentario. Claude Code coincide con subcadenas sin procesar, así que resérvelo para secretos largos y de alta entropía. Se consulta solo cuando `extract` o `decode` está establecido. Requiere v2.1.221 o posterior |2453| `maskDuplicates` | Boolean, predeterminado `false` | Reemplaza también las copias literales de cada valor enmascarado en otras partes del archivo, como un secreto pegado en un comentario. Claude Code busca coincidencias de subcadenas sin procesar, así que resérvalo para secretos largos y de alta entropía. Solo se consulta cuando `extract` o `decode` está establecido. Requiere v2.1.221 o posterior |

2438| `injectHosts` | array de strings, cada uno un host que [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) también admite | Reduzca los hosts donde el proxy de sandbox sustituye el valor real. Cuando no está establecido, el proxy lo sustituye en solicitudes a cada host en `sandbox.network.allowedDomains`. Requiere v2.1.221 o posterior |2454| `injectHosts` | array de strings, cada uno un host que [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) también admite | Restringe los hosts en los que el proxy del sandbox sustituye el valor real. Si no está establecido, el proxy lo sustituye en las solicitudes a todos los hosts de `sandbox.network.allowedDomains`. Requiere v2.1.221 o posterior |

2439 2455 

2440Esto enmascara solo el valor `oauth_token` en el archivo de hosts `gh`, reemplaza cada otra copia de él en el archivo, hace que el archivo sea ilegible si el patrón no coincide con nada, y sustituye el token real solo en solicitudes a `api.github.com`:2456Esto enmascara solo el valor de `oauth_token` en el archivo de hosts de `gh`, reemplaza todas las demás copias de ese valor en el archivo, hace que el archivo sea ilegible si el patrón no coincide con nada y sustituye el token real solo en las solicitudes a `api.github.com`:

2441 2457 

2442```json settings.json theme={null}2458```json settings.json theme={null}

2443{2459{


2462 `sandbox.credentials.envVars`2478 `sandbox.credentials.envVars`

2463</h3>2479</h3>

2464 2480 

2465Proteja variables de entorno de comandos en sandbox. Con `"mode": "deny"`, Claude Code elimina la variable del entorno de comandos en sandbox. Con `"mode": "mask"`, los comandos en sandbox ven un valor centinela por sesión, y el proxy de sandbox sustituye el valor real en solicitudes salientes a `injectHosts` de esa entrada, para que herramientas como `gh` y `npm` sigan autenticándose sin nunca tener la credencial real. `"mode": "mask"` requiere Claude Code v2.1.199 o posterior.2481Protege variables de entorno de los comandos en sandbox. Con `"mode": "deny"`, Claude Code elimina la variable del entorno de los comandos en sandbox. Con `"mode": "mask"`, los comandos en sandbox ven un valor centinela por sesión, y el proxy del sandbox sustituye el valor real en las solicitudes salientes a los `injectHosts` de esa entrada, para que herramientas como `gh` y `npm` sigan autenticándose sin tener nunca la credencial real. `"mode": "mask"` requiere Claude Code v2.1.199 o posterior.

2466 2482 

2467* **Scope**: [`Any file`](#scopes). Claude Code descarta entradas `mask` de `.claude/settings.json` de proyecto y `.claude/settings.local.json` local.2483* **Scope**: [`Any file`](#scopes). Claude Code descarta las entradas `mask` del `.claude/settings.json` del proyecto y del `.claude/settings.local.json` local.

2468* **Type**: array de objetos, cada uno con `name` y un `mode` de `"deny"` o `"mask"`, más los [campos de máscara opcionales para variables de entorno](#mask-fields-for-environment-variables)2484* **Type**: array de objetos, cada uno con `name` y un `mode` de `"deny"` o `"mask"`, más los [campos de máscara para variables de entorno](#mask-fields-for-environment-variables) opcionales

2469* **Default**: sin establecer, por lo que no se protegen variables de entorno2485* **Default**: sin establecer, por lo que no se protege ninguna variable de entorno

2470 2486 

2471Esto elimina `NPM_TOKEN` de comandos en sandbox y enmascara `GITHUB_TOKEN`, sustituyendo el valor real solo en solicitudes a `api.github.com`:2487Esto elimina `NPM_TOKEN` de los comandos en sandbox y enmascara `GITHUB_TOKEN`, sustituyendo el valor real solo en las solicitudes a `api.github.com`:

2472 2488 

2473```json settings.json theme={null}2489```json settings.json theme={null}

2474{2490{


2483}2499}

2484```2500```

2485 2501 

2486El `name` debe comenzar con una letra o guion bajo y contener solo letras, dígitos y guiones bajos. Claude Code fusiona las matrices de todos los ámbitos de configuración que carga la sesión, y aplica `deny` cuando la misma variable aparece con ambos modos. [Protect credentials](/docs/es/sandboxing#protect-credentials) cubre lo que aún se aplica de fuentes que excluye con `--setting-sources`. Las entradas `mask` requieren Claude Code v2.1.199 o posterior.2502El `name` debe comenzar con una letra o un guion bajo y contener solo letras, dígitos y guiones bajos. Claude Code combina los arrays de todos los alcances de configuración que carga la sesión y aplica `deny` cuando la misma variable aparece con ambos modos. [Proteger credenciales](/docs/es/sandboxing#protect-credentials) cubre lo que sigue aplicándose de las fuentes que excluyes con `--setting-sources`. Las entradas `mask` requieren Claude Code v2.1.199 o posterior.

2487 2503 

2488La sustitución `mask` se ejecuta solo a través del proxy de sandbox, así que establezca [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), o [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) para redes de prueba HTTP simple; consulte [Mask environment variables](/docs/es/sandboxing#mask-environment-variables). Claude Code acepta pero ignora los campos `mask` en una entrada `deny`.2504La sustitución `mask` solo se realiza a través del proxy del sandbox, así que establece [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), o [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) para redes de prueba con HTTP simple; consulta [Enmascarar variables de entorno](/docs/es/sandboxing#mask-environment-variables). Claude Code acepta pero ignora los campos `mask` en una entrada `deny`.

2489 2505 

2490<span id="sandbox-credentials-envvars-extract" />2506<span id="sandbox-credentials-envvars-extract" />

2491 2507 


2501 Campos de máscara para variables de entorno2517 Campos de máscara para variables de entorno

2502</h4>2518</h4>

2503 2519 

2504Una entrada `mask` acepta estos campos opcionales. Sin `extract` o `decode`, Claude Code reemplaza todo el valor con un centinela. `extract` y `decode` no se pueden combinar en la misma entrada.2520Una entrada `mask` acepta estos campos opcionales. Sin `extract` ni `decode`, Claude Code reemplaza todo el valor con un solo centinela. `extract` y `decode` no se pueden combinar en la misma entrada.

2505 2521 

2506| Campo | Tipo | Lo que hace |2522| Campo | Tipo | Qué hace |

2507| :- | :- | :- |2523| :- | :- | :- |

2508| `extract` | string, una expresión regular con al menos un grupo de captura | Enmascare solo el texto capturado por el grupo 1 de cada coincidencia, como la contraseña dentro de una cadena de conexión `DATABASE_URL`, para que el resto del valor permanezca analizable. Requiere v2.1.224 o posterior |2524| `extract` | string, una expresión regular con al menos un grupo de captura | Enmascara solo el texto capturado por el grupo 1 de cada coincidencia, como la contraseña dentro de una cadena de conexión `DATABASE_URL`, para que el resto del valor siga siendo analizable. Requiere v2.1.224 o posterior |

2509| `onExtractNoMatch` | `"warn"`, `"deny"` o `"error"`; predeterminado `"warn"`. En una entrada con `decode`, solo se acepta `"warn"` | Qué sucede cuando `extract` no coincide con nada. `warn` pasa la variable sin enmascarar, `deny` la desestablece dentro del sandbox, y `error` detiene la configuración del sandbox hasta que corrija la configuración. Requiere v2.1.224 o posterior |2525| `onExtractNoMatch` | `"warn"`, `"deny"` o `"error"`; predeterminado `"warn"`. En una entrada con `decode`, solo se acepta `"warn"` | Qué sucede cuando `extract` no coincide con nada. `warn` deja pasar la variable sin enmascarar, `deny` la elimina dentro del sandbox y `error` detiene la configuración del sandbox hasta que corrijas la configuración. Requiere v2.1.224 o posterior |

2510| `decode` | la cadena `"jwt"` | Verifique que todo el valor sea un JWT y reemplácelo con un token falso estructuralmente válido, para que el código dentro del sandbox que decodifica el token siga funcionando; el proxy sustituye todo el token real en la salida. Un valor que no se verifica pasa sin enmascarar con una advertencia. Requiere v2.1.224 o posterior |2526| `decode` | la cadena `"jwt"` | Verifica que todo el valor sea un JWT y lo reemplaza con un token falso estructuralmente válido, para que el código dentro del sandbox que decodifica el token siga funcionando; el proxy sustituye todo el token real en el tráfico saliente. Un valor que no se verifica pasa sin enmascarar con una advertencia. Requiere v2.1.224 o posterior |

2511| `maskClaims` | array de strings, al menos un nombre de claim; requiere `decode` | Enmascare solo los claims de carga útil de nivel superior nombrados dentro del JWT decodificado y reconstruya el token alrededor de la carga útil modificada, para que los otros claims permanezcan legibles. Cuando ningún claim nombrado coincide, la variable pasa sin enmascarar con una advertencia. Requiere v2.1.224 o posterior |2527| `maskClaims` | array de strings, al menos un nombre de claim; requiere `decode` | Enmascara solo los claims de nivel superior indicados del payload del JWT decodificado y reconstruye el token en torno al payload modificado, para que los demás claims sigan siendo legibles. Cuando ningún claim indicado coincide, la variable pasa sin enmascarar con una advertencia. Requiere v2.1.224 o posterior |

2512| `injectHosts` | array de strings, cada uno un host que [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) también admite | Reduzca los hosts donde el proxy de sandbox sustituye el valor real. Cuando no está establecido, el proxy lo sustituye en solicitudes a cada host en `sandbox.network.allowedDomains`. Escriba un destino IPv6 como la dirección comprimida desnuda, como `"::1"`, no la forma entre corchetes; consulte [IPv6 destinations in `injectHosts`](/docs/es/sandboxing#ipv6-destinations-in-injecthosts). Requiere v2.1.199 o posterior |2528| `injectHosts` | array de strings, cada uno un host que [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) también admite | Restringe los hosts en los que el proxy del sandbox sustituye el valor real. Si no está establecido, el proxy lo sustituye en las solicitudes a todos los hosts de `sandbox.network.allowedDomains`. Escribe un destino IPv6 como la dirección comprimida sin corchetes, como `"::1"`, no en la forma entre corchetes; consulta [Destinos IPv6 en `injectHosts`](/docs/es/sandboxing#ipv6-destinations-in-injecthosts). Requiere v2.1.199 o posterior |

2513 2529 

2514Esto enmascara solo la contraseña dentro de `DATABASE_URL`, desestablece la variable si el patrón no coincide con nada, y enmascara un JWT en `SERVICE_JWT` mientras deja cada claim excepto `api_key` legible:2530Esto enmascara solo la contraseña dentro de `DATABASE_URL`, elimina la variable si el patrón no coincide con nada y enmascara un JWT en `SERVICE_JWT` dejando legibles todos los claims excepto `api_key`:

2515 2531 

2516```json settings.json theme={null}2532```json settings.json theme={null}

2517{2533{


2540 `sandbox.credentials.allowPlaintextInject`2556 `sandbox.credentials.allowPlaintextInject`

2541</h3>2557</h3>

2542 2558 

2543Permita la sustitución `mask` en solicitudes HTTP simples así como en HTTPS terminado por TLS. En HTTP simple, la identidad ascendente no se verifica y la credencial viaja en texto plano, así que deje esto desactivado fuera de redes de prueba confiables. Requiere Claude Code v2.1.199 o posterior.2559Permite la sustitución `mask` en solicitudes HTTP simples además de en HTTPS con terminación TLS. En HTTP simple, la identidad del servidor de destino no se verifica y la credencial viaja en texto plano, así que deja esto desactivado fuera de redes de prueba de confianza. Requiere Claude Code v2.1.199 o posterior.

2544 2560 

2545* **Scope**: [`User or managed`](#scopes)2561* **Scope**: [`User or managed`](#scopes)

2546* **Type**: Boolean2562* **Type**: Boolean

2547 * `true`: Claude Code permite la sustitución `mask` en solicitudes HTTP simples así como en HTTPS terminado por TLS2563 * `true`: Claude Code permite la sustitución `mask` en solicitudes HTTP simples además de en HTTPS con terminación TLS

2548 * `false`: Claude Code permite la sustitución `mask` solo en HTTPS terminado por TLS2564 * `false`: Claude Code permite la sustitución `mask` solo en HTTPS con terminación TLS

2549* **Default**: `false`2565* **Default**: `false`

2550 2566 

2551```json settings.json theme={null}2567```json settings.json theme={null}


2564 `sandbox.credentials.awsPairs`2580 `sandbox.credentials.awsPairs`

2565</h3>2581</h3>

2566 2582 

2567Agrupe variables de entorno enmascaradas que formen una credencial de AWS para [re-firmar SigV4](/docs/es/sandboxing#re-sign-aws-requests) cuando su credencial vive en variables con nombres no estándar. Claude Code vincula automáticamente el trío convencional `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` y `AWS_SESSION_TOKEN` cuando enmascara sus valores completos, así que necesita esta clave solo para otros nombres. Requiere Claude Code v2.1.224 o posterior.2583Agrupa las variables de entorno enmascaradas que forman una sola credencial de AWS para [volver a firmar con SigV4](/docs/es/sandboxing#re-sign-aws-requests) cuando tu credencial está en variables con nombres no estándar. Claude Code vincula automáticamente el trío convencional `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` y `AWS_SESSION_TOKEN` cuando enmascaras sus valores completos, así que solo necesitas esta clave para otros nombres. Requiere Claude Code v2.1.224 o posterior.

2568 2584 

2569* **Scope**: [`User or managed`](#scopes)2585* **Scope**: [`User or managed`](#scopes)

2570* **Type**: array de objetos, cada uno con `accessKeyIdVar`, `secretAccessKeyVar` y opcionalmente `sessionTokenVar`, nombrando entradas `sandbox.credentials.envVars`2586* **Type**: array de objetos, cada uno con `accessKeyIdVar`, `secretAccessKeyVar` y, opcionalmente, `sessionTokenVar`, que nombran entradas de `sandbox.credentials.envVars`

2571* **Default**: sin establecer, por lo que solo el trío convencional está emparejado2587* **Default**: sin establecer, por lo que solo se empareja el trío convencional

2572 2588 

2573Esto vincula tres variables con nombres personalizados en una credencial de AWS para re-firmar:2589Esto vincula tres variables con nombres personalizados en una sola credencial de AWS para volver a firmar:

2574 2590 

2575```json settings.json theme={null}2591```json settings.json theme={null}

2576{2592{


2588}2604}

2589```2605```

2590 2606 

2591Cada variable nombrada debe ser una entrada `mask` de valor completo en [`sandbox.credentials.envVars`](#sandbox-credentials-envvars), sin `extract` o `decode`, y puede llenar solo una ranura en todos los pares.2607Cada variable nombrada debe ser una entrada `mask` de valor completo en [`sandbox.credentials.envVars`](#sandbox-credentials-envvars), sin `extract` ni `decode`, y solo puede ocupar una posición entre todos los pares.

2592 2608 

2593<h3 id="sandbox-credentials-sigv4">2609<h3 id="sandbox-credentials-sigv4">

2594 `sandbox.credentials.sigv4`2610 `sandbox.credentials.sigv4`

2595</h3>2611</h3>

2596 2612 

2597Elija qué hace el proxy de sandbox con formas de solicitud de AWS que [no puede re-firmar](/docs/es/sandboxing#re-sign-aws-requests): `streaming` para cargas de transmisión aws-chunked, `presigned` para URLs prefirmadas y `sigv4a` para firmas asimétricas SigV4A. Esto se aplica solo a solicitudes firmadas con el ID de clave de acceso de marcador de posición de un par enmascarado. Requiere Claude Code v2.1.224 o posterior.2613Elige qué hace el proxy del sandbox con las formas de solicitud de AWS que [no puede volver a firmar](/docs/es/sandboxing#re-sign-aws-requests): `streaming` para cargas en streaming aws-chunked, `presigned` para URLs prefirmadas y `sigv4a` para firmas asimétricas SigV4A. Esto se aplica solo a solicitudes firmadas con el ID de clave de acceso de marcador de posición de un par enmascarado. Requiere Claude Code v2.1.224 o posterior.

2598 2614 

2599* **Scope**: [`User or managed`](#scopes)2615* **Scope**: [`User or managed`](#scopes)

2600* **Type**: object con `streaming`, `presigned` y `sigv4a`, cada uno de:2616* **Type**: object con `streaming`, `presigned` y `sigv4a`, cada uno con uno de estos valores:

2601 * `"deny"`: el proxy falla la solicitud2617 * `"deny"`: el proxy hace fallar la solicitud

2602 * `"passthrough"`: el proxy reenvía la solicitud firmada con el marcador de posición enmascarado, para que la herramienta reciba el rechazo propio de AWS2618 * `"passthrough"`: el proxy reenvía la solicitud firmada con el marcador de posición enmascarado, para que la herramienta reciba el rechazo propio de AWS

2603* **Default**: sin establecer, por lo que cada forma es `"deny"`2619* **Default**: sin establecer, por lo que cada forma es `"deny"`

2604 2620 

2605Esto reenvía cargas de transmisión en lugar de fallarlas en el proxy:2621Esto reenvía las cargas en streaming en lugar de hacerlas fallar en el proxy:

2606 2622 

2607```json settings.json theme={null}2623```json settings.json theme={null}

2608{2624{


2616}2632}

2617```2633```

2618 2634 

2619Con `deny`, el proxy falla la solicitud. Con `passthrough`, el proxy reenvía la solicitud con su firma calculada desde el marcador de posición enmascarado, por lo que AWS la rechaza y la herramienta que llama recibe la respuesta propia de AWS en lugar de un error de proxy.2635Con `deny`, el proxy hace fallar la solicitud. Con `passthrough`, el proxy reenvía la solicitud con su firma calculada a partir del marcador de posición enmascarado, por lo que AWS la rechaza y la herramienta que hace la llamada recibe la respuesta propia de AWS en lugar de un error del proxy.

2620 2636 

2621<h3 id="sandbox-network">2637<h3 id="sandbox-network">

2622 `sandbox.network`2638 `sandbox.network`

2623</h3>2639</h3>

2624 2640 

2625Controle qué hosts, puertos y sockets pueden alcanzar los comandos en sandbox. El sandbox enruta el tráfico saliente a través de un proxy que aplica estas listas; consulte [Network isolation](/docs/es/sandboxing#network-isolation) para saber cómo el proxy decide y cuándo solicita.2641Controla a qué hosts, puertos y sockets pueden acceder los comandos en sandbox. El sandbox enruta el tráfico saliente a través de un proxy que aplica estas listas; consulta [Aislamiento de red](/docs/es/sandboxing#network-isolation) para saber cómo decide el proxy y cuándo solicita aprobación.

2626 2642 

2627* **Scope**: [`Any file`](#scopes). `strictAllowlist`, `allowManagedDomainsOnly` y `tlsTerminate` se leen de menos fuentes, como dicen sus entradas.2643* **Scope**: [`Any file`](#scopes). `strictAllowlist`, `allowManagedDomainsOnly` y `tlsTerminate` se leen de menos fuentes, como indican sus entradas.

2628* **Type**: object con las subclaves a continuación2644* **Type**: object con las subclaves que se describen a continuación

2629* **Default**: sin establecer, por lo que no se pre-permiten dominios y el sandbox solicita cada host nuevo2645* **Default**: sin establecer, por lo que no se permite ningún dominio de antemano y tu modo de permisos decide [qué sucede con cada host nuevo](/docs/es/sandboxing#hosts-outside-your-allowed-domains)

2630 2646 

2631Esto pre-permite GitHub y npm, bloquea `uploads.github.com` y permite que los comandos se vinculen a localhost:2647Esto permite de antemano GitHub y npm, bloquea `uploads.github.com` y permite que los comandos se vinculen a localhost:

2632 2648 

2633```json settings.json theme={null}2649```json settings.json theme={null}

2634{2650{


2642}2658}

2643```2659```

2644 2660 

2645Claude Code fusiona las subclaves de matriz en todos los ámbitos de configuración y las deduplica, por lo que un proyecto puede agregar dominios a su lista de usuario. Las reglas de permiso `WebFetch(domain:...)` allow y deny [permission rules](/docs/es/sandboxing#permission-rules) alimentan las mismas listas de permiso y negación.2661Claude Code combina las subclaves de array de todos los alcances de configuración, por lo que un proyecto puede agregar dominios a tu lista de usuario a menos que se aplique un [bloqueo de repositorio](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox). Las [reglas de permisos](/docs/es/sandboxing#permission-rules) allow y deny de `WebFetch(domain:...)` alimentan las mismas listas de permitidos y denegados.

2646 2662 

2647<h3 id="sandbox-network-allowunixsockets">2663<h3 id="sandbox-network-allowunixsockets">

2648 `sandbox.network.allowUnixSockets`2664 `sandbox.network.allowUnixSockets`

2649</h3>2665</h3>

2650 2666 

2651Enumere las rutas de socket Unix a las que los comandos en sandbox pueden conectarse en macOS. Claude Code ignora esta lista en Linux y WSL2, donde el filtro seccomp no puede inspeccionar rutas de socket; use [`allowAllUnixSockets`](#sandbox-network-allowallunixsockets) en su lugar.2667Indica las rutas de socket Unix a las que pueden conectarse los comandos en sandbox en macOS. Claude Code ignora esta lista en Linux y WSL2, donde el filtro seccomp no puede inspeccionar las rutas de socket; usa [`allowAllUnixSockets`](#sandbox-network-allowallunixsockets) allí en su lugar.

2652 2668 

2653* **Scope**: [`Any file`](#scopes)2669* **Scope**: [`Any file`](#scopes), con [límites en la configuración de proyecto y local](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox)

2654* **Type**: array de strings, cada uno una ruta de socket2670* **Type**: array de strings, cada uno una ruta de socket

2655* **Default**: sin establecer, por lo que el sandbox de macOS bloquea cada socket Unix2671* **Default**: sin establecer, por lo que el sandbox de macOS bloquea todos los sockets Unix

2656 2672 

2657```json settings.json theme={null}2673```json settings.json theme={null}

2658{2674{


2664}2680}

2665```2681```

2666 2682 

2667Una ruta de socket puede otorgar acceso amplio: permitir `/var/run/docker.sock`, por ejemplo, permite que un comando en sandbox controle el daemon de Docker. Consulte [Security limitations](/docs/es/sandboxing#security-limitations).2683Una ruta de socket puede otorgar un acceso amplio: permitir `/var/run/docker.sock`, por ejemplo, permite que un comando en sandbox controle el daemon de Docker. Consulta [Limitaciones de seguridad](/docs/es/sandboxing#security-limitations).

2668 2684 

2669<h3 id="sandbox-network-allowallunixsockets">2685<h3 id="sandbox-network-allowallunixsockets">

2670 `sandbox.network.allowAllUnixSockets`2686 `sandbox.network.allowAllUnixSockets`

2671</h3>2687</h3>

2672 2688 

2673Permita que los comandos en sandbox se conecten a cada socket Unix. En Linux y WSL2, el [filtro seccomp](/docs/es/sandboxing#set-up-linux-and-wsl2) del sandbox bloquea las llamadas `socket(AF_UNIX, ...)`, por lo que esta es la única forma de permitir sockets Unix allí. Cuando falta el filtro, que `/sandbox` informa en su pestaña Dependencies, el sandbox no bloquea las llamadas de socket Unix. Consulte [Set up Linux and WSL2](/docs/es/sandboxing#set-up-linux-and-wsl2) para saber de dónde viene el filtro.2689Permite que los comandos en sandbox se conecten a todos los sockets Unix. En Linux y WSL2, el [filtro seccomp](/docs/es/sandboxing#set-up-linux-and-wsl2) del sandbox bloquea las llamadas `socket(AF_UNIX, ...)`, por lo que esta es la única forma de permitir sockets Unix allí. Cuando falta el filtro, algo que `/sandbox` informa en su pestaña Dependencies, el sandbox no bloquea las llamadas a sockets Unix. Consulta [Configurar Linux y WSL2](/docs/es/sandboxing#set-up-linux-and-wsl2) para saber de dónde proviene el filtro.

2674 2690 

2675* **Scope**: [`Any file`](#scopes)2691* **Scope**: [`Any file`](#scopes), con [límites en la configuración de proyecto y local](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox)

2676* **Type**: Boolean2692* **Type**: Boolean

2677 * `true`: los comandos en sandbox pueden conectarse a cada socket Unix2693 * `true`: los comandos en sandbox pueden conectarse a todos los sockets Unix

2678 * `false`: el sandbox bloquea conexiones de socket Unix: en macOS excepto las rutas en `allowUnixSockets`, y en Linux y WSL2 a través del filtro seccomp cuando está presente2694 * `false`: el sandbox bloquea las conexiones a sockets Unix: en macOS, excepto las rutas de `allowUnixSockets`, y en Linux y WSL2, mediante el filtro seccomp cuando está presente

2679* **Default**: `false`2695* **Default**: `false`

2680 2696 

2681```json settings.json theme={null}2697```json settings.json theme={null}


2688}2704}

2689```2705```

2690 2706 

2691En WSL2, `true` también reabre el socket de interoperabilidad que lanza binarios de Windows como `cmd.exe` y `powershell.exe`.2707En WSL2, `true` también vuelve a abrir el socket de interoperabilidad que inicia binarios de Windows como `cmd.exe` y `powershell.exe`.

2692 2708 

2693<h3 id="sandbox-network-allowlocalbinding">2709<h3 id="sandbox-network-allowlocalbinding">

2694 `sandbox.network.allowLocalBinding`2710 `sandbox.network.allowLocalBinding`

2695</h3>2711</h3>

2696 2712 

2697Permita que los comandos en sandbox se vinculen a puertos localhost en macOS, por ejemplo para iniciar un servidor de desarrollo.2713Permite que los comandos en sandbox en macOS escuchen en puertos de red, por ejemplo para iniciar un servidor de desarrollo, y se conecten a cualquier puerto de localhost. Un comando que escucha en una dirección que no es de loopback acepta conexiones de otras máquinas. La clave no tiene efecto en Linux y WSL2, donde cada comando en sandbox tiene su propia interfaz de loopback. Para acceder a un servidor del host desde Linux o WSL2, consulta [Un comando no puede acceder a un servidor en localhost](/docs/es/sandboxing#a-command-fails-to-reach-a-server-on-localhost).

2698 2714 

2699* **Scope**: [`Any file`](#scopes)2715* **Scope**: [`Any file`](#scopes), con [límites en la configuración de proyecto y local](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox)

2700* **Type**: Boolean2716* **Type**: Boolean

2701 * `true`: los comandos en sandbox pueden vincularse a puertos localhost en macOS2717 * `true`: los comandos en sandbox en macOS pueden escuchar en cualquier dirección local y conectarse a cualquier puerto de localhost

2702 * `false`: los comandos en sandbox en macOS no pueden vincularse a puertos localhost2718 * `false`: los comandos en sandbox en macOS no pueden escuchar en un puerto ni conectarse directamente a servidores en localhost

2703* **Default**: `false`2719* **Default**: `false`

2704 2720 

2705```json settings.json theme={null}2721```json settings.json theme={null}


2716 `sandbox.network.allowMachLookup`2732 `sandbox.network.allowMachLookup`

2717</h3>2733</h3>

2718 2734 

2719Enumere nombres de servicio XPC y Mach adicionales que el sandbox de macOS puede buscar. Las herramientas que se comunican sobre XPC, como el simulador de iOS o Playwright, necesitan que sus servicios se enumeren aquí.2735Indica nombres adicionales de servicios XPC y Mach que el sandbox de macOS puede buscar. Las herramientas que se comunican por XPC, como el simulador de iOS o Playwright, necesitan que sus servicios aparezcan aquí.

2720 2736 

2721* **Scope**: [`Any file`](#scopes)2737* **Scope**: [`Any file`](#scopes), con [límites en la configuración de proyecto y local](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox)

2722* **Type**: array de strings, cada uno un nombre de servicio; un único `*` final coincide con un prefijo, y `"*"` solo coincide con cada servicio2738* **Type**: array de strings, cada uno un nombre de servicio; un único `*` final coincide con un prefijo, y `"*"` por sí solo coincide con todos los servicios

2723* **Default**: sin establecer2739* **Default**: sin establecer

2724 2740 

2725Esto permite cada servicio bajo el prefijo `com.apple.coresimulator.`:2741Esto permite todos los servicios con el prefijo `com.apple.coresimulator.`:

2726 2742 

2727```json settings.json theme={null}2743```json settings.json theme={null}

2728{2744{


2738 `sandbox.network.allowedDomains`2754 `sandbox.network.allowedDomains`

2739</h3>2755</h3>

2740 2756 

2741Pre-permita dominios para tráfico saliente de comandos en sandbox, para que el sandbox no los solicite. Los comodines como `*.example.com` coinciden con subdominios, y un sufijo `:port` opcional limita una entrada a un puerto; una entrada sin puerto coincide con cada puerto.2757Permite de antemano dominios para el tráfico saliente de los comandos en sandbox, para que el sandbox no solicite aprobación para ellos. Los comodines como `*.example.com` coinciden con subdominios, y un sufijo `:port` opcional limita una entrada a un puerto; una entrada sin puerto coincide con todos los puertos.

2742 2758 

2743* **Scope**: [`Any file`](#scopes). Solo configuración administrada cuando [`allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) está establecido.2759* **Scope**: [`Any file`](#scopes), con [límites en la configuración de proyecto y local](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox). Solo la configuración administrada cuando [`allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) está establecido.

2744* **Type**: array de strings, cada uno un dominio, patrón comodín o literal IP, con un sufijo `:port` opcional2760* **Type**: array de strings, cada uno un dominio, un patrón con comodines o un literal IP, con un sufijo `:port` opcional

2745* **Default**: sin establecer, por lo que el sandbox solicita la primera vez que un comando alcanza un host nuevo2761* **Default**: sin establecer, por lo que tu modo de permisos decide [qué sucede con cada host nuevo](/docs/es/sandboxing#hosts-outside-your-allowed-domains)

2746 2762 

2747Esto pre-permite GitHub en cada puerto, cada subdominio npm y un host API en el puerto 443 solo:2763Esto permite de antemano GitHub en todos los puertos, todos los subdominios de npm y un host de API solo en el puerto 443:

2748 2764 

2749```json settings.json theme={null}2765```json settings.json theme={null}

2750{2766{


2756}2772}

2757```2773```

2758 2774 

2759Escriba literales IPv6 entre corchetes, con un puerto opcional: `"[::1]"` permite cada puerto y `"[::1]:443"` un puerto. La forma entre corchetes requiere Claude Code v2.1.229 o posterior. Consulte [IPv6 addresses in domain lists](/docs/es/sandboxing#ipv6-addresses-in-domain-lists).2775Escribe los literales IPv6 entre corchetes, con un puerto opcional: `"[::1]"` permite todos los puertos y `"[::1]:443"` un solo puerto. La forma entre corchetes requiere Claude Code v2.1.229 o posterior. Consulta [Direcciones IPv6 en las listas de dominios](/docs/es/sandboxing#ipv6-addresses-in-domain-lists).

2760 2776 

2761<h3 id="sandbox-network-denieddomains">2777<h3 id="sandbox-network-denieddomains">

2762 `sandbox.network.deniedDomains`2778 `sandbox.network.deniedDomains`

2763</h3>2779</h3>

2764 2780 

2765Bloquee dominios para tráfico saliente de comandos en sandbox, usando la misma sintaxis de comodín, puerto e IPv6 que [`allowedDomains`](#sandbox-network-alloweddomains). Un dominio denegado permanece bloqueado incluso cuando una entrada `allowedDomains` también coincide con él.2781Bloquea dominios para el tráfico saliente de los comandos en sandbox, con la misma sintaxis de comodines, puertos e IPv6 que [`allowedDomains`](#sandbox-network-alloweddomains). Un dominio denegado permanece bloqueado incluso cuando una entrada de `allowedDomains` también coincide con él.

2766 2782 

2767* **Scope**: [`Any file`](#scopes)2783* **Scope**: [`Any file`](#scopes)

2768* **Type**: array de strings, cada uno un dominio, patrón comodín o literal IP, con un sufijo `:port` opcional2784* **Type**: array de strings, cada uno un dominio, un patrón con comodines o un literal IP, con un sufijo `:port` opcional

2769* **Default**: sin establecer2785* **Default**: sin establecer

2770 2786 

2771```json settings.json theme={null}2787```json settings.json theme={null}


2778}2794}

2779```2795```

2780 2796 

2781Claude Code fusiona esta lista de cada fuente de configuración que carga la sesión incluso cuando `allowManagedDomainsOnly` está establecido, por lo que un desarrollador siempre puede restringir la lista de negación. Para literales IPv6, consulte [IPv6 addresses in domain lists](/docs/es/sandboxing#ipv6-addresses-in-domain-lists).2797Claude Code combina esta lista de todas las fuentes de configuración que carga la sesión incluso cuando `allowManagedDomainsOnly` está establecido, por lo que un desarrollador siempre puede hacer más estricta la lista de denegados. Para los literales IPv6, consulta [Direcciones IPv6 en las listas de dominios](/docs/es/sandboxing#ipv6-addresses-in-domain-lists).

2782 2798 

2783Una entrada escrita con el punto final que marca un nombre de dominio completamente calificado, como `example.com.`, bloquea las mismas conexiones que `example.com`.2799Una entrada escrita con el punto final que marca un nombre de dominio completo, como `example.com.`, bloquea las mismas conexiones que `example.com`.

2784 2800 

2785<h3 id="sandbox-network-strictallowlist">2801<h3 id="sandbox-network-strictallowlist">

2786 `sandbox.network.strictAllowlist`2802 `sandbox.network.strictAllowlist`

2787</h3>2803</h3>

2788 2804 

2789Niegue a los comandos en sandbox el acceso a hosts fuera de la lista de permiso en lugar de solicitar aprobación. La lista de permiso es [`allowedDomains`](#sandbox-network-alloweddomains) más dominios de reglas `WebFetch(domain:...)` allow, o solo las entradas de configuración administrada cuando [`allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) está establecido. Requiere Claude Code v2.1.219 o posterior.2805Deniega a los comandos en sandbox el acceso a hosts fuera de la lista de permitidos en lugar de solicitar aprobación. La lista de permitidos es [`allowedDomains`](#sandbox-network-alloweddomains) más los dominios de las reglas allow de `WebFetch(domain:...)`, o solo las entradas de la configuración administrada cuando [`allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) está establecido. [Bloqueos que se aplican sin un sandbox requerido por el administrador](/docs/es/sandboxing#locks-that-apply-without-an-admin-required-sandbox) cubre las entradas de un repositorio. Requiere Claude Code v2.1.219 o posterior.

2790 2806 

2791* **Scope**: [`User or managed`](#scopes). Un repositorio no puede activarlo o desactivarlo.2807* **Scope**: [`User or managed`](#scopes). Un repositorio no puede activarlo ni desactivarlo.

2792* **Type**: Boolean2808* **Type**: Boolean

2793 * `true`: Claude Code niega a los comandos en sandbox el acceso a hosts fuera de la lista de permiso2809 * `true`: Claude Code deniega a los comandos en sandbox el acceso a hosts fuera de la lista de permitidos

2794 * `false`: a menos que otro archivo de configuración confiable establezca `true`, Claude Code decide un host fuera de la lista de permiso por modo de permiso en lugar de negarlo directamente: en modo automático ejecuta el clasificador contra los [dominios permitidos por comando](/docs/es/sandboxing#per-command-allowed-domains-in-auto-mode), en modo `dontAsk` niega, en modo `bypassPermissions` y en sesiones de modo plan interactivo de terminal donde el bypass está disponible permite, y de otro modo pregunta2810 * `false`: a menos que otro archivo de configuración de confianza establezca `true`, Claude Code decide sobre un host fuera de la lista de permitidos según el modo de permisos en lugar de denegarlo directamente: en modo automático comprueba el host con los [dominios permitidos por comando](/docs/es/sandboxing#per-command-allowed-domains-in-auto-mode) del comando, en modo `dontAsk` lo deniega, en modo `bypassPermissions` y en sesiones interactivas de terminal en modo plan donde el bypass está disponible lo permite, y en los demás casos te pregunta

2795* **Default**: `false`2811* **Default**: `false`

2796 2812 

2797```json settings.json theme={null}2813```json settings.json theme={null}


2804}2820}

2805```2821```

2806 2822 

2807Claude Code aplica esto solo para comandos en sandbox; herramientas en proceso como `WebFetch` aún siguen sus [reglas de permiso](/docs/es/sandboxing#permission-rules). Cuando cualquiera de las fuentes honradas lo establece en `true`, permanece activado. Consulte [Network isolation](/docs/es/sandboxing#network-isolation). Requiere Claude Code v2.1.219 o posterior.2823Claude Code aplica esto solo a los comandos en sandbox; las herramientas que se ejecutan en el proceso, como `WebFetch`, siguen sus [reglas de permisos](/docs/es/sandboxing#permission-rules). Cuando cualquiera de las fuentes respetadas lo establece en `true`, permanece activado. Consulta [Aislamiento de red](/docs/es/sandboxing#network-isolation). Requiere Claude Code v2.1.219 o posterior.

2808 2824 

2809<h3 id="sandbox-network-allowmanageddomainsonly">2825<h3 id="sandbox-network-allowmanageddomainsonly">

2810 `sandbox.network.allowManagedDomainsOnly`2826 `sandbox.network.allowManagedDomainsOnly`

2811</h3>2827</h3>

2812 2828 

2813Bloquee la lista de permiso de red a lo que define la configuración administrada. Claude Code entonces honra solo `allowedDomains` y reglas `WebFetch(domain:...)` allow de configuración administrada, ignora dominios de configuración de usuario, proyecto, local y `--settings`, y bloquea automáticamente un dominio no permitido en lugar de solicitar.2829Bloquea la lista de permitidos de red a lo que define la configuración administrada. Claude Code respeta entonces solo `allowedDomains` y las reglas allow de `WebFetch(domain:...)` de la configuración administrada, ignora los dominios de la configuración de usuario, de proyecto, local y de `--settings`, y bloquea automáticamente un dominio no permitido en lugar de solicitar aprobación.

2814 2830 

2815* **Scope**: [`Managed`](#scopes)2831* **Scope**: [`Managed`](#scopes)

2816* **Type**: Boolean2832* **Type**: Boolean

2817 * `true`: Claude Code honra solo `allowedDomains` y reglas `WebFetch(domain:...)` allow de configuración administrada y bloquea automáticamente un dominio no permitido en lugar de solicitar2833 * `true`: Claude Code respeta solo `allowedDomains` y las reglas allow de `WebFetch(domain:...)` de la configuración administrada, y bloquea un dominio no permitido en lugar de solicitar aprobación

2818 * `false`: los dominios de configuración de usuario, proyecto, local y `--settings` se fusionan en la lista de permiso2834 * `false`: los dominios de otros archivos de configuración pueden combinarse en la lista de permitidos

2819* **Default**: `false`2835* **Default**: `false`

2820 2836 

2821Esto bloquea la lista de permiso a GitHub y npm e ignora cualquier dominio que agreguen los desarrolladores:2837Esto limita la lista de permitidos a GitHub y npm e ignora cualquier dominio que agreguen los desarrolladores:

2822 2838 

2823```json managed-settings.json theme={null}2839```json managed-settings.json theme={null}

2824{2840{


2831}2847}

2832```2848```

2833 2849 

2834Los dominios denegados aún se fusionan de cada fuente que carga la sesión. Consulte [Keep developers from widening the policy](/docs/es/sandboxing#keep-developers-from-widening-the-policy).2850Mientras la clave es `true`, el sandbox es [requerido por el administrador](/docs/es/sandboxing#repository-settings-under-an-admin-required-sandbox), y solo la configuración administrada puede establecer un [puerto de proxy](#sandbox-network-httpproxyport).

2851 

2852Los dominios denegados siguen combinándose de todas las fuentes que carga la sesión. Consulta [Evitar que los desarrolladores amplíen la política](/docs/es/sandboxing#keep-developers-from-widening-the-policy).

2835 2853 

2836<h3 id="sandbox-network-httpproxyport">2854<h3 id="sandbox-network-httpproxyport">

2837 `sandbox.network.httpProxyPort`2855 `sandbox.network.httpProxyPort`

2838</h3>2856</h3>

2839 2857 

2840Apunte el sandbox a su propio proxy HTTP en lugar del que ejecuta Claude Code. Las organizaciones hacen esto para inspeccionar tráfico HTTPS, aplicar sus propias reglas de filtrado o registrar cada solicitud. Cuando no está establecido, Claude Code inicia su propio proxy para tráfico HTTP.2858Apunta el sandbox a tu propio proxy HTTP en lugar del que ejecuta Claude Code. Las organizaciones hacen esto para inspeccionar el tráfico HTTPS, aplicar sus propias reglas de filtrado o registrar las solicitudes. Tu proxy se encarga del filtrado, y Claude Code deja de aplicar sus listas de dominios y sus solicitudes de red al tráfico enviado allí. Si no está establecido, Claude Code inicia su propio proxy para el tráfico HTTP.

2841 2859 

2842* **Scope**: [`Any file`](#scopes)2860* **Scope**: [`Any file`](#scopes), a menos que [otros ajustes del sandbox limiten qué archivos pueden establecer un puerto](/docs/es/sandboxing#custom-proxy-configuration)

2843* **Type**: number, un puerto TCP local2861* **Type**: number, un puerto TCP local

2844* **Default**: sin establecer, por lo que Claude Code ejecuta su propio proxy2862* **Default**: sin establecer, por lo que Claude Code ejecuta su propio proxy

2845 2863 


2853}2871}

2854```2872```

2855 2873 

2856Establezca también [`socksProxyPort`](#sandbox-network-socksproxyport) si su proxy debe llevar tráfico SOCKS también; con solo uno de los dos establecidos, Claude Code aún ejecuta su propio proxy para el otro protocolo. Consulte [Custom proxy configuration](/docs/es/sandboxing#custom-proxy-configuration).2874Establece también [`socksProxyPort`](#sandbox-network-socksproxyport) si tu proxy también debe gestionar el tráfico SOCKS; si solo estableces uno de los dos, Claude Code sigue ejecutando su propio proxy para el otro protocolo. Consulta [Configuración de proxy personalizado](/docs/es/sandboxing#custom-proxy-configuration).

2857 2875 

2858<h3 id="sandbox-network-socksproxyport">2876<h3 id="sandbox-network-socksproxyport">

2859 `sandbox.network.socksProxyPort`2877 `sandbox.network.socksProxyPort`

2860</h3>2878</h3>

2861 2879 

2862Apunte el sandbox a su propio proxy SOCKS5 en lugar del que ejecuta Claude Code. Cuando no está establecido, Claude Code inicia su propio proxy para tráfico SOCKS.2880Apunta el sandbox a tu propio proxy SOCKS5 en lugar del que ejecuta Claude Code. Tu proxy se encarga del filtrado, y Claude Code deja de aplicar sus listas de dominios y sus solicitudes de red al tráfico enviado allí. Si no está establecido, Claude Code inicia su propio proxy para el tráfico SOCKS.

2863 2881 

2864* **Scope**: [`Any file`](#scopes)2882* **Scope**: [`Any file`](#scopes), a menos que [otros ajustes del sandbox limiten qué archivos pueden establecer un puerto](/docs/es/sandboxing#custom-proxy-configuration)

2865* **Type**: number, un puerto TCP local2883* **Type**: number, un puerto TCP local

2866* **Default**: sin establecer, por lo que Claude Code ejecuta su propio proxy2884* **Default**: sin establecer, por lo que Claude Code ejecuta su propio proxy

2867 2885 


2875}2893}

2876```2894```

2877 2895 

2878Consulte [Custom proxy configuration](/docs/es/sandboxing#custom-proxy-configuration).2896Consulta [Configuración de proxy personalizado](/docs/es/sandboxing#custom-proxy-configuration).

2879 2897 

2880<h3 id="sandbox-network-tlsterminate">2898<h3 id="sandbox-network-tlsterminate">

2881 `sandbox.network.tlsTerminate`2899 `sandbox.network.tlsTerminate`

2882</h3>2900</h3>

2883 2901 

2884Haga que el proxy de sandbox termine TLS para que pueda leer el contenido de solicitudes HTTPS. Esto es experimental, y la sustitución de credenciales `mask` [credential substitution](/docs/es/sandboxing#mask-credentials) lo requiere. Establezca `{}` para generar una autoridad de certificación efímera para la sesión, o establezca `caCertPath` y `caKeyPath` para usar la suya propia.2902Haz que el proxy del sandbox termine TLS para que pueda leer el contenido de las solicitudes HTTPS. Esto es experimental, y la [sustitución de credenciales](/docs/es/sandboxing#mask-credentials) `mask` lo requiere. Establece `{}` para generar una autoridad de certificación efímera para la sesión, o establece `caCertPath` y `caKeyPath` para usar la tuya.

2885 2903 

2886* **Scope**: [`User or managed`](#scopes). Un repositorio no puede activarlo o suministrar una autoridad de certificación.2904* **Scope**: [`User or managed`](#scopes). Un repositorio no puede activarlo ni proporcionar una autoridad de certificación.

2887* **Type**: object con strings `caCertPath` y `caKeyPath` opcionales, cada uno una ruta de archivo2905* **Type**: object con los strings opcionales `caCertPath` y `caKeyPath`, cada uno una ruta de archivo

2888* **Default**: sin establecer, por lo que el proxy no termina ni inspecciona TLS2906* **Default**: sin establecer, por lo que el proxy no termina ni inspecciona TLS

2889 2907 

2890```json settings.json theme={null}2908```json settings.json theme={null}


2897}2915}

2898```2916```

2899 2917 

2900Cuando más de una fuente honrada lo establece, Claude Code usa el valor de la fuente con mayor precedencia: configuración administrada, luego la bandera `--settings`, luego configuración de usuario. Requiere Claude Code v2.1.199 o posterior.2918Cuando más de una fuente respetada lo establece, Claude Code usa el valor de la fuente con mayor precedencia: la configuración administrada, luego el flag `--settings` y luego la configuración de usuario. Requiere Claude Code v2.1.199 o posterior.

2901 2919 

2902<span id="context-and-memory" />2920<span id="context-and-memory" />

2903 2921 


4261 Hooks y automatización4279 Hooks y automatización

4262</h2>4280</h2>

4263 4281 

4264Registre hooks, restrinja qué hooks se ejecutan y controle flujos de trabajo. Para eventos y cargas útiles de hooks, consulte la [referencia de hooks](/docs/es/hooks).4282Registra hooks, restringe qué hooks se ejecutan y controla flujos de trabajo. Para eventos y cargas útiles de hooks, consulta la [referencia de hooks](/docs/es/hooks).

4265 4283 

4266<h3 id="allowedhttphookurls">4284<h3 id="allowedhttphookurls">

4267 `allowedHttpHookUrls`4285 `allowedHttpHookUrls`

4268</h3>4286</h3>

4269 4287 

4270Limite qué URLs pueden dirigirse a los [hooks HTTP](/docs/es/hooks#http-hook-fields). Cuando define esta clave, Claude Code ejecuta un hook HTTP solo si su URL coincide con uno de los patrones y bloquea el resto sin ejecutarlos; una matriz vacía bloquea cada hook HTTP.4288Limita qué URLs pueden dirigirse a los [hooks HTTP](/docs/es/hooks#http-hook-fields). Cuando defines esta clave, Claude Code ejecuta un hook HTTP solo si su URL coincide con uno de los patrones y bloquea el resto sin ejecutarlos; una matriz vacía bloquea cada hook HTTP.

4271 4289 

4272* **Alcance**: [`Any file`](#scopes). Las matrices se fusionan en los archivos de configuración.4290* **Alcance**: [`Any file`](#scopes). Las matrices se fusionan en los archivos de configuración.

4273* **Tipo**: matriz de patrones de URL, con `*` como comodín4291* **Tipo**: matriz de patrones de URL, con `*` como comodín


4287 `allowManagedHooksOnly`4305 `allowManagedHooksOnly`

4288</h3>4306</h3>

4289 4307 

4290Restrinja la ejecución de hooks solo a los hooks que implementa su organización.4308Restringe la ejecución de hooks solo a los hooks que implementa tu organización.

4291 4309 

4292* **Alcance**: [`Managed`](#scopes)4310* **Alcance**: [`Managed`](#scopes)

4293* **Tipo**: Booleano4311* **Tipo**: Booleano

4294 * `true`: solo se ejecutan hooks administrados, más hooks del Agent SDK y hooks de plugins que su configuración administrada fuerza a habilitar. Consulte [Qué se ejecuta bajo `allowManagedHooksOnly`](#what-runs-under-allowmanagedhooksonly)4312 * `true`: solo se ejecutan hooks administrados, más hooks del Agent SDK y hooks de plugins que tu configuración administrada fuerza a habilitar. Consulta [Qué se ejecuta bajo `allowManagedHooksOnly`](#what-runs-under-allowmanagedhooksonly)

4295 * `false`: se ejecutan hooks de todos los alcances de configuración y plugins4313 * `false`: se ejecutan hooks de todos los alcances de configuración y plugins

4296* **Predeterminado**: no establecido, por lo que se ejecutan hooks de todos los alcances de configuración y plugins4314* **Predeterminado**: no establecido, por lo que se ejecutan hooks de todos los alcances de configuración y plugins

4297 4315 


4305 Qué se ejecuta bajo `allowManagedHooksOnly`4323 Qué se ejecuta bajo `allowManagedHooksOnly`

4306</h4>4324</h4>

4307 4325 

4308Cuando lo establece en `true`, Claude Code cambia qué hooks y comandos similares a hooks se cargan:4326Cuando lo estableces en `true`, Claude Code cambia qué hooks y comandos similares a hooks se cargan:

4309 4327 

4310* **Se ejecutan hooks administrados y SDK**: hooks de configuración administrada y hooks que el [Agent SDK](/docs/es/agent-sdk/overview) registra en proceso4328* **Se ejecutan hooks administrados y SDK**: hooks de configuración administrada y hooks que el [Agent SDK](/docs/es/agent-sdk/overview) registra en proceso

4311* **Se ejecutan hooks de plugins forzados a habilitarse**: hooks de plugins que su configuración administrada fuerza a habilitar a través de [`enabledPlugins`](#enabledplugins). Claude Code coincide con el ID completo `plugin@marketplace`, por lo que un plugin con el mismo nombre de un marketplace diferente permanece bloqueado. Esto le permite distribuir hooks verificados a través de un marketplace de organización mientras bloquea todo lo demás. Un [mod](/docs/es/plugins/mods/overview) en tal plugin se carga solo cuando [cuenta como el de su organización](/docs/es/plugins/mods/admin#install-your-organizations-mods)4329* **Se ejecutan hooks de plugins forzados a habilitarse**: hooks de plugins que tu configuración administrada fuerza a habilitar a través de [`enabledPlugins`](#enabledplugins). Claude Code coincide con el ID completo `plugin@marketplace`, por lo que un plugin con el mismo nombre de un marketplace diferente permanece bloqueado. Esto te permite distribuir hooks verificados a través de un marketplace de organización mientras bloqueas todo lo demás. Un [mod](/docs/es/plugins/mods/overview) en tal plugin se carga solo cuando [cuenta como el de tu organización](/docs/es/plugins/mods/admin#install-your-organizations-mods)

4312* **Todo lo demás está bloqueado**: hooks de usuario, proyecto y locales, hooks y mods de otros plugins instalados, y hooks declarados en frontmatter de agente. [Los mods integrados en Claude Code](/docs/es/plugins/mods/overview#mods-built-into-claude-code) continúan ejecutándose. Para bloquear solo los mods de los usuarios, establezca [`allowManagedModsOnly`](/docs/es/plugins/mods/admin#set-options-on-the-built-in-guard) en su lugar.4330* **Todo lo demás está bloqueado**: hooks de usuario, proyecto y locales, hooks y mods de otros plugins instalados, y hooks declarados en frontmatter de agente. [Los mods integrados en Claude Code](/docs/es/plugins/mods/overview#mods-built-into-claude-code) continúan ejecutándose. Para bloquear solo los mods de los usuarios, establece [`allowManagedModsOnly`](/docs/es/plugins/mods/admin#set-options-on-the-built-in-guard) en su lugar.

4313* **Los plugins con origen de comando están deshabilitados**: Claude Code también deshabilita plugins con un [origen `command`](/docs/es/plugins/marketplace-reference#command-plugin-source), incluidos plugins forzados a habilitarse en `enabledPlugins` administrado, a menos que establezca [`disableCommandPluginSources`](#disablecommandpluginsources) explícitamente en `false`4331* **Los plugins con origen de comando están deshabilitados**: Claude Code también deshabilita plugins con un [origen `command`](/docs/es/plugins/marketplace-reference#command-plugin-source), incluidos plugins forzados a habilitarse en `enabledPlugins` administrado, a menos que establezcas [`disableCommandPluginSources`](#disablecommandpluginsources) explícitamente en `false`

4314* **Los comandos `headersHelper` del marketplace están bloqueados**: Claude Code también bloquea los comandos [`headersHelper`](/docs/es/plugins/host-marketplace#authenticate-archive-downloads) del marketplace a menos que [`disableCommandPluginSources`](#disablecommandpluginsources) esté explícitamente establecido en `false`, excepto para un marketplace que la configuración administrada declara. Requiere Claude Code v2.1.238 o posterior4332* **Los comandos `headersHelper` del marketplace están bloqueados**: Claude Code también bloquea los comandos [`headersHelper`](/docs/es/plugins/host-marketplace#authenticate-archive-downloads) del marketplace a menos que [`disableCommandPluginSources`](#disablecommandpluginsources) esté explícitamente establecido en `false`, excepto para un marketplace que la configuración administrada declara. Requiere Claude Code v2.1.238 o posterior

4315* **La línea de estado y la sugerencia de archivo se reducen a configuración administrada**: Claude Code lee [`statusLine`](/docs/es/statusline), [`fileSuggestion`](#filesuggestion) y [`subagentStatusLine`](/docs/es/statusline#subagent-status-lines) solo de configuración administrada, siguiendo las [puertas de línea de estado y sugerencia de archivo](#status-line-and-file-suggestion-gates)4333* **La línea de estado y la sugerencia de archivo se reducen a configuración administrada**: Claude Code lee [`statusLine`](/docs/es/statusline), [`fileSuggestion`](#filesuggestion) y [`subagentStatusLine`](/docs/es/statusline#subagent-status-lines) solo de configuración administrada, siguiendo las [puertas de línea de estado y sugerencia de archivo](#status-line-and-file-suggestion-gates)

4316 4334 


4320 `disableAllHooks`4338 `disableAllHooks`

4321</h3>4339</h3>

4322 4340 

4323Desactive [hooks](/docs/es/hooks#disable-or-remove-hooks), cualquier [línea de estado](/docs/es/statusline) personalizada y cualquier comando personalizado de [sugerencia de archivo](#filesuggestion). Úselo para desactivar todos estos temporalmente sin eliminarlos de su configuración.4341Desactiva [hooks](/docs/es/hooks#disable-or-remove-hooks), cualquier [línea de estado](/docs/es/statusline) personalizada y cualquier comando personalizado de [sugerencia de archivo](#filesuggestion). Úsalo para desactivar todos estos temporalmente sin eliminarlos de tu configuración.

4324 4342 

4325* **Alcance**: [`Any file`](#scopes). Solo la configuración administrada puede deshabilitar hooks administrados.4343* **Alcance**: [`Any file`](#scopes). Solo la configuración administrada puede deshabilitar hooks administrados.

4326* **Tipo**: Booleano4344* **Tipo**: Booleano


4339* **En configuración administrada**: Claude Code deshabilita cada hook configurado, incluidos los administrados, y continúa ejecutando los hooks que el [Agent SDK](/docs/es/agent-sdk/overview) registra en proceso4357* **En configuración administrada**: Claude Code deshabilita cada hook configurado, incluidos los administrados, y continúa ejecutando los hooks que el [Agent SDK](/docs/es/agent-sdk/overview) registra en proceso

4340* **En cualquier otro archivo de configuración**: Claude Code deshabilita hooks de usuario, proyecto, locales y de plugins; los hooks administrados, hooks del Agent SDK y hooks de plugins forzados a habilitarse en [`enabledPlugins`](#enabledplugins) administrado continúan ejecutándose4358* **En cualquier otro archivo de configuración**: Claude Code deshabilita hooks de usuario, proyecto, locales y de plugins; los hooks administrados, hooks del Agent SDK y hooks de plugins forzados a habilitarse en [`enabledPlugins`](#enabledplugins) administrado continúan ejecutándose

4341 4359 

4360La clave también detiene los [mods](/docs/es/plugins/mods/overview), que son plugins cuyo código registra hooks:

4361 

4362* **En configuración administrada**: se detienen los mods de cada plugin instalado, incluidos los de tu organización

4363* **En cualquier otro archivo de configuración**: se detienen los mods que instalaste, y [los mods de tu organización](/docs/es/plugins/mods/admin#install-your-organizations-mods) continúan ejecutándose

4364 

4365Los mods integrados en Claude Code continúan ejecutándose en ambos casos. Cada uno tiene [su propio interruptor](/docs/es/plugins/mods/overview#mods-built-into-claude-code).

4366 

4342Mantener los hooks del Agent SDK ejecutándose cuando la configuración administrada establece esta clave requiere Claude Code v2.1.242 o posterior.4367Mantener los hooks del Agent SDK ejecutándose cuando la configuración administrada establece esta clave requiere Claude Code v2.1.242 o posterior.

4343 4368 

4344El comando [`/goal`](/docs/es/goal) no puede ejecutarse mientras los hooks están deshabilitados, y el menú `/hooks` muestra un aviso en lugar de sus hooks.4369El comando [`/goal`](/docs/es/goal) no puede ejecutarse mientras los hooks están deshabilitados, y el menú `/hooks` muestra un aviso en lugar de tus hooks.

4345 4370 

4346<h4 id="status-line-and-file-suggestion-gates">4371<h4 id="status-line-and-file-suggestion-gates">

4347 Puertas de línea de estado y sugerencia de archivo4372 Puertas de línea de estado y sugerencia de archivo


4350Claude Code toma dos decisiones para `statusLine`, `fileSuggestion` y `subagentStatusLine`, en este orden:4375Claude Code toma dos decisiones para `statusLine`, `fileSuggestion` y `subagentStatusLine`, en este orden:

4351 4376 

4352* **Desactivado completamente**: cuando la configuración administrada establece `disableAllHooks`, o cuando la carpeta no es de confianza bajo la misma [regla de confianza del espacio de trabajo que los hooks en archivos de configuración](/docs/es/permissions#what-runs-before-you-trust-a-folder)4377* **Desactivado completamente**: cuando la configuración administrada establece `disableAllHooks`, o cuando la carpeta no es de confianza bajo la misma [regla de confianza del espacio de trabajo que los hooks en archivos de configuración](/docs/es/permissions#what-runs-before-you-trust-a-folder)

4353* **Reducido a configuración administrada**: cuando [`allowManagedHooksOnly`](#allowmanagedhooksonly) está establecido, cuando `disableAllHooks` es `true` fuera de la configuración administrada después de que se aplica la [precedencia de configuración](/docs/es/hooks#disable-or-remove-hooks), o cuando inicia Claude Code con `--safe-mode`4378* **Reducido a configuración administrada**: cuando [`allowManagedHooksOnly`](#allowmanagedhooksonly) está establecido, cuando `disableAllHooks` es `true` fuera de la configuración administrada después de que se aplica la [precedencia de configuración](/docs/es/hooks#disable-or-remove-hooks), o cuando inicias Claude Code con `--safe-mode`

4354 4379 

4355Bajo reducción, Claude Code ejecuta un valor administrado si uno está implementado. De lo contrario, omite su valor sin advertencia: la línea de estado está deshabilitada y el autocompletado `@` vuelve a la sugerencia de archivo integrada.4380Bajo reducción, Claude Code ejecuta un valor administrado si uno está implementado. De lo contrario, omite tu valor sin advertencia: la línea de estado está deshabilitada y el autocompletado `@` vuelve a la sugerencia de archivo integrada.

4356 4381 

4357<h3 id="disableworkflows">4382<h3 id="disableworkflows">

4358 `disableWorkflows`4383 `disableWorkflows`

4359</h3>4384</h3>

4360 4385 

4361Desactive [flujos de trabajo dinámicos](/docs/es/workflows#turn-workflows-off) y los comandos de flujo de trabajo incluidos para todos los que alcanza su configuración, como una organización a través de configuración administrada. Para activar o desactivar flujos de trabajo solo para usted, use [`enableWorkflows`](#enableworkflows) en su lugar, que el interruptor **Dynamic workflows** en `/config` escribe en su configuración de usuario.4386Desactiva [flujos de trabajo dinámicos](/docs/es/workflows#turn-workflows-off) y los comandos de flujo de trabajo incluidos para todos los que alcanza tu configuración, como una organización a través de configuración administrada. Para activar o desactivar flujos de trabajo solo para ti, usa [`enableWorkflows`](#enableworkflows) en su lugar, que el interruptor **Dynamic workflows** en `/config` escribe en tu configuración de usuario.

4362 4387 

4363* **Alcance**: [`Any file`](#scopes)4388* **Alcance**: [`Any file`](#scopes)

4364* **Tipo**: Booleano4389* **Tipo**: Booleano

4365 * `true`: Claude Code desactiva flujos de trabajo dinámicos y los comandos de flujo de trabajo incluidos para todos los que alcanza su configuración4390 * `true`: Claude Code desactiva flujos de trabajo dinámicos y los comandos de flujo de trabajo incluidos para todos los que alcanza tu configuración

4366 * `false`: lo mismo que no establecido; si los flujos de trabajo están activados entonces sigue [`enableWorkflows`](#enableworkflows) y el predeterminado de su plan4391 * `false`: lo mismo que no establecido; si los flujos de trabajo están activados entonces sigue [`enableWorkflows`](#enableworkflows) y el predeterminado de tu plan

4367* **Predeterminado**: `false`4392* **Predeterminado**: `false`

4368* **Anulaciones por sesión**: [`CLAUDE_CODE_DISABLE_WORKFLOWS`](/docs/es/env-vars) desactiva flujos de trabajo para una sesión; cualquiera de los dos que los desactive, el otro no puede volver a activarlos4393* **Sobrescrituras por sesión**: [`CLAUDE_CODE_DISABLE_WORKFLOWS`](/docs/es/env-vars) desactiva flujos de trabajo para una sesión; cualquiera de los dos que los desactive, el otro no puede volver a activarlos

4369 4394 

4370```json settings.json theme={null}4395```json settings.json theme={null}

4371{4396{


4377 `enableWorkflows`4402 `enableWorkflows`

4378</h3>4403</h3>

4379 4404 

4380Active o desactive [flujos de trabajo dinámicos](/docs/es/workflows) para usted cuando el predeterminado de su plan no sea lo que desea. Aparece en `/config` como **Dynamic workflows**, que escribe esta clave en su configuración de usuario y la elimina nuevamente cuando alterna al predeterminado de su plan. Para desactivar flujos de trabajo para todos desde la configuración administrada, use [`disableWorkflows`](#disableworkflows) en su lugar.4405Activa o desactiva [flujos de trabajo dinámicos](/docs/es/workflows) para ti cuando el predeterminado de tu plan no sea lo que deseas. Aparece en `/config` como **Dynamic workflows**, que escribe esta clave en tu configuración de usuario y la elimina nuevamente cuando alternas al predeterminado de tu plan. Para desactivar flujos de trabajo para todos desde la configuración administrada, usa [`disableWorkflows`](#disableworkflows) en su lugar.

4381 4406 

4382* **Alcance**: [`Any file`](#scopes)4407* **Alcance**: [`Any file`](#scopes)

4383* **Tipo**: Booleano4408* **Tipo**: Booleano

4384 * `true`: Claude Code activa flujos de trabajo dinámicos para usted4409 * `true`: Claude Code activa flujos de trabajo dinámicos para ti

4385 * `false`: Claude Code desactiva flujos de trabajo dinámicos para usted4410 * `false`: Claude Code desactiva flujos de trabajo dinámicos para ti

4386* **Predeterminado**: no establecido, por lo que los flujos de trabajo están activados a menos que esté en el plan Pro, donde están desactivados4411* **Predeterminado**: no establecido, por lo que los flujos de trabajo están activados a menos que estés en el plan Pro, donde están desactivados

4387* **Anulaciones por sesión**: [`CLAUDE_CODE_DISABLE_WORKFLOWS`](/docs/es/env-vars) desactiva flujos de trabajo para una sesión, y `true` aquí no puede volver a activarlos mientras esté establecido4412* **Sobrescrituras por sesión**: [`CLAUDE_CODE_DISABLE_WORKFLOWS`](/docs/es/env-vars) desactiva flujos de trabajo para una sesión, y `true` aquí no puede volver a activarlos mientras esté establecido

4388 4413 

4389```json settings.json theme={null}4414```json settings.json theme={null}

4390{4415{


4392}4417}

4393```4418```

4394 4419 

4395[`disableWorkflows`](#disableworkflows) y la política de flujos de trabajo de su organización también tienen precedencia: `enableWorkflows: true` no puede volver a activar flujos de trabajo mientras alguna fuente los desactiva. Claude Code oculta la fila `/config` mientras una fuente que no sea su configuración de usuario establece `enableWorkflows`, o establece `disableWorkflows` en `true`.4420[`disableWorkflows`](#disableworkflows) y la política de flujos de trabajo de tu organización también tienen precedencia: `enableWorkflows: true` no puede volver a activar flujos de trabajo mientras alguna fuente los desactiva. Claude Code oculta la fila `/config` mientras una fuente que no sea tu configuración de usuario establece `enableWorkflows`, o establece `disableWorkflows` en `true`.

4396 4421 

4397<h3 id="hooks">4422<h3 id="hooks">

4398 `hooks`4423 `hooks`

4399</h3>4424</h3>

4400 4425 

4401Ejecute sus propios comandos, prompts, agentes, solicitudes HTTP o herramientas MCP como [hooks](/docs/es/hooks) en puntos del ciclo de vida de Claude Code, como antes de una llamada de herramienta o cuando comienza una sesión; la [referencia de hooks](/docs/es/hooks#hook-events) enumera cada evento, su carga útil y sus códigos de salida. Cada evento se asigna a una lista de grupos de coincidencia, y cada grupo enumera los controladores a ejecutar cuando se aplica la coincidencia.4426Ejecuta tus propios comandos, prompts, agentes, solicitudes HTTP o herramientas MCP como [hooks](/docs/es/hooks) en puntos del ciclo de vida de Claude Code, como antes de una llamada a herramienta o cuando comienza una sesión; la [referencia de hooks](/docs/es/hooks#hook-events) enumera cada evento, su payload y sus códigos de salida. Cada evento se asigna a una lista de grupos de matchers, y cada grupo enumera los controladores a ejecutar cuando se aplica el matcher.

4402 4427 

4403* **Alcance**: [`Any file`](#scopes). Los hooks se fusionan en archivos en lugar de reemplazarse entre sí, y los hooks de configuración administrada no se pueden eliminar de otros archivos.4428* **Alcance**: [`Any file`](#scopes). Los hooks se combinan entre archivos en lugar de reemplazarse entre sí, y los hooks de configuración administrada no se pueden eliminar desde otros archivos.

4404* **Tipo**: objeto codificado por [evento de hook](/docs/es/hooks#hook-events); cada valor es una matriz de grupos `{ "matcher", "hooks" }` cuyas entradas `hooks` tienen un `type` de `"command"`, `"prompt"`, `"agent"`, `"http"` o `"mcp_tool"`4429* **Tipo**: objeto codificado por [evento de hook](/docs/es/hooks#hook-events); cada valor es una matriz de grupos `{ "matcher", "hooks" }` cuyas entradas `hooks` tienen un `type` de `"command"`, `"prompt"`, `"agent"`, `"http"` o `"mcp_tool"`

4405* **Predeterminado**: no establecido, por lo que no se ejecutan hooks4430* **Predeterminado**: no establecido, por lo que no se ejecutan hooks

4406 4431 

4407Este ejemplo ejecuta un script antes de cada llamada de herramienta Bash:4432Este ejemplo ejecuta un script antes de cada llamada a la herramienta Bash:

4408 4433 

4409```json settings.json theme={null}4434```json settings.json theme={null}

4410{4435{


4421}4446}

4422```4447```

4423 4448 

4424Para cada evento, patrón de coincidencia y campo de controlador, consulte la [referencia de hooks](/docs/es/hooks#configuration). Para desactivar hooks, consulte [`disableAllHooks`](#disableallhooks); para limitar hooks a los que implementa su organización, consulte [`allowManagedHooksOnly`](#allowmanagedhooksonly).4449Para cada evento, patrón de matcher y campo de controlador, consulta la [referencia de hooks](/docs/es/hooks#configuration). Para desactivar hooks, consulta [`disableAllHooks`](#disableallhooks); para limitar hooks a los que implementa tu organización, consulta [`allowManagedHooksOnly`](#allowmanagedhooksonly).

4425 4450 

4426<h3 id="httphookallowedenvvars">4451<h3 id="httphookallowedenvvars">

4427 `httpHookAllowedEnvVars`4452 `httpHookAllowedEnvVars`

4428</h3>4453</h3>

4429 4454 

4430Un [hook HTTP](/docs/es/hooks#http-hook-fields) puede poner el valor de una variable de entorno en un encabezado de solicitud, por ejemplo un encabezado `Authorization: Bearer $HOOK_TOKEN`, pero solo para variables que el hook enumera en su propio `allowedEnvVars`. Esta clave establece un límite externo en esa lista para cada hook HTTP: un hook puede usar una variable solo si tanto su propio `allowedEnvVars` como esta clave la nombran. Úselo para evitar que un hook lea un secreto que no debería, incluso cuando la definición del hook lo solicita.4455Un [hook HTTP](/docs/es/hooks#http-hook-fields) puede poner el valor de una variable de entorno en un encabezado de solicitud, por ejemplo un encabezado `Authorization: Bearer $HOOK_TOKEN`, pero solo para variables que el hook enumera en su propio `allowedEnvVars`. Esta clave establece un límite externo en esa lista para cada hook HTTP: un hook puede usar una variable solo si tanto su propio `allowedEnvVars` como esta clave la nombran. Úsala para evitar que un hook lea un secreto que no debería, incluso cuando la definición del hook lo solicita.

4431 4456 

4432* **Alcance**: [`Any file`](#scopes). Las matrices se fusionan en los archivos de configuración.4457* **Alcance**: [`Any file`](#scopes). Las matrices se fusionan en los archivos de configuración.

4433* **Tipo**: matriz de nombres de variables de entorno4458* **Tipo**: matriz de nombres de variables de entorno


4447 `workflowKeywordTriggerEnabled`4472 `workflowKeywordTriggerEnabled`

4448</h3>4473</h3>

4449 4474 

4450Elija si escribir la palabra clave `ultracode` en un prompt activa un [flujo de trabajo dinámico](/docs/es/workflows#ask-for-a-workflow-in-your-prompt). Establézcalo en `false` para escribir la palabra sin activar uno.4475Elige si escribir la palabra clave `ultracode` en un prompt activa un [flujo de trabajo dinámico](/docs/es/workflows#ask-for-a-workflow-in-your-prompt). Establécelo en `false` para escribir la palabra sin activar uno.

4451 4476 

4452* **Alcance**: [`Any file`](#scopes). Aparece en `/config` como **Ultracode keyword trigger**.4477* **Alcance**: [`Any file`](#scopes). Aparece en `/config` como **Ultracode keyword trigger**.

4453* **Tipo**: Booleano4478* **Tipo**: Booleano

4454 * `true`: escribir `ultracode` en un prompt activa un flujo de trabajo dinámico4479 * `true`: escribir `ultracode` en un prompt activa un flujo de trabajo dinámico

4455 * `false`: puede escribir la palabra sin activar uno4480 * `false`: puedes escribir la palabra sin activar uno

4456* **Predeterminado**: `true`4481* **Predeterminado**: `true`

4457 4482 

4458```json settings.json theme={null}4483```json settings.json theme={null}


4461}4486}

4462```4487```

4463 4488 

4464La configuración de esfuerzo `ultracode`, `/workflows` y los comandos de flujo de trabajo guardados no se ven afectados.4489El ajuste de esfuerzo `ultracode`, `/workflows` y los comandos de flujo de trabajo guardados no se ven afectados.

4465 4490 

4466<h3 id="workflowsizeguideline">4491<h3 id="workflowsizeguideline">

4467 `workflowSizeGuideline`4492 `workflowSizeGuideline`

4468</h3>4493</h3>

4469 4494 

4470Establezca el [recuento de agentes al que Claude apunta](/docs/es/workflows#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. Elija `"small"` cuando desee limitar lo que gasta un flujo de trabajo. Requiere Claude Code v2.1.219 o posterior.4495Establece el [recuento de agentes al que Claude apunta](/docs/es/workflows#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.

4471 4496 

4472* **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.4497* **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.

4473* **Tipo**: cadena, una de:4498* **Tipo**: cadena, una de:


4475 * `"small"`: Claude apunta a menos de 5 agentes4500 * `"small"`: Claude apunta a menos de 5 agentes

4476 * `"medium"`: Claude apunta a menos de 10 agentes4501 * `"medium"`: Claude apunta a menos de 10 agentes

4477 * `"large"`: Claude apunta a menos de 50 agentes4502 * `"large"`: Claude apunta a menos de 50 agentes

4478* **Predeterminado**: `"medium"`, o `"small"` cuando está conectado en un plan Pro con Claude Code v2.1.271 o posterior4503* **Predeterminado**: `"medium"`, o `"small"` cuando has iniciado sesión en un plan Pro con Claude Code v2.1.271 o posterior

4479 4504 

4480```json settings.json theme={null}4505```json settings.json theme={null}

4481{4506{


4483}4508}

4484```4509```

4485 4510 

4486Requiere Claude Code v2.1.219 o posterior; en v2.1.202 a v2.1.218, establezca la directriz en `/config` en su lugar.4511Requiere Claude Code v2.1.219 o posterior; en v2.1.202 a v2.1.218, establece la directriz en `/config` en su lugar.

4487 4512 

4488<span id="plugin-configuration" />4513<span id="plugin-configuration" />

4489 4514 


5924 Autenticación y proveedores5949 Autenticación y proveedores

5925</h2>5950</h2>

5926 5951 

5927Proporcione credenciales a través de scripts auxiliares y, para organizaciones, fuerce un método de inicio de sesión u organización. Consulte [Autenticación](/docs/es/authentication).5952Proporciona credenciales a través de scripts auxiliares y, para organizaciones, fuerza un método de inicio de sesión u organización. Consulta [Autenticación](/docs/es/authentication).

5928 5953 

5929<h3 id="allowedproviders">5954<h3 id="allowedproviders">

5930 `allowedProviders`5955 `allowedProviders`

5931</h3>5956</h3>

5932 5957 

5933Liste los servicios a través de los cuales una máquina puede acceder a Claude, como la API de Anthropic, Amazon Bedrock, o una puerta de enlace LLM. Una sesión en un proveedor que no está listado se rechaza al inicio, al iniciar sesión, y cuando contacta a continuación con la API, por lo que cambiar a un proveedor no listado a mitad de sesión también se rechaza. El [mensaje de rechazo](/docs/es/errors#managed-settings-dont-allow-this-api-provider) nombra lo que seleccionó el proveedor y los pasos para continuar. Requiere Claude Code v2.1.285 o posterior.5958Enumera los servicios a través de los cuales una máquina puede acceder a Claude, como la API de Anthropic, Amazon Bedrock o un gateway de LLM. Una sesión en un proveedor que no está en la lista se rechaza al inicio, al iniciar sesión y la próxima vez que contacta con la API, por lo que cambiar a un proveedor no listado a mitad de sesión también se rechaza. El [mensaje de rechazo](/docs/es/errors#managed-settings-dont-allow-this-api-provider) indica qué seleccionó el proveedor y los pasos para continuar. Requiere Claude Code v2.1.285 o posterior.

5934 5959 

5935* **Scope**: [`Managed`](#scopes). Una lista que las fuentes de administrador propias de la máquina establecen, las políticas MDM y los archivos de configuración administrada, sigue aplicándose cuando la configuración administrada por servidor también entrega una: una sesión puede entonces usar solo los proveedores en ambas listas, por lo que una lista administrada por servidor puede reducir lo que la máquina permite pero nunca ampliarlo. Cuál `allowedProviders` de la fuente de la máquina cuenta sigue [cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources). Una lista entregada solo a través de configuración administrada por servidor llega solo a las sesiones que [obtienen configuración administrada por servidor](/docs/es/server-managed-settings#platform-availability).5960* **Scope**: [`Managed`](#scopes). Una lista que establecen las fuentes de administrador propias de la máquina, las políticas MDM y los archivos de configuración administrada, sigue aplicándose cuando la configuración administrada por servidor también entrega una: una sesión puede entonces usar solo los proveedores que figuran en ambas listas, por lo que una lista administrada por servidor puede reducir lo que la máquina permite pero nunca ampliarlo. Qué `allowedProviders` de las fuentes de la máquina cuenta sigue [cómo Claude Code combina las fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources). Una lista entregada solo a través de la configuración administrada por servidor llega únicamente a las sesiones que [obtienen la configuración administrada por servidor](/docs/es/server-managed-settings#platform-availability).

5936* **Type**: matriz de strings, cada uno de:5961* **Type**: matriz de strings, cada uno de:

5937 * `"anthropic"`: la API de Anthropic en el host propio de Anthropic, a través de un inicio de sesión de claude.ai o Console o una clave de API. Emparéjelo con [`forceLoginMethod`](#forceloginmethod) o [`forceLoginOrgUUID`](#forceloginorguuid) para también restringir el inicio de sesión5962 * `"anthropic"`: la API de Anthropic en el host propio de Anthropic, a través de un inicio de sesión de claude.ai o Console o una clave de API. Combínalo con [`forceLoginMethod`](#forceloginmethod) o [`forceLoginOrgUUID`](#forceloginorguuid) para restringir también el inicio de sesión

5938 * `"bedrock"`: [Amazon Bedrock](/docs/es/amazon-bedrock)5963 * `"bedrock"`: [Amazon Bedrock](/docs/es/amazon-bedrock)

5939 * `"vertex"`: [Plataforma de Agente de Google Cloud](/docs/es/google-vertex-ai), anteriormente Vertex AI5964 * `"vertex"`: [Agent Platform de Google Cloud](/docs/es/google-vertex-ai), anteriormente Vertex AI

5940 * `"foundry"`: [Microsoft Foundry](/docs/es/microsoft-foundry)5965 * `"foundry"`: [Microsoft Foundry](/docs/es/microsoft-foundry)

5941 * `"anthropicAws"`: [Plataforma Claude en AWS](/docs/es/claude-platform-on-aws)5966 * `"anthropicAws"`: [Claude Platform on AWS](/docs/es/claude-platform-on-aws)

5942 * `"mantle"`: el punto de conexión [Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint) de Amazon Bedrock. Una sesión que [ejecuta Mantle junto con la API de Invoke](/docs/es/amazon-bedrock#run-mantle-alongside-the-invoke-api) usa ambos proveedores, por lo que liste `"bedrock"` y `"mantle"` juntos para ella5967 * `"mantle"`: el [endpoint Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint) de Amazon Bedrock. Una sesión que [ejecuta Mantle junto con la API de Invoke](/docs/es/amazon-bedrock#run-mantle-alongside-the-invoke-api) usa ambos proveedores, así que incluye `"bedrock"` y `"mantle"` juntos para ella

5943 * `"customEndpoint"`: la API de Anthropic o la API de un proveedor en la nube enviada a otro host, como una [puerta de enlace LLM](/docs/es/llm-gateway) nombrada por `ANTHROPIC_BASE_URL`, una variable `ANTHROPIC_*_BASE_URL` del proveedor, o un valor `ANTHROPIC_FOUNDRY_RESOURCE` que no es un nombre de recurso simple. Claude Code lo admite solo para el valor exacto que un bloque [`env`](#env) administrado fija5968 * `"customEndpoint"`: la API de Anthropic o la API de un proveedor en la nube enviada a otro host, como un [gateway de LLM](/docs/es/llm-gateway) indicado por `ANTHROPIC_BASE_URL`, la variable `ANTHROPIC_*_BASE_URL` de un proveedor, o un valor de `ANTHROPIC_FOUNDRY_RESOURCE` que no es un simple nombre de recurso. Claude Code lo admite solo para el valor exacto que fija un bloque [`env`](#env) administrado

5944 * `"gateway"`: un inicio de sesión de [puerta de enlace en la nube](/docs/es/claude-apps-gateway)5969 * `"gateway"`: un inicio de sesión de [Cloud gateway](/docs/es/claude-apps-gateway)

5945* **Default**: sin establecer, por lo que se puede usar cualquier proveedor5970* **Default**: sin establecer, por lo que se puede usar cualquier proveedor

5946 5971 

5947```json managed-settings.json theme={null}5972```json managed-settings.json theme={null}


5950}5975}

5951```5976```

5952 5977 

5953La entrada de cada proveedor en la nube significa el servicio propio de ese proveedor, incluidos sus puntos de conexión regionales, FIPS y privados.5978La entrada de cada proveedor en la nube significa el servicio propio de ese proveedor, incluidos sus endpoints regionales, FIPS y privados.

5954 5979 

5955Una entrada que Claude Code no reconoce como un nombre de proveedor se descarta y se informa, y el resto de la lista se mantiene aplicada. Con una lista vacía, o una cuya cada entrada no es reconocida, Claude Code rechaza cada proveedor y no inicia en la máquina.5980Una entrada que Claude Code no reconoce como nombre de proveedor se descarta y se informa, y el resto de la lista se sigue aplicando. Con una lista vacía, o una en la que ninguna entrada se reconoce, Claude Code rechaza todos los proveedores y no se inicia en la máquina.

5956 5981 

5957<h4 id="endpoints-that-need-a-pin-in-managed-env">5982<h4 id="endpoints-that-need-a-pin-in-managed-env">

5958 Puntos de conexión que necesitan un fijo en `env` administrado5983 Endpoints que necesitan un valor fijado en `env` administrado

5959</h4>5984</h4>

5960 5985 

5961Un fijo es el valor de una variable de punto de conexión establecido en un bloque [`env`](#env) administrado. Cuando una sesión envía el tráfico de un proveedor a algún lugar que no sea el servicio propio de ese proveedor, Claude Code lo admite solo si el valor de la sesión es el mismo que el fijo. Estos puntos de conexión necesitan uno:5986Un valor fijado es el valor de una variable de endpoint establecido en un bloque [`env`](#env) administrado. Cuando una sesión envía el tráfico de un proveedor a algún lugar distinto del servicio propio de ese proveedor, Claude Code lo admite solo si el valor de la sesión coincide con el valor fijado. Estos endpoints necesitan uno:

5962 5987 

5963* **Sesiones `"customEndpoint"`**: la variable que nombra el host, como `ANTHROPIC_BASE_URL`5988* **Sesiones `"customEndpoint"`**: la variable que indica el host, como `ANTHROPIC_BASE_URL`

5964* **Amazon Bedrock**: las variables `AWS_ENDPOINT_URL`, `AWS_ENDPOINT_URL_BEDROCK`, y `AWS_ENDPOINT_URL_BEDROCK_RUNTIME` del SDK de AWS cuando apuntan fuera del servicio propio de Bedrock. La sesión permanece bajo `"bedrock"` en lugar de `"customEndpoint"`5989* **Amazon Bedrock**: las variables `AWS_ENDPOINT_URL`, `AWS_ENDPOINT_URL_BEDROCK` y `AWS_ENDPOINT_URL_BEDROCK_RUNTIME` del SDK de AWS cuando apuntan fuera del servicio propio de Bedrock. La sesión permanece bajo `"bedrock"` en lugar de `"customEndpoint"`

5965* **URL de inicio de sesión de una puerta de enlace**: la sesión permanece bajo `"gateway"`, y [`forceLoginGatewayUrl`](#forcelogingatewayurl) también cuenta como el fijo5990* **La URL de un inicio de sesión de gateway**: la sesión permanece bajo `"gateway"`, y [`forceLoginGatewayUrl`](#forcelogingatewayurl) también cuenta como valor fijado

5966 5991 

5967Cuáles bloques `env` cuentan como fijos depende de dónde se establezca la lista:5992Qué bloques `env` cuentan como valores fijados depende de dónde se establezca la lista:

5968 5993 

5969* **Una fuente de administrador en la máquina establece una lista**: solo los bloques `env` de las fuentes de administrador propias de la máquina cuentan5994* **Una fuente de administrador en la máquina establece una lista**: solo cuentan los bloques `env` de las fuentes de administrador propias de la máquina

5970* **Solo la configuración administrada por servidor establece una lista**: un valor `env` en esa configuración administrada por servidor también cuenta5995* **Solo la configuración administrada por servidor establece una lista**: un valor de `env` en esa configuración administrada por servidor también cuenta

5971 5996 

5972La lista no juzga las variables de credencial y tenencia de un proveedor en la nube o la ruta de red, como `HTTPS_PROXY` y la configuración de certificados. Establezca esos para la flota en el bloque `env` administrado.5997La lista no evalúa las variables de credenciales y tenencia de un proveedor en la nube ni la ruta de red, como `HTTPS_PROXY` y la configuración de certificados. Establécelas para toda la flota en el bloque `env` administrado.

5973 5998 

5974<h3 id="apikeyhelper">5999<h3 id="apikeyhelper">

5975 `apiKeyHelper`6000 `apiKeyHelper`

5976</h3>6001</h3>

5977 6002 

5978Ejecute su propio comando para producir la credencial que Claude Code envía con solicitudes de modelo. Claude Code ejecuta el comando a través del shell del sistema, `/bin/sh` en macOS y Linux y `cmd` en Windows, y envía su salida como encabezados `X-Api-Key` y `Authorization: Bearer`. Úselo para credenciales dinámicas o rotativas, como tokens de corta duración obtenidos de un almacén.6003Ejecuta tu propio comando para producir la credencial que Claude Code envía con las solicitudes al modelo. Claude Code ejecuta el comando a través del shell del sistema, `/bin/sh` en macOS y Linux y `cmd` en Windows, y envía su salida como encabezados `X-Api-Key` y `Authorization: Bearer`. Úsalo para credenciales dinámicas o rotativas, como tokens de corta duración obtenidos de un almacén.

5979 6004 

5980* **Scope**: [`Any file`](#scopes)6005* **Scope**: [`Any file`](#scopes)

5981* **Type**: string, una línea de comando del shell6006* **Type**: string, una línea de comando del shell


5989 6014 

5990Claude Code almacena en caché el valor y vuelve a ejecutar el comando en estos casos:6015Claude Code almacena en caché el valor y vuelve a ejecutar el comando en estos casos:

5991 6016 

5992* Después de la duración del caché, cinco minutos por defecto o el intervalo que establezca con [`CLAUDE_CODE_API_KEY_HELPER_TTL_MS`](/docs/es/env-vars).6017* Después de la duración de la caché, cinco minutos por defecto o el intervalo que establezcas con [`CLAUDE_CODE_API_KEY_HELPER_TTL_MS`](/docs/es/env-vars).

5993* Cuando una solicitud a la API de Anthropic, directamente o a través de una [puerta de enlace LLM](/docs/es/llm-gateway), falla con `401` o `403`.6018* Cuando una solicitud a la API de Anthropic, directamente o a través de un [gateway de LLM](/docs/es/llm-gateway), falla con `401` o `403`.

5994* Antes de enviar una solicitud a la API de Anthropic, directamente o a través de una puerta de enlace LLM, cuando la salida almacenada en caché es un JWT que expiró después de que el auxiliar lo produjo. Requiere Claude Code v2.1.246 o posterior.6019* Antes de enviar una solicitud a la API de Anthropic, directamente o a través de un gateway de LLM, cuando la salida almacenada en caché es un JWT que expiró después de que el auxiliar lo produjo. Requiere Claude Code v2.1.246 o posterior.

5995 6020 

5996Los dos últimos casos se aplican solo cuando la salida del auxiliar es la credencial que Claude Code envía y `ANTHROPIC_AUTH_TOKEN` no está establecido.6021Los dos últimos casos se aplican solo cuando la salida del auxiliar es la credencial que Claude Code envía y `ANTHROPIC_AUTH_TOKEN` no está establecido.

5997 6022 

5998En sesiones interactivas, cuando el comando proviene de la configuración del proyecto o local, Claude Code no lo ejecuta hasta que acepte el mensaje de confianza del espacio de trabajo. Consulte [Gestión de credenciales](/docs/es/authentication#credential-management).6023En sesiones interactivas, cuando el comando proviene de la configuración del proyecto o local, Claude Code no lo ejecuta hasta que aceptes la solicitud de confianza del espacio de trabajo. Consulta [Gestión de credenciales](/docs/es/authentication#credential-management).

5999 6024 

6000<h3 id="awsauthrefresh">6025<h3 id="awsauthrefresh">

6001 `awsAuthRefresh`6026 `awsAuthRefresh`

6002</h3>6027</h3>

6003 6028 

6004Ejecute su propio comando, como `aws sso login`, para actualizar las credenciales en su directorio `.aws` cuando las que Claude Code tiene para [Amazon Bedrock](/docs/es/amazon-bedrock) dejen de funcionar. Claude Code verifica las credenciales actuales contra STS primero y ejecuta el comando solo cuando esa verificación falla, luego lee el directorio `.aws` actualizado.6029Ejecuta tu propio comando, como `aws sso login`, para actualizar las credenciales de tu directorio `.aws` cuando las que Claude Code tiene para [Amazon Bedrock](/docs/es/amazon-bedrock) dejen de funcionar. Claude Code verifica primero las credenciales actuales contra STS y ejecuta el comando solo cuando esa verificación falla; luego lee el directorio `.aws` actualizado.

6030 

6031Cuando la verificación falla al mismo tiempo en varios procesos de Claude Code que usan el mismo comando y las mismas credenciales, como terminales o ventanas del IDE separadas, un proceso ejecuta el comando y los demás esperan a esa ejecución en lugar de iniciar la suya. Un proceso que ha esperado 60 segundos con una solicitud pendiente ejecuta el comando por sí mismo. Para desactivar esto, establece [`CLAUDE_CODE_DISABLE_AUTH_REFRESH_LOCK`](/docs/es/env-vars) en `1`.

6005 6032 

6006* **Scope**: [`Any file`](#scopes)6033* **Scope**: [`Any file`](#scopes)

6007* **Type**: string, una línea de comando del shell6034* **Type**: string, una línea de comando del shell

6008* **Default**: sin establecer, por lo que Claude Code no actualiza las credenciales de AWS para usted6035* **Default**: sin establecer, por lo que Claude Code no actualiza las credenciales de AWS por ti

6009 6036 

6010```json settings.json theme={null}6037```json settings.json theme={null}

6011{6038{


6013}6040}

6014```6041```

6015 6042 

6016Use esta clave cuando su flujo de actualización escriba en `.aws`; use [`awsCredentialExport`](#awscredentialexport) cuando imprima credenciales en su lugar. Consulte [configuración avanzada de credenciales](/docs/es/amazon-bedrock#advanced-credential-configuration).6043Usa esta clave cuando tu flujo de actualización escriba en `.aws`; usa [`awsCredentialExport`](#awscredentialexport) cuando, en cambio, imprima las credenciales. Consulta [configuración avanzada de credenciales](/docs/es/amazon-bedrock#advanced-credential-configuration).

6017 6044 

6018<h3 id="awscredentialexport">6045<h3 id="awscredentialexport">

6019 `awsCredentialExport`6046 `awsCredentialExport`

6020</h3>6047</h3>

6021 6048 

6022Ejecute su propio comando que imprima credenciales de AWS como JSON, para que Claude Code pueda llamar a [Amazon Bedrock](/docs/es/amazon-bedrock) con credenciales que no viven en su directorio `.aws`. Claude Code acepta la forma de salida de `aws sts` y la forma plana de `aws configure export-credentials`, y limita las credenciales a su propio cliente de Bedrock, por lo que los comandos del shell que Claude ejecuta aún ven sus credenciales ambientales.6049Ejecuta tu propio comando que imprima credenciales de AWS como JSON, para que Claude Code pueda llamar a [Amazon Bedrock](/docs/es/amazon-bedrock) con credenciales que no están en tu directorio `.aws`. Claude Code acepta el formato de salida de `aws sts` y el formato plano de `aws configure export-credentials`, y limita las credenciales a su propio cliente de Bedrock, por lo que los comandos del shell que ejecuta Claude siguen viendo tus credenciales del entorno.

6023 6050 

6024* **Scope**: [`Any file`](#scopes)6051* **Scope**: [`Any file`](#scopes)

6025* **Type**: string, una línea de comando del shell6052* **Type**: string, una línea de comando del shell

6026* **Default**: sin establecer, por lo que Claude Code usa la cadena de credenciales de AWS ambiental6053* **Default**: sin establecer, por lo que Claude Code usa la cadena de credenciales de AWS del entorno

6027 6054 

6028```json settings.json theme={null}6055```json settings.json theme={null}

6029{6056{


6031}6058}

6032```6059```

6033 6060 

6034A diferencia de [`awsAuthRefresh`](#awsauthrefresh), Claude Code siempre ejecuta este comando cuando está establecido, sin verificar primero las credenciales ambientales. Consulte [configuración avanzada de credenciales](/docs/es/amazon-bedrock#advanced-credential-configuration).6061A diferencia de [`awsAuthRefresh`](#awsauthrefresh), Claude Code siempre ejecuta este comando cuando está establecido, sin verificar primero las credenciales del entorno. Consulta [configuración avanzada de credenciales](/docs/es/amazon-bedrock#advanced-credential-configuration).

6035 6062 

6036<h3 id="forceloginmethod">6063<h3 id="forceloginmethod">

6037 `forceLoginMethod`6064 `forceLoginMethod`

6038</h3>6065</h3>

6039 6066 

6040Restrinja qué tipo de cuenta pueden usar las personas para iniciar sesión. Establezca `"claudeai"` para permitir solo cuentas de claude.ai, `"console"` para permitir solo cuentas de Claude Console, o `"gateway"` para enviar a las personas a una [puerta de enlace en la nube](/docs/es/claude-apps-gateway) en lugar de un inicio de sesión de primera parte. Los administradores lo establecen en la configuración administrada y lo emparejan con [`forceLoginOrgUUID`](#forceloginorguuid) para mantener los inicios de sesión de claude.ai de los desarrolladores dentro de una organización. Si lo establece en `"claudeai"` o `"console"` en cualquier archivo de configuración, Claude Code también deja de ofrecer el [inicio de sesión sin clave de Console](/docs/es/authentication#sign-in-without-an-api-key) en las sesiones a las que se aplica ese archivo.6067Restringe el tipo de cuenta con el que las personas pueden iniciar sesión. Establece `"claudeai"` para permitir solo cuentas de claude.ai, `"console"` para permitir solo cuentas de Claude Console, o `"gateway"` para enviar a las personas a un [cloud gateway](/docs/es/claude-apps-gateway) en lugar de un inicio de sesión propio de Anthropic. Los administradores lo establecen en la configuración administrada y lo combinan con [`forceLoginOrgUUID`](#forceloginorguuid) para mantener los inicios de sesión de claude.ai de los desarrolladores dentro de una organización. Si lo estableces en `"claudeai"` o `"console"` en cualquier archivo de configuración, Claude Code también deja de ofrecer el [inicio de sesión en Console sin clave](/docs/es/authentication#sign-in-without-an-api-key) en las sesiones a las que se aplica ese archivo.

6041 6068 

6042* **Scope**: [`Any file`](#scopes). Claude Code respeta `"gateway"` solo desde una fuente administrada en la máquina: `managed-settings.json`, la lista de propiedades de macOS o el registro HKLM de Windows, o un auxiliar de política. Trata `"gateway"` como sin establecer en la configuración de usuario, proyecto, local, HKCU y administrada por servidor, la misma regla que [`forceLoginGatewayUrl`](#forcelogingatewayurl).6069* **Scope**: [`Any file`](#scopes). Claude Code respeta `"gateway"` solo desde una fuente administrada en la máquina: `managed-settings.json`, el plist de macOS o el registro HKLM de Windows, o un auxiliar de políticas. Trata `"gateway"` como sin establecer en la configuración de usuario, de proyecto, local, HKCU y administrada por servidor, la misma regla que [`forceLoginGatewayUrl`](#forcelogingatewayurl).

6043* **Type**: string, uno de:6070* **Type**: string, uno de:

6044 * `"claudeai"`: solo las cuentas de claude.ai pueden iniciar sesión6071 * `"claudeai"`: solo las cuentas de claude.ai pueden iniciar sesión

6045 * `"console"`: solo las cuentas de Claude Console pueden iniciar sesión6072 * `"console"`: solo las cuentas de Claude Console pueden iniciar sesión

6046 * `"gateway"`: Claude Code envía a las personas a una puerta de enlace en la nube en lugar de un inicio de sesión de primera parte6073 * `"gateway"`: Claude Code envía a las personas a un cloud gateway en lugar de un inicio de sesión propio de Anthropic

6047* **Default**: sin establecer, por lo que las personas eligen un método de inicio de sesión6074* **Default**: sin establecer, por lo que las personas eligen un método de inicio de sesión

6048 6075 

6049```json settings.json theme={null}6076```json settings.json theme={null}


6052}6079}

6053```6080```

6054 6081 

6055Cada ruta de inicio de sesión de primera parte aplica la restricción, incluida la [extensión de VS Code](/docs/es/vs-code), el SDK del Agente, `claude setup-token`, e `/install-github-app`, excepto la pantalla de inicio de sesión interactivo del terminal, a la que se accede mediante `/login` u onboarding de primera ejecución, que preselecciona el método sin aplicarlo. Antes de v2.1.212, solo los inicios de sesión del terminal lo aplicaban. Consulte [Restringir el inicio de sesión a su organización](/docs/es/authentication#restrict-login-to-your-organization) para ver cómo se manejan cada ruta de inicio de sesión, credenciales ambientales y proveedores de terceros.6082Todas las vías de inicio de sesión propias de Anthropic aplican la restricción, incluidas la [extensión de VS Code](/docs/es/vs-code), el Agent SDK, `claude setup-token` e `/install-github-app`, excepto la pantalla de inicio de sesión interactiva de la terminal, a la que se llega con `/login` o con la configuración inicial de la primera ejecución, que preselecciona el método sin imponerlo. Antes de v2.1.212, solo los inicios de sesión de la terminal lo aplicaban. Consulta [Restringir el inicio de sesión a tu organización](/docs/es/authentication#restrict-login-to-your-organization) para ver cómo se manejan cada vía de inicio de sesión, las credenciales del entorno y los proveedores de terceros.

6056 6083 

6057Cuando una fuente administrada en la máquina establece `"gateway"`, Claude Code no usa un inicio de sesión restante, clave de API o credencial de `apiKeyHelper`. Consulte [La política del administrador requiere un inicio de sesión de puerta de enlace en la nube](/docs/es/errors#administrator-policy-requires-a-cloud-gateway-sign-in) para el mensaje que produce cada uno. Si selecciona un proveedor en la nube a través de `CLAUDE_CODE_USE_BEDROCK` o una variable de entorno similar, la sesión no necesita el inicio de sesión de la puerta de enlace. Antes de v2.1.261, Claude Code usaba un inicio de sesión restante en estas máquinas.6084Cuando una fuente administrada en la máquina establece `"gateway"`, Claude Code no usa un inicio de sesión previo que haya quedado, una clave de API ni una credencial de `apiKeyHelper`. Consulta [La política del administrador requiere un inicio de sesión en Cloud gateway](/docs/es/errors#administrator-policy-requires-a-cloud-gateway-sign-in) para ver el mensaje que produce cada uno. Si seleccionas un proveedor en la nube mediante `CLAUDE_CODE_USE_BEDROCK` o una variable de entorno similar, la sesión no necesita el inicio de sesión en el gateway. Antes de v2.1.261, Claude Code usaba un inicio de sesión previo que hubiera quedado en estas máquinas.

6058 6085 

6059<h3 id="forcelogingatewayurl">6086<h3 id="forcelogingatewayurl">

6060 `forceLoginGatewayUrl`6087 `forceLoginGatewayUrl`

6061</h3>6088</h3>

6062 6089 

6063Establezca la URL de la puerta de enlace a la que se conecta la pantalla `/login` de puerta de enlace en la nube, para que las personas lleguen a su [puerta de enlace en la nube](/docs/es/claude-apps-gateway) sin escribir su dirección. La pantalla no tiene un campo de URL: con esta clave establecida, muestra la URL de su puerta de enlace y se conecta cuando la persona presiona Intro; sin ella, les dice que se comuniquen con su administrador de TI.6090Establece la URL del gateway a la que se conecta la pantalla Cloud gateway de `/login`, para que las personas lleguen a tu [cloud gateway](/docs/es/claude-apps-gateway) sin escribir su dirección. La pantalla no tiene un campo de URL: con esta clave establecida, muestra la URL de tu gateway y se conecta cuando la persona presiona Intro; sin ella, le indica que se comunique con su administrador de TI.

6064 6091 

6065Cualquiera de estas dos claves o `forceLoginMethod: "gateway"` hace que la máquina sea solo de puerta de enlace, excepto para sesiones que seleccionen un proveedor en la nube con `CLAUDE_CODE_USE_*`. `/login` entonces se abre en la pantalla de puerta de enlace en la nube sin un selector de método de inicio de sesión. Consulte [La política del administrador requiere un inicio de sesión de puerta de enlace en la nube](/docs/es/errors#administrator-policy-requires-a-cloud-gateway-sign-in) para ver qué sucede con un inicio de sesión de primera parte restante o una clave de API. Establezca ambas claves para que la pantalla se conecte en lugar de mostrar un error.6092Esta clave o `forceLoginMethod: "gateway"` hace que la máquina sea solo de gateway, excepto para las sesiones que seleccionen un proveedor en la nube con `CLAUDE_CODE_USE_*`. `/login` entonces se abre en la pantalla Cloud gateway sin selector de método de inicio de sesión. Consulta [La política del administrador requiere un inicio de sesión en Cloud gateway](/docs/es/errors#administrator-policy-requires-a-cloud-gateway-sign-in) para ver qué sucede con un inicio de sesión propio de Anthropic que haya quedado o con una clave de API. Establece ambas claves para que la pantalla se conecte en lugar de mostrar un error.

6066 6093 

6067* **Scope**: [`Managed`](#scopes). Lea solo desde una fuente en la máquina: `managed-settings.json`, la lista de propiedades de macOS o el registro HKLM de Windows, o un auxiliar de política. Claude Code lo ignora en la configuración de HKCU y administrada por servidor.6094* **Scope**: [`Managed`](#scopes). Se lee solo desde una fuente en la máquina: `managed-settings.json`, el plist de macOS o el registro HKLM de Windows, o un auxiliar de políticas. Claude Code lo ignora en la configuración HKCU y en la administrada por servidor.

6068* **Type**: string, una URL completa incluyendo el esquema6095* **Type**: string, una URL completa que incluya el esquema

6069* **Default**: sin establecer, por lo que la pantalla de puerta de enlace en la nube muestra un error indicando a las personas que se comuniquen con su administrador de TI6096* **Default**: sin establecer, por lo que la pantalla Cloud gateway muestra un error que indica a las personas que se comuniquen con su administrador de TI

6070 6097 

6071```json managed-settings.json theme={null}6098```json managed-settings.json theme={null}

6072{6099{


6074}6101}

6075```6102```

6076 6103 

6077Si el valor no es una URL válida, la pantalla de inicio de sesión lo informa, y el resto del archivo de configuración administrada aún se aplica. Consulte [Establecer la URL de la puerta de enlace](/docs/es/claude-apps-gateway#set-the-gateway-url).6104Si el valor no es una URL válida, la pantalla de inicio de sesión lo informa, y el resto del archivo de configuración administrada sigue aplicándose. Consulta [Establecer la URL del gateway](/docs/es/claude-apps-gateway#set-the-gateway-url).

6078 6105 

6079<h3 id="forceloginorguuid">6106<h3 id="forceloginorguuid">

6080 `forceLoginOrgUUID`6107 `forceLoginOrgUUID`

6081</h3>6108</h3>

6082 6109 

6083Desde una fuente administrada, requiera que los inicios de sesión de cuentas de claude.ai pertenezcan a una organización de Anthropic, dada como un UUID único, o a varias organizaciones, dadas como una matriz. Desde cualquier archivo de configuración, Claude Code también usa un UUID único para preseleccionar esa organización durante un inicio de sesión de claude.ai o Claude Console, y no preselecciona nada para una matriz. Si establece la clave en cualquier archivo de configuración, Claude Code también deja de ofrecer el [inicio de sesión sin clave de Console](/docs/es/authentication#sign-in-without-an-api-key) en las sesiones a las que se aplica ese archivo y crea una clave de API en su lugar.6110Desde una fuente administrada, exige que los inicios de sesión con cuentas de claude.ai pertenezcan a una organización de Anthropic, indicada como un único UUID, o a cualquiera de varias organizaciones, indicadas como una matriz. Desde cualquier archivo de configuración, Claude Code también usa un único UUID para preseleccionar esa organización durante un inicio de sesión en claude.ai o Claude Console, y no preselecciona nada si es una matriz. Si estableces la clave en cualquier archivo de configuración, Claude Code también deja de ofrecer el [inicio de sesión en Console sin clave](/docs/es/authentication#sign-in-without-an-api-key) en las sesiones a las que se aplica ese archivo y, en su lugar, crea una clave de API.

6084 6111 

6085* **Scope**: [`Any file`](#scopes). Solo una fuente administrada aplica la restricción; un UUID único en cualquier otro archivo de configuración preselecciona la organización durante el inicio de sesión sin restringirlo.6112* **Scope**: [`Any file`](#scopes). Solo una fuente administrada impone la restricción; un único UUID en cualquier otro archivo de configuración preselecciona la organización durante el inicio de sesión sin restringirla.

6086* **Type**: string, un UUID, o matriz de strings, varios UUIDs6113* **Type**: string, un UUID, o matriz de strings, varios UUID

6087* **Default**: sin establecer, por lo que cualquier organización puede iniciar sesión6114* **Default**: sin establecer, por lo que cualquier organización puede iniciar sesión

6088 6115 

6089Este ejemplo acepta inicios de sesión de cualquiera de dos organizaciones sin preseleccionar una:6116Este ejemplo acepta inicios de sesión de cualquiera de dos organizaciones sin preseleccionar ninguna:

6090 6117 

6091```json managed-settings.json theme={null}6118```json managed-settings.json theme={null}

6092{6119{


6094}6121}

6095```6122```

6096 6123 

6097Si una fuente administrada establece una matriz vacía, o un valor que Claude Code no puede analizar, Claude Code bloquea cada inicio de sesión con un mensaje de configuración incorrecta.6124Si una fuente administrada establece una matriz vacía, o un valor que Claude Code no puede analizar, Claude Code bloquea todos los inicios de sesión con un mensaje de configuración incorrecta.

6098 6125 

6099Consulte [Restringir el inicio de sesión a su organización](/docs/es/authentication#restrict-login-to-your-organization) para ver cómo Claude Code trata los inicios de sesión de Claude Console, las otras rutas de inicio de sesión y las credenciales ambientales.6126Consulta [Restringir el inicio de sesión a tu organización](/docs/es/authentication#restrict-login-to-your-organization) para ver cómo trata Claude Code los inicios de sesión de Claude Console, las demás vías de inicio de sesión y las credenciales del entorno.

6100 6127 

6101<h3 id="gatewayinternalnetworks">6128<h3 id="gatewayinternalnetworks">

6102 `gatewayInternalNetworks`6129 `gatewayInternalNetworks`

6103</h3>6130</h3>

6104 6131 

6105Declare los bloques de IPv4 públicos desde los que su organización numera su red interna, para que `/login` acepte una [puerta de enlace en la nube](/docs/es/claude-apps-gateway) allí. Requiere Claude Code v2.1.268 o posterior.6132Declara los bloques IPv4 públicos a partir de los cuales tu organización numera su red interna, para que `/login` acepte un [cloud gateway](/docs/es/claude-apps-gateway) en ellos. Requiere Claude Code v2.1.268 o posterior.

6106 6133 

6107Sin esta clave, `/login` se conecta a cualquier puerta de enlace en una dirección privada y nada más. Con ella, `/login` también acepta una puerta de enlace dentro de un bloque listado, solo sobre una conexión directa. La dirección propia de la máquina en esa conexión también debe estar dentro del mismo bloque.6134Sin esta clave, `/login` se conecta a cualquier gateway en una dirección privada y a nada más. Con ella, `/login` también acepta un gateway dentro de un bloque de la lista, solo a través de una conexión directa. La dirección propia de la máquina en esa conexión también debe estar dentro del mismo bloque.

6108 6135 

6109* **Scope**: [`Managed`](#scopes). Lea solo desde una fuente en la máquina: `managed-settings.json`, la lista de propiedades de macOS o el registro HKLM de Windows, o un auxiliar de política. Claude Code lo ignora en la configuración de HKCU y administrada por servidor.6136* **Scope**: [`Managed`](#scopes). Se lee solo desde una fuente en la máquina: `managed-settings.json`, el plist de macOS o el registro HKLM de Windows, o un auxiliar de políticas. Claude Code lo ignora en la configuración HKCU y en la administrada por servidor.

6110* **Type**: matriz de strings, como máximo cuatro bloques CIDR de IPv4, cada uno `/8` a `/32`, sin superponerse entre sí, y ninguno superponiéndose con espacio privado.6137* **Type**: matriz de strings, como máximo cuatro bloques CIDR IPv4, cada uno de `/8` a `/32`, sin superponerse entre sí y sin que ninguno se superponga con el espacio privado.

6111* **Default**: sin establecer, por lo que `/login` acepta solo puertas de enlace en direcciones privadas6138* **Default**: sin establecer, por lo que `/login` acepta solo gateways en direcciones privadas

6112 6139 

6113```json managed-settings.json theme={null}6140```json managed-settings.json theme={null}

6114{6141{


6116}6143}

6117```6144```

6118 6145 

6119Reemplace el rango de documentación en el ejemplo con su propio bloque. Claude Code rechaza los rangos de documentación, los rangos que los clientes de VPN y NAT64 usan localmente, y el espacio reservado desde el que ninguna red está numerada, como multidifusión.6146Reemplaza el rango de documentación del ejemplo por tu propio bloque. Claude Code rechaza los rangos de documentación, los rangos que los clientes de VPN y NAT64 usan localmente y el espacio reservado a partir del cual no se numera ninguna red, como el de multidifusión.

6120 6147 

6121Si una entrada es inválida, o el valor no es una lista de strings, `/login` nombra el problema y rechaza cada nuevo inicio de sesión de puerta de enlace en la máquina hasta que corrija el valor. Los inicios de sesión existentes siguen funcionando. Consulte [Permitir una puerta de enlace en espacio de dirección pública que posee](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) para las reglas completas y lo que ven los desarrolladores.6148Si una entrada no es válida, o el valor no es una lista de strings, `/login` indica el problema y rechaza todo nuevo inicio de sesión en un gateway en la máquina hasta que corrijas el valor. Los inicios de sesión existentes siguen funcionando. Consulta [Permitir un gateway en espacio de direcciones públicas de tu propiedad](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) para ver las reglas completas y lo que ven los desarrolladores.

6122 6149 

6123<h3 id="gcpauthrefresh">6150<h3 id="gcpauthrefresh">

6124 `gcpAuthRefresh`6151 `gcpAuthRefresh`

6125</h3>6152</h3>

6126 6153 

6127Ejecute su propio comando para actualizar las Credenciales Predeterminadas de Aplicación de Google Cloud cuando Claude Code encuentre que han expirado o no se pueden cargar, para que las solicitudes de [Plataforma de Agente de Google Cloud](/docs/es/google-vertex-ai) sigan funcionando sin que tenga que volver a autenticarse manualmente.6154Ejecuta tu propio comando para actualizar las Application Default Credentials de Google Cloud cuando Claude Code detecte que han expirado o no se pueden cargar, para que las solicitudes a [Agent Platform de Google Cloud](/docs/es/google-vertex-ai) sigan funcionando sin que tengas que volver a autenticarte manualmente.

6155 

6156Cuando varios procesos de Claude Code que usan el mismo comando y las mismas credenciales, como terminales o ventanas del IDE separadas, detectan al mismo tiempo que han expirado, un proceso ejecuta el comando y los demás esperan a esa ejecución en lugar de iniciar la suya. Un proceso que ha esperado 60 segundos con una solicitud pendiente ejecuta el comando por sí mismo. Para desactivar esto, establece [`CLAUDE_CODE_DISABLE_AUTH_REFRESH_LOCK`](/docs/es/env-vars) en `1`.

6128 6157 

6129* **Scope**: [`Any file`](#scopes)6158* **Scope**: [`Any file`](#scopes)

6130* **Type**: string, una línea de comando del shell6159* **Type**: string, una línea de comando del shell

6131* **Default**: sin establecer, por lo que el error de credencial de Claude Code le dice que ejecute `gcloud auth application-default login` usted mismo6160* **Default**: sin establecer, por lo que el error de credenciales de Claude Code te indica que ejecutes `gcloud auth application-default login` tú mismo

6132 6161 

6133```json settings.json theme={null}6162```json settings.json theme={null}

6134{6163{


6136}6165}

6137```6166```

6138 6167 

6139Consulte [configuración avanzada de credenciales](/docs/es/google-vertex-ai#advanced-credential-configuration).6168Consulta [configuración avanzada de credenciales](/docs/es/google-vertex-ai#advanced-credential-configuration).

6140 6169 

6141<h3 id="otelheadershelper">6170<h3 id="otelheadershelper">

6142 `otelHeadersHelper`6171 `otelHeadersHelper`

6143</h3>6172</h3>

6144 6173 

6145Ejecute su propio comando para generar los encabezados que Claude Code envía con exportaciones de OpenTelemetry, para backends cuyos tokens rotan. Claude Code lo ejecuta al inicio y periódicamente después, y espera un objeto JSON de valores de encabezado de string en stdout.6174Ejecuta tu propio comando para generar los encabezados que Claude Code envía con las exportaciones de OpenTelemetry, para backends cuyos tokens rotan. Claude Code lo ejecuta al inicio y periódicamente después, y espera un objeto JSON de valores de encabezado de tipo string en stdout.

6146 6175 

6147* **Scope**: [`Any file`](#scopes)6176* **Scope**: [`Any file`](#scopes)

6148* **Type**: string, una ruta ejecutable o una línea de comando del shell6177* **Type**: string, una ruta de ejecutable o una línea de comando del shell

6149* **Default**: sin establecer, por lo que Claude Code no agrega encabezados generados por auxiliar6178* **Default**: sin establecer, por lo que Claude Code no agrega encabezados generados por un auxiliar

6150 6179 

6151```json settings.json theme={null}6180```json settings.json theme={null}

6152{6181{


6154}6183}

6155```6184```

6156 6185 

6157Establezca el intervalo de actualización con [`CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS`](/docs/es/env-vars). Consulte [Encabezados dinámicos](/docs/es/monitoring-usage#dynamic-headers) para los requisitos del script y qué sucede cuando el auxiliar falla.6186Establece el intervalo de actualización con [`CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS`](/docs/es/env-vars). Consulta [Encabezados dinámicos](/docs/es/monitoring-usage#dynamic-headers) para ver los requisitos del script y qué sucede cuando el auxiliar falla.

6158 6187 

6159<h2 id="updates-and-versioning">6188<h2 id="updates-and-versioning">

6160 Actualizaciones y versiones6189 Actualizaciones y versiones

skills.md +22 −4

Details

56 56 

57Claude edita el archivo registrado solo cuando dirigió una ejecución incorrectamente, como un comando que falló o un paso faltante, para que pueda confirmar el archivo sin diffs por sesión. Antes de v2.1.205, la skill incluida le indicaba a Claude que incorporara cualquier cosa que una ejecución aprendiera, lo que causaba conflictos de fusión frecuentes.57Claude edita el archivo registrado solo cuando dirigió una ejecución incorrectamente, como un comando que falló o un paso faltante, para que pueda confirmar el archivo sin diffs por sesión. Antes de v2.1.205, la skill incluida le indicaba a Claude que incorporara cualquier cosa que una ejecución aprendiera, lo que causaba conflictos de fusión frecuentes.

58 58 

59<h3 id="run-your-checks-before-each-commit">

60 Ejecuta tus comprobaciones antes de cada commit

61</h3>

62 

63Cuando una sesión comienza con un skill llamado `verify` o `simplify` disponible, las instrucciones de commit de Claude Code le indican a Claude que lo ejecute justo antes de cada commit, excepto para cambios en documentación o pruebas. Esto requiere Claude Code v2.1.286 o posterior. Claude recibe esa instrucción cuando se cumplen estas condiciones al inicio de la sesión:

64 

65* **Ubicación**: el skill se carga desde la [ubicación](#where-skills-live) empresarial, personal, de proyecto o de directorio adicional, o desde un archivo `.claude/commands/` con ese nombre. La receta que `/verify` registra en la raíz de tu repositorio es un skill de proyecto, así que cuenta. Los `/verify` y `/simplify` incluidos, los skills de plugins y los skills de tu cuenta de claude.ai no cuentan.

66* **Invocación**: Claude puede invocar el skill. Si has [impedido que Claude lo invoque](#control-who-invokes-a-skill), por ejemplo con `disable-model-invocation: true`, Claude no recibe la instrucción.

67* **Instrucciones de Git**: no has desactivado [`includeGitInstructions`](/docs/es/settings-reference#includegitinstructions). Desactivarlo elimina esta instrucción junto con el resto de las instrucciones integradas de commit y PR.

68 

59<h3 id="work-on-claude-api-projects">69<h3 id="work-on-claude-api-projects">

60 Trabaje en proyectos de Claude API70 Trabaje en proyectos de Claude API

61</h3>71</h3>


290 300 

291Claude Code aplica dos reglas al frontmatter de una skill sincronizada:301Claude Code aplica dos reglas al frontmatter de una skill sincronizada:

292 302 

293* Claude Code honra el frontmatter en cada tipo de sesión, por lo que una concesión `allowed-tools` pasa por el [flujo de permisos](/docs/es/permissions) normal.303* El frontmatter se aplica en todo tipo de sesión, por lo que una concesión de `allowed-tools` pasa por el [flujo de permisos](/docs/es/permissions) normal. Si tu organización establece `allowManagedPermissionRulesOnly`, la concesión [no se aplica](#when-only-managed-permission-rules-apply).

294* Claude Code sanitiza el texto de visualización que la skill suministra, como su descripción. Elimina caracteres de control, y en texto que llega a Claude, como la descripción, también escapa los corchetes angulares para que el texto no pueda imitar el formato interno de Claude Code. Esta sanitización requiere Claude Code v2.1.228 o posterior.304* Claude Code sanitiza el texto de visualización que la skill suministra, como su descripción. Elimina caracteres de control, y en texto que llega a Claude, como la descripción, también escapa los corchetes angulares para que el texto no pueda imitar el formato interno de Claude Code. Esta sanitización requiere Claude Code v2.1.228 o posterior.

295 305 

296<h4 id="how-claude-code-handles-the-body-of-a-synced-skill">306<h4 id="how-claude-code-handles-the-body-of-a-synced-skill">


603 613 

604El campo `allowed-tools` otorga permiso para las herramientas listadas durante el turno que invoca el skill, para que Claude pueda usarlas sin solicitarte aprobación. La concesión se borra cuando envías tu siguiente mensaje, aunque el contenido del skill [permanece en contexto](#skill-content-lifecycle); invocar el skill nuevamente vuelve a aplicarlo para ese turno. No restringe qué herramientas están disponibles: cada herramienta sigue siendo invocable, y tu [configuración de permisos](/docs/es/permissions) aún rige herramientas que no están listadas. Para pre-aprobar herramientas para toda la sesión en lugar de un único turno, añade reglas de permitir a esa configuración de permisos en su lugar.614El campo `allowed-tools` otorga permiso para las herramientas listadas durante el turno que invoca el skill, para que Claude pueda usarlas sin solicitarte aprobación. La concesión se borra cuando envías tu siguiente mensaje, aunque el contenido del skill [permanece en contexto](#skill-content-lifecycle); invocar el skill nuevamente vuelve a aplicarlo para ese turno. No restringe qué herramientas están disponibles: cada herramienta sigue siendo invocable, y tu [configuración de permisos](/docs/es/permissions) aún rige herramientas que no están listadas. Para pre-aprobar herramientas para toda la sesión en lugar de un único turno, añade reglas de permitir a esa configuración de permisos en su lugar.

605 615 

606La confianza del espacio de trabajo no controla este campo. Claude Code aplica el `allowed-tools` de un skill de proyecto siempre que tú o Claude invoquen el skill, incluido en una ejecución `-p` en una carpeta que nunca has confiado. Un skill puede otorgarse a sí mismo acceso amplio a herramientas, por lo que revisa el `allowed-tools` de skills verificados en un repositorio antes de ejecutar Claude Code allí.616La confianza del espacio de trabajo no controla este campo. Claude Code aplica el `allowed-tools` de un skill de proyecto incluso en una ejecución `-p` en una carpeta en la que nunca has confiado. Un skill puede otorgarse a sí mismo acceso amplio a herramientas, por lo que revisa el `allowed-tools` de los skills incluidos en un repositorio antes de ejecutar Claude Code allí. Para impedir que los skills de repositorios usen este campo en toda tu organización, consulta [Cuándo solo se aplican las reglas de permisos administradas](#when-only-managed-permission-rules-apply).

607 617 

608Este skill permite que Claude ejecute comandos git sin aprobación por uso siempre que lo invokes:618Este skill permite que Claude ejecute comandos git sin aprobación por uso siempre que lo invokes:

609 619 


618 628 

619Para eliminar herramientas del grupo disponible de Claude mientras un skill está activo, listalás en `disallowed-tools` en el frontmatter del skill. La restricción se borra cuando envías tu siguiente mensaje. Como las reglas de denegación, el campo no puede eliminar [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior) mientras cualquier otra herramienta permanezca. Para bloquear herramientas en todos los skills y prompts, añade reglas de denegación en tu [configuración de permisos](/docs/es/permissions).629Para eliminar herramientas del grupo disponible de Claude mientras un skill está activo, listalás en `disallowed-tools` en el frontmatter del skill. La restricción se borra cuando envías tu siguiente mensaje. Como las reglas de denegación, el campo no puede eliminar [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior) mientras cualquier otra herramienta permanezca. Para bloquear herramientas en todos los skills y prompts, añade reglas de denegación en tu [configuración de permisos](/docs/es/permissions).

620 630 

631<h4 id="when-only-managed-permission-rules-apply">

632 Cuándo solo se aplican las reglas de permisos administradas

633</h4>

634 

635Cuando tu organización establece `allowManagedPermissionRulesOnly` en la configuración administrada, Claude Code ignora `allowed-tools` en los skills de proyecto y personales, y en las [otras fuentes que enumera la entrada de ese ajuste](/docs/es/settings-reference#allowmanagedpermissionrulesonly). Esto requiere Claude Code v2.1.282 o posterior.

636 

637Las herramientas que enumera un skill afectado pasan en su lugar por las reglas administradas de tu organización y la solicitud de permiso normal. Ejecuta `/status` para listar cada skill cuyo `allowed-tools` Claude Code ha ignorado hasta el momento en la sesión. Un comando inyectado en el skill que ninguna regla administrada permite sigue lo descrito en [Comprobaciones de permisos en comandos inyectados](#permission-checks-on-injected-commands).

638 

621<h3 id="pass-arguments-to-skills">639<h3 id="pass-arguments-to-skills">

622 Pasar argumentos a skills640 Pasar argumentos a skills

623</h3>641</h3>


766 784 

767Los comandos inyectados nunca solicitan permiso mientras se renderiza la skill. Claude Code verifica cada uno contra sus [reglas de permisos](/docs/es/permissions) primero. Un comando que una regla de denegación coincide aborta la invocación con `Shell command permission check failed for pattern "..."`.785Los comandos inyectados nunca solicitan permiso mientras se renderiza la skill. Claude Code verifica cada uno contra sus [reglas de permisos](/docs/es/permissions) primero. Un comando que una regla de denegación coincide aborta la invocación con `Shell command permission check failed for pattern "..."`.

768 786 

769Fuera del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), cuando la verificación de permisos de un comando devuelve algo que no sea permitir, Claude Code aborta la invocación con el mismo error. Esto incluye una regla que normalmente le preguntaría. Para evitar que un comando sin coincidencia aborte aquí, apruébelo previamente con [`allowed-tools`](#pre-approve-tools-for-a-skill). Las reglas de denegación y solicitud aún anulan `allowed-tools`. Consulte [Manage permissions](/docs/es/permissions#manage-permissions).787Fuera del [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode), cuando la verificación de permisos de un comando devuelve algo distinto de permitir, Claude Code aborta la invocación con el mismo error. Esto incluye una regla que normalmente te pediría confirmación. Para evitar que un comando sin coincidencia aborte aquí, apruébalo previamente con [`allowed-tools`](#pre-approve-tools-for-a-skill). Si tu organización restringe las reglas de permisos a la configuración administrada, consulta [Cuando solo se aplican reglas de permisos administradas](#when-only-managed-permission-rules-apply). Las reglas de denegación y de solicitud siguen teniendo prioridad sobre `allowed-tools`. Consulta [Administrar permisos](/docs/es/permissions#manage-permissions).

770 788 

771En modo automático, un comando que de otro modo necesitaría su aprobación no aborta la invocación. La skill se carga con una instrucción que le dice a Claude que ejecute el comando primero, y la llamada propia de Claude luego pasa por las [verificaciones habituales del modo automático](/docs/es/permission-modes#how-the-classifier-evaluates-actions). La invocación aún aborta en una [skill bifurcada](#run-skills-in-a-subagent) que establece `agent`, y en una sesión donde Claude no tiene la [herramienta de shell que ejecuta comandos inyectados](#how-injected-commands-run).789En modo automático, un comando que de otro modo necesitaría su aprobación no aborta la invocación. La skill se carga con una instrucción que le dice a Claude que ejecute el comando primero, y la llamada propia de Claude luego pasa por las [verificaciones habituales del modo automático](/docs/es/permission-modes#how-the-classifier-evaluates-actions). La invocación aún aborta en una [skill bifurcada](#run-skills-in-a-subagent) que establece `agent`, y en una sesión donde Claude no tiene la [herramienta de shell que ejecuta comandos inyectados](#how-injected-commands-run).

772 790 


840 Restringir el acceso de Claude a las skills858 Restringir el acceso de Claude a las skills

841</h3>859</h3>

842 860 

843De forma predeterminada, Claude puede invocar cualquier skill que no tenga `disable-model-invocation: true` establecido. Las skills que definen `allowed-tools` otorgan a Claude acceso a esas herramientas sin aprobación por uso durante el turno que invoca la skill; la concesión se borra cuando envía su siguiente mensaje. Su [configuración de permisos](/docs/es/permissions) aún rige el comportamiento de aprobación de línea base para todas las otras herramientas. Algunos comandos integrados también están disponibles a través de la herramienta Skill, incluidos `/init` y `/security-review`. Otros comandos integrados como `/compact` no lo están.861De forma predeterminada, Claude puede invocar cualquier skill que no tenga establecido `disable-model-invocation: true`. Los skills que definen [`allowed-tools`](#pre-approve-tools-for-a-skill) le otorgan a Claude acceso a esas herramientas sin aprobación por uso durante el turno que invoca el skill; la concesión se elimina cuando envías tu siguiente mensaje. Tu [configuración de permisos](/docs/es/permissions) sigue rigiendo el comportamiento de aprobación base para todas las demás herramientas. Algunos comandos integrados también están disponibles a través de la herramienta Skill, incluidos `/init` y `/security-review`. Otros comandos integrados como `/compact` no lo están.

844 862 

845Tres formas de controlar qué skills puede invocar Claude:863Tres formas de controlar qué skills puede invocar Claude:

846 864 

sub-agents.md +6 −1

Details

1255| `x` | Detener el fork seleccionado si se está ejecutando, o descartar su fila si ya no se está ejecutando. En la fila de la sesión principal, o en la fila del fork cuya transcripción abrió con `Enter`, `x` escribe en la solicitud en su lugar |1255| `x` | Detener el fork seleccionado si se está ejecutando, o descartar su fila si ya no se está ejecutando. En la fila de la sesión principal, o en la fila del fork cuya transcripción abrió con `Enter`, `x` escribe en la solicitud en su lugar |

1256| `Esc` | Devolver el enfoque a la entrada de solicitud |1256| `Esc` | Devolver el enfoque a la entrada de solicitud |

1257 1257 

1258Con la transcripción de un fork o subagente abierta, los mensajes de seguimiento y las [skills](/docs/es/skills) van a ese agente, pero los comandos integrados aún se ejecutan en su conversación principal. A partir de v2.1.199, escribir `/model` o `/fast` en esa vista muestra un aviso de que cambia el modelo de la conversación principal o el modo rápido, no el del agente visto, en lugar de ejecutarlo silenciosamente.1258Con la transcripción de un fork o subagente abierta, los mensajes de seguimiento y los [skills](/docs/es/skills) van a ese agente, y los comandos integrados van a tu conversación principal, con estas salvaguardas:

1259 

1260* `/compact`, `/clear` y `/rewind` actúan sobre la conversación principal, por lo que Claude Code te pide que confirmes antes de ejecutar uno de ellos desde esta vista.

1261* `/model` y `/fast` establecen el modelo y el modo rápido de la conversación principal, no los del agente visto, por lo que no se ejecutan desde esta vista. Un aviso te indica el motivo.

1262 

1263Para que el agente visto lea tu mensaje antes de que termine el trabajo que está esperando, envíalo con [`Ctrl+Enter` o `Ctrl+X Ctrl+S`](/docs/es/keybindings#chat-actions). Cualquier comando de shell o subagente que el agente esté esperando y que pueda pasar al [segundo plano](/docs/es/tools-reference#background-commands) pasa allí y sigue ejecutándose. Cuando el agente está escribiendo una respuesta, o esperando trabajo que no puede pasar al segundo plano, continúa y lee tu mensaje una vez que eso termina. Requiere Claude Code v2.1.286 o posterior.

1259 1264 

1260<h3 id="how-forks-differ-from-other-subagents">1265<h3 id="how-forks-differ-from-other-subagents">

1261 Cómo los forks difieren de otros subagentes1266 Cómo los forks difieren de otros subagentes

Details

231 231 

232Cuando un comando en primer plano alcanza su tiempo de espera sin terminar, Claude Code lo mueve a segundo plano en lugar de detenerlo, a menos que el comando comience con `sleep`. El [límite de tiempo](#time-limit-for-background-commands) de un comando movido se cuenta desde el movimiento, y el comando movido de un subagente en primer plano aún se detiene cuando finaliza la ejecución de ese subagente.232Cuando un comando en primer plano alcanza su tiempo de espera sin terminar, Claude Code lo mueve a segundo plano en lugar de detenerlo, a menos que el comando comience con `sleep`. El [límite de tiempo](#time-limit-for-background-commands) de un comando movido se cuenta desde el movimiento, y el comando movido de un subagente en primer plano aún se detiene cuando finaliza la ejecución de ese subagente.

233 233 

234Establecer [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/es/env-vars#variables) desactiva el auto-backgrounding junto con el resto de la funcionalidad de tareas en segundo plano.234Establecer [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/es/env-vars#variables) o ejecutar en [modo bare](/docs/es/headless#start-faster-with-bare-mode) desactiva el auto-backgrounding junto con el resto de la funcionalidad de tareas en segundo plano, por lo que un comando que alcanza su tiempo de espera se detiene en su lugar.

235 235 

236El resultado de un comando movido a segundo plano indica lo que sucedió:236El resultado de un comando movido a segundo plano indica lo que sucedió:

237 237 

Details

22| `curl: (23)` o `curl: (56) Failure writing output to destination` | [Verifique la conectividad o use un instalador alternativo](#curl-56-failure-writing-output-to-destination) |22| `curl: (23)` o `curl: (56) Failure writing output to destination` | [Verifique la conectividad o use un instalador alternativo](#curl-56-failure-writing-output-to-destination) |

23| `Killed` durante la instalación en Linux, o `Installation was killed before it could finish (exit code 137)` | [Libere memoria o agregue espacio de intercambio](#install-killed-on-low-memory-linux-servers) |23| `Killed` durante la instalación en Linux, o `Installation was killed before it could finish (exit code 137)` | [Libere memoria o agregue espacio de intercambio](#install-killed-on-low-memory-linux-servers) |

24| `Raw mode is not supported` durante la instalación | [Vuelva a ejecutar el instalador](#raw-mode-is-not-supported-during-install) |24| `Raw mode is not supported` durante la instalación | [Vuelva a ejecutar el instalador](#raw-mode-is-not-supported-during-install) |

25| `EACCES: permission denied` durante la instalación | [Corrige los permisos del directorio de instalación](#permission-errors-during-installation) |

25| `TLS connect error` o `SSL/TLS secure channel` | [Actualice los certificados CA](#tls-or-ssl-connection-errors) |26| `TLS connect error` o `SSL/TLS secure channel` | [Actualice los certificados CA](#tls-or-ssl-connection-errors) |

26| `Failed to fetch version` o no puede alcanzar el servidor de descarga | [Verifique la configuración de red y proxy](#check-network-connectivity) |27| `Failed to fetch version` o no puede alcanzar el servidor de descarga | [Verifique la configuración de red y proxy](#check-network-connectivity) |

27| `irm is not recognized` o `The token '&&' is not a valid statement separator` | [Use el comando correcto para su shell](#wrong-install-command-on-windows) |28| `irm is not recognized` o `The token '&&' is not a valid statement separator` | [Use el comando correcto para su shell](#wrong-install-command-on-windows) |


295 Verifique permisos de directorio296 Verifique permisos de directorio

296</h3>297</h3>

297 298 

298El instalador necesita acceso de escritura a `~/.local/bin/` y `~/.claude/` en macOS y Linux. En Windows la ubicación de instalación está bajo `%USERPROFILE%`, que es escribible por su usuario de forma predeterminada, por lo que esta sección rara vez se aplica allí.299Una instalación que falla por permisos indica la ruta que no pudo crear o en la que no pudo escribir. En Windows, la instalación escribe dentro de `%USERPROFILE%`, en el que tu usuario puede escribir de forma predeterminada, por lo que esta sección rara vez se aplica allí.

300 

301En macOS y Linux, la instalación escribe en estas ubicaciones:

302 

303* `~/.claude/downloads/`: donde el comando de instalación coloca el binario descargado

304* `~/.local/bin/`: el iniciador `claude`

305* `~/.local/share/claude/`: cada versión que descarga

306* `~/.local/state/claude/`: sus archivos de bloqueo

307* `~/.cache/claude/`: descargas preparadas

308* [`~/.claude.json`](/docs/es/claude-directory): tu archivo de configuración global, donde el instalador registra el método de instalación

309 

310Si estableces `XDG_DATA_HOME`, `XDG_STATE_HOME` o `XDG_CACHE_HOME`, la instalación los usa en lugar de `~/.local/share`, `~/.local/state` y `~/.cache`. Si estableces [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars), el archivo de configuración global se ubica en ese directorio en lugar de tu directorio home.

299 311 

300Verifique si los directorios son escribibles:312Verifique si los directorios son escribibles:

301 313 


995Estas secciones abordan fallos de inicio de sesión, errores de OAuth y problemas de tokens.1007Estas secciones abordan fallos de inicio de sesión, errores de OAuth y problemas de tokens.

996 1008 

997<h3 id="reset-your-login">1009<h3 id="reset-your-login">

998 Reinicie su inicio de sesión1010 Reinicia tu inicio de sesión

999</h3>1011</h3>

1000 1012 

1001Cuando el inicio de sesión falla y la causa no es obvia, una reautenticación limpia resuelve la mayoría de los casos:1013Cuando el inicio de sesión falla y la causa no es obvia, una reautenticación limpia resuelve la mayoría de los casos:

1002 1014 

10031. Ejecute `/logout` para cerrar sesión completamente10151. Ejecuta `/logout` para cerrar sesión completamente

10042. Cierre Claude Code10162. Cierra Claude Code

10053. Reinicie con `claude` y complete el proceso de autenticación nuevamente10173. Reinicia con `claude` y completa el proceso de autenticación nuevamente

1006 1018 

1007Si el navegador no se abre automáticamente durante el inicio de sesión, presione `c` para copiar la URL de OAuth a su portapapeles, luego péguelo en un navegador manualmente. Esto también funciona cuando la URL se envuelve en varias líneas en una terminal estrecha o SSH y no se puede hacer clic directamente.1019Si el navegador no se abre automáticamente durante el inicio de sesión, presiona `c` para copiar la URL de OAuth a tu portapapeles y luego pégala en un navegador manualmente. Esto también funciona cuando la URL se divide en varias líneas en una terminal estrecha o SSH y no se puede hacer clic en ella directamente.

1008 1020 

1009<h3 id="oauth-error-invalid-code">1021<h3 id="oauth-error-invalid-code">

1010 Error de OAuth: Código inválido1022 Error de OAuth: Código inválido

1011</h3>1023</h3>

1012 1024 

1013Si ve `OAuth error: Invalid code. Please make sure the full code was copied`, el código de inicio de sesión expiró o fue truncado durante la copia y pegado.1025Si ves `OAuth error: Invalid code. Please make sure the full code was copied`, el código de inicio de sesión expiró o se truncó al copiarlo y pegarlo.

1014 1026 

1015**Soluciones:**1027**Soluciones:**

1016 1028 

1017* Presione Intro para reintentar y complete el inicio de sesión rápidamente después de que se abra el navegador1029* Presiona Intro para reintentar y completa el inicio de sesión rápidamente después de que se abra el navegador

1018* Escriba `c` para copiar la URL completa si el navegador no se abre automáticamente1030* Escribe `c` para copiar la URL completa si el navegador no se abre automáticamente

1019* Si usa una sesión remota/SSH, el navegador puede abrirse en la máquina incorrecta. Copie la URL mostrada en la terminal y ábrala en su navegador local en su lugar.1031* Si usas una sesión remota/SSH, el navegador puede abrirse en la máquina incorrecta. Copia la URL que se muestra en la terminal y ábrela en tu navegador local.

1020 1032 

1021<h3 id="403-forbidden-after-login">1033<h3 id="403-forbidden-after-login">

1022 403 Forbidden después del inicio de sesión1034 403 Forbidden después del inicio de sesión

1023</h3>1035</h3>

1024 1036 

1025Si ve `API Error: 403 Request not allowed` después de iniciar sesión:1037Si ves `API Error: 403 Request not allowed` después de iniciar sesión:

1026 1038 

1027* **Usuarios de Claude Pro/Max**: verifique que su suscripción esté activa en [claude.ai/settings](https://claude.ai/settings)1039* **Usuarios de Claude Pro/Max**: verifica que tu suscripción esté activa en [claude.ai/settings](https://claude.ai/settings)

1028* **Usuarios de Anthropic Console**: confirme que su cuenta tiene el rol "Claude Code" o "Developer". Los administradores asignan esto en Anthropic Console bajo Settings → Members.1040* **Usuarios de Anthropic Console**: confirma que tu cuenta tiene el rol "Claude Code" o "Developer". Los administradores lo asignan en Anthropic Console, en Settings → Members.

1029* **Detrás de un proxy**: los proxies corporativos pueden interferir con las solicitudes de API. Consulte [configuración de red](/docs/es/network-config) para la configuración de proxy.1041* **Detrás de un proxy**: los proxies corporativos pueden interferir con las solicitudes de API. Consulta [configuración de red](/docs/es/network-config) para la configuración del proxy.

1030 1042 

1031<h3 id="claude-code-access-has-not-been-granted-for-this-account">1043<h3 id="claude-code-access-has-not-been-granted-for-this-account">

1032 Claude Code access has not been granted for this account1044 Claude Code access has not been granted for this account

1033</h3>1045</h3>

1034 1046 

1035Si la página de inicio de sesión muestra `Authorization failed` con el mensaje `Claude Code access has not been granted for this account. Contact your administrator.` después de que inicie sesión desde Claude Code, su organización Claude Enterprise ha establecido su rol en Custom y ninguno de los [custom roles](https://support.claude.com/en/articles/13930452) asignados a sus grupos otorga acceso a Claude Code. En el rol Custom, obtiene acceso solo de esos roles personalizados, por lo que nada que cambie en Claude Code resuelve este error.1047Si la página de inicio de sesión muestra `Authorization failed` con el mensaje `Claude Code access has not been granted for this account. Contact your administrator.` después de que inicias sesión desde Claude Code, tu organización de Claude Enterprise ha establecido tu rol en Custom y ninguno de los [custom roles](https://support.claude.com/en/articles/13930452) asignados a tus grupos otorga acceso a Claude Code. Con el rol Custom, obtienes acceso solo a través de esos roles personalizados, por lo que nada que cambies en Claude Code resuelve este error.

1036 1048 

1037Para obtener acceso:1049Para obtener acceso:

1038 1050 

10391. Pida a un Owner de su organización Claude que asigne un rol personalizado que otorgue acceso a Claude Code a uno de sus grupos, o que cambie su rol de Custom a un rol estándar como User. Los Owners administran roles en la [configuración de roles](https://claude.ai/admin-settings/roles) de la organización.10511. Pide a un Owner de tu organización de Claude que asigne a uno de tus grupos un rol personalizado que otorgue acceso a Claude Code, o que cambie tu rol de Custom a un rol estándar como User. Los Owners administran los roles en la [configuración de roles](https://claude.ai/admin-settings/roles) de la organización.

10402. Después de que el Owner realice el cambio, ejecute `claude` e inicie sesión nuevamente.10522. Después de que el Owner realice el cambio, ejecuta `claude` e inicia sesión nuevamente.

1041 1053 

1042<h3 id="this-organization-has-been-disabled-with-an-active-subscription">1054<h3 id="this-organization-has-been-disabled-with-an-active-subscription">

1043 Esta organización ha sido deshabilitada con una suscripción activa1055 Esta organización ha sido deshabilitada con una suscripción activa

1044</h3>1056</h3>

1045 1057 

1046Si ve `API Error: 400 ... "This organization has been disabled"` a pesar de tener una suscripción activa de Claude, una variable de entorno `ANTHROPIC_API_KEY` está anulando su suscripción. Esto comúnmente ocurre cuando una clave API antigua de un empleador anterior o proyecto anterior aún está configurada en su perfil de shell.1058Si ves `API Error: 400 ... "This organization has been disabled"` a pesar de tener una suscripción activa de Claude, una variable de entorno `ANTHROPIC_API_KEY` está anulando tu suscripción. Esto suele ocurrir cuando una clave de API antigua de un empleador o proyecto anterior sigue configurada en tu perfil de shell.

1047 1059 

1048Cuando `ANTHROPIC_API_KEY` está presente y lo ha aprobado, Claude Code usa esa clave en lugar de las credenciales de OAuth de su suscripción. En modo no interactivo con la bandera `-p`, la clave siempre se usa cuando está presente. Consulte [precedencia de autenticación](/docs/es/authentication#authentication-precedence) para el orden de resolución completo.1060Cuando `ANTHROPIC_API_KEY` está presente y la has aprobado, Claude Code usa esa clave en lugar de las credenciales de OAuth de tu suscripción. En modo no interactivo con el flag `-p`, la clave siempre se usa cuando está presente. Consulta [precedencia de autenticación](/docs/es/authentication#authentication-precedence) para ver el orden de resolución completo.

1049 1061 

1050Para usar su suscripción en su lugar, desestablezca la variable de entorno y elimínela de su perfil de shell:1062Para usar tu suscripción en su lugar, quita la definición de la variable de entorno y elimínala de tu perfil de shell:

1051 1063 

1052<Tabs>1064<Tabs>

1053 <Tab title="macOS/Linux">1065 <Tab title="macOS/Linux">


1065 </Tab>1077 </Tab>

1066</Tabs>1078</Tabs>

1067 1079 

1068Verifique `~/.zshrc`, `~/.bashrc`, o `~/.profile` para líneas `export ANTHROPIC_API_KEY=...` y elimínelas para hacer el cambio permanente. En Windows, verifique su perfil de PowerShell en `$PROFILE` y sus variables de entorno de usuario para `ANTHROPIC_API_KEY`. Ejecute `/status` dentro de Claude Code para confirmar qué método de autenticación está activo.1080Revisa `~/.zshrc`, `~/.bashrc` o `~/.profile` en busca de líneas `export ANTHROPIC_API_KEY=...` y elimínalas para que el cambio sea permanente. En Windows, revisa tu perfil de PowerShell en `$PROFILE` y tus variables de entorno de usuario en busca de `ANTHROPIC_API_KEY`. Ejecuta `/status` dentro de Claude Code para confirmar qué método de autenticación está activo.

1069 1081 

1070<h3 id="oauth-login-fails-in-wsl2-ssh-or-containers">1082<h3 id="oauth-login-fails-in-wsl2-ssh-or-containers">

1071 El inicio de sesión de OAuth falla en WSL2, SSH o contenedores1083 El inicio de sesión de OAuth falla en WSL2, SSH o contenedores

1072</h3>1084</h3>

1073 1085 

1074Cuando Claude Code se ejecuta en WSL2, en una máquina remota a través de SSH, o dentro de un contenedor, el navegador generalmente se abre en un host diferente y su redirección no puede alcanzar el servidor de devolución de llamada local de Claude Code. Después de que inicie sesión, el navegador muestra un código de inicio de sesión en lugar de redirigirse automáticamente. Pegue ese código en la terminal en el indicador `Paste code here if prompted` para completar el inicio de sesión.1086Cuando Claude Code se ejecuta en WSL2, en una máquina remota a través de SSH o dentro de un contenedor, el navegador generalmente se abre en un host diferente y su redirección no puede alcanzar el servidor de devolución de llamada local de Claude Code. Después de que inicias sesión, el navegador muestra un código de inicio de sesión en lugar de redirigir automáticamente. Pega ese código en la terminal, en el prompt `Paste code here if prompted`, para completar el inicio de sesión.

1075 1087 

1076Si el navegador no se abre en absoluto desde WSL2, establezca la variable de entorno `BROWSER` en la ruta de su navegador de Windows:1088Si el navegador no se abre en absoluto desde WSL2, establece la variable de entorno `BROWSER` en la ruta de tu navegador de Windows:

1077 1089 

1078```bash theme={null}1090```bash theme={null}

1079export BROWSER="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"1091export BROWSER="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"

1080claude1092claude

1081```1093```

1082 1094 

1083Alternativamente, presione `c` en el indicador de inicio de sesión interactivo para copiar la URL de OAuth, o copie la URL que `claude auth login` imprime, y ábrala en un navegador en su máquina local.1095Alternativamente, presiona `c` en el prompt de inicio de sesión interactivo para copiar la URL de OAuth, o copia la URL que imprime `claude auth login`, y ábrela en un navegador en tu máquina local.

1084 1096 

1085Si pegar el código en el indicador interactivo no hace nada, el enlace de pegado de su terminal probablemente no está llegando al campo de entrada. Intente el atajo de pegado alternativo de su terminal, a menudo clic derecho o Shift+Insert en Windows Terminal, o use `claude auth login` en su lugar, que lee el código pegado desde la entrada estándar:1097Si pegar el código en el prompt interactivo no hace nada, probablemente el atajo de pegado de tu terminal no está llegando al campo de entrada. Prueba el atajo de pegado alternativo de tu terminal, a menudo clic derecho o Shift+Insert en Windows Terminal, o usa `claude auth login` en su lugar, que lee el código pegado desde la entrada estándar:

1086 1098 

1087```bash theme={null}1099```bash theme={null}

1088claude auth login1100claude auth login

1089```1101```

1090 1102 

1091Esta alternativa también se aplica en Windows nativo o cualquier terminal donde pegar en el indicador interactivo falla.1103Esta alternativa también se aplica en Windows nativo o en cualquier terminal donde pegar en el prompt interactivo falle.

1092 1104 

1093<h3 id="not-logged-in-or-token-expired">1105<h3 id="not-logged-in-or-token-expired">

1094 No ha iniciado sesión o el token ha expirado1106 No has iniciado sesión o el token ha expirado

1095</h3>1107</h3>

1096 1108 

1097Si Claude Code le solicita que inicie sesión nuevamente después de una sesión, su token de OAuth puede haber expirado.1109Si Claude Code te pide que inicies sesión nuevamente después de una sesión, es posible que tu token de OAuth haya expirado.

1110 

1111Ejecuta `/login` para volver a autenticarte. Si esto ocurre con frecuencia, verifica que el reloj de tu sistema sea preciso, ya que la validación de tokens depende de marcas de tiempo correctas.

1098 1112 

1099Ejecute `/login` para reautenticarse. Si esto ocurre frecuentemente, verifique que su reloj del sistema sea preciso, ya que la validación de tokens depende de marcas de tiempo correctas.1113Las sesiones paralelas en una máquina comparten un inicio de sesión guardado y coordinan su renovación para que solo un proceso actualice el token a la vez. Para saber qué hacen las demás sesiones después de que vuelves a iniciar sesión en una de ellas, consulta [No has iniciado sesión](/docs/es/errors#not-logged-in).

1100 1114 

1101Las sesiones paralelas en una máquina comparten un inicio de sesión guardado y coordinan su renovación para que solo un proceso actualice el token a la vez. Antes de v2.1.211, despertar la máquina del sueño podría causar que dos sesiones se renovaran con el mismo token, lo que revocaba el inicio de sesión guardado e indicaba a cada sesión abierta que iniciara sesión nuevamente de una vez.1115Antes de v2.1.211, reactivar la máquina desde la suspensión podía hacer que dos sesiones se renovaran con el mismo token, lo que revocaba el inicio de sesión guardado y pedía a todas las sesiones abiertas que iniciaran sesión nuevamente a la vez.

1102 1116 

1103En macOS, Claude Code guarda credenciales en el Keychain de inicio de sesión. Cuando el Keychain rechaza la escritura, como cuando está bloqueado en una sesión SSH o su contraseña está fuera de sincronización con su contraseña de cuenta, Claude Code guarda su inicio de sesión en el archivo de texto plano `~/.claude/.credentials.json` en su lugar. Un inicio de sesión de Console que crea una clave API falla hasta que el Keychain sea escribible nuevamente.1117En macOS, Claude Code guarda las credenciales en el Keychain de inicio de sesión. Cuando el Keychain rechaza la escritura, por ejemplo cuando está bloqueado en una sesión SSH o su contraseña no está sincronizada con la contraseña de tu cuenta, Claude Code guarda tu inicio de sesión en el archivo de texto plano `~/.claude/.credentials.json` en su lugar. Un inicio de sesión de Console que crea una clave de API falla hasta que el Keychain vuelva a admitir escritura.

1104 1118 

1105Para hacer que el Keychain sea escribible nuevamente y mover su inicio de sesión de vuelta al Keychain cifrado:1119Para que el Keychain vuelva a admitir escritura y mover tu inicio de sesión de vuelta al Keychain cifrado:

1106 1120 

1107<Steps>1121<Steps>

1108 <Step title="Verifique el acceso a Keychain">1122 <Step title="Verifica el acceso a Keychain">

1109 Ejecute `claude doctor` para verificar el acceso a Keychain. Cuando el Keychain rechaza escrituras, el informe enumera una advertencia que comienza con `macOS Keychain is not writable`, seguida de una corrección sugerida. Cuando el informe no enumera ninguna advertencia de Keychain, el Keychain es escribible y puede pasar al último paso.1123 Ejecuta `claude doctor` para verificar el acceso a Keychain. Cuando el Keychain rechaza escrituras, el informe muestra una advertencia que comienza con `macOS Keychain is not writable`, seguida de una corrección sugerida. Cuando el informe no muestra ninguna advertencia de Keychain, el Keychain admite escritura y puedes pasar al último paso.

1110 </Step>1124 </Step>

1111 1125 

1112 <Step title="Desbloquee el Keychain">1126 <Step title="Desbloquea el Keychain">

1113 ```bash theme={null}1127 ```bash theme={null}

1114 security unlock-keychain ~/Library/Keychains/login.keychain-db1128 security unlock-keychain ~/Library/Keychains/login.keychain-db

1115 ```1129 ```

1116 1130 

1117 Ingrese su contraseña de Keychain cuando el comando la solicite, luego ejecute `claude doctor` nuevamente. Cuando el desbloqueo funcionó, el informe ya no enumera la advertencia de Keychain.1131 Ingresa tu contraseña de Keychain cuando el comando la solicite y luego ejecuta `claude doctor` nuevamente. Si el desbloqueo funcionó, el informe ya no muestra la advertencia de Keychain.

1118 </Step>1132 </Step>

1119 1133 

1120 <Step title="Resincronice la contraseña de Keychain si desbloquear no ayuda">1134 <Step title="Resincroniza la contraseña de Keychain si desbloquearlo no ayuda">

1121 Abra Keychain Access, seleccione el keychain `login`, y elija **Edit > Change Password for Keychain "login"** para resincronizarlo con su contraseña de cuenta. Luego ejecute `claude doctor` nuevamente. Continúe al siguiente paso una vez que el informe ya no enumere la advertencia de Keychain.1135 Abre Keychain Access, selecciona el keychain `login` y elige **Edit > Change Password for Keychain "login"** para resincronizarlo con la contraseña de tu cuenta. Luego ejecuta `claude doctor` nuevamente. Continúa con el siguiente paso cuando el informe ya no muestre la advertencia de Keychain.

1122 </Step>1136 </Step>

1123 1137 

1124 <Step title="Cierre sesión e inicie sesión nuevamente">1138 <Step title="Cierra sesión y vuelve a iniciarla">

1125 Una vez que el Keychain sea escribible nuevamente, Claude Code mueve las credenciales de vuelta la próxima vez que escribe una credencial. Para forzarlo ahora, ejecute `/logout` y luego `/login`. Cerrar sesión elimina todas las credenciales almacenadas, incluido el contenido del archivo de texto plano, los inicios de sesión guardados del servidor MCP y los valores sensibles del plugin, así que espere reautorizar servidores MCP e ingresar nuevamente los secretos del plugin después. Iniciar sesión nuevamente almacena su inicio de sesión en el Keychain.1139 Una vez que el Keychain vuelva a admitir escritura, Claude Code mueve las credenciales de vuelta la próxima vez que escriba una credencial. Para forzarlo ahora, ejecuta `/logout` y luego `/login`. Cerrar sesión elimina todas las credenciales almacenadas, incluido el contenido del archivo de texto plano, los inicios de sesión guardados de servidores MCP y los valores sensibles de plugins, así que después tendrás que volver a autorizar los servidores MCP e ingresar nuevamente los secretos de los plugins. Al iniciar sesión de nuevo, tu inicio de sesión se almacena en el Keychain.

1126 </Step>1140 </Step>

1127</Steps>1141</Steps>

1128 1142 


1130 Las credenciales de Bedrock, Agent Platform o Foundry no se cargan1144 Las credenciales de Bedrock, Agent Platform o Foundry no se cargan

1131</h3>1145</h3>

1132 1146 

1133Si configuró Claude Code para usar un proveedor en la nube y ve `Could not load credentials from any providers` en Amazon Bedrock, `Could not load the default credentials` en Google Cloud's Agent Platform, o `ChainedTokenCredential authentication failed` en Microsoft Foundry, su CLI del proveedor en la nube probablemente no está autenticado en el shell actual.1147Si configuraste Claude Code para usar un proveedor en la nube y ves `Could not load credentials from any providers` en Amazon Bedrock, `Could not load the default credentials` en Google Cloud's Agent Platform, o `ChainedTokenCredential authentication failed` en Microsoft Foundry, probablemente la CLI de tu proveedor en la nube no está autenticada en el shell actual.

1134 1148 

1135Para Amazon Bedrock, confirme que sus credenciales de AWS son válidas:1149Para Amazon Bedrock, confirma que tus credenciales de AWS son válidas:

1136 1150 

1137```bash theme={null}1151```bash theme={null}

1138aws sts get-caller-identity1152aws sts get-caller-identity

1139```1153```

1140 1154 

1141Para Google Cloud's Agent Platform, confirme que `ANTHROPIC_VERTEX_PROJECT_ID` y `CLOUD_ML_REGION` están configurados en su shell, luego establezca credenciales predeterminadas de aplicación:1155Para Google Cloud's Agent Platform, confirma que `ANTHROPIC_VERTEX_PROJECT_ID` y `CLOUD_ML_REGION` están configuradas en tu shell y luego establece las credenciales predeterminadas de aplicación:

1142 1156 

1143```bash theme={null}1157```bash theme={null}

1144gcloud auth application-default login1158gcloud auth application-default login

1145```1159```

1146 1160 

1147Para Microsoft Foundry, confirme que `ANTHROPIC_FOUNDRY_API_KEY` está configurado, o inicie sesión con la CLI de Azure para que la cadena de credenciales predeterminada pueda encontrar su cuenta:1161Para Microsoft Foundry, confirma que `ANTHROPIC_FOUNDRY_API_KEY` está configurada, o inicia sesión con la CLI de Azure para que la cadena de credenciales predeterminada pueda encontrar tu cuenta:

1148 1162 

1149```bash theme={null}1163```bash theme={null}

1150az login1164az login

1151```1165```

1152 1166 

1153Si las credenciales funcionan en su terminal pero no en la extensión de VS Code o JetBrains, el proceso del IDE probablemente no heredó su entorno de shell. Establezca las variables de entorno del proveedor en la configuración propia del IDE, o inicie el IDE desde una terminal donde ya estén exportadas.1167Si las credenciales funcionan en tu terminal pero no en la extensión de VS Code o JetBrains, probablemente el proceso del IDE no heredó el entorno de tu shell. Establece las variables de entorno del proveedor en la configuración propia del IDE, o inicia el IDE desde una terminal donde ya estén exportadas.

1154 1168 

1155Consulte [Amazon Bedrock](/docs/es/amazon-bedrock), [Google Cloud's Agent Platform](/docs/es/google-vertex-ai), o [Microsoft Foundry](/docs/es/microsoft-foundry) para la configuración completa del proveedor.1169Consulta [Amazon Bedrock](/docs/es/amazon-bedrock), [Google Cloud's Agent Platform](/docs/es/google-vertex-ai) o [Microsoft Foundry](/docs/es/microsoft-foundry) para la configuración completa del proveedor.

1156 1170 

1157<h2 id="still-stuck">1171<h2 id="still-stuck">

1158 Aún atrapado1172 Aún atrapado

Details

803. Mueva el trabajo de archivo grande a un [subagente](/docs/es/sub-agents) para que se ejecute en una ventana de contexto separada803. Mueva el trabajo de archivo grande a un [subagente](/docs/es/sub-agents) para que se ejecute en una ventana de contexto separada

814. Ejecute `/clear` si la conversación anterior ya no es necesaria814. Ejecute `/clear` si la conversación anterior ya no es necesaria

82 82 

83Si el error vuelve a aparecer después de un `/clear`, ejecuta [`/context`](/docs/es/debug-your-config) y compara la fila `Messages` con las filas que están encima de ella:

84 

85* **`Messages` es la fila más grande**: un archivo o salida de herramienta en la nueva conversación está rellenando la ventana, así que repite los pasos 1 a 3

86* **Las demás filas juntas son más grandes**: lo que se carga al inicio de la sesión deja muy poco espacio para trabajar, así que [reduce lo que se carga al inicio](/docs/es/errors#prompt-is-too-long)

87 

83<h3 id="command-hangs-or-freezes">88<h3 id="command-hangs-or-freezes">

84 El comando se cuelga o congela89 El comando se cuelga o congela

85</h3>90</h3>

ultrareview.md +5 −5

Details

153 Rastrear una revisión en ejecución153 Rastrear una revisión en ejecución

154</h2>154</h2>

155 155 

156Una revisión típicamente toma de 5 a 10 minutos. La revisión se ejecuta como una tarea de fondo, por lo que puede seguir trabajando en su sesión, iniciar otros comandos o cerrar la terminal completamente. Si eligió [publicar los hallazgos en la solicitud de extracción](#post-findings-to-the-pull-request), mantenga la sesión abierta hasta que finalice la revisión; si la sesión termina primero, Claude Code no publica nada.156Una revisión típicamente toma de 5 a 10 minutos. La revisión se ejecuta como una tarea en segundo plano, por lo que puedes seguir trabajando en tu sesión o iniciar otros comandos. Si elegiste [publicar los hallazgos en el pull request](#post-findings-to-the-pull-request), mantén la sesión abierta hasta que finalice la revisión; si la sesión termina primero, Claude Code no publica nada.

157 157 

158Utilice `/tasks` para ver revisiones en ejecución y completadas, abra la vista de detalle para una revisión o detenga una revisión que está en progreso. Si detiene una revisión, Claude Code archiva la sesión en la nube y no devuelve hallazgos parciales.158Utilice `/tasks` para ver revisiones en ejecución y completadas, abra la vista de detalle para una revisión o detenga una revisión que está en progreso. Si detiene una revisión, Claude Code archiva la sesión en la nube y no devuelve hallazgos parciales.

159 159 


181 181 

182Usted da su consentimiento al respaldo de repositorio completo y al aviso de facturación y términos cuando ejecuta el subcomando, por lo que la ejecución comienza sin esperar entrada. Ejecutarlo usted mismo es lo que cuenta como consentimiento. Cuando Claude ejecuta el subcomando por usted, por ejemplo a través de la herramienta Bash, Claude Code rechaza la revisión de repositorio completo.182Usted da su consentimiento al respaldo de repositorio completo y al aviso de facturación y términos cuando ejecuta el subcomando, por lo que la ejecución comienza sin esperar entrada. Ejecutarlo usted mismo es lo que cuenta como consentimiento. Cuando Claude ejecuta el subcomando por usted, por ejemplo a través de la herramienta Bash, Claude Code rechaza la revisión de repositorio completo.

183 183 

184En Claude Code v2.1.218 o posterior, también puede iniciar la revisión en la nube ejecutando `/code-review ultra` en una sesión no interactiva, por ejemplo `claude -p '/code-review ultra'`. Claude Code inicia la revisión e imprime un enlace de seguimiento sin esperar los hallazgos, a diferencia de `claude ultrareview`, que se bloquea hasta que lleguen. Cuando la revisión facturaría créditos de uso, Claude Code se detiene antes de iniciar y lo señala a `claude ultrareview`, porque la confirmación de facturación necesita una sesión interactiva. Antes de v2.1.218, `/code-review ultra` en una sesión no interactiva ejecutaba una revisión local.184`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.

185 185 

186Los mensajes de progreso y la URL de sesión en vivo van a stderr para que stdout permanezca analizable. Use estas banderas para controlar la salida, el tiempo de espera y si publicar los hallazgos:186`claude ultrareview` escribe sus mensajes de progreso en stderr para que stdout permanezca analizable. Usa estos flags para controlar su salida, el tiempo de espera y si publicar los hallazgos:

187 187 

188| Bandera | Descripción |188| Bandera | Descripción |

189| - | - |189| - | - |


200* **1**: la revisión no se pudo iniciar o se detuvo antes de finalizar, la sesión en la nube generó un error, o se agotó el tiempo de espera200* **1**: la revisión no se pudo iniciar o se detuvo antes de finalizar, la sesión en la nube generó un error, o se agotó el tiempo de espera

201* **130**: interrumpió el subcomando con Ctrl-C201* **130**: interrumpió el subcomando con Ctrl-C

202 202 

203Si interrumpe el subcomando, la revisión remota continúa ejecutándose; siga el enlace de sesión impreso en stderr para verla en el navegador.203Si el subcomando sale antes de que lleguen los hallazgos, estos nunca llegan a tu terminal, y ejecutarlo de nuevo inicia una nueva revisión en lugar de reanudar la anterior. La nueva revisión [cuenta como una ejecución](#pricing-and-free-runs) propia.

204 204 

205Con `--post`, el subcomando inicia la publicación justo después de imprimir los hallazgos e imprime el enlace en stderr.205Con `--post`, el subcomando inicia la publicación justo después de imprimir los hallazgos e imprime el enlace en stderr.

206 206 

207* Si la ejecución falla, se detiene, se agota el tiempo de espera, o si la interrumpe, el subcomando no publica nada.207* Si la ejecución falla, se detiene o se agota el tiempo de espera, el subcomando no publica nada.

208* Si la revisión se completa pero el comentario no se publica, Claude Code imprime el motivo en stderr, y los hallazgos permanecen en stdout para que pueda publicarlos manualmente.208* Si la revisión se completa pero el comentario no se publica, Claude Code imprime el motivo en stderr, y los hallazgos permanecen en stdout para que pueda publicarlos manualmente.

209 209 

210Para revisiones automáticas en solicitudes de extracción de GitHub, [Code Review](/docs/es/code-review) se integra directamente con su repositorio y publica hallazgos como comentarios PR en línea sin un paso de CLI.210Para revisiones automáticas en solicitudes de extracción de GitHub, [Code Review](/docs/es/code-review) se integra directamente con su repositorio y publica hallazgos como comentarios PR en línea sin un paso de CLI.

Details

75 75 

76 Con esta conexión, una sesión puede clonar cualquier repositorio público, pero puede trabajar en un repositorio privado solo cuando la aplicación Claude GitHub está instalada en él. [Instala la aplicación](https://github.com/apps/claude/installations/new) en cada cuenta de GitHub u organización cuyos repositorios privados desees usar. En una organización de GitHub, es posible que el propietario de la organización deba aprobar la instalación. Instalar la aplicación también habilita [Auto-fix](/docs/es/claude-code-on-the-web#auto-fix-pull-requests), que permite a Claude responder a fallos de CI y comentarios de revisión en solicitudes de extracción en esos repositorios.76 Con esta conexión, una sesión puede clonar cualquier repositorio público, pero puede trabajar en un repositorio privado solo cuando la aplicación Claude GitHub está instalada en él. [Instala la aplicación](https://github.com/apps/claude/installations/new) en cada cuenta de GitHub u organización cuyos repositorios privados desees usar. En una organización de GitHub, es posible que el propietario de la organización deba aprobar la instalación. Instalar la aplicación también habilita [Auto-fix](/docs/es/claude-code-on-the-web#auto-fix-pull-requests), que permite a Claude responder a fallos de CI y comentarios de revisión en solicitudes de extracción en esos repositorios.

77 77 

78 Cuando te conectas, Claude también vincula a tu organización de Claude las cuentas de GitHub que te pertenecen, si tienen instalada la aplicación Claude GitHub. En planes Team y Enterprise, los administradores ven esas cuentas en la [lista de cuentas de GitHub conectadas](/docs/es/admin-setup#connected-github-accounts).

79 

78 Si la incorporación te solicita instalar la aplicación en este punto y prefieres hacerlo más tarde, haz clic en **Omitir**.80 Si la incorporación te solicita instalar la aplicación en este punto y prefieres hacerlo más tarde, haz clic en **Omitir**.

79 </Step>81 </Step>

80 82 

worktrees.md +2 −0

Details

131 131 

132Los worktrees de subagentes utilizan la misma [rama base](#choose-the-base-branch) que `--worktree`, por lo que se ramifican desde la rama predeterminada de su repositorio a menos que `worktree.baseRef` esté configurado en `"head"`.132Los worktrees de subagentes utilizan la misma [rama base](#choose-the-base-branch) que `--worktree`, por lo que se ramifican desde la rama predeterminada de su repositorio a menos que `worktree.baseRef` esté configurado en `"head"`.

133 133 

134Un subagente en su propio worktree toma los archivos de instrucciones con los que [inicia](/docs/es/sub-agents#what-loads-at-startup) de tu conversación principal, no de su worktree. Cuando ese worktree está en la ubicación predeterminada bajo `.claude/worktrees/`, el subagente tampoco carga el archivo `CLAUDE.md` ni el directorio `.claude/rules/` de la raíz del worktree mientras lee archivos allí, aunque sean distintos en la rama del worktree.

135 

134<h3 id="clean-up-subagent-and-background-session-worktrees">136<h3 id="clean-up-subagent-and-background-session-worktrees">

135 Limpie worktrees de subagentes y sesiones en segundo plano137 Limpie worktrees de subagentes y sesiones en segundo plano

136</h3>138</h3>