SpyBara
Go Premium

Documentation 2026-11-03 23:58 UTC to 2026-11-04 23:59 UTC

33 files changed +512 −154. View all changes and history on the product overview
2026
Thu 12 21:00 Wed 11 22:59 Tue 10 21:57 Mon 9 23:02 Sun 8 22:58 Sat 7 23:58 Fri 6 23:01 Thu 5 23:03 Wed 4 23:59 Tue 3 23:58 Mon 2 23:57 Sun 1 23:57
Details

231| Modo | Comportamiento | Caso de uso |231| Modo | Comportamiento | Caso de uso |

232| :- | :- | :- |232| :- | :- | :- |

233| `"default"` | Las llamadas de herramientas que necesitan aprobación y no están cubiertas por reglas de permitir activan su devolución de llamada `canUseTool`; sin devolución de llamada significa denegar | Aplicaciones interactivas con una devolución de llamada de aprobación personalizada |233| `"default"` | Las llamadas de herramientas que necesitan aprobación y no están cubiertas por reglas de permitir activan su devolución de llamada `canUseTool`; sin devolución de llamada significa denegar | Aplicaciones interactivas con una devolución de llamada de aprobación personalizada |

234| `"acceptEdits"` | Aprueba automáticamente ediciones de archivo y comandos comunes del sistema de archivos (`mkdir`, `touch`, `mv`, `cp`, etc.); otros comandos de Bash siguen reglas predeterminadas | Confía en las ediciones de Claude y desea una iteración más rápida, como durante la creación de prototipos o cuando trabaja en un directorio aislado |234| `"acceptEdits"` | Aprueba automáticamente ediciones de archivo y comandos comunes del sistema de archivos (`mkdir`, `touch`, `mv`, `cp`, etc.) dentro de tus [directorios de trabajo](https://code.claude.com/docs/es/permissions.md#working-directories); otros comandos de Bash siguen reglas predeterminadas | Confías en las ediciones de Claude y deseas una iteración más rápida, como durante la creación de prototipos o cuando trabajas en un directorio aislado |

235| `"plan"` | Claude explora y planifica sin editar sus archivos fuente; las ediciones de archivo nunca se aprueban automáticamente y se solicitan a través de su devolución de llamada `canUseTool` | Desea que Claude proponga cambios sin ejecutarlos, como durante la revisión de código o cuando necesita aprobar cambios antes de que se realicen |235| `"plan"` | Claude explora y planifica. Las ediciones realizadas con las herramientas de archivos de Claude van a tu devolución de llamada `canUseTool` incluso cuando una regla de permitir coincide con ellas | Deseas que Claude produzca primero un plan, como durante la revisión de código o antes de un cambio grande |

236| `"dontAsk"` | Nunca pide confirmación. Las herramientas preaprobadas por [reglas de permisos](https://code.claude.com/docs/es/settings-reference.md#permission-settings) se ejecutan, y también lo hacen las llamadas que no necesitan aprobación en modo `default`, como lecturas de archivo dentro de tus directorios de trabajo. Toda llamada que de otro modo pediría confirmación se deniega, aunque un [mod](https://code.claude.com/docs/es/plugins/mods/overview.md) que hayas instalado aún puede aprobar [algunas de esas llamadas](https://code.claude.com/docs/es/permissions.md#precedence-among-rules-hooks-and-mods). Algunas llamadas, como las [lecturas desde rutas de red](https://code.claude.com/docs/es/permissions.md#network-paths), se deniegan incluso si las has permitido. Para ver la lista, consulta [Modo no preguntar](https://code.claude.com/docs/es/agent-sdk/permissions.md#don’t-ask-mode-dontask) | Agentes sin interfaz sin nadie que apruebe las llamadas |236| `"dontAsk"` | Nunca pide confirmación. Las herramientas preaprobadas por [reglas de permisos](https://code.claude.com/docs/es/settings-reference.md#permission-settings) se ejecutan, y también lo hacen las llamadas que no necesitan aprobación en modo `default`, como lecturas de archivo dentro de tus directorios de trabajo. Toda llamada que de otro modo pediría confirmación se deniega, aunque un [mod](https://code.claude.com/docs/es/plugins/mods/overview.md) que hayas instalado aún puede aprobar [algunas de esas llamadas](https://code.claude.com/docs/es/permissions.md#precedence-among-rules-hooks-and-mods). Algunas llamadas, como las [lecturas desde rutas de red](https://code.claude.com/docs/es/permissions.md#network-paths), se deniegan incluso si las has permitido. Para ver la lista, consulta [Modo no preguntar](https://code.claude.com/docs/es/agent-sdk/permissions.md#don’t-ask-mode-dontask) | Agentes sin interfaz sin nadie que apruebe las llamadas |

237| `"auto"` | Usa un clasificador de modelo para revisar acciones como comandos de shell y solicitudes de red, permitiendo o bloqueando cada una que revisa. Vea [Modo automático](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) para disponibilidad y el orden de decisión | Agentes autónomos que aún desean protecciones de seguridad en el uso de herramientas |237| `"auto"` | Usa un clasificador de modelo para revisar acciones como comandos de shell y solicitudes de red, permitiendo o bloqueando cada una que revisa. Vea [Modo automático](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) para disponibilidad y el orden de decisión | Agentes autónomos que aún desean protecciones de seguridad en el uso de herramientas |

238| `"bypassPermissions"` | Ejecuta las llamadas a herramientas sin pedir aprobación, incluidas las llamadas a herramientas que no incluiste en `allowedTools`. Algunas llamadas aún van a tu devolución de llamada `canUseTool`; se enumeran en [Modo de omisión de permisos](https://code.claude.com/docs/es/agent-sdk/permissions.md#bypass-permissions-mode-bypasspermissions). En el SDK de TypeScript, también requiere `allowDangerouslySkipPermissions: true` en `options`. No se puede usar cuando se ejecuta como root en Unix. Úsalo solo en entornos aislados donde las acciones del agente no puedan afectar sistemas que te importan | CI, contenedores u otros entornos aislados |238| `"bypassPermissions"` | Ejecuta las llamadas a herramientas sin pedir aprobación, incluidas las llamadas a herramientas que no incluiste en `allowedTools`. Algunas llamadas aún van a tu devolución de llamada `canUseTool`; se enumeran en [Modo de omisión de permisos](https://code.claude.com/docs/es/agent-sdk/permissions.md#bypass-permissions-mode-bypasspermissions). En el SDK de TypeScript, también requiere `allowDangerouslySkipPermissions: true` en `options`. No se puede usar cuando se ejecuta como root en Unix. Úsalo solo en entornos aislados donde las acciones del agente no puedan afectar sistemas que te importan | CI, contenedores u otros entornos aislados |

239 239 

240Para aplicaciones interactivas, use `"default"` con una devolución de llamada de aprobación de herramienta para mostrar solicitudes de aprobación. Para agentes autónomos en una máquina de desarrollo, `"acceptEdits"` aprueba automáticamente ediciones de archivo y comandos comunes del sistema de archivos (`mkdir`, `touch`, `mv`, `cp`, etc.) mientras aún controla otros comandos de `Bash` detrás de reglas de permitir. Reserve `"bypassPermissions"` para CI, contenedores u otros entornos aislados. Vea [Permisos](https://code.claude.com/docs/es/agent-sdk/permissions.md) para detalles completos.240Para aplicaciones interactivas, usa `"default"` con una devolución de llamada de aprobación de herramientas para mostrar solicitudes de aprobación. Para agentes que editan archivos en una máquina de desarrollo, usa `"acceptEdits"`. Reserva `"bypassPermissions"` para CI, contenedores u otros entornos aislados. Consulta [Permisos](https://code.claude.com/docs/es/agent-sdk/permissions.md) para ver todos los detalles.

241 241 

242### Modelo242### Modelo

243 243 

Details

14>14>

15> Si cargas un plugin que contiene un [mod](https://code.claude.com/docs/es/plugins/mods/overview.md), consulta [dónde encajan las decisiones de un mod entre las reglas y los hooks](https://code.claude.com/docs/es/permissions.md#precedence-among-rules-hooks-and-mods).15> Si cargas un plugin que contiene un [mod](https://code.claude.com/docs/es/plugins/mods/overview.md), consulta [dónde encajan las decisiones de un mod entre las reglas y los hooks](https://code.claude.com/docs/es/permissions.md#precedence-among-rules-hooks-and-mods).

16 16 

17Cuando Claude solicita una herramienta, el SDK comprueba los permisos en este orden:17Cuando Claude solicita una herramienta, Claude Code comprueba la llamada en estos pasos. Cada paso puede decidir la llamada, enviarla a tu devolución de llamada `canUseTool` o dejarla pasar:

18 18 

19**1. Hooks**19**1. Hooks**

20 20 

21Ejecutar [hooks](https://code.claude.com/docs/es/agent-sdk/hooks.md) primero. Un hook puede denegar la llamada directamente o dejarla pasar. Un hook que devuelve `allow` no omite las reglas de denegación y pregunta a continuación; esas se evalúan independientemente del resultado del hook.21Ejecutar [hooks](https://code.claude.com/docs/es/agent-sdk/hooks.md). Un hook puede denegar la llamada directamente o dejarla pasar. Un hook que devuelve `allow` no omite las reglas de denegación y pregunta a continuación; esas se evalúan independientemente del resultado del hook.

22 22 

23Un hook `PreToolUse` que devuelve `allow` tampoco puede aprobar un comando `rm` o `rmdir` cuyo destino Claude Code reconoce como una [ruta crítica](https://code.claude.com/docs/es/permission-modes.md#critical-paths), como `rm -rf ~`. Para saber qué hace ese `allow` en modo plan, consulta [Aprobaciones de hooks en modo plan](https://code.claude.com/docs/es/permissions.md#hook-approvals-in-plan-mode).23Un hook `PreToolUse` que devuelve `allow` tampoco puede aprobar un comando `rm` o `rmdir` cuyo destino Claude Code reconoce como una [ruta crítica](https://code.claude.com/docs/es/permission-modes.md#critical-paths), como `rm -rf ~`. Para saber qué hace ese `allow` en modo plan, consulta [Aprobaciones de hooks en modo plan](https://code.claude.com/docs/es/permissions.md#hook-approvals-in-plan-mode).

24 24 

25**2. Reglas de denegación**25**2. Reglas de denegación**

26 26 

27Si una regla de denegación de `disallowed_tools` o de [settings.json](https://code.claude.com/docs/es/settings-reference.md#permission-settings) coincide, la llamada se deniega y no se llama a [`canUseTool`](https://code.claude.com/docs/es/agent-sdk/user-input), incluso en modo [`bypassPermissions`](#bypass-permissions-mode-bypasspermissions) e incluso cuando un hook devolvió `allow`.27Si una regla de denegación de `disallowed_tools` o de un [archivo de configuración que carga el SDK](#rules-in-settings-files) coincide, la llamada se deniega y no se llama a [`canUseTool`](https://code.claude.com/docs/es/agent-sdk/user-input). La llamada se deniega de esta forma incluso en modo [`bypassPermissions`](#bypass-permissions-mode-bypasspermissions) y cuando un hook devolvió `allow`.

28 28 

29En el SDK de TypeScript, si estableces el `permission_policy` de una [herramienta personalizada](https://code.claude.com/docs/es/agent-sdk/custom-tools.md#require-approval-for-specific-tools) en [`always_deny`](https://code.claude.com/docs/es/agent-sdk/typescript#mcpservertoolpolicy), una llamada a esa herramienta se deniega en este paso.29En el SDK de TypeScript, si estableces el `permission_policy` de una [herramienta personalizada](https://code.claude.com/docs/es/agent-sdk/custom-tools.md#require-approval-for-specific-tools) en [`always_deny`](https://code.claude.com/docs/es/agent-sdk/typescript#mcpservertoolpolicy), una llamada a esa herramienta se deniega en este paso.

30 30 


32 32 

33Comprobar reglas `ask` de [settings.json](https://code.claude.com/docs/es/settings-reference.md#permission-settings). Si una regla de pregunta coincide, la llamada se pasa a tu [devolución de llamada `canUseTool`](https://code.claude.com/docs/es/agent-sdk/user-input) para confirmación, incluso en modo `bypassPermissions`.33Comprobar reglas `ask` de [settings.json](https://code.claude.com/docs/es/settings-reference.md#permission-settings). Si una regla de pregunta coincide, la llamada se pasa a tu [devolución de llamada `canUseTool`](https://code.claude.com/docs/es/agent-sdk/user-input) para confirmación, incluso en modo `bypassPermissions`.

34 34 

35Las herramientas que requieren interacción del usuario se comportan de la misma manera: `AskUserQuestion` y herramientas MCP cuyo servidor establece [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/es/mcp#require-approval-for-a-specific-tool) siempre se pasan a la devolución de llamada, incluso cuando una regla de permiso coincide. En modo `dontAsk` ambos casos se deniegan en su lugar, porque ese modo nunca solicita. La anotación MCP requiere Claude Code v2.1.199 o posterior.35Las herramientas que requieren interacción del usuario se comportan de la misma manera. `AskUserQuestion` y las herramientas MCP cuyo servidor establece [`_meta["anthropic/requiresUserInteraction"]`](https://code.claude.com/docs/es/mcp#require-approval-for-a-specific-tool) se pasan a la devolución de llamada, incluso cuando una regla de permiso coincide. En modo `dontAsk` ambos casos se deniegan en su lugar, porque ese modo convierte cada solicitud de permiso en una denegación. La anotación MCP requiere Claude Code v2.1.199 o posterior.

36 36 

37Las herramientas del [conector de claude.ai](https://code.claude.com/docs/es/mcp.md#organization-controls-on-connector-tools) que tu organización ha establecido en `ask` también salen del flujo en este paso. Cada llamada se pasa a la devolución de llamada, incluso en modo `bypassPermissions` y incluso cuando una regla de permiso coincide. La devolución de llamada recibe la razón `Your organization requires approval for this tool`. En modo `dontAsk` la llamada se deniega en su lugar, porque ese modo nunca solicita.37Las herramientas del [conector de claude.ai](https://code.claude.com/docs/es/mcp.md#organization-controls-on-connector-tools) que tu organización ha establecido en `ask` también salen del flujo en este paso. Cada llamada se pasa a la devolución de llamada, incluso en modo `bypassPermissions` y incluso cuando una regla de permiso coincide. La devolución de llamada recibe la razón `Your organization requires approval for this tool`. En modo `dontAsk` la llamada se deniega en su lugar, porque ese modo nunca solicita.

38 38 


42 42 

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

44 44 

45* En modo `bypassPermissions`, Claude Code aprueba todo lo que llega a este paso excepto las [eliminaciones de rutas críticas](https://code.claude.com/docs/es/permission-modes.md#critical-paths) reconocidas y los comandos Bash marcados con [`Dangerous rm operation not ruled out`](https://code.claude.com/docs/es/permission-modes#dangerous-rm-operation-not-ruled-out), que se pasan en su lugar.45* En modo `bypassPermissions`, Claude Code aprueba cada llamada que llega a este paso, a menos que sea una de las [acciones que ningún modo aprueba automáticamente](https://code.claude.com/docs/es/permission-modes.md#actions-no-mode-auto-approves). Para saber cuáles de esas acciones van a tu devolución de llamada `canUseTool`, consulta [Modo de omisión de permisos](#bypass-permissions-mode-bypasspermissions).

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

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

48* En modo `plan`, Claude Code envía las herramientas de edición de archivos a tu devolución de llamada `canUseTool` independientemente de las reglas de permiso.47* En modo `plan`, algunas llamadas llegan a tu devolución de llamada y, cuando el modo automático está disponible, otras van a su clasificador en su lugar. Para más información, consulta [Modo plan](#plan-mode-plan).

49* En otros modos, la solicitud se pasa.48* En los modos `default` y `dontAsk`, la llamada continúa hacia las reglas de permiso.

49* Para el modo `auto`, consulta [Modo automático](#auto-mode-auto).

50 50 

51**5. Reglas de permiso**51**5. Reglas de permiso**

52 52 


91 91 

92Las reglas de permitir aceptan patrones globales de nombres de herramientas solo después de un prefijo literal `mcp__<server>__`. El segmento del servidor debe estar libre de patrones globales para que la regla nombre un servidor específico que hayas configurado: `mcp__puppeteer__*` coincide con cada herramienta del servidor `puppeteer`, y `mcp__github__get_*` coincide con sus herramientas `get_`. Una entrada sin ancla como `allowed_tools=["*"]` o `allowed_tools=["mcp__*"]` se ignora y no aprueba automáticamente nada.92Las reglas de permitir aceptan patrones globales de nombres de herramientas solo después de un prefijo literal `mcp__<server>__`. El segmento del servidor debe estar libre de patrones globales para que la regla nombre un servidor específico que hayas configurado: `mcp__puppeteer__*` coincide con cada herramienta del servidor `puppeteer`, y `mcp__github__get_*` coincide con sus herramientas `get_`. Una entrada sin ancla como `allowed_tools=["*"]` o `allowed_tools=["mcp__*"]` se ignora y no aprueba automáticamente nada.

93 93 

94Las reglas delimitadas para `Read` y `Edit` toman un patrón de ruta. Las reglas `Edit(path)` rigen todas las herramientas integradas que escriben archivos, incluidas `Write` y `NotebookEdit`; una regla `Write(path)` nunca es coincidida por las comprobaciones de permisos de archivo.

95 

96Use `//path` para una ruta del sistema de archivos absoluta: una regla de denegación de `Edit(//secrets/**)` bloquea escrituras en cualquier lugar bajo `/secrets` en el disco. Con una sola barra diagonal inicial, `Edit(/secrets/**)` se ancla en la fuente de la regla en su lugar. Para reglas pasadas a través de `allowed_tools` o `disallowed_tools`, eso significa el directorio de trabajo de la sesión, por lo que la regla no bloquea `/secrets` en el disco. Consulte [Reglas de Read y Edit](https://code.claude.com/docs/es/permissions.md#read-and-edit) para las cuatro formas de anclaje y cómo se resuelven las reglas de archivos de configuración.

97 

98> [!WARNING]94> [!WARNING]

99>95>

100> **Las herramientas aprobadas automáticamente nunca llegan a `canUseTool`.** Una llamada de herramienta aprobada en cualquier paso anterior, por `acceptEdits` o `bypassPermissions`, o por una regla de permitir, omite su devolución de llamada `canUseTool`, por lo que las comprobaciones de permisos que coloque allí se omiten silenciosamente para esa herramienta.96> **Las herramientas aprobadas automáticamente nunca llegan a `canUseTool`.** Una llamada de herramienta aprobada en cualquier paso anterior, por `acceptEdits` o `bypassPermissions`, o por una regla de permitir, omite su devolución de llamada `canUseTool`, por lo que las comprobaciones de permisos que coloque allí se omiten silenciosamente para esa herramienta.


105>101>

106> * Herramientas personalizadas que tu aplicación marca como [`always_ask`](https://code.claude.com/docs/es/agent-sdk/custom-tools#require-approval-for-specific-tools): decide la llamada en la devolución de llamada. Para que estas llamadas dejen de llegar, [cambia la política a mitad de la sesión](https://code.claude.com/docs/es/agent-sdk/typescript.md#mcpsdkserverconfigwithinstance). En los modos `auto`, `plan` y `bypassPermissions`, la llamada puede aprobarse antes de la devolución de llamada, en los casos enumerados en [Modos de permisos que pueden aprobar una llamada `always_ask`](https://code.claude.com/docs/es/agent-sdk/typescript#permission-modes-that-can-approve-an-always_ask-call)102> * Herramientas personalizadas que tu aplicación marca como [`always_ask`](https://code.claude.com/docs/es/agent-sdk/custom-tools#require-approval-for-specific-tools): decide la llamada en la devolución de llamada. Para que estas llamadas dejen de llegar, [cambia la política a mitad de la sesión](https://code.claude.com/docs/es/agent-sdk/typescript.md#mcpsdkserverconfigwithinstance). En los modos `auto`, `plan` y `bypassPermissions`, la llamada puede aprobarse antes de la devolución de llamada, en los casos enumerados en [Modos de permisos que pueden aprobar una llamada `always_ask`](https://code.claude.com/docs/es/agent-sdk/typescript#permission-modes-that-can-approve-an-always_ask-call)

107>103>

108> * [Eliminaciones de rutas críticas](https://code.claude.com/docs/es/permission-modes.md#critical-paths) reconocidas con `rm` y `rmdir`: en los modos `default`, `acceptEdits` y `bypassPermissions`, permite o deniega la eliminación en la devolución de llamada, donde [`decisionReason`](https://code.claude.com/docs/es/agent-sdk/typescript#canusetool) empieza por `Dangerous rm`. Para los modos `auto` y `plan`, consulta [Eliminaciones de rutas críticas en cada modo de permisos](https://code.claude.com/docs/es/permission-modes.md#critical-path-removals-in-each-permission-mode). La comprobación que reconoce estas eliminaciones [puede pasar por alto algunos comandos](https://code.claude.com/docs/es/permission-modes.md#critical-paths)104> * [Eliminaciones de rutas críticas](https://code.claude.com/docs/es/permission-modes.md#critical-paths) reconocidas con `rm` y `rmdir`: en los modos `default`, `acceptEdits` y `bypassPermissions`, permite o deniega la eliminación en la devolución de llamada, donde [`decisionReason`](https://code.claude.com/docs/es/agent-sdk/typescript#canusetool) empieza por `Dangerous rm`. Para los modos `auto` y `plan`, consulta [Eliminaciones de rutas críticas en cada modo de permisos](https://code.claude.com/docs/es/permission-modes.md#critical-path-removals-in-each-permission-mode)

109>105>

110> * **Nombre simple**: una entrada como `Read` o `mcp__github__get_issue` aprueba automáticamente cada llamada a esa herramienta, aparte de las [acciones que ningún modo aprueba automáticamente](https://code.claude.com/docs/es/permission-modes.md#actions-no-mode-auto-approves) y de las [lecturas desde rutas de red](https://code.claude.com/docs/es/permissions.md#network-paths).106> * **Nombre simple**: una entrada como `Read` o `mcp__github__get_issue` aprueba automáticamente cada llamada a esa herramienta, aparte de las [acciones que ningún modo aprueba automáticamente](https://code.claude.com/docs/es/permission-modes.md#actions-no-mode-auto-approves) y de las [lecturas desde rutas de red](https://code.claude.com/docs/es/permissions.md#network-paths).

111>107>

112> * **Regla delimitada**: una entrada como `Bash(npm test *)` aprueba automáticamente solo las llamadas coincidentes, y otras llamadas a `Bash` que necesiten aprobación aún caen en la devolución de llamada.108> * **Regla delimitada**: una entrada como `Bash(npm test *)` aprueba automáticamente las llamadas que coinciden con ella, y otras llamadas a `Bash` que necesiten aprobación caen en el modo de permisos.

113>109>

114> Para comprobaciones que deben ejecutarse en cada llamada a herramienta, usa un [hook `PreToolUse`](https://code.claude.com/docs/es/agent-sdk/hooks): los hooks se ejecutan antes de cualquier otro paso, y una denegación de hook se aplica incluso en modo `bypassPermissions`.110> Para comprobar las llamadas que aprueban una regla de permitir, `acceptEdits` o `bypassPermissions`, usa un [hook `PreToolUse`](https://code.claude.com/docs/es/agent-sdk/hooks), que también se ejecuta para esas llamadas. Una denegación de hook se aplica incluso en modo `bypassPermissions`.

115 111 

116Para un agente bloqueado, empareje `allowedTools` con `permissionMode: "dontAsk"`:112Para un agente bloqueado, empareje `allowedTools` con `permissionMode: "dontAsk"`:

117 113 


128 124 

129> [!WARNING]125> [!WARNING]

130>126>

131> **`allowed_tools` no restringe `bypassPermissions`.** `allowed_tools` aprueba previamente las herramientas que lista. Otras herramientas no listadas no son coincididas por ninguna regla de permitir y caen en el modo de permisos, donde `bypassPermissions` las aprueba. Configurar `allowed_tools=["Read"]` junto con `permission_mode="bypassPermissions"` aún aprueba cada herramienta, incluidas `Bash`, `Write` y `Edit`. Si necesita `bypassPermissions` pero desea que herramientas específicas se bloqueen, use `disallowed_tools`.127> **`allowed_tools` no restringe `bypassPermissions`.** `allowed_tools` aprueba previamente las herramientas que listas. En modo `bypassPermissions`, Claude Code aprueba una llamada a una herramienta no listada, a menos que sea una de las [acciones que ningún modo aprueba automáticamente](https://code.claude.com/docs/es/permission-modes.md#actions-no-mode-auto-approves).

128>

129> Si configuras `allowed_tools=["Read"]` con `permission_mode="bypassPermissions"`, Claude Code sigue aprobando llamadas a herramientas como `Bash`, `Write` y `Edit`. Si necesitas `bypassPermissions` pero quieres que herramientas específicas se bloqueen, usa `disallowed_tools`. Para las llamadas que aún llegan a tu devolución de llamada `canUseTool` en este modo, consulta [Modo de omisión de permisos](#bypass-permissions-mode-bypasspermissions).

132 130 

133También puede configurar reglas de permitir, denegar y preguntar de manera declarativa en `.claude/settings.json`. Estas reglas se leen cuando la fuente de configuración `project` está habilitada, que lo está para las opciones predeterminadas de `query()`. Si establece `setting_sources` (TypeScript: `settingSources`) explícitamente, incluya `"project"` para que se apliquen. Consulte [Configuración de permisos](https://code.claude.com/docs/es/settings-reference.md#permission-settings) para la sintaxis de reglas.131También puede configurar reglas de permitir, denegar y preguntar de manera declarativa en `.claude/settings.json`. Estas reglas se leen cuando la fuente de configuración `project` está habilitada, que lo está para las opciones predeterminadas de `query()`. Si establece `setting_sources` (TypeScript: `settingSources`) explícitamente, incluya `"project"` para que se apliquen. Consulte [Configuración de permisos](https://code.claude.com/docs/es/settings-reference.md#permission-settings) para la sintaxis de reglas.

134 132 

133Para saber cuándo se aplican las reglas de permitir del `.claude/settings.json` de un proyecto, consulta [Reglas de permitir del proyecto y confianza del espacio de trabajo](https://code.claude.com/docs/es/permissions.md#project-allow-rules-and-workspace-trust).

134 

135### Patrones de ruta en reglas

136 

137Las reglas delimitadas para `Read` y `Edit` toman un patrón de ruta. Las reglas `Edit(path)` rigen todas las herramientas integradas que escriben archivos, incluidas `Write` y `NotebookEdit`, así que escribe una regla de ruta para cualquiera de ellas como `Edit(path)`. Si escribes una regla de ruta como `Write(path)` o `NotebookEdit(path)`, [no coincide con ninguna llamada](https://code.claude.com/docs/es/permissions.md#path-rules-that-never-match) y no tiene efecto.

138 

139En `allowed_tools` y `disallowed_tools`, empieza un patrón de ruta con `//` para una ruta absoluta, o con una sola `/` para una ruta dentro del directorio de trabajo de la sesión:

140 

141* **`//path`**: con una regla de denegación de `Edit(//secrets/**)`, Claude Code bloquea las escrituras bajo `/secrets` en el disco desde las herramientas de archivos de Claude y desde [comandos Bash como `tee` y la redirección `> file`](https://code.claude.com/docs/es/permissions#what-read-and-edit-rules-cover). Un script que Claude ejecuta y que abre archivos por sí mismo aún puede escribir bajo `/secrets`. Para una aplicación a nivel del sistema operativo, consulta [Configurar la herramienta Bash en sandbox](https://code.claude.com/docs/es/sandboxing.md).

142* **`/path`**: `Edit(/secrets/**)` coincide con el directorio `secrets` dentro del directorio de trabajo.

143 

144Para otras formas de empezar un patrón de ruta, consulta [Reglas de Read y Edit](https://code.claude.com/docs/es/permissions.md#read-and-edit).

145 

135## Modos de permisos146## Modos de permisos

136 147 

137Los modos de permisos proporcionan control global sobre cómo Claude utiliza las herramientas. Puede establecer el modo de permisos al llamar a `query()` o cambiarlo dinámicamente durante sesiones de transmisión.148Los modos de permisos proporcionan control global sobre cómo Claude utiliza las herramientas. Puede establecer el modo de permisos al llamar a `query()` o cambiarlo dinámicamente durante sesiones de transmisión.


146| :- | :- | :- |157| :- | :- | :- |

147| `default` | Comportamiento de permisos estándar | Sin aprobaciones automáticas basadas en modo; las llamadas que necesitan aprobación y no coinciden con ninguna regla de permiso activan su devolución de llamada `canUseTool` |158| `default` | Comportamiento de permisos estándar | Sin aprobaciones automáticas basadas en modo; las llamadas que necesitan aprobación y no coinciden con ninguna regla de permiso activan su devolución de llamada `canUseTool` |

148| `dontAsk` | Denegar en lugar de preguntar | Cualquier llamada que de otro modo solicitaría confirmación es denegada sin llamar a `canUseTool`, aunque un [mod](https://code.claude.com/docs/es/plugins/mods/overview.md) que instalaste aún puede aprobar [algunas de esas llamadas](https://code.claude.com/docs/es/permissions.md#precedence-among-rules-hooks-and-mods). Las llamadas aprobadas por `allowed_tools` o por reglas de permiso de `settings.json` se ejecutan, al igual que las llamadas que no necesitan aprobación en modo `default`. Algunas llamadas, como las [lecturas desde rutas de red](https://code.claude.com/docs/es/permissions.md#network-paths), son denegadas incluso cuando `allowed_tools` o una regla de permiso coinciden con ellas. Para ver la lista, consulta [Modo no preguntar](#don’t-ask-mode-dontask) |159| `dontAsk` | Denegar en lugar de preguntar | Cualquier llamada que de otro modo solicitaría confirmación es denegada sin llamar a `canUseTool`, aunque un [mod](https://code.claude.com/docs/es/plugins/mods/overview.md) que instalaste aún puede aprobar [algunas de esas llamadas](https://code.claude.com/docs/es/permissions.md#precedence-among-rules-hooks-and-mods). Las llamadas aprobadas por `allowed_tools` o por reglas de permiso de `settings.json` se ejecutan, al igual que las llamadas que no necesitan aprobación en modo `default`. Algunas llamadas, como las [lecturas desde rutas de red](https://code.claude.com/docs/es/permissions.md#network-paths), son denegadas incluso cuando `allowed_tools` o una regla de permiso coinciden con ellas. Para ver la lista, consulta [Modo no preguntar](#don’t-ask-mode-dontask) |

149| `acceptEdits` | Aceptar automáticamente ediciones de archivos | Las ediciones de archivos y [operaciones del sistema de archivos](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, etc.) se aprueban automáticamente |160| `acceptEdits` | Aceptar automáticamente ediciones de archivos | Las ediciones de archivos y [operaciones del sistema de archivos](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, etc.) dentro de tus [directorios de trabajo](https://code.claude.com/docs/es/permissions.md#working-directories) se aprueban automáticamente |

150| `bypassPermissions` | Omitir verificaciones de permisos | Las herramientas se ejecutan sin solicitudes de permisos, excepto para las [acciones que ningún modo aprueba automáticamente](https://code.claude.com/docs/es/permission-modes.md#actions-no-mode-auto-approves) y, fuera de una [sesión en la nube](https://code.claude.com/docs/es/claude-code-on-the-web.md), las herramientas personalizadas que tu aplicación [marca como `always_ask`](https://code.claude.com/docs/es/agent-sdk/custom-tools#require-approval-for-specific-tools). Úsalo con precaución |161| `bypassPermissions` | Omitir verificaciones de permisos | Las herramientas se ejecutan sin solicitudes de permisos, excepto para las [acciones que ningún modo aprueba automáticamente](https://code.claude.com/docs/es/permission-modes.md#actions-no-mode-auto-approves) y, fuera de una [sesión en la nube](https://code.claude.com/docs/es/claude-code-on-the-web.md), las herramientas personalizadas que tu aplicación [marca como `always_ask`](https://code.claude.com/docs/es/agent-sdk/custom-tools#require-approval-for-specific-tools). Úsalo con precaución |

151| `plan` | Modo de planificación | Claude explora y planifica sin editar sus archivos fuente; las ediciones de archivos nunca se aprueban automáticamente y se solicitan a través de su devolución de llamada `canUseTool` |162| `plan` | Modo de planificación | Claude explora y planifica. Las ediciones hechas con las herramientas de archivos de Claude van a tu devolución de llamada `canUseTool` incluso cuando una regla de permiso coincide con ellas |

152| `auto` | Aprobaciones clasificadas por modelo | Un clasificador de modelo revisa acciones como comandos de shell y solicitudes de red, permitiendo o bloqueando cada una que revisa. Consulte [Modo Auto](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) para disponibilidad y el orden de decisión |163| `auto` | Aprobaciones clasificadas por modelo | Un clasificador de modelo revisa acciones como comandos de shell y solicitudes de red, permitiendo o bloqueando cada una que revisa. Consulte [Modo Auto](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) para disponibilidad y el orden de decisión |

153 164 

154> [!WARNING]165> [!WARNING]


267 278 

268**Operaciones aprobadas automáticamente:**279**Operaciones aprobadas automáticamente:**

269 280 

270* Ediciones de archivos (herramientas Edit, Write)281* Ediciones de archivos con las herramientas Edit, Write y NotebookEdit

271* Comandos del sistema de archivos: `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp`, `sed`282* Comandos del sistema de archivos: `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp`, `sed`

272 283 

273Ambos se aplican solo a rutas dentro del directorio de trabajo o `additionalDirectories`. En modo `acceptEdits`, Claude Code no aprueba automáticamente la solicitud cuando Claude:284Ambos se aplican a rutas dentro del directorio de trabajo o de un directorio que agregues. En Python, agrega uno con `add_dirs`, y en TypeScript con `additionalDirectories`. En modo `acceptEdits`, Claude Code no aprueba automáticamente la solicitud cuando Claude:

274 285 

275* Trabaja en una ruta fuera de ese alcance286* Trabaja en una ruta fuera de ese alcance

276* Escribe en una ruta protegida287* Escribe en una [ruta protegida](https://code.claude.com/docs/es/permission-modes.md#protected-paths)

277* Elimina con `rm` o `rmdir` una ruta que Claude Code reconoce como [ruta crítica](https://code.claude.com/docs/es/permission-modes.md#critical-paths)288* Elimina con `rm` o `rmdir` una ruta que Claude Code reconoce como [ruta crítica](https://code.claude.com/docs/es/permission-modes.md#critical-paths)

278* Ejecuta [`touch`](https://code.claude.com/docs/es/permission-modes#auto-approve-file-edits-with-acceptedits-mode) con, por ejemplo, una opción, un glob o un prefijo `timeout 5` o `LANG=C`289* Ejecuta [`touch`](https://code.claude.com/docs/es/permission-modes#auto-approve-file-edits-with-acceptedits-mode) con, por ejemplo, una opción, un glob o un prefijo `timeout 5` o `LANG=C`

279 290 


293 304 

294Si tu hook `PreToolUse` devuelve `allow` para una eliminación de ruta crítica reconocida, una lectura desde una ruta de red o una llamada a una herramienta marcada como `always_ask`, la llamada sigue siendo denegada. La verificación que reconoce estas eliminaciones [puede pasar por alto algunos comandos](https://code.claude.com/docs/es/permission-modes.md#critical-paths).305Si tu hook `PreToolUse` devuelve `allow` para una eliminación de ruta crítica reconocida, una lectura desde una ruta de red o una llamada a una herramienta marcada como `always_ask`, la llamada sigue siendo denegada. La verificación que reconoce estas eliminaciones [puede pasar por alto algunos comandos](https://code.claude.com/docs/es/permission-modes.md#critical-paths).

295 306 

296**Úselo cuando:** desee una superficie de herramientas fija y explícita para un agente sin interfaz y prefiera una denegación definitiva sobre la dependencia silenciosa de que `canUseTool` esté ausente.307**Úsalo cuando:** ejecutas un agente sin interfaz y quieres una denegación definitiva para cada llamada que de otro modo solicitaría confirmación.

297 308 

298#### Modo omitir permisos (`bypassPermissions`)309#### Modo omitir permisos (`bypassPermissions`)

299 310 


303>314>

304> Úselo con extrema precaución. Claude tiene acceso completo al sistema en este modo. Úselo solo en entornos controlados donde confíe en todas las operaciones posibles.315> Úselo con extrema precaución. Claude tiene acceso completo al sistema en este modo. Úselo solo en entornos controlados donde confíe en todas las operaciones posibles.

305>316>

306> `allowed_tools` no restringe este modo. Cada herramienta se aprueba, no solo las que enumeró. Estos controles aún se aplican:317> `allowed_tools` no restringe este modo, y las llamadas a herramientas que no enumeraste también se aprueban. Estos controles aún se aplican:

307>318>

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

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

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

311 322 

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

313 324 

314Claude explora la base de código y produce un plan sin editar tus archivos fuente. Las ediciones de archivos nunca se aprueban automáticamente en modo plan, incluso cuando una regla de permiso coincide o un hook `PreToolUse` devuelve `allow`. En su lugar, se solicitan a través de tu devolución de llamada `canUseTool`.325Claude explora la base de código y produce un plan. Durante la planificación, las ediciones hechas con las herramientas de archivos de Claude fuera de las [rutas protegidas](https://code.claude.com/docs/es/permission-modes.md#protected-paths) llegan a tu devolución de llamada `canUseTool`, incluso cuando una regla de permiso coincide o un hook `PreToolUse` devuelve `allow`. Las llamadas a [`AskUserQuestion`](https://code.claude.com/docs/es/agent-sdk/user-input#handle-clarifying-questions) también llegan a tu devolución de llamada, incluso cuando una regla de permiso nombra la herramienta.

326 

327Cuando el [modo automático](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) está disponible, Claude Code envía estas llamadas durante la planificación al [clasificador del modo automático](https://code.claude.com/docs/es/permission-modes.md#analyze-before-you-edit-with-plan-mode) para que las revise en lugar de enviarlas a tu devolución de llamada, cuando ninguna regla de permiso las aprueba:

328 

329* Comandos de shell

330* Obtenciones web

331* Búsquedas web

332* Llamadas a herramientas MCP que su servidor marca como de solo lectura

333 

334Esta revisión está activada de forma predeterminada. Para desactivarla, establece [`useAutoModeDuringPlan`](https://code.claude.com/docs/es/settings-reference#useautomodeduringplan) en `false` en la opción `settings` que pasas a `query()`, o en tu configuración de usuario. Mientras la revisión está desactivada, las búsquedas web y las llamadas a herramientas MCP marcadas como de solo lectura llegan a tu devolución de llamada.

315 335 

316Mientras el modo automático está disponible para la sesión, los comandos que Claude ejecuta durante la planificación no llegan a tu devolución de llamada de forma predeterminada, porque el modelo clasificador que usa el [modo automático](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) [los revisa en su lugar](https://code.claude.com/docs/es/permission-modes.md#analyze-before-you-edit-with-plan-mode). Con esa revisión activada, el clasificador también puede aprobar llamadas de solo lectura que de otro modo llegarían a tu devolución de llamada, como una llamada a `WebFetch` sin regla de permiso.336Para los comandos de shell y las obtenciones web, la tabla muestra si cada llamada llega a tu devolución de llamada:

337 

338| Llamada durante la planificación | Revisión activada | Revisión desactivada, o modo automático no disponible |

339| :- | :- | :- |

340| Un comando de shell [de solo lectura](https://code.claude.com/docs/es/permissions.md#read-only-commands), como `ls` | Se ejecuta sin llegar a tu devolución de llamada | Se ejecuta sin llegar a tu devolución de llamada |

341| Cualquier otro comando de shell que ninguna regla de permiso apruebe, excepto una [eliminación de ruta crítica](https://code.claude.com/docs/es/permission-modes.md#critical-paths) | Va al clasificador, que lo aprueba o rechaza sin tu devolución de llamada | Llega a tu devolución de llamada |

342| Una llamada a `WebFetch` a un [dominio de documentación preaprobado](https://code.claude.com/docs/es/tools-reference.md#webfetch-tool-behavior) | Se ejecuta sin llegar a tu devolución de llamada | Se ejecuta sin llegar a tu devolución de llamada |

343| Cualquier otra llamada a `WebFetch` que ninguna regla de permiso apruebe | Va al clasificador, que la aprueba o rechaza sin tu devolución de llamada | Llega a tu devolución de llamada |

344 

345Para saber qué sucede después de que el clasificador rechaza varias llamadas seguidas, consulta [Umbrales de bloqueos repetidos](https://code.claude.com/docs/es/permission-modes.md#repeated-block-thresholds).

317 346 

318> [!NOTE]347> [!NOTE]

319>348>

320> En el SDK de TypeScript, si estableces `allowDangerouslySkipPermissions: true` junto con `permissionMode: 'plan'`, las ediciones de archivos aún llegan a tu devolución de llamada `canUseTool`. Para cambiar más tarde una sesión que comienza en modo plan a `bypassPermissions` con `setPermissionMode()`, necesitas tener `allowDangerouslySkipPermissions` establecido desde el inicio.349> En el SDK de TypeScript, si estableces `allowDangerouslySkipPermissions: true` junto con `permissionMode: 'plan'`, las ediciones de archivos aún llegan a tu devolución de llamada `canUseTool`. Para cambiar más tarde una sesión que comienza en modo plan a `bypassPermissions` con `setPermissionMode()`, necesitas tener `allowDangerouslySkipPermissions` establecido desde el inicio.

321 350 

322Claude puede usar `AskUserQuestion` para aclarar requisitos antes de finalizar el plan. Consulte [Manejar aprobaciones e entrada del usuario](https://code.claude.com/docs/es/agent-sdk/user-input.md#handle-clarifying-questions) para manejar estas solicitudes.351**Úsalo cuando:** quieres que Claude produzca primero un plan, como durante la revisión de código o antes de un cambio grande.

323 

324**Úselo cuando:** desee que Claude proponga cambios sin ejecutarlos, como durante la revisión de código o cuando necesita aprobar cambios antes de que se realicen.

325 352 

326#### Modo automático (`auto`)353#### Modo automático (`auto`)

327 354 

Details

1175PermissionMode = Literal[1175PermissionMode = Literal[

1176 "default", # Comportamiento de permisos estándar1176 "default", # Comportamiento de permisos estándar

1177 "acceptEdits", # Aceptar automáticamente ediciones de archivos1177 "acceptEdits", # Aceptar automáticamente ediciones de archivos

1178 "plan", # Modo de planificación - explorar sin editar1178 "plan", # Modo de planificación - Claude explora y planifica

1179 "dontAsk", # Denegar todo lo no preaprobado en lugar de pedir confirmación1179 "dontAsk", # Denegar todo lo no preaprobado en lugar de pedir confirmación

1180 "bypassPermissions", # Omitir verificaciones de permisos; las reglas ask explícitas siguen pidiendo confirmación (usar con cuidado)1180 "bypassPermissions", # Omitir verificaciones de permisos; las reglas ask explícitas siguen pidiendo confirmación (usar con cuidado)

1181 "auto", # Un clasificador de modelo revisa acciones como comandos de shell y solicitudes de red1181 "auto", # Un clasificador de modelo revisa acciones como comandos de shell y solicitudes de red


1214 1214 

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

1216 1216 

1217El callback es el reemplazo del SDK para la solicitud de permiso interactiva: se invoca solo cuando el [flujo de evaluación de permisos](https://code.claude.com/docs/es/agent-sdk/permissions.md#how-permissions-are-evaluated) termina en una solicitud de permiso. Las llamadas a herramientas ya aprobadas por una entrada de `allowed_tools`, una regla allow de la configuración o el modo de permisos, como `acceptEdits` o `bypassPermissions`, nunca lo invocan. Para controlar cada llamada a herramienta, usa en su lugar un [hook `PreToolUse`](https://code.claude.com/docs/es/agent-sdk/hooks).1217El callback reemplaza la solicitud de permiso interactiva. El SDK llama a `can_use_tool` cuando el [flujo de evaluación de permisos](https://code.claude.com/docs/es/agent-sdk/permissions.md#how-permissions-are-evaluated) termina en una solicitud de permiso. Las llamadas aprobadas de cualquiera de estas formas se ejecutan sin llamar a `can_use_tool`:

1218 

1219* Una llamada que aprueba una entrada de `allowed_tools` o una regla allow de la configuración

1220* Una llamada que aprueba el modo de permisos, como una edición de archivo en el modo `acceptEdits`

1221 

1222Para revisar esas llamadas, usa un [hook `PreToolUse`](https://code.claude.com/docs/es/agent-sdk/hooks), que también se ejecuta para ellas.

1218 1223 

1219Una regla allow no aprueba previamente las [acciones que ningún modo aprueba automáticamente](https://code.claude.com/docs/es/permission-modes.md#actions-no-mode-auto-approves); consulta [Cómo se evalúan los permisos](https://code.claude.com/docs/es/agent-sdk/permissions.md#how-permissions-are-evaluated) para ver cuáles de ellas llegan al callback y qué sucede en los modos `dontAsk` y `auto`.1224Una regla allow no aprueba previamente las [acciones que ningún modo aprueba automáticamente](https://code.claude.com/docs/es/permission-modes.md#actions-no-mode-auto-approves); consulta [Cómo se evalúan los permisos](https://code.claude.com/docs/es/agent-sdk/permissions.md#how-permissions-are-evaluated) para ver cuáles de ellas llegan al callback y qué sucede en los modos `dontAsk` y `auto`.

1220 1225 


3659 3664 

3660> [!NOTE]3665> [!NOTE]

3661>3666>

3662> El proxy de sandbox integrado aplica la lista de permitidos de red basada en el nombre de host solicitado y no termina ni inspecciona el tráfico TLS, por lo que técnicas como [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) potencialmente pueden evitarlo. Consulte [Limitaciones de seguridad de sandboxing](https://code.claude.com/docs/es/sandboxing.md#security-limitations) para obtener detalles y [Implementación segura](https://code.claude.com/docs/es/agent-sdk/secure-deployment.md#traffic-forwarding) para configurar un proxy que termine TLS.3667> El proxy de sandbox integrado aplica la lista de permitidos de red basándose en el nombre de host solicitado. De forma predeterminada, el proxy no termina ni inspecciona el tráfico TLS, por lo que técnicas como [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) potencialmente pueden evitar la lista de permitidos. Consulta [Limitaciones de seguridad de sandboxing](https://code.claude.com/docs/es/sandboxing.md#security-limitations) para obtener detalles y [Despliegue seguro](https://code.claude.com/docs/es/agent-sdk/secure-deployment.md#traffic-forwarding) para configurar un proxy que termine TLS.

3663 3668 

3664### `SandboxIgnoreViolations`3669### `SandboxIgnoreViolations`

3665 3670 

Details

22 22 

23Claude Code incluye varias características de seguridad que abordan preocupaciones comunes. Consulte la [documentación de seguridad](https://code.claude.com/docs/es/security.md) para obtener detalles completos.23Claude Code incluye varias características de seguridad que abordan preocupaciones comunes. Consulte la [documentación de seguridad](https://code.claude.com/docs/es/security.md) para obtener detalles completos.

24 24 

25* **Sistema de permisos**: Cada herramienta y comando bash se puede configurar para permitir, bloquear o solicitar aprobación del usuario. Use patrones glob para crear reglas como "permitir todos los comandos npm" o "bloquear cualquier comando con sudo". Las organizaciones pueden establecer políticas que se apliquen a todos los usuarios. Consulte [permisos](https://code.claude.com/docs/es/permissions.md).25* **Sistema de permisos**: Las reglas de permisos deciden si una llamada a herramienta se ejecuta, se bloquea o solicita aprobación primero. Para conocer las formas que una regla de Bash no detecta y cómo se combinan las reglas con los modos de permisos, consulta [Lo que una regla de Bash no detecta](https://code.claude.com/docs/es/permissions.md#bash-rule-limits) y [Configurar permisos](https://code.claude.com/docs/es/agent-sdk/permissions.md). Los administradores también pueden establecer reglas en la [configuración administrada](https://code.claude.com/docs/es/permissions.md#managed-settings).

26* **Análisis de comandos para permisos**: Antes de ejecutar comandos bash, Claude Code los analiza en un AST y compara el resultado con sus reglas de permisos. Los comandos que no se pueden analizar limpiamente, o que no coinciden con una regla de permiso, requieren aprobación explícita. Un pequeño conjunto de construcciones como `eval` siempre requieren aprobación independientemente de las reglas de permiso. Esta es una puerta de permiso, no un sandbox; aparte de las comprobaciones de seguridad integradas como la [comprobación de ruta crítica](https://code.claude.com/docs/es/permission-modes.md#critical-paths) en `rm` y `rmdir` y la lista de [rutas protegidas](https://code.claude.com/docs/es/permission-modes.md#protected-paths), no deduce si un comando es peligroso a partir de su ruta de destino o efectos.26* **Eliminaciones de rutas críticas**: Con el modo de permisos establecido en `default`, un comando `rm` o `rmdir` que se reconozca como eliminación de tu directorio de trabajo o de otra [ruta crítica](https://code.claude.com/docs/es/permission-modes.md#critical-paths) requiere aprobación. Una regla de permitir coincidente no omite esa aprobación. Esta es una puerta de permisos, no un sandbox. Para controlar lo que el agente puede escribir, usa los [controles del sistema de archivos](#filesystem-configuration).

27* **Resumen de búsqueda web**: Los resultados de búsqueda se resumen en lugar de pasar contenido sin procesar directamente al contexto, reduciendo el riesgo de inyección de indicaciones de contenido web malicioso.27* **Resumen de búsqueda web**: Los resultados de búsqueda se resumen en lugar de pasar contenido sin procesar directamente al contexto, reduciendo el riesgo de inyección de indicaciones de contenido web malicioso.

28* **Modo sandbox**: Los comandos bash pueden ejecutarse en un entorno aislado que restringe el acceso al sistema de archivos y la red. Consulte la [documentación de sandboxing](https://code.claude.com/docs/es/sandboxing.md) para obtener detalles.28* **Modo sandbox**: Los comandos bash pueden ejecutarse en un entorno aislado que restringe el acceso al sistema de archivos y la red. Consulte la [documentación de sandboxing](https://code.claude.com/docs/es/sandboxing.md) para obtener detalles.

29 29 


83**Cómo funciona:**83**Cómo funciona:**

84 84 

85* **Sistema de archivos**: Utiliza primitivos del SO (`bubblewrap` en Linux, `sandbox-exec` en macOS) para restringir el acceso de lectura/escritura a rutas configuradas85* **Sistema de archivos**: Utiliza primitivos del SO (`bubblewrap` en Linux, `sandbox-exec` en macOS) para restringir el acceso de lectura/escritura a rutas configuradas

86* **Red**: Elimina el espacio de nombres de red (Linux) o utiliza perfiles Seatbelt (macOS) para enrutar el tráfico de red a través de un proxy integrado86* **Red**: Ejecuta los comandos en su propio espacio de nombres de red (Linux) o bajo un perfil Seatbelt (macOS) y enruta su tráfico a través de un proxy integrado que permite los dominios configurados. Una conexión a un host externo que omite el proxy falla.

87* **Configuración**: Listas de permitidos basadas en JSON para dominios y rutas del sistema de archivos87* **Configuración**: Listas de permitidos basadas en JSON para dominios y rutas del sistema de archivos

88 88 

89**Configuración:**89**Configuración:**

90 90 

91```bash theme={null}91Para los pasos de instalación, configuración e inicio, consulta [Configurar e iniciar el runtime](https://code.claude.com/docs/es/sandbox-environments.md#set-up-and-launch-the-runtime).

92npm install @anthropic-ai/sandbox-runtime

93```

94 

95Luego cree un archivo de configuración especificando rutas y dominios permitidos.

96 92 

97**Consideraciones de seguridad:**93**Consideraciones de seguridad:**

98 94 

991. **Kernel del mismo host**: A diferencia de las VMs, los procesos aislados comparten el kernel del host. Una vulnerabilidad del kernel podría teóricamente permitir escape. Para algunos modelos de amenaza esto es aceptable, pero si necesita aislamiento a nivel de kernel, use gVisor o una VM separada.951. **Kernel del mismo host**: A diferencia de las VMs, los procesos aislados comparten el kernel del host. Una vulnerabilidad del kernel podría teóricamente permitir escape. Para algunos modelos de amenaza esto es aceptable, pero si necesita aislamiento a nivel de kernel, use gVisor o una VM separada.

100 96 

1012. **Sin inspección TLS**: El proxy lista permitidos dominios basándose en el nombre de host suministrado por el cliente y no termina ni inspecciona tráfico encriptado. 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 que termina TLS](#traffic-forwarding). Consulte las [limitaciones de seguridad del sandboxing](https://code.claude.com/docs/es/sandboxing.md#security-limitations) para obtener más detalles. Por separado, si el agente tiene credenciales permisivas para un dominio permitido, asegúrese de que no pueda usar ese dominio para desencadenar otras solicitudes de red o para exfiltrar datos.972. **Sin inspección TLS**: De forma predeterminada, el proxy permite dominios basándose en el nombre de host suministrado por el cliente y no termina ni inspecciona tráfico encriptado. 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, usa un proxy que termine TLS e inspeccione el tráfico, como se describe en [Reenvío de tráfico](#traffic-forwarding). Para obtener más información, consulta las [limitaciones de seguridad del sandboxing](https://code.claude.com/docs/es/sandboxing.md#security-limitations).

98 

993. **Credenciales para dominios permitidos**: Si el agente tiene credenciales permisivas para un dominio permitido, asegúrate de que no pueda usar ese dominio para desencadenar otras solicitudes de red o para exfiltrar datos.

102 100 

103Para muchos casos de uso de desarrollador único y CI/CD, sandbox-runtime eleva significativamente la barra con configuración mínima. Las secciones a continuación cubren contenedores y VMs para despliegues que requieren aislamiento más fuerte.101Para muchos casos de uso de desarrollador único y CI/CD, sandbox-runtime eleva significativamente la barra con configuración mínima. Las secciones a continuación cubren contenedores y VMs para despliegues que requieren aislamiento más fuerte.

104 102 


135| `--security-opt seccomp=...` | Restringe las llamadas del sistema disponibles; el valor predeterminado de Docker bloquea \~44, los perfiles personalizados pueden bloquear más |133| `--security-opt seccomp=...` | Restringe las llamadas del sistema disponibles; el valor predeterminado de Docker bloquea \~44, los perfiles personalizados pueden bloquear más |

136| `--read-only` | Hace el sistema de archivos raíz del contenedor inmutable, previniendo que el agente persista cambios |134| `--read-only` | Hace el sistema de archivos raíz del contenedor inmutable, previniendo que el agente persista cambios |

137| `--tmpfs /tmp:...` | Proporciona un directorio temporal escribible que se borra cuando el contenedor se detiene |135| `--tmpfs /tmp:...` | Proporciona un directorio temporal escribible que se borra cuando el contenedor se detiene |

138| `--network none` | Elimina todas las interfaces de red; el agente se comunica a través del socket Unix montado a continuación |136| `--network none` | Aísla el contenedor de las redes externas |

139| `--memory 2g` | Limita el uso de memoria para prevenir agotamiento de recursos |137| `--memory 2g` | Limita el uso de memoria para prevenir agotamiento de recursos |

140| `--pids-limit 100` | Limita el recuento de procesos para prevenir fork bombs |138| `--pids-limit 100` | Limita el recuento de procesos para prevenir fork bombs |

141| `--user 1000:1000` | Se ejecuta como un usuario no root |139| `--user 1000:1000` | Se ejecuta como un usuario no root |


144 142 

145**Arquitectura de socket Unix:**143**Arquitectura de socket Unix:**

146 144 

147Con `--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.145Con `--network none`, una búsqueda DNS o una conexión directa a otro host falla dentro del contenedor. Para permitir que el código del contenedor alcance otros hosts, ejecuta un proxy en el host y monta su socket Unix en el contenedor. Si apuntas `ANTHROPIC_BASE_URL` o `HTTP_PROXY` a un puerto en `localhost`, como se muestra en [Configurar Claude Code para usar un proxy](#configuring-claude-code-to-use-a-proxy), retransmite ese puerto dentro del contenedor hacia el socket.

148 146 

149Esta 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).147Puedes configurar este proxy para aplicar listas de dominios permitidos, inyectar credenciales y registrar todo el tráfico.

148 

149> [!WARNING]

150>

151> Dentro de la lista de permitidos de tu proxy, el agente puede enviar datos a cualquier dominio permitido. Permite solo los dominios que el agente necesita.

150 152 

151**Opciones de endurecimiento adicionales:**153**Opciones de endurecimiento adicionales:**

152 154 

Details

1340 | "default" // Standard permission behavior1340 | "default" // Standard permission behavior

1341 | "acceptEdits" // Auto-accept file edits1341 | "acceptEdits" // Auto-accept file edits

1342 | "bypassPermissions" // Bypass permission checks; explicit ask rules still prompt1342 | "bypassPermissions" // Bypass permission checks; explicit ask rules still prompt

1343 | "plan" // Planning mode - explore without editing1343 | "plan" // Planning mode - Claude explores and plans

1344 | "dontAsk" // Don't prompt for permissions, deny if not pre-approved1344 | "dontAsk" // Don't prompt for permissions, deny if not pre-approved

1345 | "auto"; // A model classifier reviews actions such as shell commands and network requests1345 | "auto"; // A model classifier reviews actions such as shell commands and network requests

1346```1346```


1349 1349 

1350Tipo de función de permisos personalizada para controlar el uso de herramientas.1350Tipo de función de permisos personalizada para controlar el uso de herramientas.

1351 1351 

1352La función es el reemplazo en el SDK de la solicitud de permiso interactiva: solo se invoca cuando el [flujo de evaluación de permisos](https://code.claude.com/docs/es/agent-sdk/permissions.md#how-permissions-are-evaluated) resuelve en una solicitud. Las llamadas a herramientas ya aprobadas por una entrada de `allowedTools`, una regla de permiso de la configuración o el modo de permisos, como `acceptEdits` o `bypassPermissions`, nunca la invocan. Para controlar cada llamada a herramienta, usa en su lugar un [hook `PreToolUse`](https://code.claude.com/docs/es/agent-sdk/hooks).1352La función reemplaza la solicitud de permiso interactiva. El SDK llama a `canUseTool` cuando el [flujo de evaluación de permisos](https://code.claude.com/docs/es/agent-sdk/permissions.md#how-permissions-are-evaluated) termina en una solicitud. Las llamadas aprobadas de cualquiera de estas formas se ejecutan sin llamar a `canUseTool`:

1353 

1354* Una llamada que aprueba una entrada de `allowedTools` o una regla de permiso de la configuración

1355* Una llamada que aprueba el modo de permisos, como una edición de archivo en el modo `acceptEdits`

1356 

1357Para comprobar esas llamadas, usa un [hook `PreToolUse`](https://code.claude.com/docs/es/agent-sdk/hooks), que también se ejecuta para ellas.

1353 1358 

1354Una regla de permiso no aprueba previamente las [acciones que ningún modo aprueba automáticamente](https://code.claude.com/docs/es/permission-modes.md#actions-no-mode-auto-approves); consulta [Cómo se evalúan los permisos](https://code.claude.com/docs/es/agent-sdk/permissions.md#how-permissions-are-evaluated) para saber cuáles de ellas llegan al callback y qué ocurre en los modos `dontAsk` y `auto`.1359Una regla de permiso no aprueba previamente las [acciones que ningún modo aprueba automáticamente](https://code.claude.com/docs/es/permission-modes.md#actions-no-mode-auto-approves); consulta [Cómo se evalúan los permisos](https://code.claude.com/docs/es/agent-sdk/permissions.md#how-permissions-are-evaluated) para saber cuáles de ellas llegan al callback y qué ocurre en los modos `dontAsk` y `auto`.

1355 1360 


2006* Una reanudación que Claude Code detiene porque [no puede devolver la sesión a su worktree](https://code.claude.com/docs/es/worktrees.md#the-session-resumes-outside-its-worktree), con `worktree_unverified` o `worktree_resume_refused`. Esa sección indica qué error lleva cada valor.2011* Una reanudación que Claude Code detiene porque [no puede devolver la sesión a su worktree](https://code.claude.com/docs/es/worktrees.md#the-session-resumes-outside-its-worktree), con `worktree_unverified` o `worktree_resume_refused`. Esa sección indica qué error lleva cada valor.

2007* 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.2012* 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.

2008* Un inicio que Claude Code rechaza porque [`failIfUnavailable`](#sandboxsettings) está activado y el sandbox no puede iniciarse, con `sandbox_required_unavailable`.2013* Un inicio que Claude Code rechaza porque [`failIfUnavailable`](#sandboxsettings) está activado y el sandbox no puede iniciarse, con `sandbox_required_unavailable`.

2014* Un inicio que Claude Code rechaza porque `~/.claude.json` no es JSON válido, con `config_file_invalid`.

2009 2015 

2010El tipo `SDKStartupFailureReason` lista los valores que puede tener `startup_failure_reason`:2016El tipo `SDKStartupFailureReason` lista los valores que puede tener `startup_failure_reason`:

2011 2017 


2030 | "bypass_root"2036 | "bypass_root"

2031 | "org_config_required_unavailable"2037 | "org_config_required_unavailable"

2032 | "org_config_refused"2038 | "org_config_refused"

2033 | "sandbox_required_unavailable";2039 | "sandbox_required_unavailable"

2040 | "config_file_invalid";

2034```2041```

2035 2042 

2036Cada valor nombra un rechazo:2043Cada valor nombra un rechazo:


2057| `org_config_required_unavailable` | La sesión necesita las políticas y la configuración administrada de la organización antes de poder iniciar, y no se pudieron cargar, por ejemplo debido a un fallo de red o a un error del servidor de Anthropic. Requiere Agent SDK v0.3.293 o posterior |2064| `org_config_required_unavailable` | La sesión necesita las políticas y la configuración administrada de la organización antes de poder iniciar, y no se pudieron cargar, por ejemplo debido a un fallo de red o a un error del servidor de Anthropic. Requiere Agent SDK v0.3.293 o posterior |

2058| `org_config_refused` | Anthropic se negó a proporcionar las políticas y la configuración administrada de la organización para este inicio de sesión, por ejemplo porque el inicio de sesión caducó o fue revocado, o porque la organización no permite Claude Code para esta cuenta. Requiere Agent SDK v0.3.293 o posterior |2065| `org_config_refused` | Anthropic se negó a proporcionar las políticas y la configuración administrada de la organización para este inicio de sesión, por ejemplo porque el inicio de sesión caducó o fue revocado, o porque la organización no permite Claude Code para esta cuenta. Requiere Agent SDK v0.3.293 o posterior |

2059| `sandbox_required_unavailable` | [`failIfUnavailable`](#sandboxsettings) está activado y el sandbox no puede iniciarse. El texto de `errors` termina con `Set sandbox.failIfUnavailable=false to allow unsandboxed execution.` Requiere Agent SDK v0.3.314 o posterior |2066| `sandbox_required_unavailable` | [`failIfUnavailable`](#sandboxsettings) está activado y el sandbox no puede iniciarse. El texto de `errors` termina con `Set sandbox.failIfUnavailable=false to allow unsandboxed execution.` Requiere Agent SDK v0.3.314 o posterior |

2067| `config_file_invalid` | `~/.claude.json` no es JSON válido. Claude Code deja el archivo sin cambios, así que un reintento falla de la misma manera hasta que alguien lo repare. `errors` nombra el archivo e indica cómo restaurarlo o repararlo. Consulta [Configuration error in \~/.claude.json](https://code.claude.com/docs/es/errors.md#configuration-error-in-claude-json). Requiere TypeScript Agent SDK v0.3.318 o posterior y Claude Code v2.1.318 o posterior |

2060 2068 

2061### `SDKSystemMessage`2069### `SDKSystemMessage`

2062 2070 


6105 6113 

6106> [!NOTE]6114> [!NOTE]

6107>6115>

6108> El proxy de sandbox integrado aplica `allowedDomains` basándose en el nombre de host solicitado y no termina ni inspecciona el tráfico TLS, por lo que técnicas como [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) potencialmente pueden omitirlo. Consulte [Limitaciones de seguridad de sandboxing](https://code.claude.com/docs/es/sandboxing.md#security-limitations) para obtener detalles y [Implementación segura](https://code.claude.com/docs/es/agent-sdk/secure-deployment.md#traffic-forwarding) para configurar un proxy que termine TLS.6116> El proxy de sandbox integrado aplica `allowedDomains` basándose en el nombre de host solicitado. De forma predeterminada, el proxy no termina ni inspecciona el tráfico TLS, por lo que técnicas como [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) potencialmente pueden omitir `allowedDomains`. Consulta [Limitaciones de seguridad de sandboxing](https://code.claude.com/docs/es/sandboxing.md#security-limitations) para obtener detalles y [Despliegue seguro](https://code.claude.com/docs/es/agent-sdk/secure-deployment.md#traffic-forwarding) para configurar un proxy que termine TLS.

6109 6117 

6110### `SandboxFilesystemConfig`6118### `SandboxFilesystemConfig`

6111 6119 

Details

47El callback se activa en dos casos:47El callback se activa en dos casos:

48 48 

491. **La herramienta necesita aprobación**: Claude quiere usar una herramienta que no está aprobada automáticamente por una [regla de permisos](https://code.claude.com/docs/es/agent-sdk/permissions.md) o modo de permisos. Verifique `tool_name` para la herramienta (por ejemplo, `"Bash"`, `"Write"`).491. **La herramienta necesita aprobación**: Claude quiere usar una herramienta que no está aprobada automáticamente por una [regla de permisos](https://code.claude.com/docs/es/agent-sdk/permissions.md) o modo de permisos. Verifique `tool_name` para la herramienta (por ejemplo, `"Bash"`, `"Write"`).

502. **Claude hace una pregunta**: Claude llama a la herramienta `AskUserQuestion`. Verifique si `tool_name == "AskUserQuestion"` para manejarlo de manera diferente. Si especifica un array `tools`, incluya `AskUserQuestion` para que esto funcione. Vea [Manejar preguntas aclaratorias](#handle-clarifying-questions) para más detalles.502. **Claude hace una pregunta**: Claude llama a la herramienta `AskUserQuestion`. Verifica si `tool_name == "AskUserQuestion"` para manejarlo de manera diferente. Si especificas un array `tools`, incluye `AskUserQuestion` para que esto funcione. Para más información, consulta [Manejar preguntas aclaratorias](#handle-clarifying-questions).

51 51 

52> [!WARNING]52> [!WARNING]

53>53>

54> **El callback nunca se activa para herramientas aprobadas automáticamente.** Cualquier aprobación anterior en el [flujo de evaluación de permisos](https://code.claude.com/docs/es/agent-sdk/permissions.md#how-permissions-are-evaluated), una regla de permiso o un modo como `acceptEdits` o `bypassPermissions`, resuelve la llamada antes de que se consulte `canUseTool`. Si enumera una herramienta directamente en `allowed_tools`, una verificación `canUseTool` para esa herramienta se ejecuta solo cuando el [flujo de evaluación](https://code.claude.com/docs/es/agent-sdk/permissions.md#how-permissions-are-evaluated) redirija la llamada de vuelta a un prompt, como una regla de pregunta o modo `plan`. Para lógica que debe aplicarse a cada llamada de herramienta, use un [hook `PreToolUse`](https://code.claude.com/docs/es/agent-sdk/hooks), que se ejecuta antes del resto del flujo y puede permitir, denegar o modificar solicitudes.54> **Un paso anterior puede permitir o denegar una llamada antes de que se ejecute `canUseTool`.** El [flujo de evaluación de permisos](https://code.claude.com/docs/es/agent-sdk/permissions.md#how-permissions-are-evaluated) verifica las reglas de denegación, el modo de permisos y las reglas de permiso antes de tu callback.

55>55>

56> Una regla de permiso no aprueba previamente las [acciones que ningún modo aprueba automáticamente](https://code.claude.com/docs/es/permission-modes.md#actions-no-mode-auto-approves); vea [Cómo se evalúan los permisos](https://code.claude.com/docs/es/agent-sdk/permissions.md#how-permissions-are-evaluated) para saber cuáles de ellas llegan al callback y qué sucede en modo `dontAsk` y `auto`.56> Para ejecutar tus verificaciones en llamadas que una regla o el modo de permisos ya permitió, usa un [hook `PreToolUse`](https://code.claude.com/docs/es/agent-sdk/hooks), que se ejecuta para esas llamadas y puede permitirlas, denegarlas o modificarlas.

57 57 

58También puede usar el [hook `PermissionRequest`](https://code.claude.com/docs/es/agent-sdk/hooks#available-hooks) para enviar notificaciones externas (Slack, correo electrónico, push) cuando Claude está esperando aprobación.58También puede usar el [hook `PermissionRequest`](https://code.claude.com/docs/es/agent-sdk/hooks#available-hooks) para enviar notificaciones externas (Slack, correo electrónico, push) cuando Claude está esperando aprobación.

59 59 

agent-view.md +2 −2

Details

1020 1020 

1021En macOS, el host de sesiones en segundo plano se ejecuta como su propio proceso y solicita acceso a las carpetas protegidas por separado de tu terminal. Si una sesión en segundo plano reporta `Operation not permitted` al leer `~/Desktop`, `~/Documents`, `~/Downloads` u otra ubicación protegida, otorga acceso en Configuración del Sistema, en Privacidad y Seguridad > Archivos y Carpetas, o habilita Acceso Total al Disco para la entrada.1021En macOS, el host de sesiones en segundo plano se ejecuta como su propio proceso y solicita acceso a las carpetas protegidas por separado de tu terminal. Si una sesión en segundo plano reporta `Operation not permitted` al leer `~/Desktop`, `~/Documents`, `~/Downloads` u otra ubicación protegida, otorga acceso en Configuración del Sistema, en Privacidad y Seguridad > Archivos y Carpetas, o habilita Acceso Total al Disco para la entrada.

1022 1022 

1023Con el instalador nativo, la entrada aparece como Claude Code y el permiso se mantiene entre actualizaciones. Con otros métodos de instalación como Homebrew o npm, la entrada muestra la ruta del binario y es posible que debas otorgar el permiso nuevamente después de actualizar.1023En cualquiera de las dos listas, busca una entrada llamada Claude Code, o una que lleve el nombre de la ruta o del archivo del binario `claude`. Ese nombre de archivo puede ser un número de versión como `2.1.316`. Si `Operation not permitted` vuelve a aparecer después de que Claude Code se actualice, busca una entrada nueva, como una con el nombre de la nueva versión. Si hay una, otórgale acceso.

1024 1024 

1025### Las sesiones en segundo plano no pueden alcanzar hosts de la red local en macOS1025### Las sesiones en segundo plano no pueden alcanzar hosts de la red local en macOS

1026 1026 


1067| v2.1.296 | Un prompt o un comando de shell `!` que introduces [mientras la sesión se mueve al segundo plano](#switch-sessions-without-leaving-the-terminal) se detiene o queda sin enviar, y su texto se conserva en el historial de prompts. Antes de esta versión, la respuesta o el comando seguía ejecutándose donde ya no podías verlo, y un prompt enviado justo después de `←` podía ejecutarse una segunda vez sin que lo vieras. Un prompt escrito mientras los hooks `SessionStart` aún se estaban ejecutando se perdía: no se enviaba ni quedaba en el historial de prompts. |1067| v2.1.296 | Un prompt o un comando de shell `!` que introduces [mientras la sesión se mueve al segundo plano](#switch-sessions-without-leaving-the-terminal) se detiene o queda sin enviar, y su texto se conserva en el historial de prompts. Antes de esta versión, la respuesta o el comando seguía ejecutándose donde ya no podías verlo, y un prompt enviado justo después de `←` podía ejecutarse una segunda vez sin que lo vieras. Un prompt escrito mientras los hooks `SessionStart` aún se estaban ejecutando se perdía: no se enviaba ni quedaba en el historial de prompts. |

1068| v2.1.295 | `Ctrl+C` en el prompt inactivo de una [sesión en segundo plano adjunta](#attach-to-a-session) no toca el despertar pendiente de un [`/loop` de ritmo propio](https://code.claude.com/docs/es/scheduled-tasks#let-claude-choose-the-interval), por lo que presionarlo dos veces se desadjunta y el bucle sigue ejecutándose. `Esc` en ese prompt [detiene el bucle de ritmo propio](https://code.claude.com/docs/es/scheduled-tasks.md#stop-a-loop) y muestra un aviso `Pending wakeup cancelled`. Antes de esta versión, el primer `Ctrl+C` podía terminar un bucle de ritmo propio sin indicarlo, y `Esc` no detenía uno que se había movido al segundo plano junto con la sesión. |1068| v2.1.295 | `Ctrl+C` en el prompt inactivo de una [sesión en segundo plano adjunta](#attach-to-a-session) no toca el despertar pendiente de un [`/loop` de ritmo propio](https://code.claude.com/docs/es/scheduled-tasks#let-claude-choose-the-interval), por lo que presionarlo dos veces se desadjunta y el bucle sigue ejecutándose. `Esc` en ese prompt [detiene el bucle de ritmo propio](https://code.claude.com/docs/es/scheduled-tasks.md#stop-a-loop) y muestra un aviso `Pending wakeup cancelled`. Antes de esta versión, el primer `Ctrl+C` podía terminar un bucle de ritmo propio sin indicarlo, y `Esc` no detenía uno que se había movido al segundo plano junto con la sesión. |

1069| v2.1.295 | En macOS y Linux, cuando `claude agents` sale mientras no hay ningún [supervisor](#keep-sessions-running-after-the-supervisor-stops) en ejecución, no inicia uno nuevo por su cuenta. Las sesiones en ejecución se detienen entonces aproximadamente un minuto después a menos que vuelvas a ejecutar `claude agents`, y la vista de agentes puede imprimir un aviso que lo indica al salir. Antes de esta versión, el `claude agents` que salía iniciaba un nuevo supervisor. |1069| v2.1.295 | En macOS y Linux, cuando `claude agents` sale mientras no hay ningún [supervisor](#keep-sessions-running-after-the-supervisor-stops) en ejecución, no inicia uno nuevo por su cuenta. Las sesiones en ejecución se detienen entonces aproximadamente un minuto después a menos que vuelvas a ejecutar `claude agents`, y la vista de agentes puede imprimir un aviso que lo indica al salir. Antes de esta versión, el `claude agents` que salía iniciaba un nuevo supervisor. |

1070| v2.1.295 | En macOS con el instalador nativo, las sesiones en segundo plano que se reinician juntas después de una actualización se ejecutan bajo la misma entrada de Claude Code que tiene el [acceso a carpetas protegidas](#background-sessions-can’t-read-desktop-documents-or-downloads-on-macos) que concediste. Antes de esta versión, esas sesiones podían ejecutarse bajo la propia ruta del binario. macOS lista esa ruta como una entrada separada, por lo que las solicitudes de acceso a carpetas podían volver a aparecer después de una actualización. |1070| v2.1.295 | En macOS con el instalador nativo, las sesiones en segundo plano que se reinician juntas después de una actualización ejecutan sus procesos host desde la misma carpeta `~/.local/share/claude/ClaudeCode.app`. Antes de esta versión, esos procesos podían ejecutarse desde la propia ruta del binario. macOS puede listar esa ruta como una entrada separada, por lo que las [solicitudes de acceso a carpetas](#background-sessions-can’t-read-desktop-documents-or-downloads-on-macos) podían volver a aparecer después de una actualización. |

1071| v2.1.290 | [`claude attach` y `claude logs`](#manage-sessions-from-the-shell) pueden recibir parte del nombre de una sesión en lugar del ID. |1071| v2.1.290 | [`claude attach` y `claude logs`](#manage-sessions-from-the-shell) pueden recibir parte del nombre de una sesión en lugar del ID. |

1072| v2.1.290 | `/model`, `/effort`, `/rename` y `/usage` enviados como [respuesta desde el panel de vista previa](#peek-and-reply) a una sesión que está trabajando se ejecutan de inmediato. |1072| v2.1.290 | `/model`, `/effort`, `/rename` y `/usage` enviados como [respuesta desde el panel de vista previa](#peek-and-reply) a una sesión que está trabajando se ejecutan de inmediato. |

1073| v2.1.290 | Una [respuesta desde el panel de vista previa](#peek-and-reply) que no se puede entregar ya no se guarda para el siguiente reinicio cuando empieza con `/`, o cuando responde a una pregunta con opciones predefinidas mientras el proceso de la sesión se está ejecutando. |1073| v2.1.290 | Una [respuesta desde el panel de vista previa](#peek-and-reply) que no se puede entregar ya no se guarda para el siguiente reinicio cuando empieza con `/`, o cuando responde a una pregunta con opciones predefinidas mientras el proceso de la sesión se está ejecutando. |

Details

459export ANTHROPIC_BEDROCK_SERVICE_TIER=priority459export ANTHROPIC_BEDROCK_SERVICE_TIER=priority

460```460```

461 461 

462Claude Code envía esto como el encabezado `X-Amzn-Bedrock-Service-Tier` en cada solicitud. La disponibilidad de niveles varía según el modelo y la región. La capacidad reservada utiliza un [ARN de rendimiento aprovisionado](https://docs.aws.amazon.com/bedrock/latest/userguide/prov-throughput.html) como el ID del modelo en lugar de esta configuración.462Claude Code envía esto como el encabezado `X-Amzn-Bedrock-Service-Tier` en cada solicitud a la [Invoke API](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html) desde una sesión que tenga la variable, excepto en sus [comprobaciones de acceso al modelo](#startup-model-checks). Establecerla no tiene ningún efecto en las solicitudes al [endpoint de Mantle](#use-the-mantle-endpoint) ni en las que pasan por un [gateway de Claude apps](https://code.claude.com/docs/es/claude-apps-gateway). La disponibilidad de niveles varía según el modelo y la región. La capacidad reservada utiliza un ARN de [rendimiento aprovisionado](https://docs.aws.amazon.com/bedrock/latest/userguide/prov-throughput.html) como el ID del modelo en lugar de este ajuste.

463 

464Para cubrir las [sesiones en segundo plano](https://code.claude.com/docs/es/agent-view.md#settings-and-provider) que inicias desde una terminal, establece `ANTHROPIC_BEDROCK_SERVICE_TIER` en el bloque [`env`](https://code.claude.com/docs/es/settings-reference#env) de tu configuración. Esas sesiones obtienen el valor que exportas solo cuando el shell que inició el [supervisor](https://code.claude.com/docs/es/agent-view.md#the-supervisor-process) lo exportó.

463 465 

464## AWS Guardrails466## AWS Guardrails

465 467 


487 489 

488### Habilitar Mantle490### Habilitar Mantle

489 491 

490Con credenciales de AWS ya configuradas, establezca `CLAUDE_CODE_USE_MANTLE` para enrutar solicitudes al punto final de Mantle:492Con las credenciales de AWS ya configuradas, establece `CLAUDE_CODE_USE_MANTLE` y tu región de AWS:

491 493 

492```bash theme={null}494```bash theme={null}

493export CLAUDE_CODE_USE_MANTLE=1495export CLAUDE_CODE_USE_MANTLE=1


587 589 

588* Especifique el modelo como un ID de [perfil de inferencia](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html)590* Especifique el modelo como un ID de [perfil de inferencia](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html)

589 591 

590Claude Code utiliza la [API de Invoke](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html) de Amazon Bedrock y no admite la API de Converse.

591 

592### Errores de streaming detrás de una puerta de enlace o proxy592### Errores de streaming detrás de una puerta de enlace o proxy

593 593 

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


618* Si el error nombra una acción `bedrock-mantle:`, otorgue esa acción a su identidad de IAM.618* Si el error nombra una acción `bedrock-mantle:`, otorgue esa acción a su identidad de IAM.

619* Si el error no nombra ninguna acción y sus credenciales son válidas, su cuenta de AWS no ha sido autorizada para acceder al modelo que solicitó. Póngase en contacto con su equipo de cuenta de AWS para solicitar acceso.619* Si el error no nombra ninguna acción y sus credenciales son válidas, su cuenta de AWS no ha sido autorizada para acceder al modelo que solicitó. Póngase en contacto con su equipo de cuenta de AWS para solicitar acceso.

620 620 

621Un `400` que nombra el ID del modelo significa que ese modelo no se sirve en Mantle. Mantle tiene su propio catálogo de modelos separado del catálogo estándar de Amazon Bedrock, por lo que los IDs de perfil de inferencia como `us.anthropic.claude-sonnet-4-6` no funcionarán. Utilice un ID de formato de Mantle, o habilite [ambos puntos finales](#run-mantle-alongside-the-invoke-api) para que Claude Code enrute cada solicitud al punto final donde el modelo está disponible.621Un `400` que nombra el ID del modelo significa que ese modelo no se sirve en Mantle. Mantle tiene su propio catálogo de modelos separado del catálogo estándar de Amazon Bedrock, por lo que los IDs de perfil de inferencia como `us.anthropic.claude-sonnet-4-6` no funcionan. Usa un ID con formato de Mantle, o habilita [ambos endpoints](#run-mantle-alongside-the-invoke-api) para que Claude Code envíe los IDs de perfil de inferencia a la API de Invoke.

622 622 

623## Recursos adicionales623## Recursos adicionales

624 624 

Details

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

156```156```

157 157 

158En una sesión, ejecuta `/context` para confirmar que Claude cargó el archivo.158En una sesión, ejecuta [`/context all`](https://code.claude.com/docs/es/commands#all-commands) para confirmar que Claude cargó el archivo.

159 159 

160Observa que la línea de verificación de tipos es solo el comando. Claude necesita conocer el comando para poder verificar su propio trabajo sobre la marcha. Si además quieres que Claude Code *exija* que la verificación de tipos pase antes de que Claude termine, eso es tarea de un [hook `Stop`](#enforce-the-check-with-a-stop-hook). Una línea como `Always typecheck before you finish` en este archivo funciona la mayoría de las veces, no siempre.160Observa que la línea de verificación de tipos es solo el comando. Claude necesita conocer el comando para poder verificar su propio trabajo sobre la marcha. Si además quieres que Claude Code *exija* que la verificación de tipos pase antes de que Claude termine, eso es tarea de un [hook `Stop`](#enforce-the-check-with-a-stop-hook). Una línea como `Always typecheck before you finish` en este archivo funciona la mayoría de las veces, no siempre.

161 161 


544En un script casi siempre querrás algunos flags más:544En un script casi siempre querrás algunos flags más:

545 545 

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

547* `--append-system-prompt`, `--mcp-config` y `--settings` pasan explícitamente lo que la ejecución *sí* necesita.547* `--append-system-prompt`, `--mcp-config` y `--settings` pasan explícitamente lo que la ejecución *sí* necesita. Los hooks que pasas con `--settings` [no se ejecutan con `--bare`](https://code.claude.com/docs/es/headless#start-faster-with-bare-mode), así que no uses `--bare` en una ejecución que los necesite.

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

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

550 550 

Details

494 494 

495* Si STS rechaza la llamada o no es accesible, el gateway no envía la solicitud con las credenciales propias del upstream. Registra el error de STS con lo que hay que revisar y luego intenta el siguiente upstream que enumeraste. [Mensajes de error de upstream](#upstream-error-messages) explica lo que recibe el cliente cuando ningún upstream tiene éxito. Un upstream posterior sin `assume_role` serviría la solicitud con sus propias credenciales, así que enumera uno solo si eso es lo que quieres.495* Si STS rechaza la llamada o no es accesible, el gateway no envía la solicitud con las credenciales propias del upstream. Registra el error de STS con lo que hay que revisar y luego intenta el siguiente upstream que enumeraste. [Mensajes de error de upstream](#upstream-error-messages) explica lo que recibe el cliente cuando ningún upstream tiene éxito. Un upstream posterior sin `assume_role` serviría la solicitud con sus propias credenciales, así que enumera uno solo si eso es lo que quieres.

496* El gateway llama al endpoint regional de STS `sts.<region>.amazonaws.com`, al que su red debe poder llegar. Para el endpoint FIPS, establece `AWS_USE_FIPS_ENDPOINT=true` en el entorno del gateway en lugar de `use_fips_endpoint` en un archivo de configuración de AWS.496* El gateway llama al endpoint regional de STS `sts.<region>.amazonaws.com`, al que su red debe poder llegar. Para el endpoint FIPS, establece `AWS_USE_FIPS_ENDPOINT=true` en el entorno del gateway en lugar de `use_fips_endpoint` en un archivo de configuración de AWS.

497* `assume_role` se aplica solo a `provider: bedrock` y necesita credenciales de origen SigV4: el gateway se niega a iniciar cuando se establece junto a `aws_bearer_token`.497* `assume_role` necesita credenciales de origen SigV4: el gateway se niega a arrancar cuando se configura junto a `aws_bearer_token`.

498* Sin una [lista `groups`](#send-each-team-to-its-own-upstream), todos los desarrolladores que admite el gateway pueden usar este upstream. Para limitar qué modelos puede usar un desarrollador, establece `availableModels` en una política [`managed`](#managed).498* Sin una [lista `groups`](#send-each-team-to-its-own-upstream), todos los desarrolladores que admite el gateway pueden usar este upstream. Para limitar qué modelos puede usar un desarrollador, establece `availableModels` en una política [`managed`](#managed).

499* Para evitar que un modelo servido a través del rol también se sirva desde otra cuenta, asígnale un id personalizado cuyo mapa `upstream_model` tenga solo el nombre de este upstream. Para ese id, el gateway omite todos los demás upstreams, por lo que ni la solicitud ni el recuento de tokens de una solicitud abortada pueden conmutar a otra cuenta.499* Para evitar que un modelo servido a través del rol también se sirva desde otra cuenta, asígnale un id personalizado cuyo mapa `upstream_model` tenga solo el nombre de este upstream. Para ese id, el gateway omite todos los demás upstreams, por lo que ni la solicitud ni el recuento de tokens de una solicitud abortada pueden conmutar a otra cuenta.

500* Una solicitud de un nombre de modelo integrado todavía puede [llegar a este upstream](#multiple-upstreams), y el gateway la firma con el mismo rol. Incluye este upstream en último lugar a menos que su cuenta también deba servir esos modelos.500* Una solicitud de un nombre de modelo integrado todavía puede [llegar a este upstream](#multiple-upstreams), y el gateway la firma con el mismo rol. Incluye este upstream en último lugar a menos que su cuenta también deba servir esos modelos.


556| `region` | Sí | Región de AWS. El gateway deriva de ella el endpoint como `https://bedrock-mantle.<region>.api.aws/anthropic`. |556| `region` | Sí | Región de AWS. El gateway deriva de ella el endpoint como `https://bedrock-mantle.<region>.api.aws/anthropic`. |

557| `models` | Sí | Los modelos a los que tu cuenta de AWS tiene acceso en Mantle, nombrados como los envían los clientes, por ejemplo `claude-haiku-4-5`. Solo estos van a este upstream, y cualquier otro modelo pasa al siguiente. |557| `models` | Sí | Los modelos a los que tu cuenta de AWS tiene acceso en Mantle, nombrados como los envían los clientes, por ejemplo `claude-haiku-4-5`. Solo estos van a este upstream, y cualquier otro modelo pasa al siguiente. |

558| `auth` | No | Admite las mismas claves que el bloque `auth` del upstream de [Amazon Bedrock](#amazon-bedrock), con las mismas reglas. |558| `auth` | No | Admite las mismas claves que el bloque `auth` del upstream de [Amazon Bedrock](#amazon-bedrock), con las mismas reglas. |

559| `assume_role` | No | El rol a través del cual pasan las solicitudes de este upstream, con las mismas claves que [en un upstream `bedrock`](#bedrock-in-another-aws-account), incluido `session_name` para la [atribución por desarrollador](#per-developer-aws-cost-attribution). Concede al rol las acciones de IAM de Mantle. Requiere un gateway que ejecute Claude Code v2.1.318 o posterior. Un gateway anterior termina al arrancar con `Unrecognized key(s) in object: 'assume_role'`. |

559| `base_url` | No | Sobrescribe el endpoint derivado. Conserva la ruta `/anthropic` al final. |560| `base_url` | No | Sobrescribe el endpoint derivado. Conserva la ruta `/anthropic` al final. |

560 561 

561Otorga a la identidad de AWS del upstream las acciones de IAM propias de Mantle para la inferencia y el conteo de tokens, que se enumeran en [Usar el endpoint Mantle](https://code.claude.com/docs/es/amazon-bedrock.md#use-the-mantle-endpoint).562Otorga a la identidad de AWS del upstream las acciones de IAM propias de Mantle para la inferencia y el conteo de tokens, que se enumeran en [Usar el endpoint Mantle](https://code.claude.com/docs/es/amazon-bedrock.md#use-the-mantle-endpoint).


565Los ajustes `guardrail` y `assume_role` de un upstream `bedrock` no se extienden a las solicitudes que sirve Mantle:566Los ajustes `guardrail` y `assume_role` de un upstream `bedrock` no se extienden a las solicitudes que sirve Mantle:

566 567 

567* **`guardrail`**: el gateway no aplica ninguna [barrera de protección de Bedrock](#apply-an-amazon-bedrock-guardrail) a las solicitudes que envía a Mantle, por lo que se niega a iniciar cuando hay un upstream `mantle` en la lista mientras algún upstream `bedrock` establece `guardrail`.568* **`guardrail`**: el gateway no aplica ninguna [barrera de protección de Bedrock](#apply-an-amazon-bedrock-guardrail) a las solicitudes que envía a Mantle, por lo que se niega a iniciar cuando hay un upstream `mantle` en la lista mientras algún upstream `bedrock` establece `guardrail`.

568* **`assume_role`**: un upstream `mantle` no admite [`assume_role`](#bedrock-in-another-aws-account). Las solicitudes que sirve Mantle se envían con las credenciales de `auth` propias del upstream `mantle` y no se [atribuyen por desarrollador](#per-developer-aws-cost-attribution).569* **`assume_role`**: configúralo en el propio upstream `mantle`. Sin él, las solicitudes que atiende Mantle se envían con las credenciales `auth` propias del upstream `mantle`.

569 570 

570Para saber qué significan las respuestas de error propias de Mantle, consulta [Errores del endpoint Mantle](https://code.claude.com/docs/es/amazon-bedrock.md#mantle-endpoint-errors).571Para saber qué significan las respuestas de error propias de Mantle, consulta [Errores del endpoint Mantle](https://code.claude.com/docs/es/amazon-bedrock.md#mantle-endpoint-errors).

571 572 

Details

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

425| Un desarrollador inicia sesión y luego todas las solicitudes de esa sesión fallan con un error `431` | El token de sesión en el encabezado `Authorization` de cada solicitud enumera los grupos del IdP del desarrollador, por lo que, para un desarrollador que pertenece a muchos grupos, los encabezados pueden superar en total lo que acepta el gateway | Consulta [Encabezados de solicitud demasiado grandes después de iniciar sesión](#request-headers-too-large-after-sign-in) para saber qué límite aplica y qué cambiar |425| Un desarrollador inicia sesión y luego todas las solicitudes de esa sesión fallan con un error `431` | El token de sesión en el encabezado `Authorization` de cada solicitud enumera los grupos del IdP del desarrollador, por lo que, para un desarrollador que pertenece a muchos grupos, los encabezados pueden superar en total lo que acepta el gateway | Consulta [Encabezados de solicitud demasiado grandes después de iniciar sesión](#request-headers-too-large-after-sign-in) para saber qué límite aplica y qué cambiar |

426| Todas las solicitudes a Amazon Bedrock devuelven 502; el registro muestra `Could not load credentials from any providers` | En EC2, el límite de saltos predeterminado de IMDSv2, que es 1, bloquea la solicitud de metadatos de instancia desde dentro del contenedor. El arranque y `/readyz` pasan de todos modos porque el SDK de AWS resuelve las credenciales de la instancia en la primera solicitud, no al construir el cliente | Aumenta el límite de saltos con `aws ec2 modify-instance-metadata-options --instance-id <id> --http-put-response-hop-limit 2`, o establécelo en la plantilla de lanzamiento. El cambio se aplica a todos los contenedores de la instancia. Cuando estén disponibles, prefiere los roles de tarea de ECS, que leen las credenciales desde el endpoint de credenciales de contenedor de ECS y evitan el cambio por completo, o aplica el cambio en una instancia dedicada al gateway para limitar la exposición. |426| Todas las solicitudes a Amazon Bedrock devuelven 502; el registro muestra `Could not load credentials from any providers` | En EC2, el límite de saltos predeterminado de IMDSv2, que es 1, bloquea la solicitud de metadatos de instancia desde dentro del contenedor. El arranque y `/readyz` pasan de todos modos porque el SDK de AWS resuelve las credenciales de la instancia en la primera solicitud, no al construir el cliente | Aumenta el límite de saltos con `aws ec2 modify-instance-metadata-options --instance-id <id> --http-put-response-hop-limit 2`, o establécelo en la plantilla de lanzamiento. El cambio se aplica a todos los contenedores de la instancia. Cuando estén disponibles, prefiere los roles de tarea de ECS, que leen las credenciales desde el endpoint de credenciales de contenedor de ECS y evitan el cambio por completo, o aplica el cambio en una instancia dedicada al gateway para limitar la exposición. |

427| Registro: una advertencia que contiene `upstream <name>: Google issued an access token that expires in <N>s`, en un upstream cuyo archivo de credenciales de Google tiene el tipo `external_account` | Las solicitudes funcionan hasta que ese token de acceso caduca y luego fallan, a menos que el token al que apunta `credential_source` se haya renovado antes. | Si un proceso escribe ese token en un archivo, haz que escriba uno nuevo más de cinco minutos antes de que caduque el anterior |

427| Con carga máxima, las respuestas tardan en empezar o parecen colgarse, o fallan con un 502 `all upstreams failed` aunque el upstream esté en buen estado | Una réplica tiene más solicitudes abiertas de las que envía al upstream a la vez, por lo que las solicitudes adicionales esperan dentro del gateway. En un upstream `provider: anthropic`, una solicitud que espera más de `timeouts.upstream_ttfb_ms` abandona ese upstream, lo que produce el 502 cuando ningún upstream posterior la atiende. El registro muestra una advertencia que contiene `client requests are open`. | Agrega réplicas o aumenta el límite en cada réplica. Consulta [Solicitudes upstream concurrentes](#concurrent-upstream-requests). |428| Con carga máxima, las respuestas tardan en empezar o parecen colgarse, o fallan con un 502 `all upstreams failed` aunque el upstream esté en buen estado | Una réplica tiene más solicitudes abiertas de las que envía al upstream a la vez, por lo que las solicitudes adicionales esperan dentro del gateway. En un upstream `provider: anthropic`, una solicitud que espera más de `timeouts.upstream_ttfb_ms` abandona ese upstream, lo que produce el 502 cuando ningún upstream posterior la atiende. El registro muestra una advertencia que contiene `client requests are open`. | Agrega réplicas o aumenta el límite en cada réplica. Consulta [Solicitudes upstream concurrentes](#concurrent-upstream-requests). |

428| En un upstream distinto de `provider: anthropic`, falla un turno con una pausa larga de pensamiento. El proxy delante del gateway registra una solicitud que permanece abierta unos 12.5 minutos y luego una serie de errores `504` | Claude Code terminó un stream que había entregado su primer evento de respuesta y luego solo transportó pings de keepalive. Reenvió la solicitud sin streaming, y cada respuesta tarda más que el tiempo de espera del proxy. | Aumenta `CLAUDE_STREAM_IDLE_TIMEOUT_MS` para tus desarrolladores. Consulta [El pensamiento largo termina en tiempos de espera agotados del proxy](#long-thinking-ends-in-proxy-timeouts). |429| En un upstream distinto de `provider: anthropic`, falla un turno con una pausa larga de pensamiento. El proxy delante del gateway registra una solicitud que permanece abierta unos 12.5 minutos y luego una serie de errores `504` | Claude Code terminó un stream que había entregado su primer evento de respuesta y luego solo transportó pings de keepalive. Reenvió la solicitud sin streaming, y cada respuesta tarda más que el tiempo de espera del proxy. | Aumenta `CLAUDE_STREAM_IDLE_TIMEOUT_MS` para tus desarrolladores. Consulta [El pensamiento largo termina en tiempos de espera agotados del proxy](#long-thinking-ends-in-proxy-timeouts). |

429| En `provider: anthropic`, falla un turno con una pausa larga de pensamiento. El proxy registra una solicitud abierta durante unos 20 minutos y luego errores `502` o `504` | Claude Code terminó un stream que había entregado su primer evento de respuesta y luego solo transportó pings de keepalive. Reenvió la solicitud sin streaming, y cada respuesta tarda más que la espera del gateway en el upstream, `timeouts.upstream_ttfb_ms`, o que el tiempo de espera del proxy. | Aumenta `CLAUDE_STREAM_IDLE_TIMEOUT_MS` para tus desarrolladores. Consulta [Pensamiento largo en un upstream de la API de Anthropic](#long-thinking-on-an-anthropic-api-upstream). |430| En `provider: anthropic`, falla un turno con una pausa larga de pensamiento. El proxy registra una solicitud abierta durante unos 20 minutos y luego errores `502` o `504` | Claude Code terminó un stream que había entregado su primer evento de respuesta y luego solo transportó pings de keepalive. Reenvió la solicitud sin streaming, y cada respuesta tarda más que la espera del gateway en el upstream, `timeouts.upstream_ttfb_ms`, o que el tiempo de espera del proxy. | Aumenta `CLAUDE_STREAM_IDLE_TIMEOUT_MS` para tus desarrolladores. Consulta [Pensamiento largo en un upstream de la API de Anthropic](#long-thinking-on-an-anthropic-api-upstream). |

Details

131| `session-env/` | Metadatos de entorno por sesión |131| `session-env/` | Metadatos de entorno por sesión |

132| `tasks/` | Listas de tareas escritas por las herramientas de tareas, un directorio por lista |132| `tasks/` | Listas de tareas escritas por las herramientas de tareas, un directorio por lista |

133| `shell-snapshots/` | Alias, funciones y opciones de shell capturadas al inicio y aplicadas por la [herramienta Bash](https://code.claude.com/docs/es/tools-reference.md#bash-tool-behavior) a cada comando. Se elimina al salir correctamente. El barrido borra cualquiera dejado después de un bloqueo. |133| `shell-snapshots/` | Alias, funciones y opciones de shell capturadas al inicio y aplicadas por la [herramienta Bash](https://code.claude.com/docs/es/tools-reference.md#bash-tool-behavior) a cada comando. Se elimina al salir correctamente. El barrido borra cualquiera dejado después de un bloqueo. |

134| `backups/` | Versiones anteriores de `~/.claude.json`, copiadas cuando Claude Code reescribe el archivo. Claude Code mantiene los cinco más nuevos, más una copia de cualquier versión que no pudiera analizar. |134| `backups/` | Versiones anteriores de `~/.claude.json`, copiadas cuando Claude Code reescribe el archivo. Claude Code mantiene las cinco copias más nuevas, más una copia de cualquier versión que no pudiera analizar. Pasado el límite de edad, también se elimina la última copia que contiene tu configuración. Si el archivo actual se puede analizar, contiene tu configuración y pesa menos de 8 MiB, te queda una copia nueva de él. |

135| `feedback-bundles/` | Archivos de transcripción redactados escritos por `/feedback` en proveedores de terceros o cuando no hay credenciales de Anthropic configuradas, para enviar a su equipo de cuenta de Anthropic |135| `feedback-bundles/` | Archivos de transcripción redactados escritos por `/feedback` en proveedores de terceros o cuando no hay credenciales de Anthropic configuradas, para enviar a su equipo de cuenta de Anthropic |

136| `feedback/drafts/` | [Comentarios redactados por Claude](https://code.claude.com/docs/es/tools-reference.md#sendfeedback-tool-behavior) en cola esperando su revisión en `/feedback`. Se barren después de `cleanupPeriodDays` o 30 días, lo que sea más corto. Cuando la cola está en su límite de 10 borradores, Claude Code elimina el borrador más antiguo para hacer espacio. |136| `feedback/drafts/` | [Comentarios redactados por Claude](https://code.claude.com/docs/es/tools-reference.md#sendfeedback-tool-behavior) en cola esperando su revisión en `/feedback`. Se barren después de `cleanupPeriodDays` o 30 días, lo que sea más corto. Cuando la cola está en su límite de 10 borradores, Claude Code elimina el borrador más antiguo para hacer espacio. |

137| `usage-data/` | `report.html` y copias de informes con marca de tiempo escritas por [`/insights`](https://code.claude.com/docs/es/costs#analyze-your-usage-patterns), más datos de análisis en caché por sesión utilizados para construirlos |137| `usage-data/` | `report.html` y copias de informes con marca de tiempo escritas por [`/insights`](https://code.claude.com/docs/es/costs#analyze-your-usage-patterns), más datos de análisis en caché por sesión utilizados para construirlos |


288| `~/.claude/tasks/` | Tus [listas de tareas](https://code.claude.com/docs/es/interactive-mode.md#task-list), incluidas las que todavía están en uso |288| `~/.claude/tasks/` | Tus [listas de tareas](https://code.claude.com/docs/es/interactive-mode.md#task-list), incluidas las que todavía están en uso |

289| `~/.claude/skills/.trash/`, `~/.claude/plugins/.trash/` | La oportunidad de recuperar [skills sincronizados](https://code.claude.com/docs/es/skills.md#how-synced-skills-behave) y [plugins sincronizados](https://code.claude.com/docs/es/plugins/loading.md#synced-plugins) que Claude Code eliminó |289| `~/.claude/skills/.trash/`, `~/.claude/plugins/.trash/` | La oportunidad de recuperar [skills sincronizados](https://code.claude.com/docs/es/skills.md#how-synced-skills-behave) y [plugins sincronizados](https://code.claude.com/docs/es/plugins/loading.md#synced-plugins) que Claude Code eliminó |

290| `~/.claude/plugins/installed_plugins.set-aside.<date>.<hash>.json`, `~/.claude/plugins/installed_plugins.unreadable.<date>.<hash>.kept` | Las copias de registros de instalación de plugins que Claude Code eliminó o no podía leer. Nada las vuelve a leer |290| `~/.claude/plugins/installed_plugins.set-aside.<date>.<hash>.json`, `~/.claude/plugins/installed_plugins.unreadable.<date>.<hash>.kept` | Las copias de registros de instalación de plugins que Claude Code eliminó o no podía leer. Nada las vuelve a leer |

291| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/session-env/`, `~/.claude/shell-snapshots/`, `~/.claude/backups/` | Nada orientado al usuario |291| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/session-env/`, `~/.claude/shell-snapshots/` | Nada orientado al usuario |

292| `~/.claude/backups/` | Las copias anteriores desde las que puedes [restaurar `~/.claude.json`](https://code.claude.com/docs/es/errors#configuration-error-in-claude-json) |

292| `~/.claude/todos/`, `~/.claude/statsig/`, `~/.claude/logs/`, `~/.claude/image-cache/` | Nada. Directorios heredados no escritos por versiones actuales. |293| `~/.claude/todos/`, `~/.claude/statsig/`, `~/.claude/logs/`, `~/.claude/image-cache/` | Nada. Directorios heredados no escritos por versiones actuales. |

293 294 

294No elimines `~/.claude.json`, `~/.claude/settings.json` ni `~/.claude/plugins/`: esos contienen los datos de tu cuenta, tus preferencias y tus plugins instalados.295No elimines `~/.claude.json`, `~/.claude/settings.json` ni `~/.claude/plugins/`: esos contienen los datos de tu cuenta, tus preferencias y tus plugins instalados.

Details

480* **"Unable to access your repository"**, reportado por un hilo cuando su clon falla: GitHub rechazó el clon, el repositorio no se encontró bajo el nombre que tiene el proyecto, o la rama desde la que se le pidió al hilo que comenzara no existe.480* **"Unable to access your repository"**, reportado por un hilo cuando su clon falla: GitHub rechazó el clon, el repositorio no se encontró bajo el nombre que tiene el proyecto, o la rama desde la que se le pidió al hilo que comenzara no existe.

481* **"Claude can't access"** un repositorio, mostrado cuando guardas repositorios en el diálogo **New project** o **Project settings**. El mensaje continúa con un enlace de instalación y un enlace de reconexión. Usa el enlace de instalación si la Claude GitHub App no está en ese repositorio, y el enlace de reconexión si lo está, ya que la Claude GitHub App puede estar instalada en GitHub sin estar vinculada a la cuenta que conectaste a Claude. Si el mensaje dice que la Claude GitHub App está suspendida o no incluye este repositorio, sigue su enlace a GitHub para arreglarlo.481* **"Claude can't access"** un repositorio, mostrado cuando guardas repositorios en el diálogo **New project** o **Project settings**. El mensaje continúa con un enlace de instalación y un enlace de reconexión. Usa el enlace de instalación si la Claude GitHub App no está en ese repositorio, y el enlace de reconexión si lo está, ya que la Claude GitHub App puede estar instalada en GitHub sin estar vinculada a la cuenta que conectaste a Claude. Si el mensaje dice que la Claude GitHub App está suspendida o no incluye este repositorio, sigue su enlace a GitHub para arreglarlo.

482 482 

483Para arreglar cualquiera de ellos, haz clic en el botón que ofrece el mensaje, como **Install GitHub App** o **Select repositories on GitHub**, luego **Check again**. Cuando el bloqueo está del lado de la organización de GitHub, como un propietario que no ha aprobado la aplicación o una lista de permitidos de IP que excluye a Claude, el mensaje muestra un enlace **See how to fix** en su lugar. Si no hay botón, sigue [Configurar acceso a GitHub](#set-up-github-access), luego envía otro mensaje para reintentar.483Para arreglar el acceso a GitHub en el caso de "Couldn't start the session" o "Unable to access your repository", haz clic en el botón que ofrece el mensaje, como **Install on GitHub** o **Select repositories**. Si no hay botón, sigue [Configurar acceso a GitHub](#set-up-github-access). Después de arreglarlo, pídele a Claude en la conversación del proyecto que comience un hilo nuevo para el mismo trabajo.

484 484 

485### Un hilo alcanzó el límite de uso485### Un hilo alcanzó el límite de uso

486 486 


505 505 

506| Mensaje | Qué hacer |506| Mensaje | Qué hacer |

507| :- | :- |507| :- | :- |

508| "Unable to connect to repository" con "Claude couldn't reach GitHub to fetch your repository" | Espera un momento, luego envía otro mensaje para reintentar |508| "Unable to connect to repository" con "Claude couldn't reach GitHub to fetch your repository" | Espera un momento, luego pídele a Claude en la conversación del proyecto que comience un hilo nuevo para el mismo trabajo |

509| "Unable to connect to repository" con "Claude couldn't access your repository or environment" | Tu cuenta de GitHub necesita acceso de inserción al repositorio, y el entorno aún debe existir. Verifica ambos en **Project settings > Environment**, luego reintentar |509| "Unable to connect to repository" con "Claude couldn't access your repository or environment" | Tu cuenta de GitHub necesita acceso de inserción al repositorio, y el entorno aún debe existir. Verifica ambos en **Project settings > Environment**, luego reintentar |

510| "Couldn't show the setup proposal" | La aplicación que tienes abierta es más antigua que las **Setup recommendations** que Claude envió. Actualiza la página o reinicia la aplicación de escritorio, o pídele a Claude que proponga la configuración de nuevo |510| "Couldn't show the setup proposal" | La aplicación que tienes abierta es más antigua que las **Setup recommendations** que Claude envió. Actualiza la página o reinicia la aplicación de escritorio, o pídele a Claude que proponga la configuración de nuevo |

511| "The project's environment was removed" | Elige un entorno diferente en **Project settings > Environment**; el cambio se aplica a hilos nuevos |511| "The project's environment was removed" | Elige un entorno diferente en **Project settings > Environment**; el cambio se aplica a hilos nuevos |

Details

12 12 

13## Ver qué se cargó en el contexto13## Ver qué se cargó en el contexto

14 14 

15El comando `/context` muestra todo lo que ocupa la ventana de contexto para la sesión actual, desglosado por categoría: indicación del sistema, herramientas del sistema, herramientas MCP, subagentes personalizados con la fuente desde la que se cargó cada uno, archivos de memoria, skills y mensajes de conversación. Ejecútelo primero para confirmar si su `CLAUDE.md`, reglas o descripciones de skills están presentes en absoluto. La sección de skills en `/context` también incluye [skills incluidas](https://code.claude.com/docs/es/skills.md#bundled-skills), que `/skills` no lista.15El comando `/context` muestra todo lo que ocupa la ventana de contexto para la sesión actual. Lo desglosa por categoría: prompt del sistema, herramientas del sistema, herramientas MCP, subagentes personalizados con la fuente desde la que se cargó cada uno, archivos de memoria, skills y mensajes de conversación. Ejecútalo primero para confirmar si tu `CLAUDE.md`, reglas o descripciones de skills están presentes en absoluto. La sección de skills en `/context` también incluye [skills incluidos](https://code.claude.com/docs/es/skills.md#bundled-skills), que `/skills` no lista.

16 

17En el [modo de pantalla completa](https://code.claude.com/docs/es/fullscreen.md), `/context` contrae el desglose por elemento, así que ejecuta `/context all` para expandirlo.

16 18 

17Para obtener detalles sobre una categoría específica, continúe con el comando dedicado:19Para obtener detalles sobre una categoría específica, continúe con el comando dedicado:

18 20 

desktop.md +71 −14

Details

84 84 

85Los modos de permisos controlan cuánta autonomía tiene Claude durante una sesión: si pregunta antes de editar archivos, ejecutar comandos o ambos. Puedes cambiar de modo en cualquier momento usando el selector de modo en la fila debajo del cuadro de prompt. Para aprobar cada cambio tú mismo, cambia a Manual.85Los modos de permisos controlan cuánta autonomía tiene Claude durante una sesión: si pregunta antes de editar archivos, ejecutar comandos o ambos. Puedes cambiar de modo en cualquier momento usando el selector de modo en la fila debajo del cuadro de prompt. Para aprobar cada cambio tú mismo, cambia a Manual.

86 86 

87Para establecer un modo predeterminado para nuevas sesiones locales, agrega `permissions.defaultMode` a tu [archivo de configuración](https://code.claude.com/docs/es/settings.md#where-settings-live). La aplicación de escritorio lee los mismos archivos de configuración que la CLI. Un modo que seleccionas en el selector se recuerda por carpeta y tiene prioridad sobre `defaultMode` para esa carpeta, excepto Plan, que se aplica solo a la sesión actual.87Para establecer un modo de permisos predeterminado para nuevas sesiones locales, agrega `permissions.defaultMode` a tu [archivo de configuración](https://code.claude.com/docs/es/settings.md#where-settings-live). Un modo que seleccionas en una sesión local se recuerda por carpeta y tiene prioridad sobre un `defaultMode` en la configuración de `.claude/` del proyecto. Una nueva sesión local aún puede iniciarse en un `defaultMode` de `~/.claude/settings.json` o de la configuración administrada, así que revisa el selector antes de tu primer mensaje. Si seleccionas Plan, se aplica solo a esta sesión.

88 88 

89| Modo | Clave de configuración | Comportamiento |89| Modo | Clave de configuración | Comportamiento |

90| - | - | - |90| - | - | - |


1289 1289 

1290> [!WARNING]1290> [!WARNING]

1291>1291>

1292> Si inicias sesión en Desktop con una cuenta de Claude, no cuentes con que una tarea se ejecute durante toda la noche. Desktop renueva ese inicio de sesión para la tarea solo mientras Desktop está en ejecución y conectado, por lo que el inicio de sesión de la tarea puede expirar después de que te desconectes, y entonces la tarea se detiene. El tiempo que queda cuando te desconectas varía, y puede ser de solo unos minutos.1292> Si inicias sesión en Desktop con una cuenta de Claude, no cuentes con que una tarea se ejecute durante toda la noche. Desktop renueva ese inicio de sesión para la tarea solo mientras Desktop está en ejecución, conectado y con la sesión iniciada, así que el inicio de sesión de la tarea puede expirar después de que te desconectas, y la tarea se detiene entonces. El tiempo restante cuando te desconectas varía y puede ser de solo unos minutos.

1293>1293>

1294> El trabajo hecho hasta ese momento permanece en la máquina remota, y puedes continuar con un mensaje cuando vuelvas.1294> El trabajo hecho hasta ese momento permanece en la máquina remota, y puedes continuar con un mensaje cuando vuelvas.

1295>1295>

1296> Si la tarea debe ejecutarse durante toda la noche:1296> Si la tarea debe ejecutarse durante toda la noche:

1297>1297>

1298> * [Mantén tu computadora despierta](https://code.claude.com/docs/es/desktop-scheduled-tasks.md#how-scheduled-tasks-run) y en línea, con la tapa abierta y Desktop en ejecución1298> * [Mantén tu computadora activa](https://code.claude.com/docs/es/desktop-scheduled-tasks.md#how-scheduled-tasks-run) y en línea, con la tapa abierta y Desktop en ejecución y con la sesión iniciada

1299> * Usa un inicio de sesión que funcione sin pedirte nada, como una clave que tenga tu agente SSH, para la máquina remota y para cualquier host de salto en el camino. Así Desktop puede volver a conectarse por sí solo después de una caída.1299> * Usa un inicio de sesión que funcione sin pedirte nada, como una clave que tenga tu agente SSH, para la máquina remota y para cualquier host de salto en el camino. Así Desktop puede volver a conectarse por sí solo después de una caída.

1300>1300>

1301> Para una tarea que deba ejecutarse mientras tu computadora está en suspensión o apagada, inicia una [sesión en la nube](#run-long-running-tasks-in-the-cloud) en su lugar.1301> Para una tarea que deba ejecutarse mientras tu computadora está en suspensión o apagada, inicia una [sesión en la nube](#run-long-running-tasks-in-the-cloud) en su lugar.


1303* **Después de una suspensión o una pérdida de red**: recuperas la tarea en ejecución si el proceso [sigue ejecutándose](#limits-while-desktop-is-disconnected) y Desktop puede iniciar sesión sin pedirte nada. Si no puede, [envía un mensaje](#reconnect-after-sleep-or-a-network-loss).1303* **Después de una suspensión o una pérdida de red**: recuperas la tarea en ejecución si el proceso [sigue ejecutándose](#limits-while-desktop-is-disconnected) y Desktop puede iniciar sesión sin pedirte nada. Si no puede, [envía un mensaje](#reconnect-after-sleep-or-a-network-loss).

1304* **Después de salir**: la tarea sigue ejecutándose, pero la pierdes cuando la sesión vuelve a abrirse, a menos que Desktop pueda volver a unirse a su proceso. Revisa [cuándo puede Desktop volver a unirse](#reopen-a-session-after-you-quit-desktop) antes de salir. Si perdiste la tarea, envía un mensaje para continuar.1304* **Después de salir**: la tarea sigue ejecutándose, pero la pierdes cuando la sesión vuelve a abrirse, a menos que Desktop pueda volver a unirse a su proceso. Revisa [cuándo puede Desktop volver a unirse](#reopen-a-session-after-you-quit-desktop) antes de salir. Si perdiste la tarea, envía un mensaje para continuar.

1305 1305 

1306Cuando vuelvas y la tarea no haya terminado, busca un aviso de que Desktop no puede volver a conectarse, un error de autenticación o una solicitud en espera:1306Cuando vuelvas y la tarea no haya terminado, busca la página de inicio de sesión de Desktop, un aviso de que Desktop no puede reconectarse, un error de autenticación o una solicitud en espera:

1307 1307 

1308* **Página de inicio de sesión**: inicia sesión. Si la tarea se detuvo, envía un mensaje para continuar. En un plan Enterprise, tu organización puede [cerrar tu sesión una cantidad determinada de días después de que la inicias](https://support.claude.com/en/articles/13163631-configuring-session-security-settings), sin importar cuán activo estés. Con una cuenta de Claude, Desktop no renueva el inicio de sesión de la tarea mientras tu sesión está cerrada, así que la tarea puede detenerse.

1308* **Desktop no puede volver a conectarse**: la sesión indica por qué, y es posible que una notificación también lo indique. Es posible que Desktop [necesite que inicies sesión](#reconnect-after-sleep-or-a-network-loss).1309* **Desktop no puede volver a conectarse**: la sesión indica por qué, y es posible que una notificación también lo indique. Es posible que Desktop [necesite que inicies sesión](#reconnect-after-sleep-or-a-network-loss).

1309* **Error de autenticación**: es posible que el [token de inicio de sesión o la credencial](#limits-while-desktop-is-disconnected) haya expirado. Con una cuenta de Claude, envía un mensaje para continuar. Con un proveedor externo, consulta [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions).1310* **Error de autenticación**: es posible que el [token de inicio de sesión o la credencial](#limits-while-desktop-is-disconnected) haya expirado. Con una cuenta de Claude, envía un mensaje para continuar. Con un proveedor externo, consulta [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions).

1310* **Solicitud en espera**: [respóndela](#handle-requests-that-arrive-while-you-are-away)1311* **Solicitud en espera**: [respóndela](#handle-requests-that-arrive-while-you-are-away)


1602 1603 

1603> [!NOTE]1604> [!NOTE]

1604>1605>

1605> Las conexiones a partir de un comando requieren Claude Desktop v3.6556.0 o posterior en macOS o Linux, con la sesión iniciada con una cuenta de Claude. Los administradores pueden [distribuir comandos a un equipo](#distribute-commands-to-your-team).1606> Las conexiones desde un comando requieren Claude Desktop v3.6556.0 o posterior en macOS o Linux, o v4.16336.0 o posterior en Windows, con la sesión iniciada con una cuenta de Claude. En Windows, Desktop también tiene que [conectarse a través del cliente OpenSSH](#use-your-ssh-configuration). Los administradores pueden [distribuir comandos a un equipo](#distribute-commands-to-your-team).

1606 1607 

1607Desktop ejecuta el comando solo cuando creas la conexión o [creas otra máquina](#create-another-machine), no cada vez que te conectas. Cada entrada es una conexión, que apunta al host que Desktop guardó por última vez a partir del comando de la entrada.1608Desktop ejecuta el comando solo cuando creas la conexión o [creas otra máquina](#create-another-machine), no cada vez que te conectas. Cada entrada es una conexión, que apunta al host que Desktop guardó por última vez a partir del comando de la entrada.

1608 1609 


1632}1633}

1633```1634```

1634 1635 

1636En Windows, un nombre solo como `acme-dev` no funciona, así que [empieza el comando con la ruta completa del programa](#write-the-command-on-windows).

1637 

1635Cada entrada acepta estos campos, y `id`, `name` y `command` son obligatorios:1638Cada entrada acepta estos campos, y `id`, `name` y `command` son obligatorios:

1636 1639 

1637| Campo | Valor |1640| Campo | Valor |


1646 1649 

1647##### Escribir el comando1650##### Escribir el comando

1648 1651 

1649Desktop inicia el programa directamente, sin shell y sin terminal:1652En Windows, empieza por [Escribir el comando en Windows](#write-the-command-on-windows), que indica cuáles de estas reglas se aplican allí.

1653 

1654En macOS y Linux, Desktop inicia el programa directamente, sin shell y sin terminal:

1650 1655 

1651* **Programa**: escribe su nombre, o su ruta completa desde `/`, sin espacios. Desktop busca un nombre simple en el `PATH` que exporta tu shell de inicio de sesión. Las rutas relativas como `./acme-dev`, las rutas que comienzan con `~` y los alias y funciones del shell no funcionan.1656* **Programa**: escribe su nombre o su ruta completa desde `/`. Desktop busca un nombre solo en el `PATH` que exporta tu shell de inicio de sesión. Las rutas relativas como `./acme-dev`, las rutas que empiezan con `~` y los alias y funciones del shell no funcionan.

1652* **Argumentos**: separa los argumentos simples con espacios. El comando solo puede contener espacios, letras ASCII, dígitos y los caracteres `+,-./:=@_~`, y ninguna palabra puede comenzar con `~`.1657* **Espacios en la ruta**: pon la ruta completa del programa entre comillas simples, como `'/Users/you/My Tools/make-devbox' create`. Las comillas, simples o dobles, requieren Claude Desktop v4.16336.0 o posterior, y solo funcionan alrededor de la ruta del programa.

1653* **Scripts**: si el comando necesita algo más, como comillas, pipes, variables o una URL con `?` o `&`, colócalo en un script. Haz que el script sea ejecutable, comiénzalo con una línea `#!` y establece `command` en su ruta completa, como `/Users/you/bin/make-devbox`. En macOS, mantén el script fuera de las carpetas Documentos, Escritorio y Descargas, donde macOS puede bloquearlo.1658* **Argumentos**: separa los argumentos con espacios. Fuera de las comillas, el comando solo puede contener espacios, letras ASCII, dígitos y los caracteres `+,-./:=@_~`, y ninguna palabra puede empezar con `~`. Una ruta entre comillas también puede contener algunos otros caracteres, como `(`, `)` y `&`.

1659* **Scripts**: si el comando necesita algo más, como argumentos entre comillas, pipes, variables o una URL con `?` o `&`, ponlo en un script. Haz que el script sea ejecutable, empiézalo con una línea `#!` y configura `command` con su ruta completa, como `/Users/you/bin/make-devbox`. En macOS, mantén el script fuera de las carpetas Documents, Desktop y Downloads, donde macOS puede bloquearlo.

1654* **Entrada**: el programa no recibe entrada ni terminal, así que no puede pedirte nada allí. Si tu herramienta te hace iniciar sesión a través de un navegador o un prompt, inicia sesión primero desde una terminal, y de nuevo cada vez que ese inicio de sesión caduque.1660* **Entrada**: el programa no recibe entrada ni terminal, así que no puede pedirte nada allí. Si tu herramienta te hace iniciar sesión a través de un navegador o un prompt, inicia sesión primero desde una terminal, y de nuevo cada vez que ese inicio de sesión caduque.

1655* **Entorno**: el programa se ejecuta en tu directorio home con las variables que exporta tu shell de inicio de sesión. Desktop las lee al iniciarse, como lo hace para [un `ProxyCommand`](#use-variables-from-your-shell-in-a-proxycommand), así que cierra y vuelve a abrir Desktop después de cambiarlas.1661* **Entorno**: el programa se ejecuta en tu directorio home con las variables que exporta tu shell de inicio de sesión. Desktop las lee al iniciarse, como lo hace para [un `ProxyCommand`](#use-variables-from-your-shell-in-a-proxycommand), así que cierra y vuelve a abrir Desktop después de cambiarlas.

1656* **Límite de tiempo**: Desktop detiene un programa que sigue en ejecución después de 10 minutos. El mensaje de progreso de Desktop no muestra la salida del programa. Para detener el programa antes, selecciona **Cancel** junto a ese mensaje.1662* **Límite de tiempo**: Desktop detiene un programa que sigue en ejecución después de 10 minutos. El mensaje de progreso de Desktop no muestra la salida del programa. Para detener el programa antes, selecciona **Cancel** junto a ese mensaje.


1680 1686 

1681Si el comando falla, **View details** en el mensaje de Desktop muestra la última línea que el comando escribió en la salida de error estándar, si la hay.1687Si el comando falla, **View details** en el mensaje de Desktop muestra la última línea que el comando escribió en la salida de error estándar, si la hay.

1682 1688 

1689##### Escribir el comando en Windows

1690 

1691En Windows, empieza `command` con la ruta completa de un archivo `.exe`, `.cmd` o `.bat`, desde la letra de unidad. Desktop no busca un nombre solo en tu `PATH`, así que una entrada cuyo `command` es `acme-dev create` aparece en [gris](#if-a-command-is-missing-or-gray).

1692 

1693La siguiente entrada en `%USERPROFILE%\.claude\settings.json` ejecuta `C:\Program Files\Acme\acme-dev.exe` con el argumento `create`. En JSON, escribe cada barra invertida dos veces, o escribe `/` en su lugar. Las comillas simples están ahí porque la ruta tiene un espacio:

1694 

1695```json settings.json theme={null}

1696{

1697 "sshHostCommands": [

1698 {

1699 "id": "devbox",

1700 "name": "Dev box",

1701 "command": "'C:\\Program Files\\Acme\\acme-dev.exe' create"

1702 }

1703 ]

1704}

1705```

1706 

1707Sigue las reglas de [Escribir el comando](#write-the-command) sobre espacios en la ruta, la entrada, el límite de tiempo y lo que imprime el programa. En lugar de sus otras reglas, sigue estas:

1708 

1709* **Programa**: no uses una ruta de red como `\\server\share`, una variable como `%USERPROFILE%` ni una letra fuera de ASCII. Con cualquiera de estas en la ruta, la entrada aparece en gris. Si el nombre de tu carpeta de usuario tiene una letra así, mantén el programa fuera de esa carpeta.

1710* **Argumentos**: sigue la regla de Argumentos de Escribir el comando. El comando también puede contener `\`, pero ninguna palabra puede terminar con él.

1711* **Scripts**: usa un archivo `.cmd` o `.bat`, que Desktop ejecuta a través de `cmd.exe`. Incluso entre comillas, la ruta del archivo no puede contener `&`, `^` ni `;`. En un archivo que escribas, lee los argumentos con `%*`, porque `%1` a `%9` dividen un argumento en `,` y `=`.

1712* **Entorno**: el programa recibe las variables de entorno de la app Desktop, no las de un perfil de shell. Después de cambiar una variable, cierra y vuelve a abrir Desktop.

1713* **Prueba**: para ver la salida que lee Desktop, ejecuta el comando en el Símbolo del sistema. Pon una ruta que tenga un espacio entre comillas dobles y usa `NUL` para no dar entrada, como en `"C:\Program Files\Acme\acme-dev.exe" create < NUL > host.txt`. El archivo tiene que contener solo el host. La prueba también crea una máquina, así que elimínala con tu herramienta después.

1714 

1715##### Envolver una herramienta de Windows que imprime otras líneas

1716 

1717Si tu herramienta imprime otras líneas antes del host, como mensajes de progreso, envuélvela en un archivo por lotes que imprima solo el host. El siguiente archivo imprime la última línea de la salida de tu herramienta y sale con el código de tu herramienta si falla:

1718 

1719```batch make-devbox.cmd theme={null}

1720@echo off

1721setlocal

1722set "host="

1723set "out=%TEMP%\acme-dev-%RANDOM%.txt"

1724call "C:\Program Files\Acme\acme-dev.exe" create > "%out%"

1725set "code=%ERRORLEVEL%"

1726for /f "usebackq delims=" %%L in ("%out%") do set "host=%%L"

1727del "%out%"

1728if not "%code%"=="0" exit /b %code%

1729setlocal EnableDelayedExpansion

1730echo(!host!

1731```

1732 

1733Configura `command` con la ruta completa del archivo, como `C:\\tools\\make-devbox.cmd` en JSON. Deja sus dos últimas líneas como están, porque imprimen el host sin ejecutarlo como comando.

1734 

1683##### Conectarse a un host nuevo1735##### Conectarse a un host nuevo

1684 1736 

1685Responde dos preguntas la primera vez que te conectes a cada host nuevo:1737Responde dos preguntas la primera vez que te conectes a cada host nuevo:

1686 1738 

1687* **Clave del host**: con la comprobación de claves de host predeterminada de OpenSSH, revisa la huella digital de la clave y luego elige si quieres conectarte. Para omitir la pregunta, haz que tu comando agregue la clave a `~/.ssh/known_hosts` antes de imprimir el host, usando una clave que tu herramienta obtuvo al crear la máquina. Para un puerto distinto de 22, esa línea comienza con `[host]:port`. Si tu herramienta reutiliza nombres de host, elimina también la línea de la clave anterior.1739* **Clave del host**: con la comprobación de claves de host predeterminada de OpenSSH, revisa la huella digital de la clave y luego elige si quieres conectarte. Para omitir la pregunta, haz que tu comando agregue la clave a `~/.ssh/known_hosts`, o a `%USERPROFILE%\.ssh\known_hosts` en Windows, antes de imprimir el host:

1740 * Usa una clave que tu herramienta obtuvo cuando creó la máquina

1741 * Para un puerto distinto de 22, empieza la línea con `[host]:port`

1742 * Si tu herramienta reutiliza nombres de host, quita también la línea de la clave anterior

1688* **Carpeta**: elige si confías en la carpeta que abres allí1743* **Carpeta**: elige si confías en la carpeta que abres allí

1689 1744 

1690Mantén activada la comprobación de claves de host para estos hosts, y conserva un archivo `known_hosts` para ellos. Si `StrictHostKeyChecking` es `no` o `accept-new` y `UserKnownHostsFile` también es `/dev/null` o `none`, nada registra la clave. Cuando tu herramienta reutiliza después un nombre, puedes conectarte a una máquina diferente sin ninguna advertencia.1745Mantén activada la comprobación de claves de host para estos hosts, y conserva un archivo `known_hosts` para ellos. Si `StrictHostKeyChecking` es `no` o `accept-new` y `UserKnownHostsFile` también es `/dev/null` o `none`, nada registra la clave. Cuando tu herramienta reutiliza después un nombre, puedes conectarte a una máquina diferente sin ninguna advertencia.


1746 1801 

1747* **Dónde poner la clave**: si tu política MDM para Claude Code ya establece una [clave de política](https://code.claude.com/docs/es/managed-settings.md#how-claude-code-combines-managed-sources), colócala allí. De lo contrario, colócala en el archivo de configuración administrada. De forma predeterminada, una política así tiene prioridad sobre el archivo, y Desktop ignora entonces las entradas del archivo. Establécela en la computadora incluso donde se aplique la [configuración administrada por el servidor](https://code.claude.com/docs/es/server-managed-settings.md): Desktop ignora la clave allí, así como en la configuración de proyecto y local.1802* **Dónde poner la clave**: si tu política MDM para Claude Code ya establece una [clave de política](https://code.claude.com/docs/es/managed-settings.md#how-claude-code-combines-managed-sources), colócala allí. De lo contrario, colócala en el archivo de configuración administrada. De forma predeterminada, una política así tiene prioridad sobre el archivo, y Desktop ignora entonces las entradas del archivo. Establécela en la computadora incluso donde se aplique la [configuración administrada por el servidor](https://code.claude.com/docs/es/server-managed-settings.md): Desktop ignora la clave allí, así como en la configuración de proyecto y local.

1748* **El `id`**: si la entrada de `sshHostCommands` de un usuario tiene tu `id`, solo funciona la tuya. Si cualquier otra conexión SSH lo tiene, como una en los `sshConfigs` de un usuario, tu entrada aparece en gris. Elige un `id` que sea poco probable que los usuarios elijan.1803* **El `id`**: si la entrada de `sshHostCommands` de un usuario tiene tu `id`, solo funciona la tuya. Si cualquier otra conexión SSH lo tiene, como una en los `sshConfigs` de un usuario, tu entrada aparece en gris. Elige un `id` que sea poco probable que los usuarios elijan.

1749* **El programa**: indica su ruta completa, porque Desktop busca un nombre simple en el propio `PATH` de cada usuario. El programa se ejecuta como el usuario, con las variables que exporta su shell de inicio de sesión.1804* **El programa**: indica su ruta completa, porque en macOS y Linux Desktop busca un nombre solo en el `PATH` de cada usuario, y en Windows una entrada con un nombre solo aparece en gris. El programa se ejecuta como el usuario, con [las variables de ese usuario](#write-the-command).

1805* **Cada plataforma**: implementa una entrada para las computadoras con Windows y otra para las computadoras con macOS y Linux. Una entrada con una [ruta de Windows](#write-the-command-on-windows) aparece en gris en macOS y Linux, y una con una ruta de macOS o Linux aparece en gris en Windows.

1750* **Las entradas propias de los usuarios**: Desktop trata la entrada de un usuario como un [hook](https://code.claude.com/docs/es/hooks.md), porque ambos ejecutan un programa en la computadora. Para permitir solo tus entradas, establece [`strictPluginOnlyCustomization`](https://code.claude.com/docs/es/settings-reference#strictpluginonlycustomization) en `["hooks"]`, o agrega `"hooks"` a su lista. También bloqueas los hooks de Claude Code de la configuración de usuario, de proyecto y local, sin forma de conservarlos. Si en cambio estableces esa clave o [`allowManagedHooksOnly`](https://code.claude.com/docs/es/settings-reference#allowmanagedhooksonly) en `true`, bloqueas más cosas, como se indica en la entrada de cada clave.1806* **Las entradas propias de los usuarios**: Desktop trata la entrada de un usuario como un [hook](https://code.claude.com/docs/es/hooks.md), porque ambos ejecutan un programa en la computadora. Para permitir solo tus entradas, establece [`strictPluginOnlyCustomization`](https://code.claude.com/docs/es/settings-reference#strictpluginonlycustomization) en `["hooks"]`, o agrega `"hooks"` a su lista. También bloqueas los hooks de Claude Code de la configuración de usuario, de proyecto y local, sin forma de conservarlos. Si en cambio estableces esa clave o [`allowManagedHooksOnly`](https://code.claude.com/docs/es/settings-reference#allowmanagedhooksonly) en `true`, bloqueas más cosas, como se indica en la entrada de cada clave.

1751* **Todas las entradas**: para desactivar también tus entradas, establece [`disableAllHooks`](https://code.claude.com/docs/es/settings-reference#disableallhooks) en la configuración administrada. Si estableces [`disableDesktopLocalSessions`](https://code.claude.com/docs/es/settings-reference#disabledesktoplocalsessions), o una `sshHostAllowlist` que no permite ningún host, el selector no muestra ningún elemento **Create** ni **Create another**.1807* **Todas las entradas**: para desactivar también tus entradas, establece [`disableAllHooks`](https://code.claude.com/docs/es/settings-reference#disableallhooks) en la configuración administrada. Si estableces [`disableDesktopLocalSessions`](https://code.claude.com/docs/es/settings-reference#disabledesktoplocalsessions), o una `sshHostAllowlist` que no permite ningún host, el selector no muestra ningún elemento **Create** ni **Create another**.

1752* **Dónde cuentan los bloqueos**: para estas entradas, Desktop lee `allowManagedHooksOnly`, `strictPluginOnlyCustomization` y `disableAllHooks` de la configuración administrada por el servidor y del propio archivo o política de la computadora, y aplica el resultado más estricto. Todas las entradas permanecen en gris hasta que Desktop haya consultado claude.ai para obtener la configuración administrada por el servidor, incluso si tu organización no tiene ninguna.1808* **Dónde cuentan los bloqueos**: para estas entradas, Desktop lee `allowManagedHooksOnly`, `strictPluginOnlyCustomization` y `disableAllHooks` de la configuración administrada por el servidor y del propio archivo o política de la computadora, y aplica el resultado más estricto. Todas las entradas permanecen en gris hasta que Desktop haya consultado claude.ai para obtener la configuración administrada por el servidor, incluso si tu organización no tiene ninguna.


1759El selector de entorno no muestra ningún elemento **Create** ni **Create another** en estos casos:1815El selector de entorno no muestra ningún elemento **Create** ni **Create another** en estos casos:

1760 1816 

1761* **El archivo**: `~/.claude/settings.json` tiene [JSON no válido o un valor que el esquema rechaza](https://code.claude.com/docs/es/settings.md#fix-a-broken-settings-file), escribiste mal la clave o la pusiste en la configuración de un proyecto. Corrige el archivo.1817* **El archivo**: `~/.claude/settings.json` tiene [JSON no válido o un valor que el esquema rechaza](https://code.claude.com/docs/es/settings.md#fix-a-broken-settings-file), escribiste mal la clave o la pusiste en la configuración de un proyecto. Corrige el archivo.

1762* **Plataforma y cuenta**: usas Windows, o un [proveedor externo](https://code.claude.com/docs/es/third-party-integrations.md) en lugar de una cuenta de Claude. Agrega tú mismo cada host como una [conexión SSH](#ssh-sessions).1818* **Cuenta**: usas un [proveedor externo](https://code.claude.com/docs/es/third-party-integrations.md) en lugar de una cuenta de Claude. Agrega tú mismo cada host como una [conexión SSH](#ssh-sessions).

1819* **Windows**: Desktop es anterior a v4.16336.0, o no se conecta a través del cliente OpenSSH. Actualiza Desktop y cumple [los requisitos del cliente OpenSSH](#use-your-ssh-configuration); luego cierra y vuelve a abrir Desktop.

1763* **La configuración de tu organización**: tu administrador desactivó las sesiones locales o las sesiones SSH. Pregúntale si puedes usar comandos.1820* **La configuración de tu organización**: tu administrador desactivó las sesiones locales o las sesiones SSH. Pregúntale si puedes usar comandos.

1764* **No hay programa `ssh`**: Desktop no pudo iniciar el cliente OpenSSH en tu computadora. Instálalo, o pide a tu administrador que lo permita, y luego reinicia Desktop.1821* **No hay programa `ssh`**: Desktop no pudo iniciar el cliente OpenSSH en tu computadora. Instálalo, o pide a tu administrador que lo permita, y luego reinicia Desktop.

1765 1822 

1766Una entrada que no puedes seleccionar aparece en gris. Pasa el cursor sobre ella para ver el motivo:1823Una entrada que no puedes seleccionar aparece en gris. Pasa el cursor sobre ella para ver el motivo:

1767 1824 

1768* **Un error en la entrada**: corrige el campo o el comando que indica el mensaje. Si el `id` está en uso, dale otro a la entrada.1825* **Un error en la entrada**: corrige el campo o el comando que nombra el mensaje. Si el `id` está en uso, dale otro a la entrada. En Windows, el comando tiene que [empezar con la ruta completa del programa](#write-the-command-on-windows).

1769* **Un archivo de configuración dañado**: mientras tu propio archivo de configuración esté dañado, las entradas de tu administrador pueden aparecer en gris, con un mensaje que indica el archivo. [Corrige el archivo](https://code.claude.com/docs/es/settings.md#fix-a-broken-settings-file).1826* **Un archivo de configuración dañado**: mientras tu propio archivo de configuración esté dañado, las entradas de tu administrador pueden aparecer en gris, con un mensaje que indica el archivo. [Corrige el archivo](https://code.claude.com/docs/es/settings.md#fix-a-broken-settings-file).

1770* **Un host nuevo**: [**Create another**](#create-another-machine) aparece en gris durante un minuto después de que Desktop guarda un host. Selecciónalo pasado ese minuto. Antes de Claude Desktop v4.4212.0, **Replace Dev box's host** aparece en gris durante 10 minutos.1827* **Un host nuevo**: [**Create another**](#create-another-machine) aparece en gris durante un minuto después de que Desktop guarda un host. Selecciónalo pasado ese minuto. Antes de Claude Desktop v4.4212.0, **Replace Dev box's host** aparece en gris durante 10 minutos.

1771* **Los hooks están desactivados o restringidos**: tus propias entradas solo funcionan donde pueden ejecutarse tus propios hooks. Elimina `disableAllHooks` de tu configuración, o consulta a tu administrador.1828* **Los hooks están desactivados o restringidos**: tus propias entradas solo funcionan donde pueden ejecutarse tus propios hooks. Elimina `disableAllHooks` de tu configuración, o consulta a tu administrador.


1940| `disableMobileSimulatorTools` | establécelo en `true` para bloquear las herramientas de Claude para controlar y capturar dispositivos en el [panel del simulador de iOS](https://code.claude.com/docs/es/desktop-ios-simulator.md#turn-off-simulator-access). El panel permanece utilizable para los toques del usuario; solo se elimina el acceso de Claude. El valor debe ser el booleano JSON `true`; la cadena `"true"` se ignora. |1997| `disableMobileSimulatorTools` | establécelo en `true` para bloquear las herramientas de Claude para controlar y capturar dispositivos en el [panel del simulador de iOS](https://code.claude.com/docs/es/desktop-ios-simulator.md#turn-off-simulator-access). El panel permanece utilizable para los toques del usuario; solo se elimina el acceso de Claude. El valor debe ser el booleano JSON `true`; la cadena `"true"` se ignora. |

1941| `disableBrowserExternalNavigation` | establécelo en `true` para desactivar completamente la navegación externa en el [panel del navegador](#browse-external-sites). Ni los usuarios ni Claude pueden navegar a sitios externos, y las vistas previas del servidor de desarrollo localhost no se ven afectadas. El valor debe ser el booleano JSON `true`; la cadena `"true"` se ignora. |1998| `disableBrowserExternalNavigation` | establécelo en `true` para desactivar completamente la navegación externa en el [panel del navegador](#browse-external-sites). Ni los usuarios ni Claude pueden navegar a sitios externos, y las vistas previas del servidor de desarrollo localhost no se ven afectadas. El valor debe ser el booleano JSON `true`; la cadena `"true"` se ignora. |

1942| `sshConfigs` | preconfigura [conexiones SSH](#pre-configure-ssh-connections-for-your-team) que aparecen en el selector de entorno. Los usuarios no pueden eliminar conexiones administradas ni editar nada excepto su propia **Worktree folder**. |1999| `sshConfigs` | preconfigura [conexiones SSH](#pre-configure-ssh-connections-for-your-team) que aparecen en el selector de entorno. Los usuarios no pueden eliminar conexiones administradas ni editar nada excepto su propia **Worktree folder**. |

1943| `sshHostCommands` | ofrece a los usuarios [conexiones SSH cuyo host proviene de un comando](#distribute-commands-to-your-team), junto con las suyas propias. Desktop lo lee desde el archivo de configuración administrada o la política MDM en la computadora, y lo ignora en la [configuración administrada por servidor](https://code.claude.com/docs/es/server-managed-settings.md). Requiere Claude Desktop v3.6556.0 o posterior en macOS o Linux, con la sesión iniciada con una cuenta de Claude. |2000| `sshHostCommands` | ofrece a los usuarios [conexiones SSH cuyo host proviene de un comando](#distribute-commands-to-your-team), junto con las suyas propias. Desktop lo lee desde el archivo de configuración administrada o la política MDM en la computadora, y lo ignora en la [configuración administrada por servidor](https://code.claude.com/docs/es/server-managed-settings.md). Requiere Claude Desktop v3.6556.0 o posterior en macOS o Linux, o v4.16336.0 o posterior en Windows, con la sesión iniciada con una cuenta de Claude. En Windows, Desktop también debe [conectarse a través del cliente OpenSSH](#use-your-ssh-configuration). |

1944| `sshHostAllowlist` | restringe las [sesiones SSH](#restrict-which-ssh-hosts-users-can-connect-to) a hosts cuyo nombre de host resuelto coincida con uno de estos patrones. Se lee solo desde la configuración administrada. |2001| `sshHostAllowlist` | restringe las [sesiones SSH](#restrict-which-ssh-hosts-users-can-connect-to) a hosts cuyo nombre de host resuelto coincida con uno de estos patrones. Se lee solo desde la configuración administrada. |

1945| `disableDesktopLocalSessions` | establécelo en `true` para desactivar las [sesiones de Code que se ejecutan en el dispositivo](#local-sessions-on-managed-devices), dejando disponibles las sesiones SSH a otros hosts y las sesiones en la nube. El valor debe ser el booleano JSON `true`. Se lee solo desde la configuración administrada. Requiere Claude Desktop v1.37937.0 o posterior. |2002| `disableDesktopLocalSessions` | establécelo en `true` para desactivar las [sesiones de Code que se ejecutan en el dispositivo](#local-sessions-on-managed-devices), dejando disponibles las sesiones SSH a otros hosts y las sesiones en la nube. El valor debe ser el booleano JSON `true`. Se lee solo desde la configuración administrada. Requiere Claude Desktop v1.37937.0 o posterior. |

1946| `disableSshSavedPasswords` | establécelo en `true` para que Desktop deje de ofrecer recordar las contraseñas SSH y deje de usar o mostrar las que guardó anteriormente. Activarlo no las elimina. Se lee solo desde la configuración administrada. Requiere Claude Desktop v1.49585.0 o posterior. |2003| `disableSshSavedPasswords` | establécelo en `true` para que Desktop deje de ofrecer recordar las contraseñas SSH y deje de usar o mostrar las que guardó anteriormente. Activarlo no las elimina. Se lee solo desde la configuración administrada. Requiere Claude Desktop v1.49585.0 o posterior. |

env-vars.md +3 −2

Details

139| `ANTHROPIC_BEDROCK_BASE_URL` | Sobrescribe la URL del endpoint de Amazon Bedrock. Úsala para endpoints personalizados de Amazon Bedrock o al enrutar a través de un [gateway de LLM](https://code.claude.com/docs/es/llm-gateway). Consulta [Amazon Bedrock](https://code.claude.com/docs/es/amazon-bedrock.md) |139| `ANTHROPIC_BEDROCK_BASE_URL` | Sobrescribe la URL del endpoint de Amazon Bedrock. Úsala para endpoints personalizados de Amazon Bedrock o al enrutar a través de un [gateway de LLM](https://code.claude.com/docs/es/llm-gateway). Consulta [Amazon Bedrock](https://code.claude.com/docs/es/amazon-bedrock.md) |

140| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Sobrescribe la URL del endpoint de Amazon Bedrock Mantle. Consulta [Endpoint de Mantle](https://code.claude.com/docs/es/amazon-bedrock.md#use-the-mantle-endpoint) |140| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Sobrescribe la URL del endpoint de Amazon Bedrock Mantle. Consulta [Endpoint de Mantle](https://code.claude.com/docs/es/amazon-bedrock.md#use-the-mantle-endpoint) |

141| `ANTHROPIC_BEDROCK_REGION_PREFIX` | Prefijo del perfil de inferencia entre regiones (`us`, `eu`, `apac`, `jp`, `au` o `global`) que Claude Code prueba primero en lugar del derivado de la región de AWS. Se ignora en las regiones de AWS GovCloud. Requiere Claude Code v2.1.224 o posterior. Consulta [Amazon Bedrock](https://code.claude.com/docs/es/amazon-bedrock.md#cross-region-inference-profile-prefixes) |141| `ANTHROPIC_BEDROCK_REGION_PREFIX` | Prefijo del perfil de inferencia entre regiones (`us`, `eu`, `apac`, `jp`, `au` o `global`) que Claude Code prueba primero en lugar del derivado de la región de AWS. Se ignora en las regiones de AWS GovCloud. Requiere Claude Code v2.1.224 o posterior. Consulta [Amazon Bedrock](https://code.claude.com/docs/es/amazon-bedrock.md#cross-region-inference-profile-prefixes) |

142| `ANTHROPIC_BEDROCK_SERVICE_TIER` | [Nivel de servicio](https://docs.aws.amazon.com/bedrock/latest/userguide/service-tiers-inference.html) de Amazon Bedrock (`default`, `flex` o `priority`). Se envía como el encabezado `X-Amzn-Bedrock-Service-Tier`. Consulta [Amazon Bedrock](https://code.claude.com/docs/es/amazon-bedrock.md#service-tiers) |142| `ANTHROPIC_BEDROCK_SERVICE_TIER` | [Nivel de servicio](https://docs.aws.amazon.com/bedrock/latest/userguide/service-tiers-inference.html) de Amazon Bedrock (`default`, `flex` o `priority`). Consulta [Amazon Bedrock](https://code.claude.com/docs/es/amazon-bedrock.md#service-tiers) |

143| `ANTHROPIC_BETAS` | Lista separada por comas de valores adicionales del encabezado `anthropic-beta` para incluir en las solicitudes a la API. Claude Code ya envía los encabezados beta que necesita; usa esta variable para optar por una [beta de la API de Anthropic](https://platform.claude.com/docs/en/api/beta-headers) antes de que Claude Code agregue compatibilidad nativa. A diferencia del [flag `--betas`](https://code.claude.com/docs/es/cli-reference#cli-flags), que requiere autenticación con clave de API, esta variable funciona con todos los métodos de autenticación, incluida la suscripción de Claude.ai |143| `ANTHROPIC_BETAS` | Lista separada por comas de valores adicionales del encabezado `anthropic-beta` para incluir en las solicitudes a la API. Claude Code ya envía los encabezados beta que necesita; usa esta variable para optar por una [beta de la API de Anthropic](https://platform.claude.com/docs/en/api/beta-headers) antes de que Claude Code agregue compatibilidad nativa. A diferencia del [flag `--betas`](https://code.claude.com/docs/es/cli-reference#cli-flags), que requiere autenticación con clave de API, esta variable funciona con todos los métodos de autenticación, incluida la suscripción de Claude.ai |

144| `ANTHROPIC_CUSTOM_HEADERS` | Encabezados personalizados para agregar a las solicitudes (formato `Name: Value`, separados por saltos de línea para varios encabezados). Si un nombre o valor contiene un carácter que un encabezado HTTP no puede transportar, como una comilla tipográfica o un espacio de ancho cero, la solicitud falla con un error que identifica el par por su posición. Requiere Claude Code v2.1.227 o posterior. [Invalid request header value](https://code.claude.com/docs/es/errors.md#invalid-request-header-value) enumera el conjunto exacto de caracteres y dónde se ejecuta la comprobación. Un valor que establece un encabezado de credenciales, organización o tenant, enrutamiento o comportamiento de la API, como `Authorization` o `Host`, cuenta como un [ajuste que necesita aprobación](https://code.claude.com/docs/es/server-managed-settings.md#environment-variables-and-the-approval-dialog) cuando lo entrega la configuración administrada por el servidor. Desde la configuración de proyecto o local, dicho valor sigue las [reglas sobre cuándo se aplican los valores de `env`](https://code.claude.com/docs/es/settings-reference#when-claude-code-applies-env-values) |144| `ANTHROPIC_CUSTOM_HEADERS` | Encabezados personalizados para agregar a las solicitudes (formato `Name: Value`, separados por saltos de línea para varios encabezados). Si un nombre o valor contiene un carácter que un encabezado HTTP no puede transportar, como una comilla tipográfica o un espacio de ancho cero, la solicitud falla con un error que identifica el par por su posición. Requiere Claude Code v2.1.227 o posterior. [Invalid request header value](https://code.claude.com/docs/es/errors.md#invalid-request-header-value) enumera el conjunto exacto de caracteres y dónde se ejecuta la comprobación. Un valor que establece un encabezado de credenciales, organización o tenant, enrutamiento o comportamiento de la API, como `Authorization` o `Host`, cuenta como un [ajuste que necesita aprobación](https://code.claude.com/docs/es/server-managed-settings.md#environment-variables-and-the-approval-dialog) cuando lo entrega la configuración administrada por el servidor. Desde la configuración de proyecto o local, dicho valor sigue las [reglas sobre cuándo se aplican los valores de `env`](https://code.claude.com/docs/es/settings-reference#when-claude-code-applies-env-values) |

145| `ANTHROPIC_CUSTOM_MODEL_OPTION` | ID de modelo para agregar como entrada personalizada en el selector de `/model`. Úsala para que un modelo no estándar o específico de un gateway sea seleccionable sin reemplazar los alias integrados. Consulta [Configuración del modelo](https://code.claude.com/docs/es/model-config.md#add-a-custom-model-option) |145| `ANTHROPIC_CUSTOM_MODEL_OPTION` | ID de modelo para agregar como entrada personalizada en el selector de `/model`. Úsala para que un modelo no estándar o específico de un gateway sea seleccionable sin reemplazar los alias integrados. Consulta [Configuración del modelo](https://code.claude.com/docs/es/model-config.md#add-a-custom-model-option) |


238| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` | Establécela en `1` para omitir la comprobación de que una respuesta en streaming de [Amazon Bedrock](https://code.claude.com/docs/es/amazon-bedrock.md) lleva el content-type `application/vnd.amazon.eventstream`. Sin esta variable, cuando una respuesta lleva un content-type distinto, Claude Code hace fallar la solicitud con un error que nombra ese tipo, lo que significa que un [gateway o proxy está transformando la respuesta](https://code.claude.com/docs/es/amazon-bedrock.md#streaming-errors-behind-a-gateway-or-proxy). Configura el gateway para que reenvíe el encabezado `Content-Type` y el cuerpo sin modificar en lugar de establecer esta variable. Requiere Claude Code v2.1.208 o posterior |238| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` | Establécela en `1` para omitir la comprobación de que una respuesta en streaming de [Amazon Bedrock](https://code.claude.com/docs/es/amazon-bedrock.md) lleva el content-type `application/vnd.amazon.eventstream`. Sin esta variable, cuando una respuesta lleva un content-type distinto, Claude Code hace fallar la solicitud con un error que nombra ese tipo, lo que significa que un [gateway o proxy está transformando la respuesta](https://code.claude.com/docs/es/amazon-bedrock.md#streaming-errors-behind-a-gateway-or-proxy). Configura el gateway para que reenvíe el encabezado `Content-Type` y el cuerpo sin modificar en lugar de establecer esta variable. Requiere Claude Code v2.1.208 o posterior |

239| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | Establécela en `1` para detener el trabajo en curso de una [sesión en segundo plano](https://code.claude.com/docs/es/agent-view.md) cuando el [supervisor](https://code.claude.com/docs/es/agent-view.md#the-supervisor-process) detiene, reinicia o actualiza el proceso de esa sesión, en lugar de traspasarlo al siguiente proceso de la sesión. Ese trabajo son los comandos de shell en segundo plano en ejecución de la sesión, además de los subagentes en segundo plano a partir de v2.1.198. Solo afecta a ese traspaso: pasar una sesión a segundo plano con `←` o [`/background`](https://code.claude.com/docs/es/agent-view#from-inside-a-session) sigue trasladando el trabajo en segundo plano en curso. Requiere Claude Code v2.1.196 o posterior |239| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | Establécela en `1` para detener el trabajo en curso de una [sesión en segundo plano](https://code.claude.com/docs/es/agent-view.md) cuando el [supervisor](https://code.claude.com/docs/es/agent-view.md#the-supervisor-process) detiene, reinicia o actualiza el proceso de esa sesión, en lugar de traspasarlo al siguiente proceso de la sesión. Ese trabajo son los comandos de shell en segundo plano en ejecución de la sesión, además de los subagentes en segundo plano a partir de v2.1.198. Solo afecta a ese traspaso: pasar una sesión a segundo plano con `←` o [`/background`](https://code.claude.com/docs/es/agent-view#from-inside-a-session) sigue trasladando el trabajo en segundo plano en curso. Requiere Claude Code v2.1.196 o posterior |

240| `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | Establécela en `1` para evitar que Claude Code termine los [comandos de shell en segundo plano](https://code.claude.com/docs/es/interactive-mode.md#background-bash-commands) bajo presión de memoria. De forma predeterminada, en macOS y Linux, Claude Code termina los shells en segundo plano cuando el sistema operativo informa una presión de memoria crítica y la sesión ha estado inactiva durante 30 minutos sin ningún turno ni subagente en ejecución. Windows no tiene señal de presión de memoria, por lo que esta variable no tiene efecto allí. Requiere Claude Code v2.1.193 o posterior |240| `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | Establécela en `1` para evitar que Claude Code termine los [comandos de shell en segundo plano](https://code.claude.com/docs/es/interactive-mode.md#background-bash-commands) bajo presión de memoria. De forma predeterminada, en macOS y Linux, Claude Code termina los shells en segundo plano cuando el sistema operativo informa una presión de memoria crítica y la sesión ha estado inactiva durante 30 minutos sin ningún turno ni subagente en ejecución. Windows no tiene señal de presión de memoria, por lo que esta variable no tiene efecto allí. Requiere Claude Code v2.1.193 o posterior |

241| `CLAUDE_CODE_DISABLE_BG_STABLE_PATH` | En macOS con el instalador nativo, establécela en `1` para ejecutar el proceso host de cada [sesión en segundo plano](https://code.claude.com/docs/es/agent-view.md) desde el binario instalado, no desde `~/.local/share/claude/ClaudeCode.app`. Es posible que macOS vuelva a pedir permisos como el [acceso a carpetas](https://code.claude.com/docs/es/agent-view.md#background-sessions-can’t-read-desktop-documents-or-downloads-on-macos), incluso después de cada actualización. Establécela en el [bloque `env`](#in-settings-files) de la configuración de usuario, un archivo de configuración administrada o una política de MDM, no en tu shell. Para eliminar `ClaudeCode.app`, bórralo tú mismo. Requiere Claude Code v2.1.295 o posterior |

241| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Establécela en `1` para desactivar los [skills](https://code.claude.com/docs/es/skills.md) y flujos de trabajo incluidos con Claude Code: los skills y flujos de trabajo incluidos se eliminan por completo, mientras que los comandos integrados como `/init` se pueden seguir escribiendo pero se ocultan al modelo. `/doctor` se puede seguir escribiendo como los comandos integrados; ocúltalo con `DISABLE_DOCTOR_COMMAND` en su lugar. Los skills de plugins, `.claude/skills/` y `.claude/commands/` no se ven afectados. Equivale al ajuste [`disableBundledSkills`](https://code.claude.com/docs/es/settings-reference#disablebundledskills) |242| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Establécela en `1` para desactivar los [skills](https://code.claude.com/docs/es/skills.md) y flujos de trabajo incluidos con Claude Code: los skills y flujos de trabajo incluidos se eliminan por completo, mientras que los comandos integrados como `/init` se pueden seguir escribiendo pero se ocultan al modelo. `/doctor` se puede seguir escribiendo como los comandos integrados; ocúltalo con `DISABLE_DOCTOR_COMMAND` en su lugar. Los skills de plugins, `.claude/skills/` y `.claude/commands/` no se ven afectados. Equivale al ajuste [`disableBundledSkills`](https://code.claude.com/docs/es/settings-reference#disablebundledskills) |

242| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | Para hosts que integran Claude Code y proporcionan su propia guía para el navegador. Establécela en `1` para mantener disponibles las herramientas de navegador de [Claude in Chrome](https://code.claude.com/docs/es/chrome.md) y omitir la sección de Chrome del prompt del sistema y el [skill incluido](https://code.claude.com/docs/es/skills.md#bundled-skills) `/claude-in-chrome`. En VS Code, la extensión en v2.1.314 o posterior también omite las instrucciones de Claude in Chrome de los mensajes de una sesión. Requiere Claude Code v2.1.257 o posterior |243| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | Para hosts que integran Claude Code y proporcionan su propia guía para el navegador. Establécela en `1` para mantener disponibles las herramientas de navegador de [Claude in Chrome](https://code.claude.com/docs/es/chrome.md) y omitir la sección de Chrome del prompt del sistema y el [skill incluido](https://code.claude.com/docs/es/skills.md#bundled-skills) `/claude-in-chrome`. En VS Code, la extensión en v2.1.314 o posterior también omite las instrucciones de Claude in Chrome de los mensajes de una sesión. Requiere Claude Code v2.1.257 o posterior |

243| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Establécela en `1` para evitar cargar cualquier archivo de memoria CLAUDE.md en el contexto, incluidos los archivos de memoria de usuario, de proyecto y de memoria automática |244| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Establécela en `1` para evitar cargar cualquier archivo de memoria CLAUDE.md en el contexto, incluidos los archivos de memoria de usuario, de proyecto y de memoria automática |


312| `CLAUDE_CODE_GZIP_REQUEST_BODIES` | Establécela en `0` para desactivar la compresión gzip de los cuerpos de las solicitudes a la API de Claude, de telemetría y de publicación de [artefactos](https://code.claude.com/docs/es/artifacts.md) enviadas a `api.anthropic.com`. De forma predeterminada, Claude Code comprime los cuerpos de solicitud grandes en conexiones directas y omite la compresión cuando envías solicitudes a través de un proxy, configuras un certificado de cliente o estableces `NODE_EXTRA_CA_CERTS`. Usa `0` si un [proxy de inspección TLS](https://code.claude.com/docs/es/network-config.md#ca-certificate-store) que Claude Code no puede detectar maneja mal las solicitudes comprimidas |313| `CLAUDE_CODE_GZIP_REQUEST_BODIES` | Establécela en `0` para desactivar la compresión gzip de los cuerpos de las solicitudes a la API de Claude, de telemetría y de publicación de [artefactos](https://code.claude.com/docs/es/artifacts.md) enviadas a `api.anthropic.com`. De forma predeterminada, Claude Code comprime los cuerpos de solicitud grandes en conexiones directas y omite la compresión cuando envías solicitudes a través de un proxy, configuras un certificado de cliente o estableces `NODE_EXTRA_CA_CERTS`. Usa `0` si un [proxy de inspección TLS](https://code.claude.com/docs/es/network-config.md#ca-certificate-store) que Claude Code no puede detectar maneja mal las solicitudes comprimidas |

313| `CLAUDE_CODE_HIDE_CWD` | Establécela en `1` para ocultar el directorio de trabajo en el logotipo de inicio. Útil para compartir pantalla o grabaciones en las que la ruta expone tu nombre de usuario del sistema operativo |314| `CLAUDE_CODE_HIDE_CWD` | Establécela en `1` para ocultar el directorio de trabajo en el logotipo de inicio. Útil para compartir pantalla o grabaciones en las que la ruta expone tu nombre de usuario del sistema operativo |

314| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Sobrescribe la dirección del host que se usa para conectarse a la extensión del IDE. De forma predeterminada, Claude Code detecta automáticamente la dirección correcta, incluido el enrutamiento de WSL a Windows |315| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Sobrescribe la dirección del host que se usa para conectarse a la extensión del IDE. De forma predeterminada, Claude Code detecta automáticamente la dirección correcta, incluido el enrutamiento de WSL a Windows |

315| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Establécela en `1` para omitir la instalación automática de las extensiones del IDE. Equivale a establecer [`autoInstallIdeExtension`](https://code.claude.com/docs/es/settings-reference#autoinstallideextension) en `false` |316| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Establécela en `1` para impedir que `/ide` instale la extensión del IDE. Equivale a establecer [`autoInstallIdeExtension`](https://code.claude.com/docs/es/settings-reference#autoinstallideextension) en `false` |

316| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Establécela en `1` para omitir la validación de las entradas del archivo de bloqueo del IDE durante la conexión. Úsala cuando la conexión automática no encuentre tu IDE aunque esté en ejecución |317| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Establécela en `1` para omitir la validación de las entradas del archivo de bloqueo del IDE durante la conexión. Úsala cuando la conexión automática no encuentre tu IDE aunque esté en ejecución |

317| `CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS` | Tamaño del contexto, en tokens, a partir del cual la [compactación por inactividad](https://code.claude.com/docs/es/settings-reference.md#idlecompaction) se aplica a una conversación (valor predeterminado: `200000`). Acepta un número entero positivo, y cualquier otro valor se ignora. Los valores inferiores a `100000` se elevan a `100000`, el umbral más bajo. La compactación por inactividad está activada de forma predeterminada para las conversaciones que cumplen sus condiciones. Para desactivarla, establece `idleCompaction` en `false`. Requiere Claude Code v2.1.290 o posterior |318| `CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS` | Tamaño del contexto, en tokens, a partir del cual la [compactación por inactividad](https://code.claude.com/docs/es/settings-reference.md#idlecompaction) se aplica a una conversación (valor predeterminado: `200000`). Acepta un número entero positivo, y cualquier otro valor se ignora. Los valores inferiores a `100000` se elevan a `100000`, el umbral más bajo. La compactación por inactividad está activada de forma predeterminada para las conversaciones que cumplen sus condiciones. Para desactivarla, establece `idleCompaction` en `false`. Requiere Claude Code v2.1.290 o posterior |

318| `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` | Cuántos [subagentes](https://code.claude.com/docs/es/sub-agents.md#concurrent-subagent-limit) pueden estar en ejecución en una sesión antes de que la herramienta Agent se niegue a generar otro (predeterminado: 20). Acepta un número entero positivo con dígitos simples; cualquier otro valor se ignora, por lo que la variable puede ajustar el límite pero no desactivarlo. Requiere Claude Code v2.1.217 o posterior |319| `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` | Cuántos [subagentes](https://code.claude.com/docs/es/sub-agents.md#concurrent-subagent-limit) pueden estar en ejecución en una sesión antes de que la herramienta Agent se niegue a generar otro (predeterminado: 20). Acepta un número entero positivo con dígitos simples; cualquier otro valor se ignora, por lo que la variable puede ajustar el límite pero no desactivarlo. Requiere Claude Code v2.1.217 o posterior |

errors.md +144 −4

Details

55| `spend limit reached` / `spend limit unavailable` | [Límites de uso](#spend-limit-reached) |55| `spend limit reached` / `spend limit unavailable` | [Límites de uso](#spend-limit-reached) |

56| `Not logged in · Please run /login` | [Autenticación](#not-logged-in) |56| `Not logged in · Please run /login` | [Autenticación](#not-logged-in) |

57| `Couldn't save your login` | [Autenticación](#couldnt-save-your-login) |57| `Couldn't save your login` | [Autenticación](#couldnt-save-your-login) |

58| `Sign in again to take your previous account or API key off the config file.` | [Autenticación](#sign-in-again-to-take-your-previous-account-or-api-key-off-the-config-file) |

59| `Your account or API key may still be in the config file. Run claude auth logout.` | [Autenticación](#your-account-or-api-key-may-still-be-in-the-config-file) |

58| `Authentication required · Sign in again to continue` | [Autenticación](#not-logged-in) |60| `Authentication required · Sign in again to continue` | [Autenticación](#not-logged-in) |

59| `Could not resolve authentication method` | [Autenticación](#could-not-resolve-authentication-method) |61| `Could not resolve authentication method` | [Autenticación](#could-not-resolve-authentication-method) |

60| `Invalid API key` | [Autenticación](#invalid-api-key) |62| `Invalid API key` | [Autenticación](#invalid-api-key) |


82| `Couldn't verify your organization's policy for remote control` | [Solucionar problemas de Remote Control](https://code.claude.com/docs/es/remote-control.md#couldnt-verify-your-organizations-policy-for-remote-control) |84| `Couldn't verify your organization's policy for remote control` | [Solucionar problemas de Remote Control](https://code.claude.com/docs/es/remote-control.md#couldnt-verify-your-organizations-policy-for-remote-control) |

83| `Remote Control is disabled by your organization's policy` | [Solucionar problemas de Remote Control](https://code.claude.com/docs/es/remote-control.md#remote-control-is-disabled-by-your-organizations-policy) |85| `Remote Control is disabled by your organization's policy` | [Solucionar problemas de Remote Control](https://code.claude.com/docs/es/remote-control.md#remote-control-is-disabled-by-your-organizations-policy) |

84| `Remote Control was turned off by your organization's policy` | [Solucionar problemas de Remote Control](https://code.claude.com/docs/es/remote-control.md#remote-control-was-turned-off-by-your-organizations-policy) |86| `Remote Control was turned off by your organization's policy` | [Solucionar problemas de Remote Control](https://code.claude.com/docs/es/remote-control.md#remote-control-was-turned-off-by-your-organizations-policy) |

87| `Session failed: working folder not found:` | [Solución de problemas de Remote Control](https://code.claude.com/docs/es/remote-control.md#working-folder-not-found) |

88| `The program file this Remote Control started from is gone` | [Solución de problemas de Remote Control](https://code.claude.com/docs/es/remote-control.md#program-file-is-gone) |

89| `Session failed: spawn error:` seguido de un mensaje `ENOENT` | [Solución de problemas de Remote Control](https://code.claude.com/docs/es/remote-control.md#program-file-is-gone) |

85| `OAuth token revoked` / `OAuth token has expired` | [Autenticación](#oauth-token-revoked-or-expired) |90| `OAuth token revoked` / `OAuth token has expired` | [Autenticación](#oauth-token-revoked-or-expired) |

86| `Failed to authenticate: OAuth token revoked` | [Autenticación](#oauth-token-revoked-or-expired) |91| `Failed to authenticate: OAuth token revoked` | [Autenticación](#oauth-token-revoked-or-expired) |

87| `Your account does not have access to Claude. Please login again or contact your administrator.` | [Autenticación](#oauth-token-revoked-or-expired) |92| `Your account does not have access to Claude. Please login again or contact your administrator.` | [Autenticación](#oauth-token-revoked-or-expired) |


165| `Request too large for the API's 32MB request limit` | [Errores de solicitud](#request-too-large) |170| `Request too large for the API's 32MB request limit` | [Errores de solicitud](#request-too-large) |

166| `Image was too large` | [Errores de solicitud](#image-was-too-large) |171| `Image was too large` | [Errores de solicitud](#image-was-too-large) |

167| `API Error: an image in the conversation could not be processed and was removed` | [Errores de solicitud](#image-was-too-large) |172| `API Error: an image in the conversation could not be processed and was removed` | [Errores de solicitud](#image-was-too-large) |

173| `An image in the conversation exceeds the dimension limit for many-image requests` | [Errores de solicitud](#image-was-too-large) |

168| `Unable to resize image` | [Errores de solicitud](#unable-to-resize-image) |174| `Unable to resize image` | [Errores de solicitud](#unable-to-resize-image) |

169| `Request rejected as unprocessable by the model` | [Errores de solicitud](#request-rejected-as-unprocessable-by-the-model) |175| `Request rejected as unprocessable by the model` | [Errores de solicitud](#request-rejected-as-unprocessable-by-the-model) |

170| `PDF too large` / `PDF is password protected` / `pdftoppm is not installed` | [Errores de solicitud](#pdf-errors) |176| `PDF too large` / `PDF is password protected` / `pdftoppm is not installed` | [Errores de solicitud](#pdf-errors) |


229| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [Errores de línea de comandos](#invalid-agents-configuration) |235| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [Errores de línea de comandos](#invalid-agents-configuration) |

230| `Error: --agents file not found` | [Errores de línea de comandos](#invalid-agents-configuration) |236| `Error: --agents file not found` | [Errores de línea de comandos](#invalid-agents-configuration) |

231| `Error: Settings file exceeds the 2MiB limit` | [Errores de línea de comandos](#settings-file-exceeds-the-2mib-limit) |237| `Error: Settings file exceeds the 2MiB limit` | [Errores de línea de comandos](#settings-file-exceeds-the-2mib-limit) |

238| `Configuration error in` | [Errores de línea de comandos](#configuration-error-in-claude-json) |

239| `Claude configuration file at <path> was empty and no backup holds anything: starting with defaults.` | [Errores de línea de comandos](#claude-configuration-file-was-empty) |

232| `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) |240| `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) |

233| `Temp directory <dir> ... Refusing to use it` / `Claude Code's temporary directory <dir> could not be created` | [Errores de línea de comandos](#temp-directory-refused-or-cannot-be-created) |241| `Temp directory <dir> ... Refusing to use it` / `Claude Code's temporary directory <dir> could not be created` | [Errores de línea de comandos](#temp-directory-refused-or-cannot-be-created) |

234| `ENOSPC: no space left on device, mkdir '<dir>'` | [Errores de línea de comandos](#temp-directory-refused-or-cannot-be-created) |242| `ENOSPC: no space left on device, mkdir '<dir>'` | [Errores de línea de comandos](#temp-directory-refused-or-cannot-be-created) |


252| `Error: MCP tool <name> (passed via --permission-prompt-tool) not found` | [Errores de línea de comandos](#mcp-permission-prompt-tool-not-found) |260| `Error: MCP tool <name> (passed via --permission-prompt-tool) not found` | [Errores de línea de comandos](#mcp-permission-prompt-tool-not-found) |

253| `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) |261| `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) |

254| `No available ports for OAuth redirect` | [Errores de línea de comandos](#no-available-ports-for-oauth-redirect) |262| `No available ports for OAuth redirect` | [Errores de línea de comandos](#no-available-ports-for-oauth-redirect) |

255| `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) |263| `Shell command failed for pattern "..."`, desde `/security-review` o cualquier skill que inyecte contexto dinámico | [Errores de línea de comandos](#security-review-fails-without-origin-head) |

256| `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) |264| `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) |

257| ``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) |265| ``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) |

258| `No shell command in <name> was run, because the <tool> tool does not accept one of them` | [Errores de línea de comandos](#no-shell-command-was-run) |266| `No shell command in <name> was run, because the <tool> tool does not accept one of them` | [Errores de línea de comandos](#no-shell-command-was-run) |


334| `cannot contain null bytes (\0)` | [Errores de herramientas](#path-cannot-contain-null-bytes) |342| `cannot contain null bytes (\0)` | [Errores de herramientas](#path-cannot-contain-null-bytes) |

335| `Path contains null bytes` | [Errores de herramientas](#path-cannot-contain-null-bytes) |343| `Path contains null bytes` | [Errores de herramientas](#path-cannot-contain-null-bytes) |

336| `command contains the invisible character U+FEFF (byte order mark) or U+180E (Mongolian vowel separator), and was not run` | [Errores de herramientas](#command-contains-an-invisible-character) |344| `command contains the invisible character U+FEFF (byte order mark) or U+180E (Mongolian vowel separator), and was not run` | [Errores de herramientas](#command-contains-an-invisible-character) |

345| `This call was not run. The command was approved before Claude Code restarted` | [Errores de herramientas](#command-approved-before-a-restart-was-not-run) |

337| `File is too large to read as an image (the limit is 128MB)` | [Errores de herramientas](#file-is-too-large-to-read-as-an-image) |346| `File is too large to read as an image (the limit is 128MB)` | [Errores de herramientas](#file-is-too-large-to-read-as-an-image) |

338| `Cannot read this as an image: <path> is a pipe or a device` | [Errores de herramientas](#file-is-too-large-to-read-as-an-image) |347| `Cannot read this as an image: <path> is a pipe or a device` | [Errores de herramientas](#file-is-too-large-to-read-as-an-image) |

339| `subagent_type is required: the general-purpose agent is not available in this session` | [Errores de herramientas](#subagent-type-is-required) |348| `subagent_type is required: the general-purpose agent is not available in this session` | [Errores de herramientas](#subagent-type-is-required) |


420| `Not loaded: rename <path>, then restart — its name uses "<name>", a name reserved for the skills synced from your claude.ai account` | [Advertencias de configuración](#a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved) |429| `Not loaded: rename <path>, then restart — its name uses "<name>", a name reserved for the skills synced from your claude.ai account` | [Advertencias de configuración](#a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved) |

421| `N skill or command names refused: run with --debug to see which ([names]), rename, then restart` | [Advertencias de configuración](#skill-or-command-name-refused) |430| `N skill or command names refused: run with --debug to see which ([names]), rename, then restart` | [Advertencias de configuración](#skill-or-command-name-refused) |

422| `Ignoring N permissions.allow entries from ... this workspace has not been trusted` | [Advertencias de configuración](#workspace-has-not-been-trusted) |431| `Ignoring N permissions.allow entries from ... this workspace has not been trusted` | [Advertencias de configuración](#workspace-has-not-been-trusted) |

432| `Make this change again later: <path> could not be updated, so it applies to this session only` | [Advertencias de configuración](#make-this-change-again-later) |

423| `is a network path, which cannot be added as a working directory` | [Advertencias de configuración](#working-directory-is-a-network-path) |433| `is a network path, which cannot be added as a working directory` | [Advertencias de configuración](#working-directory-is-a-network-path) |

424| `Remote managed settings failed to load (<cause>)` | [Advertencias de configuración](#remote-managed-settings-failed-to-load) |434| `Remote managed settings failed to load (<cause>)` | [Advertencias de configuración](#remote-managed-settings-failed-to-load) |

435| `Your organization requires remote managed settings to load, but they could not be loaded` | [Aplicar inicio fail-closed](https://code.claude.com/docs/es/server-managed-settings.md#enforce-fail-closed-startup) |

436| `Remote managed settings are still loading` | [Advertencias de configuración](#remote-managed-settings-failed-to-load) |

437| `Remote managed settings did not load` | [Advertencias de configuración](#remote-managed-settings-failed-to-load) |

438| `Claude Code couldn't load your organization's settings` / `Claude Code couldn't reach Anthropic to load your organization's settings` / `requires them before a session can start` | [Advertencias de configuración](#couldnt-load-your-organizations-settings) |

439| `Claude Code can't start this session yet` | [Advertencias de configuración](#couldnt-load-your-organizations-settings) |

440| `Your Claude session has expired. Sign in again to continue (claude auth login).` | [Advertencias de configuración](#couldnt-load-your-organizations-settings) |

425| `Managed settings were not approved; exiting without applying them.` | [Advertencias de configuración](#managed-settings-were-not-approved) |441| `Managed settings were not approved; exiting without applying them.` | [Advertencias de configuración](#managed-settings-were-not-approved) |

426| `Your organization's managed settings need your approval, which couldn't be asked for here.` | [Advertencias de configuración](#managed-settings-need-your-approval) |442| `Your organization's managed settings need your approval, which couldn't be asked for here.` | [Advertencias de configuración](#managed-settings-need-your-approval) |

427| `Claude Code can't start: your organization's managed settings block the default model` / `Claude Code can't start: your organization allows only the models listed in "availableModels"` | [Advertencias de configuración](#managed-settings-block-the-default-model) |443| `Claude Code can't start: your organization's managed settings block the default model` / `Claude Code can't start: your organization allows only the models listed in "availableModels"` | [Advertencias de configuración](#managed-settings-block-the-default-model) |


454| `is ignored — managed settings set allowManagedReadPathsOnly` / `is ignored — managed settings set allowManagedDomainsOnly` | [Advertencias de configuración](#sandbox-allow-entries-are-ignored-under-a-managed-lock) |470| `is ignored — managed settings set allowManagedReadPathsOnly` / `is ignored — managed settings set allowManagedDomainsOnly` | [Advertencias de configuración](#sandbox-allow-entries-are-ignored-under-a-managed-lock) |

455| `Sandbox mask files left behind at write-deny paths` | [Advertencias de configuración](#stale-sandbox-mask-files-left-by-a-killed-session) |471| `Sandbox mask files left behind at write-deny paths` | [Advertencias de configuración](#stale-sandbox-mask-files-left-by-a-killed-session) |

456| `Stale sandbox mask files left by a killed session` | [Advertencias de configuración](#stale-sandbox-mask-files-left-by-a-killed-session) |472| `Stale sandbox mask files left by a killed session` | [Advertencias de configuración](#stale-sandbox-mask-files-left-by-a-killed-session) |

473| `Ubuntu's AppArmor restriction on user namespaces stops bubblewrap here` | [Solución de problemas del sandboxing](https://code.claude.com/docs/es/sandboxing.md#apparmor-restriction-stops-bubblewrap) |

474| `bwrap: setting up uid map: Permission denied` / `bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted` | [Solución de problemas del sandboxing](https://code.claude.com/docs/es/sandboxing.md#bwrap-uid-map-permission-denied) |

457| Las respuestas parecen ser de menor calidad que lo habitual | [Calidad de respuesta](#responses-seem-lower-quality-than-usual) |475| Las respuestas parecen ser de menor calidad que lo habitual | [Calidad de respuesta](#responses-seem-lower-quality-than-usual) |

458 476 

459## Reintentos automáticos477## Reintentos automáticos


1031* Ejecuta `/login` para autenticarte con tu suscripción de Claude o tu cuenta de Console1049* Ejecuta `/login` para autenticarte con tu suscripción de Claude o tu cuenta de Console

1032* Si esperabas que una variable de entorno te autenticara, confirma que `ANTHROPIC_API_KEY` está definida y exportada en el shell desde el que iniciaste `claude`1050* Si esperabas que una variable de entorno te autenticara, confirma que `ANTHROPIC_API_KEY` está definida y exportada en el shell desde el que iniciaste `claude`

1033* Para CI o automatización donde el inicio de sesión interactivo no es posible, configura un script [`apiKeyHelper`](https://code.claude.com/docs/es/settings-reference#apikeyhelper) que obtenga una clave al inicio1051* Para CI o automatización donde el inicio de sesión interactivo no es posible, configura un script [`apiKeyHelper`](https://code.claude.com/docs/es/settings-reference#apikeyhelper) que obtenga una clave al inicio

1052* Si los trabajos de `claude -p` terminan con este mensaje cuando alguien vuelve a iniciar sesión en la misma cuenta y organización de claude.ai, actualiza Claude Code donde se ejecuta ese inicio de sesión. Antes de la v2.1.318, Claude Code eliminaba el inicio de sesión almacenado durante ese inicio de sesión, antes de guardar el nuevo.

1034* Consulta [Precedencia de autenticación](https://code.claude.com/docs/es/authentication.md#authentication-precedence) para entender qué credencial usa Claude Code cuando hay varias presentes1053* Consulta [Precedencia de autenticación](https://code.claude.com/docs/es/authentication.md#authentication-precedence) para entender qué credencial usa Claude Code cuando hay varias presentes

1035 1054 

1036Si se te pide iniciar sesión repetidamente, consulta [No has iniciado sesión o el token expiró](https://code.claude.com/docs/es/troubleshoot-install.md#not-logged-in-or-token-expired) para ver las comprobaciones del reloj del sistema y los pasos de recuperación del almacenamiento de credenciales en macOS.1055Si se te pide iniciar sesión repetidamente, consulta [No has iniciado sesión o el token expiró](https://code.claude.com/docs/es/troubleshoot-install.md#not-logged-in-or-token-expired) para ver las comprobaciones del reloj del sistema y los pasos de recuperación del almacenamiento de credenciales en macOS.


1441* En otras plataformas, vuelve a ejecutar `/login`1460* En otras plataformas, vuelve a ejecutar `/login`

1442* Si el inicio de sesión sigue sin guardarse, consulta [No has iniciado sesión o el token expiró](https://code.claude.com/docs/es/troubleshoot-install.md#not-logged-in-or-token-expired) para ver el comando para desbloquear el llavero y otros pasos de recuperación del almacenamiento de credenciales1461* Si el inicio de sesión sigue sin guardarse, consulta [No has iniciado sesión o el token expiró](https://code.claude.com/docs/es/troubleshoot-install.md#not-logged-in-or-token-expired) para ver el comando para desbloquear el llavero y otros pasos de recuperación del almacenamiento de credenciales

1443 1462 

1463### Sign in again to take your previous account or API key off the config file

1464 

1465Esta advertencia después de iniciar sesión significa que cualquier cuenta con la que tuvieras la sesión iniciada antes puede seguir almacenada en [`~/.claude.json`](https://code.claude.com/docs/es/claude-directory#ce-claude-json):

1466 

1467```text theme={null}

1468Sign in again to take your previous account or API key off the config file.

1469```

1470 

1471También puede seguir habiendo una clave de API en `~/.claude.json` si un inicio de sesión de Console creó una en Linux o Windows.

1472 

1473**Qué hacer:**

1474 

1475* Ejecuta `claude auth login` en tu shell para volver a iniciar sesión. Claude Code reintenta entonces el guardado que quita del archivo la cuenta o la clave de API reemplazada.

1476 

1477### Your account or API key may still be in the config file

1478 

1479Ejecutaste `/logout` o `claude auth logout`, y Claude Code cerró la sesión de este proceso, pero no pudo confirmar que [`~/.claude.json`](https://code.claude.com/docs/es/claude-directory#ce-claude-json) ya no contenga tu cuenta. O el guardado no se aplicó, o el archivo no se pudo volver a leer para comprobarlo.

1480 

1481```text theme={null}

1482Your account or API key may still be in the config file. Run claude auth logout.

1483```

1484 

1485También puede seguir habiendo una clave de API en `~/.claude.json` si un inicio de sesión de Console creó una en Linux o Windows.

1486 

1487**Qué hacer:**

1488 

1489* Ejecuta `claude auth logout` en tu shell para volver a intentar el guardado. Cuando el guardado se completa, el comando imprime `Successfully logged out from your Anthropic account.`

1490 

1444### Couldn't start the local listener that receives the browser sign-in1491### Couldn't start the local listener that receives the browser sign-in

1445 1492 

1446Cada uno de estos mensajes de `/login`, `claude auth login` o `claude setup-token` significa que Claude Code no pudo abrir el puerto en `127.0.0.1` donde tu navegador devuelve el resultado del inicio de sesión.1493Cada uno de estos mensajes de `/login`, `claude auth login` o `claude setup-token` significa que Claude Code no pudo abrir el puerto en `127.0.0.1` donde tu navegador devuelve el resultado del inicio de sesión.


2420Image was too large. Double press esc to go back and try again with a smaller image.2467Image was too large. Double press esc to go back and try again with a smaller image.

2421API Error: 400 ... image dimensions exceed max allowed size2468API Error: 400 ... image dimensions exceed max allowed size

2422API Error: an image in the conversation could not be processed and was removed.2469API Error: an image in the conversation could not be processed and was removed.

2470An image in the conversation exceeds the dimension limit for many-image requests (3000px). Run /compact to remove old images from context, or start a new session.

2423```2471```

2424 2472 

2425La línea `could not be processed and was removed` significa que la API rechazó una imagen de la conversación, por ejemplo una que supera los límites de tamaño o dimensiones.2473La línea `could not be processed and was removed` significa que la API rechazó una imagen de la conversación, por ejemplo una que supera los límites de tamaño o dimensiones.


2434 2482 

2435* Cambia el tamaño de la imagen antes de pegarla. La API acepta imágenes de hasta 8000 píxeles en el lado más largo para una sola imagen, o 3000 píxeles cuando hay más de 20 imágenes en el contexto.2483* Cambia el tamaño de la imagen antes de pegarla. La API acepta imágenes de hasta 8000 píxeles en el lado más largo para una sola imagen, o 3000 píxeles cuando hay más de 20 imágenes en el contexto.

2436* Toma una captura de pantalla más ajustada de la región relevante en lugar de la pantalla completa2484* Toma una captura de pantalla más ajustada de la región relevante en lugar de la pantalla completa

2485* Para el mensaje `dimension limit for many-image requests`, ejecuta `/compact` en el prompt de Claude Code si el mensaje lo menciona, o inicia una nueva sesión con menos imágenes

2486 

2487El mensaje `dimension limit for many-image requests` muestra el límite de píxeles indicado en el error de la API.

2437 2488 

2438### No se pudo cambiar el tamaño de la imagen2489### No se pudo cambiar el tamaño de la imagen

2439 2490 


3223 3274 

3224* Apunta `--settings` a un archivo de configuración JSON regular de menos de 2 MiB. Consulta [Configuración](https://code.claude.com/docs/es/settings.md) para ver el formato.3275* Apunta `--settings` a un archivo de configuración JSON regular de menos de 2 MiB. Consulta [Configuración](https://code.claude.com/docs/es/settings.md) para ver el formato.

3225 3276 

3277### Configuration error in \~/.claude.json

3278 

3279Claude Code no pudo analizar `~/.claude.json`, el archivo que contiene los datos de tu cuenta, tus servidores MCP y el estado por proyecto. Tu archivo no se modificó. Un inicio [no interactivo](https://code.claude.com/docs/es/headless.md) como `claude -p` sale con el código 1 cada vez hasta que repares el archivo.

3280 

3281Cuando Claude Code encuentra una [copia de seguridad](https://code.claude.com/docs/es/claude-directory.md#cleaned-up-automatically), la salida la menciona e imprime una línea `cp` que la copia de vuelta:

3282 

3283```text wrap theme={null}

3284Claude configuration file at /home/user/.claude.json is corrupted: <JSON parser's message>

3285The corrupted file has been backed up to: /home/user/.claude/backups/.claude.json.corrupted.1793664000000

3286A backup file exists at: /home/user/.claude/backups/.claude.json.backup.1793660400000

3287You can manually restore it by running: cp -f "/home/user/.claude/backups/.claude.json.backup.1793660400000" "/home/user/.claude.json"

3288 

3289Configuration error in /home/user/.claude.json: <JSON parser's message>

3290```

3291 

3292**Qué hacer:**

3293 

3294* **La salida tiene una línea `cp`**: ejecuta esa línea en tu terminal. En Windows, ejecútala en PowerShell. Reemplaza el archivo dañado con la copia de seguridad, una versión anterior de `~/.claude.json`.

3295* **La salida no tiene una línea `cp`, o el error vuelve después de ejecutarla**: corrige el JSON en `~/.claude.json`, copia encima otro archivo `.claude.json.backup.<timestamp>` de [`~/.claude/backups/`](https://code.claude.com/docs/es/claude-directory#cleaned-up-automatically) si hay uno, o cámbiale el nombre. Sin un archivo en `~/.claude.json`, Claude Code se inicia con la configuración predeterminada y sin nada de lo que contenía el archivo.

3296 

3297Antes de v2.1.318, te quedabas con los valores predeterminados en `~/.claude.json` después de que un inicio no interactivo imprimiera este error, así que el siguiente inicio se ejecutaba sin tu configuración.

3298 

3299### Claude configuration file was empty and no backup holds anything

3300 

3301Este mensaje al iniciar significa que el archivo que menciona estaba en blanco y ninguna de las [copias `.backup`](https://code.claude.com/docs/es/claude-directory#cleaned-up-automatically) del archivo contiene nada. Claude Code se inició con los valores predeterminados para lo que contiene ese archivo. Tus archivos `settings.json` y `.mcp.json` son archivos separados.

3302 

3303```text wrap theme={null}

3304Claude configuration file at /home/user/.claude.json was empty and no backup holds anything: starting with defaults.

3305```

3306 

3307**Qué hacer:**

3308 

3309* Vuelve a configurar lo que tenías en ese archivo. Por ejemplo, agrega tus [servidores MCP](https://code.claude.com/docs/es/mcp.md#mcp-installation-scopes) de alcance `user` y `local` con `claude mcp add` desde tu terminal.

3310* Vuelve a iniciar sesión si Claude Code te lo pide

3311 

3312Antes de v2.1.318, Claude Code informaba un archivo en blanco sin copia de seguridad como [dañado](#configuration-error-in-claude-json).

3313 

3226### El directorio actual ya no existe3314### El directorio actual ya no existe

3227 3315 

3228Iniciaste `claude` desde un directorio que se eliminó o se 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 código 1 antes de iniciar la sesión, tanto en modo interactivo como [no interactivo](https://code.claude.com/docs/es/headless.md). Antes de v2.1.239, Claude Code fallaba mostrando código fuente minificado del bundle y un stack `ENOENT ... uv_cwd` sin procesar en stderr en lugar de este mensaje.3316Iniciaste `claude` desde un directorio que se eliminó o se 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 código 1 antes de iniciar la sesión, tanto en modo interactivo como [no interactivo](https://code.claude.com/docs/es/headless.md). Antes de v2.1.239, Claude Code fallaba mostrando código fuente minificado del bundle y un stack `ENOENT ... uv_cwd` sin procesar en stderr en lugar de este mensaje.


3626 3714 

3627Hay cadenas similares que se activan antes de que el comando llegue a ejecutarse:3715Hay cadenas similares que se activan antes de que el comando llegue a ejecutarse:

3628 3716 

3629* `Shell command permission check failed for pattern "..."`: la verificación de permisos del comando no lo permitió. [Verificaciones de permisos en comandos inyectados](https://code.claude.com/docs/es/skills.md#permission-checks-on-injected-commands) explica qué resultados abortan en cada modo de permisos y cómo aprobar previamente un comando con `allowed-tools`3717* `Shell command permission check failed for pattern "..."`: la verificación de permisos del comando no lo permitió. [Verificaciones de permisos en comandos inyectados](https://code.claude.com/docs/es/skills.md#permission-checks-on-injected-commands) explica qué resultados abortan en cada modo de permisos y cómo preaprobar un comando con `allowed-tools`

3630* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: el frontmatter del skill exige bash en una máquina que no lo tiene. Instala Git for Windows o cambia el frontmatter a `shell: powershell`. Consulta [Cómo se ejecutan los comandos inyectados](https://code.claude.com/docs/es/skills.md#how-injected-commands-run)3718* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: el frontmatter del skill exige bash en una máquina que no lo tiene. Instala Git for Windows o cambia el frontmatter a `shell: powershell`. Consulta [Cómo se ejecutan los comandos inyectados](https://code.claude.com/docs/es/skills.md#how-injected-commands-run)

3631 3719 

3632**Qué hacer:**3720**Qué hacer:**


3780 3868 

3781* **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 anterior3869* **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

3782* **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>`)``3870* **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>`)``

3783* **Pasaste una rama base que no estaba en tu clon**: Claude Code la obtuvo de origin antes de comparar. La sugerencia dice ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; cuando Claude Code no puede determinar si tu clon es superficial, sugiere `git fetch --unshallow origin` en su lugar. Antes de la v2.1.221, la sugerencia proponía `git fetch --unshallow origin` para toda rama base obtenida, y en un clon completo ese comando falla con `fatal: --unshallow on a complete repository does not make sense`.3871* **Pasaste una rama base que no estaba en tu clon**: Claude Code la obtuvo de origin antes de comparar. La sugerencia dice ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; cuando Claude Code no puede determinar si tu clon es superficial (shallow), sugiere `git fetch --unshallow origin` en su lugar. Antes de la v2.1.221, la sugerencia proponía `git fetch --unshallow origin` para cada rama base obtenida, y en un clon completo ese comando falla con `fatal: --unshallow on a complete repository does not make sense`.

3784 3872 

3785**Qué hacer:**3873**Qué hacer:**

3786 3874 


4666* **Para un comando que escribió Claude**: no tienes nada que corregir. El mensaje le indica a Claude cómo reescribir el comando.4754* **Para un comando que escribió Claude**: no tienes nada que corregir. El mensaje le indica a Claude cómo reescribir el comando.

4667* **Para un archivo de skill o de comando**: el mensaje aparece después de `No shell command in <name> was run`. Consulta [dónde encontrar el carácter y eliminarlo](#no-shell-command-was-run).4755* **Para un archivo de skill o de comando**: el mensaje aparece después de `No shell command in <name> was run`. Consulta [dónde encontrar el carácter y eliminarlo](#no-shell-command-was-run).

4668 4756 

4757### Command approved before Claude Code restarted was not run

4758 

4759Un comando de shell que aprobaste no se ejecutó, y Claude recibe este mensaje como resultado del comando:

4760 

4761```text wrap theme={null}

4762This call was not run. The command was approved before Claude Code restarted, and Claude Code could not confirm that the shell is back in the directory where it was approved. That directory may be gone or replaced, lie outside the directory where the session started, or be one that Claude Code needs approval to enter or is not allowed to examine. The shell's directory is <directory>. If the command still makes sense, cd to the directory it was meant for and make the call again; it may need approval again.

4763```

4764 

4765La tercera oración del mensaje puede decir en cambio `It does not keep track of that directory across a restart in a session that has been in a worktree.`

4766 

4767**Qué hacer:**

4768 

4769* Deja que Claude continúe, y responde la solicitud si se te pide que vuelvas a aprobar el comando.

4770 

4669### File is too large to read as an image4771### File is too large to read as an image

4670 4772 

4671Claude intentó leer un archivo como imagen con la [herramienta Read](https://code.claude.com/docs/es/tools-reference.md#read-tool-behavior), y el archivo supera los 128 MB, el máximo que Read carga de un archivo de imagen. No se leyó nada, y Claude recibe este error como resultado de la herramienta:4773Claude intentó leer un archivo como imagen con la [herramienta Read](https://code.claude.com/docs/es/tools-reference.md#read-tool-behavior), y el archivo supera los 128 MB, el máximo que Read carga de un archivo de imagen. No se leyó nada, y Claude recibe este error como resultado de la herramienta:


5818 5920 

5819### Remote managed settings failed to load5921### Remote managed settings failed to load

5820 5922 

5821Tu sesión cumple los requisitos para la [configuración administrada por el servidor](https://code.claude.com/docs/es/server-managed-settings.md), pero Claude Code no pudo obtenerla o no pudo aplicar lo que devolvió el servidor, por lo que muestra esta advertencia en las sesiones interactivas.5923Tu sesión cumple los requisitos para la [configuración administrada por el servidor](https://code.claude.com/docs/es/server-managed-settings.md), pero Claude Code no pudo obtenerla o no pudo aplicar lo que devolvió el servidor, por lo que muestra esta advertencia en las sesiones interactivas y en la pestaña Code de Claude Desktop.

5822 5924 

5823La causa entre paréntesis indica qué falló, como `network error`, `request timed out` o `authentication rejected (401)`. La causa `no setting in the server response could be applied as written` significa que el servidor respondió, pero ninguno de los ajustes que devolvió superó la [validación](https://code.claude.com/docs/es/server-managed-settings.md#invalid-entries-in-delivered-settings). Antes de v2.1.282, esta causa decía `server returned invalid settings`.5925La causa entre paréntesis indica qué falló, como `network error`, `request timed out` o `authentication rejected (401)`. La causa `no setting in the server response could be applied as written` significa que el servidor respondió, pero ninguno de los ajustes que devolvió superó la [validación](https://code.claude.com/docs/es/server-managed-settings.md#invalid-entries-in-delivered-settings). Antes de v2.1.282, esta causa decía `server returned invalid settings`.

5824 5926 


5827* **Configuración almacenada en caché de una obtención anterior exitosa**: Claude Code ejecuta la sesión con esa política en caché, excepto las [variables de entorno retenidas](https://code.claude.com/docs/es/server-managed-settings.md#fetch-and-caching-behavior), y la línea dice `using cached policy`.5929* **Configuración almacenada en caché de una obtención anterior exitosa**: Claude Code ejecuta la sesión con esa política en caché, excepto las [variables de entorno retenidas](https://code.claude.com/docs/es/server-managed-settings.md#fetch-and-caching-behavior), y la línea dice `using cached policy`.

5828* **Sin caché**: Claude Code ejecuta la sesión sin configuración administrada por el servidor, y la línea dice `no remote policy applied`.5930* **Sin caché**: Claude Code ejecuta la sesión sin configuración administrada por el servidor, y la línea dice `no remote policy applied`.

5829 5931 

5932En la pestaña Code, la advertencia aparece como una línea en la conversación cuando envías un mensaje, y aparece una nueva línea cuando cambia el estado de la obtención. Tres mensajes relacionados aparecen de la misma manera:

5933 

5934* `Remote managed settings are still loading`: la obtención todavía estaba en curso cuando la sesión continuó

5935* `Remote managed settings did not load`: la obtención terminó sin una respuesta

5936* `Remote managed settings have now loaded`: la configuración se cargó después de una de estas advertencias, y el resto de la línea indica si se aplica una política remota

5937 

5830**Qué hacer:**5938**Qué hacer:**

5831 5939 

5832* Actúa según la causa que indica el mensaje: para una causa de red, comprueba que esta máquina pueda acceder a `api.anthropic.com`; para una causa de autenticación, comprueba tu inicio de sesión con `/status`5940* Actúa según la causa que indica el mensaje: para una causa de red, comprueba que esta máquina pueda acceder a `api.anthropic.com`; para una causa de autenticación, comprueba tu inicio de sesión con `/status`


5835 5943 

5836Antes de v2.1.248, Claude Code informaba de una obtención de configuración fallida solo en el registro de depuración.5944Antes de v2.1.248, Claude Code informaba de una obtención de configuración fallida solo en el registro de depuración.

5837 5945 

5946### Claude Code couldn't load your organization's settings

5947 

5948Tu sesión no se ha iniciado porque la configuración de tu organización, incluida su [configuración administrada por el servidor](https://code.claude.com/docs/es/server-managed-settings.md), tiene que cargarse primero y Claude Code no pudo cargarla. Por ejemplo:

5949 

5950```text theme={null}

5951Claude Code couldn't reach Anthropic to load your organization's settings (could not connect). <Organization name> requires them before a session can start.

5952```

5953 

5954Si el mensaje aparece en un diálogo titulado `Claude Code can't start this session yet`, el diálogo se cierra y la sesión se inicia en cuanto se carga la configuración.

5955 

5956En [modo no interactivo](https://code.claude.com/docs/es/headless.md) y en [sesiones en segundo plano](https://code.claude.com/docs/es/agent-view.md), Claude Code en cambio imprime el mensaje y se cierra con el estado 1.

5957 

5958**Qué hacer:**

5959 

5960* **`could not connect`, o `the reply came from a network proxy, not Anthropic`**: comprueba tu conexión de red y, en una red corporativa, pídele a TI que permita HTTPS hacia `api.anthropic.com/api/claude_code/policy_limits` y `api.anthropic.com/api/claude_code/settings`. Luego selecciona **Retry now**, o vuelve a ejecutar tu comando.

5961* **`timed out`, `Anthropic returned an error` o `Anthropic asked it to retry shortly`**: deja que el diálogo reintente, o vuelve a ejecutar tu comando más tarde. Consulta [status.anthropic.com](https://status.anthropic.com) si sigue ocurriendo.

5962* **`still loading`, o `couldn't verify your sign-in with Anthropic yet`**: deja que el diálogo reintente, o vuelve a ejecutar tu comando. Si el mensaje sobre el inicio de sesión sigue apareciendo, vuelve a iniciar sesión ejecutando `claude auth login` en tu shell.

5963* **`Your Claude session has expired`**: el inicio de sesión almacenado en esta máquina ya no es válido, así que reintentar no servirá. En el diálogo, selecciona **Sign in again** para cerrar Claude Code; luego, en tu shell, ejecuta `claude auth login`, que funciona incluso mientras no se pueden iniciar sesiones.

5964* **`none of the settings the server returned could be applied as written`**: pídele a tu administrador que corrija la [configuración administrada por el servidor](https://code.claude.com/docs/es/server-managed-settings.md#invalid-entries-in-delivered-settings) de la organización y luego reintenta.

5965 

5838### Managed settings were not approved5966### Managed settings were not approved

5839 5967 

5840La [configuración administrada por el servidor](https://code.claude.com/docs/es/server-managed-settings.md) de tu organización incluye ajustes que necesitan tu aprobación, y rechazaste el [diálogo de aprobación de seguridad](https://code.claude.com/docs/es/server-managed-settings.md#security-approval-dialogs), por lo que Claude Code se cierra sin aplicarlos:5968La [configuración administrada por el servidor](https://code.claude.com/docs/es/server-managed-settings.md) de tu organización incluye ajustes que necesitan tu aprobación, y rechazaste el [diálogo de aprobación de seguridad](https://code.claude.com/docs/es/server-managed-settings.md#security-approval-dialogs), por lo que Claude Code se cierra sin aplicarlos:


6294 6422 

6295Antes de v2.1.257, `claude doctor` no señalaba estos archivos; las versiones anteriores dejan los mismos marcadores de posición cuando se termina una sesión a la fuerza.6423Antes de v2.1.257, `claude doctor` no señalaba estos archivos; las versiones anteriores dejan los mismos marcadores de posición cuando se termina una sesión a la fuerza.

6296 6424 

6425### Make this change again later: \~/.claude.json could not be updated

6426 

6427Este aviso en stderr significa que un cambio en [`~/.claude.json`](https://code.claude.com/docs/es/claude-directory#ce-claude-json), como un inicio de sesión o una respuesta a una solicitud de confianza, no se guardó en el archivo:

6428 

6429```text theme={null}

6430Make this change again later: /home/user/.claude.json could not be updated, so it applies to this session only.

6431```

6432 

6433**Qué hacer:**

6434 

6435* Vuelve a hacer el cambio en una sesión posterior. Por ejemplo, ejecuta `/login` de nuevo o vuelve a responder la solicitud de confianza.

6436 

6297## Las respuestas parecen de menor calidad que lo habitual6437## Las respuestas parecen de menor calidad que lo habitual

6298 6438 

6299Si las respuestas de Claude parecen menos capaces de lo que espera pero no se muestra ningún error, la causa suele ser el estado de la conversación en lugar del modelo en sí. Claude Code no cambia silenciosamente las versiones del modelo. Puede cambiar a un modelo de respaldo en estos casos:6439Si las respuestas de Claude parecen menos capaces de lo que espera pero no se muestra ningún error, la causa suele ser el estado de la conversación en lugar del modelo en sí. Claude Code no cambia silenciosamente las versiones del modelo. Puede cambiar a un modelo de respaldo en estos casos:

headless.md +3 −1

Details

48 48 

49En modo bare, Claude Code nunca lee credenciales OAuth ni el llavero del sistema. Para la API de Anthropic, establece `ANTHROPIC_API_KEY` en el entorno, con una clave creada en la [Consola de Claude](https://platform.claude.com), o proporciona un `apiKeyHelper` en el JSON `--settings`. Amazon Bedrock, Agent Platform de Google Cloud y Microsoft Foundry continúan leyendo sus propias credenciales de proveedor como de costumbre.49En modo bare, Claude Code nunca lee credenciales OAuth ni el llavero del sistema. Para la API de Anthropic, establece `ANTHROPIC_API_KEY` en el entorno, con una clave creada en la [Consola de Claude](https://platform.claude.com), o proporciona un `apiKeyHelper` en el JSON `--settings`. Amazon Bedrock, Agent Platform de Google Cloud y Microsoft Foundry continúan leyendo sus propias credenciales de proveedor como de costumbre.

50 50 

51En modo bare, Claude tiene acceso a las herramientas Bash, lectura de archivos y edición de archivos. Pasa cualquier contexto que necesites con una bandera:51En modo bare, Claude tiene acceso a las herramientas Bash, lectura de archivos y edición de archivos. Pasa el contexto que necesites con una bandera:

52 52 

53| Para cargar | Usar |53| Para cargar | Usar |

54| - | - |54| - | - |


58| [Agentes personalizados](https://code.claude.com/docs/es/sub-agents.md#choose-the-subagent-scope) | `--agents <file-or-json>` |58| [Agentes personalizados](https://code.claude.com/docs/es/sub-agents.md#choose-the-subagent-scope) | `--agents <file-or-json>` |

59| Un plugin | `--plugin-dir <path>`, `--plugin-url <url>` |59| Un plugin | `--plugin-dir <path>`, `--plugin-url <url>` |

60 60 

61Los hooks siguen sin ejecutarse en modo bare cuando los pasas con `--settings`, o en el [`hooks/hooks.json`](https://code.claude.com/docs/es/plugins/components#hooks) o la [clave `hooks` del manifiesto](https://code.claude.com/docs/es/plugins/manifest-reference#hooks) de un plugin que cargas con una bandera. No uses el modo bare para una ejecución que los necesite.

62 

61El modo bare también limita lo que ocurre mientras se ejecuta la sesión:63El modo bare también limita lo que ocurre mientras se ejecuta la sesión:

62 64 

63* **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`.65* **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`.

Details

96Never edit a migration after it has merged. Add a new migration instead.96Never edit a migration after it has merged. Add a new migration instead.

97```97```

98 98 

99Cuando inicias Claude desde `packages/api/`, carga tanto `packages/api/CLAUDE.md` como el `CLAUDE.md` raíz. Claude ve las instrucciones locales junto con las reglas de todo el repositorio, sin instrucciones de `packages/web/` en el contexto. Lo mismo se aplica a cualquier subdirectorio en un árbol que no sea un monorepo. Para confirmar qué archivos se cargaron, ejecuta `/context` y revisa la lista bajo **Memory files**.99Cuando inicias Claude desde `packages/api/`, carga tanto `packages/api/CLAUDE.md` como el `CLAUDE.md` raíz. Claude ve las instrucciones locales junto con las reglas de todo el repositorio, sin instrucciones de `packages/web/` en el contexto. Lo mismo se aplica a cualquier subdirectorio en un árbol que no sea un monorepo. Para confirmar qué archivos se cargaron, ejecuta [`/context all`](https://code.claude.com/docs/es/commands#all-commands) y revisa la lista bajo **Memory files**.

100 100 

101Algunas formas de mantener los archivos actuales a medida que el codebase y los modelos cambian:101Algunas formas de mantener los archivos actuales a medida que el codebase y los modelos cambian:

102 102 

memory.md +6 −4

Details

67 67 

68### Configura un CLAUDE.md de proyecto68### Configura un CLAUDE.md de proyecto

69 69 

70Un 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**.70Un 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.

71 

72Para confirmar que el archivo se cargó, ejecuta [`/context all`](https://code.claude.com/docs/es/commands#all-commands) en una sesión y revisa la lista bajo **Memory files**. En el [modo de pantalla completa](https://code.claude.com/docs/es/fullscreen.md), `/context` por sí solo contrae esa lista.

71 73 

72> [!TIP]74> [!TIP]

73>75>


461* **Edición**: Claude lee `CLAUDE.md` a través del vínculo, pero las herramientas Edit y Write [se niegan a escribir a través de un vínculo simbólico](https://code.claude.com/docs/es/errors.md#refusing-after-a-symlink-changed), y la negativa dirige a Claude a editar el destino del vínculo, `AGENTS.md`, en su lugar463* **Edición**: Claude lee `CLAUDE.md` a través del vínculo, pero las herramientas Edit y Write [se niegan a escribir a través de un vínculo simbólico](https://code.claude.com/docs/es/errors.md#refusing-after-a-symlink-changed), y la negativa dirige a Claude a editar el destino del vínculo, `AGENTS.md`, en su lugar

462* **Windows**: si usted o alguien que clona el repositorio trabaja en Windows, use la importación `@AGENTS.md` en su lugar. Crear un vínculo simbólico allí requiere privilegios de administrador o modo de desarrollador, y Git verifica un vínculo simbólico comprometido como un archivo de texto sin formato a menos que `core.symlinks` esté habilitado, lo que deja ese clon con un `CLAUDE.md` de una línea en lugar de sus instrucciones464* **Windows**: si usted o alguien que clona el repositorio trabaja en Windows, use la importación `@AGENTS.md` en su lugar. Crear un vínculo simbólico allí requiere privilegios de administrador o modo de desarrollador, y Git verifica un vínculo simbólico comprometido como un archivo de texto sin formato a menos que `core.symlinks` esté habilitado, lo que deja ese clon con un `CLAUDE.md` de una línea en lugar de sus instrucciones

463 465 

464Con cualquiera de los enfoques, ejecute `/context` en su siguiente sesión y confirme que `CLAUDE.md` aparece bajo **Memory files**.466Con cualquiera de los enfoques, ejecuta `/context all` en tu siguiente sesión y confirma que `CLAUDE.md` aparece bajo **Memory files**.

465 467 

466### Migre instrucciones de otras herramientas468### Migre instrucciones de otras herramientas

467 469 


567 569 

568## Ver y editar con `/memory`570## Ver y editar con `/memory`

569 571 

570El comando `/memory` enumera tus archivos CLAUDE.md, CLAUDE.local.md y otras ubicaciones de archivos de memoria en los alcances de usuario y proyecto, incluidas las entradas CLAUDE.md de usuario y proyecto para archivos que aún no existen. También te permite activar o desactivar la memoria automática y ofrece una opción para abrir la carpeta de memoria automática. Selecciona cualquier archivo para abrirlo en tu editor; si seleccionas uno que aún no existe, primero se crea. Para verificar qué archivos `CLAUDE.md` y archivos de reglas se cargaron al iniciar, ejecuta `/context`.572El comando `/memory` enumera tus archivos CLAUDE.md, CLAUDE.local.md y otras ubicaciones de archivos de memoria en los alcances de usuario y proyecto. La lista incluye las entradas CLAUDE.md de usuario y proyecto para archivos que aún no existen. El comando también te permite activar o desactivar la memoria automática y ofrece una opción para abrir la carpeta de memoria automática. Selecciona cualquier archivo para abrirlo en tu editor; si seleccionas uno que aún no existe, primero se crea.

571 573 

572Los editores GUI como VS Code abren el archivo en una ventana separada, y puedes seguir usando la sesión mientras está abierto. Los editores de terminal como Vim toman el control de la terminal hasta que salgas.574Los editores GUI como VS Code abren el archivo en una ventana separada, y puedes seguir usando la sesión mientras está abierto. Los editores de terminal como Vim toman el control de la terminal hasta que salgas.

573 575 


583 585 

584Para depurar:586Para depurar:

585 587 

586* Ejecuta `/context` y revisa la lista bajo **Memory files** para verificar los archivos CLAUDE.md y CLAUDE.local.md que deberían cargarse al iniciar. Si falta uno allí, Claude no puede verlo. Usa `/memory` para abrir y editar los archivos.588* Ejecuta `/context all` y revisa la lista bajo **Memory files** para verificar los archivos CLAUDE.md y CLAUDE.local.md que deberían cargarse al iniciar. Si falta uno allí, Claude no puede verlo. Usa `/memory` para abrir y editar los archivos.

587* Si aparece un aviso `Instruction file not loaded`, consulta [qué significa y qué hacer al respecto](https://code.claude.com/docs/es/errors.md#instruction-file-not-loaded).589* Si aparece un aviso `Instruction file not loaded`, consulta [qué significa y qué hacer al respecto](https://code.claude.com/docs/es/errors.md#instruction-file-not-loaded).

588* Un `CLAUDE.md` en un subdirectorio de tu directorio de trabajo no aparece bajo **Memory files**, porque se carga bajo demanda en lugar de al iniciar. Cuando se carga, aparece en la terminal una línea `Loaded` con su ruta. Para probar uno nuevo, créalo desde tu shell en lugar de pedirle a Claude que lo escriba, y luego pídele a Claude que lea un archivo en ese subdirectorio.590* Un `CLAUDE.md` en un subdirectorio de tu directorio de trabajo no aparece bajo **Memory files**, porque se carga bajo demanda en lugar de al iniciar. Cuando se carga, aparece en la terminal una línea `Loaded` con su ruta. Para probar uno nuevo, créalo desde tu shell en lugar de pedirle a Claude que lo escriba, y luego pídele a Claude que lea un archivo en ese subdirectorio.

589* Verifica que el CLAUDE.md relevante esté en una ubicación que se cargue para tu sesión (consulta [Elige dónde colocar los archivos CLAUDE.md](#choose-where-to-put-claude-md-files)).591* Verifica que el CLAUDE.md relevante esté en una ubicación que se cargue para tu sesión (consulta [Elige dónde colocar los archivos CLAUDE.md](#choose-where-to-put-claude-md-files)).

Details

245>245>

246> **Como predeterminado**: establezca `defaultMode` en [configuración](https://code.claude.com/docs/es/settings.md#where-settings-live). La aplicación de desktop lee los mismos archivos de configuración que la CLI y aplica el modo de permisos a nuevas sesiones locales.246> **Como predeterminado**: establezca `defaultMode` en [configuración](https://code.claude.com/docs/es/settings.md#where-settings-live). La aplicación de desktop lee los mismos archivos de configuración que la CLI y aplica el modo de permisos a nuevas sesiones locales.

247>247>

248> Un modo que selecciona en el selector de modo se recuerda por carpeta y tiene prioridad sobre `defaultMode` para esa carpeta. Plan es la excepción: seleccionarlo se aplica solo a la sesión actual.248> Un modo que seleccionas en el selector de modo en una sesión local se recuerda por carpeta y tiene prioridad sobre un `defaultMode` en la configuración `.claude/` del proyecto. Una nueva sesión local aún puede comenzar en un `defaultMode` de `~/.claude/settings.json` o de la configuración administrada, así que revisa el selector antes de tu primer mensaje. Si seleccionas Plan, se aplica solo a esta sesión.

249>249>

250> Para saber dónde va `defaultMode` en un archivo de configuración, consulta el ejemplo en [Comienza en un modo de permisos diferente](#start-in-a-different-mode).250> Para saber dónde va `defaultMode` en un archivo de configuración, consulta el ejemplo en [Comienza en un modo de permisos diferente](#start-in-a-different-mode).

251 251 


372 372 

373* **Una conexión directa a la API de Anthropic**: en sesiones interactivas de la terminal y en sesiones de `-p`, del Agent SDK, de la [extensión de VS Code](https://code.claude.com/docs/es/vs-code.md) y de la [aplicación de escritorio](https://code.claude.com/docs/es/desktop.md), sea cual sea tu plan o tipo de cuenta, a medida que Anthropic lo implementa. Comprueba tu tipo de sesión con estas versiones mínimas de Claude Code:373* **Una conexión directa a la API de Anthropic**: en sesiones interactivas de la terminal y en sesiones de `-p`, del Agent SDK, de la [extensión de VS Code](https://code.claude.com/docs/es/vs-code.md) y de la [aplicación de escritorio](https://code.claude.com/docs/es/desktop.md), sea cual sea tu plan o tipo de cuenta, a medida que Anthropic lo implementa. Comprueba tu tipo de sesión con estas versiones mínimas de Claude Code:

374 * En sesiones interactivas de la terminal, pedírselo al servidor requiere Claude Code v2.1.271 o posterior en los planes Pro, Max, Ultra y Team. En los planes Enterprise y las cuentas de la API de Claude, esas sesiones requieren v2.1.278 o posterior.374 * En sesiones interactivas de la terminal, pedírselo al servidor requiere Claude Code v2.1.271 o posterior en los planes Pro, Max, Ultra y Team. En los planes Enterprise y las cuentas de la API de Claude, esas sesiones requieren v2.1.278 o posterior.

375 * En sesiones de `-p`, del Agent SDK, de la extensión de VS Code y de la aplicación de escritorio, pedírselo al servidor requiere Claude Code v2.1.281 o posterior375 * En sesiones de `-p` y de la extensión de VS Code, pedírselo al servidor requiere Claude Code v2.1.278 o posterior

376 * En sesiones del Agent SDK y de la aplicación de escritorio, pedírselo al servidor requiere Claude Code v2.1.281 o posterior

376 * A partir de v2.1.282, una sesión que [no obtiene feature flags](https://code.claude.com/docs/es/env-vars.md#features-that-need-feature-flag-fetching), por ejemplo porque desactivaste la telemetría, se lo pide al servidor de forma predeterminada en cualquier tipo de sesión377 * A partir de v2.1.282, una sesión que [no obtiene feature flags](https://code.claude.com/docs/es/env-vars.md#features-that-need-feature-flag-fetching), por ejemplo porque desactivaste la telemetría, se lo pide al servidor de forma predeterminada en cualquier tipo de sesión

377* **Un proveedor de nube, o un gateway o proxy de LLM**: en [Claude Platform on AWS](https://code.claude.com/docs/es/claude-platform-on-aws.md), Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry, y siempre que apuntes `ANTHROPIC_BASE_URL` a un [gateway o proxy de LLM](https://code.claude.com/docs/es/llm-gateway), sea cual sea tu plan. Pedírselo al servidor de forma predeterminada requiere Claude Code v2.1.278 o posterior.378* **Un proveedor de nube, o un gateway o proxy de LLM**: en [Claude Platform on AWS](https://code.claude.com/docs/es/claude-platform-on-aws.md), Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry, y siempre que apuntes `ANTHROPIC_BASE_URL` a un [gateway o proxy de LLM](https://code.claude.com/docs/es/llm-gateway), sea cual sea tu plan. Pedírselo al servidor de forma predeterminada requiere Claude Code v2.1.278 o posterior.

378* **Una sesión con sesión iniciada de [Claude apps gateway](https://code.claude.com/docs/es/claude-apps-gateway)**: requiere Claude Code v2.1.280 o posterior379* **Una sesión con sesión iniciada de [Claude apps gateway](https://code.claude.com/docs/es/claude-apps-gateway)**: requiere Claude Code v2.1.280 o posterior

permissions.md +1 −1

Details

69 69 

70## Modos de permisos70## Modos de permisos

71 71 

72Claude Code admite varios modos de permisos que controlan cómo se aprueban las llamadas de herramientas. Consulte [Modos de permisos](https://code.claude.com/docs/es/permission-modes.md) para saber cuándo usar cada uno. Para cambiar el modo en el que comienzan las sesiones, establezca `defaultMode` en sus [archivos de configuración](https://code.claude.com/docs/es/settings.md#where-settings-live). [Qué modo comienza una sesión](https://code.claude.com/docs/es/permission-modes.md#which-mode-a-session-starts-in) cubre el valor predeterminado integrado para cada plan y lo que lee la extensión de VS Code.72Claude Code admite varios modos de permisos que controlan cómo se aprueban las llamadas a herramientas. Consulta [Modos de permisos](https://code.claude.com/docs/es/permission-modes.md) para saber cuándo usar cada uno. Para cambiar el modo de permisos predeterminado de las sesiones nuevas, establece `defaultMode` en tus [archivos de configuración](https://code.claude.com/docs/es/settings.md#where-settings-live). [En qué modo comienza una sesión](https://code.claude.com/docs/es/permission-modes.md#which-mode-a-session-starts-in) cubre el valor predeterminado integrado para cada plan y lo que lee la extensión de VS Code.

73 73 

74| Modo | Descripción |74| Modo | Descripción |

75| :- | :- |75| :- | :- |

Details

571| :- | :- | :- |571| :- | :- | :- |

572| Comandos de hook | En cualquier lugar en `command` y `args` | `CLAUDE_PLUGIN_ROOT`, `CLAUDE_PLUGIN_DATA`, `CLAUDE_PROJECT_DIR` y `CLAUDE_PLUGIN_OPTION_<KEY>` |572| Comandos de hook | En cualquier lugar en `command` y `args` | `CLAUDE_PLUGIN_ROOT`, `CLAUDE_PLUGIN_DATA`, `CLAUDE_PROJECT_DIR` y `CLAUDE_PLUGIN_OPTION_<KEY>` |

573| Comandos de monitor | En cualquier lugar en `command` | No exportado |573| Comandos de monitor | En cualquier lugar en `command` | No exportado |

574| Servidores MCP `stdio` | `command`, `args`, `env` | `CLAUDE_PLUGIN_ROOT`, `CLAUDE_PLUGIN_DATA` |574| Servidores MCP `stdio` | `command`, `args`, `env` | `CLAUDE_PLUGIN_ROOT`, `CLAUDE_PLUGIN_DATA`, `CLAUDE_PROJECT_DIR` |

575| Servidores MCP `http`, `sse`, `ws` | `url`, `headers`, `headersHelper` | No aplicable |575| Servidores MCP `http`, `sse`, `ws` | `url`, `headers`, `headersHelper` | No aplicable |

576| Servidores LSP | `command`, `args`, `env`, `workspaceFolder` | `CLAUDE_PLUGIN_ROOT`, `CLAUDE_PLUGIN_DATA`, `CLAUDE_PROJECT_DIR` |576| Servidores LSP | `command`, `args`, `env`, `workspaceFolder` | `CLAUDE_PLUGIN_ROOT`, `CLAUDE_PLUGIN_DATA`, `CLAUDE_PROJECT_DIR` |

577| Contenido de skill, comando y agente | En cualquier lugar en el cuerpo Markdown | No aplicable |577| Contenido de skill, comando y agente | En cualquier lugar en el cuerpo Markdown | No aplicable |

Details

154| Evento | Se dispara cuando | Un hook puede devolver |154| Evento | Se dispara cuando | Un hook puede devolver |

155| :- | :- | :- |155| :- | :- | :- |

156| `agent.offer` | Se ofrece un tipo de subagente a Claude | `{ isOffered: false }` para ocultarlo |156| `agent.offer` | Se ofrece un tipo de subagente a Claude | `{ isOffered: false }` para ocultarlo |

157| `agent.spawn` | Un subagente o un compañero de un [equipo de agentes](https://code.claude.com/docs/es/agent-teams.md) está a punto de iniciarse. Para un compañero, `e.isTeammate` es `true`. | `next({ ...e, model })` para elegir su modelo, o `{ deny: reason }` |157| `agent.spawn` | Un subagente o un compañero de un [equipo de agentes](https://code.claude.com/docs/es/agent-teams.md) está a punto de iniciarse, o un subagente que terminó o se detuvo está a punto de ejecutarse de nuevo. Para un compañero, `e.isTeammate` es `true`. Para una ejecución reanudada, se establece `e.resume`. | `next({ ...e, model })` para elegir el modelo de uno que se está iniciando, o `{ deny: reason }` |

158 158 

159Cuando Claude reanuda un subagente con la herramienta [`SendMessage`](https://code.claude.com/docs/es/sub-agents#resume-subagents), tu hook de `agent.spawn` no vuelve a ejecutarse. Para rechazar las llamadas a `SendMessage` que reanudan un subagente, haz coincidir esa herramienta en un hook de [`tool.call`](https://code.claude.com/docs/es/plugins/mods/events#guard-or-change-a-tool-call).159Tu hook de `agent.spawn` también se ejecuta cuando un subagente que terminó o se detuvo está a punto de ejecutarse de nuevo, por ejemplo cuando Claude le envía un mensaje con la herramienta [`SendMessage`](https://code.claude.com/docs/es/sub-agents#resume-subagents). En ese evento, `e.resume` es `{ agentId }`. Si tu hook cuenta subagentes, omite los eventos en los que `e.resume` está establecido, para que un subagente reanudado no se cuente de nuevo.

160 

161Devuelve `{ deny: reason }` para rechazar una ejecución reanudada. La ejecución no se inicia y el subagente se queda como estaba. Cuando una llamada a `SendMessage` solicitó la ejecución, Claude lee `a plugin declined the resume:` seguido de tu motivo como resultado de esa llamada. Si pasas un evento cambiado a `next` para una ejecución reanudada, como un `model` diferente, Claude Code ignora el cambio.

162 

163> [!NOTE]

164>

165> El evento para una ejecución reanudada requiere Claude Code v2.1.299 o posterior. Antes de v2.1.299, tu hook de `agent.spawn` no se ejecutaba cuando se reanudaba un subagente. En esas versiones, para rechazar las llamadas a `SendMessage` que reanudan un subagente, haz coincidir esa herramienta en un hook de [`tool.call`](https://code.claude.com/docs/es/plugins/mods/events#guard-or-change-a-tool-call).

160 166 

161### Interfaz167### Interfaz

162 168 

Details

502* 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.502* 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.

503* 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.503* 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.

504 504 

505### "working folder not found"

506 

507En la terminal que ejecuta [`claude remote-control`](#start-a-remote-control-session), `Session failed: working folder not found:` seguido de una ruta entre comillas significa que una sesión no pudo iniciarse porque no existe ninguna carpeta en esa ruta.

508 

509* **El servidor sigue ejecutándose**: restaura la carpeta e inicia la sesión de nuevo, o detén el servidor

510* **El servidor ha salido**: ejecuta `claude remote-control` de nuevo desde una carpeta que exista

511 

512Antes de v2.1.318, una sesión que fallaba de esta manera mostraba `Session failed: spawn error:` y un mensaje `ENOENT` que mencionaba un archivo de programa en lugar de la carpeta faltante.

513 

514### "The program file this Remote Control started from is gone"

515 

516Esta advertencia en la terminal que ejecuta [`claude remote-control`](#start-a-remote-control-session) significa que falta el archivo de programa desde el que se inició el servidor, y las nuevas sesiones ejecutan la versión más reciente que lo reemplazó. Para pasar también el servidor a esa versión, detenlo y ejecuta `claude remote-control` de nuevo. Si Claude Code está instalado en almacenamiento de red, reinicia el servidor ahora y sigue [Instalar en almacenamiento de red](https://code.claude.com/docs/es/setup.md#install-on-network-storage). De lo contrario, las nuevas sesiones se inician sin necesidad de reiniciar.

517 

518Cuando el archivo de programa ya no existe y Claude Code no encuentra una versión más reciente para ejecutar, las nuevas sesiones fallan. La terminal muestra un error como `Session failed: spawn error:` seguido de un mensaje `ENOENT`. Detén el servidor, [instala Claude Code](https://code.claude.com/docs/es/setup.md#install-claude-code) de nuevo si `claude` no se ejecuta en tu shell, y ejecuta `claude remote-control` de nuevo. Antes de v2.1.318, las nuevas sesiones fallaban de esta manera incluso con una versión más reciente instalada.

519 

505### "Couldn't reconnect to your Remote Control session"520### "Couldn't reconnect to your Remote Control session"

506 521 

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.522Cuando 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.

sandboxing.md +59 −27

Details

71* **Overrides**: elige si los comandos que fallan dentro del sandbox pueden recurrir a ejecutarse fuera de él. Este es el ajuste [`allowUnsandboxedCommands`](https://code.claude.com/docs/es/settings-reference#sandbox-allowunsandboxedcommands)71* **Overrides**: elige si los comandos que fallan dentro del sandbox pueden recurrir a ejecutarse fuera de él. Este es el ajuste [`allowUnsandboxedCommands`](https://code.claude.com/docs/es/settings-reference#sandbox-allowunsandboxedcommands)

72* **Config**: consulta la configuración resuelta del sandbox72* **Config**: consulta la configuración resuelta del sandbox

73 73 

74Si 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`.74Si el panel muestra solo una pestaña Dependencies, el sandbox todavía no puede iniciarse. Corrige lo que indica la pestaña como se describe en [Configurar Linux y WSL2](#set-up-linux-and-wsl2), reinicia Claude Code y vuelve a ejecutar `/sandbox`.

75 75 

76**2. Elige un modo**76**2. Elige un modo**

77 77 


97 97 

98> [!WARNING]98> [!WARNING]

99>99>

100> 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`](https://code.claude.com/docs/es/settings-reference#sandbox-failifunavailable) en `true`. Los despliegues administrados que exigen el sandboxing como barrera de seguridad pueden usar este ajuste.100> De forma predeterminada, cuando la plataforma no es compatible con el sandbox o falla la comprobación de dependencias al iniciar, Claude Code ejecuta los comandos sin sandboxing. Para que Claude Code se cierre al iniciar en su lugar, establece [`sandbox.failIfUnavailable`](https://code.claude.com/docs/es/settings-reference#sandbox-failifunavailable) en `true`. Los despliegues administrados que exigen el sandboxing como barrera de seguridad pueden usar este ajuste.

101 101 

102### Confirmar que los comandos se ejecutan dentro del sandbox102### Confirmar que los comandos se ejecutan dentro del sandbox

103 103 


135 135 

136Ripgrep 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.136Ripgrep 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.

137 137 

138Cuando 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.138* **Dependencies es la única pestaña**: el sandbox no puede iniciarse. Instala lo que la pestaña indica que falta o, si informa de la restricción de AppArmor de Ubuntu, [agrega un perfil de AppArmor para bubblewrap](#add-an-apparmor-profile-for-bubblewrap)

139* **Dependencies aparece junto a las demás pestañas**: la pestaña indica un elemento opcional que falta, como el filtro seccomp. El sandbox puede iniciarse sin él, así que instálalo solo si quieres lo que añade

139 140 

140> [accordion] Ubuntu 24.04 y posteriores: permitir que bubblewrap cree espacios de nombres de usuario141La comprobación de dependencias se ejecuta al iniciar, así que reinicia Claude Code después de instalar paquetes para que `/sandbox` los detecte.

141>

142> 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.

143>

144> 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`:

145>

146> ```bash theme={null}

147> sudo tee /etc/apparmor.d/bwrap > /dev/null <<'EOF'

148> abi <abi/4.0>,

149> include <tunables/global>

150>

151> profile bwrap /usr/bin/bwrap flags=(unconfined) {

152> userns,

153> include if exists <local/bwrap>

154> }

155> EOF

156> ```

157>

158> El perfil se aplica solo a `bwrap`, no a los comandos que ejecuta dentro del sandbox. Recarga AppArmor para aplicarlo:

159>

160> ```bash theme={null}

161> sudo systemctl reload apparmor

162> ```

163 142 

164> [accordion] Notas sobre WSL2143> [accordion] Notas sobre WSL2

165>144>


167>146>

168> 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](https://code.claude.com/docs/es/settings-reference.md#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.147> 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](https://code.claude.com/docs/es/settings-reference.md#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.

169 148 

149#### Agregar un perfil de AppArmor para bubblewrap

150 

151Agrega el perfil si Claude Code ejecuta `/usr/bin/bwrap` y ocurre alguna de estas situaciones:

152 

153* Claude Code [informa de la restricción de AppArmor de Ubuntu sobre los espacios de nombres de usuario](#apparmor-restriction-stops-bubblewrap)

154* Los comandos del sandbox fallan con `bwrap: setting up uid map: Permission denied` o `bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted` mientras [esa restricción está activada](#bwrap-uid-map-permission-denied)

155 

156Claude Code ejecuta el primer `bwrap` en `PATH`, a menos que la configuración administrada indique uno en [`sandbox.bwrapPath`](https://code.claude.com/docs/es/settings-reference#sandbox-bwrappath). Para ver qué `bwrap` es el primero, ejecuta `which bwrap` en el shell desde el que inicias Claude Code. Si Claude Code ejecuta cualquier ruta distinta de `/usr/bin/bwrap`, [levanta la restricción con `sysctl`](#apparmor-restriction-stops-bubblewrap) en su lugar.

157 

158Para agregar el perfil para `/usr/bin/bwrap`, ejecuta este comando:

159 

160```bash theme={null}

161sudo tee /etc/apparmor.d/bwrap > /dev/null <<'EOF'

162abi <abi/4.0>,

163include <tunables/global>

164 

165profile bwrap /usr/bin/bwrap flags=(unconfined) {

166 userns,

167 include if exists <local/bwrap>

168}

169EOF

170```

171 

172Recarga AppArmor para aplicarlo:

173 

174```bash theme={null}

175sudo systemctl reload apparmor

176```

177 

178Luego reinicia Claude Code y [confirma que el sandbox funciona](#confirm-commands-run-inside-the-sandbox).

179 

170### Modos del sandbox180### Modos del sandbox

171 181 

172Claude 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.182Claude 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.


716 726 

717Las dos claves más allá de `enabled` controlan qué sucede cuando el sandbox no puede ejecutar un comando:727Las dos claves más allá de `enabled` controlan qué sucede cuando el sandbox no puede ejecutar un comando:

718 728 

719* **`failIfUnavailable`**: una dependencia faltante como bubblewrap en Linux impide que Claude Code se inicie en lugar de volver a la ejecución sin aislar729* **`failIfUnavailable`**: cuando la plataforma no es compatible con el sandbox o falla la verificación de dependencias al iniciar, Claude Code se niega a iniciarse en lugar de volver a la ejecución sin aislar

720* **`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 aislar730* **`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

721 731 

722Considera estas adiciones junto con ellas:732Considera estas adiciones junto con ellas:


902 912 

903En un contenedor sin privilegios, [bubblewrap](#os-level-enforcement) 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`](https://code.claude.com/docs/es/settings-reference#sandbox-enableweakernestedsandbox) en `true` para que el sandbox monte mediante bind 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 el ajuste expone información de proceso a comandos aislados que un montaje `/proc` nuevo ocultaría.913En un contenedor sin privilegios, [bubblewrap](#os-level-enforcement) 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`](https://code.claude.com/docs/es/settings-reference#sandbox-enableweakernestedsandbox) en `true` para que el sandbox monte mediante bind 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 el ajuste expone información de proceso a comandos aislados que un montaje `/proc` nuevo ocultaría.

904 914 

915### La restricción de AppArmor de Ubuntu detiene bubblewrap

916 

917En Linux y WSL2, el mensaje `Ubuntu's AppArmor restriction on user namespaces stops bubblewrap here` significa que la restricción de AppArmor de Ubuntu impide que el sandbox se inicie.

918 

919Para que el sandbox se inicie, levanta la restricción de una de estas dos maneras:

920 

921* [Agrega un perfil de AppArmor para bubblewrap](#add-an-apparmor-profile-for-bubblewrap) si Claude Code ejecuta `/usr/bin/bwrap`

922* En tu shell, ejecuta `sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0`, lo que levanta la restricción para todos los programas de la máquina y dura hasta que reinicies

923 

924Luego reinicia Claude Code y [confirma que el sandbox funciona](#confirm-commands-run-inside-the-sandbox).

925 

926Hasta que levantes la restricción, los comandos se ejecutan sin el sandbox bajo el flujo de permisos habitual, o Claude Code se niega a iniciarse si [`sandbox.failIfUnavailable`](https://code.claude.com/docs/es/settings-reference#sandbox-failifunavailable) es `true`.

927 

928### Los comandos aislados fallan con `bwrap: setting up uid map: Permission denied`

929 

930En Linux y WSL2, este error o `bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted` puede significar que la restricción de AppArmor de Ubuntu sobre los espacios de nombres de usuario está deteniendo bubblewrap. Para comprobarlo, ejecuta `sysctl kernel.apparmor_restrict_unprivileged_userns` en tu shell:

931 

932* `kernel.apparmor_restrict_unprivileged_userns = 1`: la restricción está activada. [Agrega un perfil de AppArmor](#add-an-apparmor-profile-for-bubblewrap) si Claude Code ejecuta `/usr/bin/bwrap`, o ejecuta `sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0`, lo que la levanta para todos los programas hasta que reinicies. Luego reinicia Claude Code y [confirma que el sandbox funciona](#confirm-commands-run-inside-the-sandbox)

933* Cualquier otra salida: la restricción no es la causa. Para informar la falla, ejecuta [`/feedback`](https://code.claude.com/docs/es/commands#all-commands) en el prompt de Claude Code

934 

935Antes de v2.1.310, Claude Code no comprobaba esta restricción al iniciarse, por lo que `/sandbox` no la informaba.

936 

905### Los archivos de solo lectura de 0 bytes aparecen en las rutas de configuración `.claude`, y "Sí, y no preguntar de nuevo" no guarda937### 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

906 938 

907En 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.939En 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.

Details

472 472 

473Para confirmar que el trap funciona, agrega justo debajo de la línea `trap` una línea que llame a un comando que no existe, como `no-such-command`. Ejecuta el archivo del hook desde tu shell y comprueba que `echo $?` imprima `1`; luego elimina la línea.473Para confirmar que el trap funciona, agrega justo debajo de la línea `trap` una línea que llame a un comando que no existe, como `no-such-command`. Ejecuta el archivo del hook desde tu shell y comprueba que `echo $?` imprima `1`; luego elimina la línea.

474 474 

475#### Averigua por qué se envió una solicitud de generación

476 

477Tu hook recibe el motivo de cada solicitud de generación en `CLAUDE_RUNNER_SPAWN_REASON`, para que puedas registrar por qué se ejecutó el hook, junto con `CLAUDE_RUNNER_SESSION_UUID`. Requiere Claude Code v2.1.318 o posterior en el orquestador. Léelo como `"${CLAUDE_RUNNER_SPAWN_REASON:-}"`, porque puede no estar establecido, e inicia el ejecutor sea cual sea el valor. Si tu hook se ramifica según él, mantén una rama predeterminada, porque Anthropic puede agregar valores.

478 

479Para encontrar el motivo de solicitudes anteriores, busca en el registro de cada réplica del orquestador `session=` y el `CLAUDE_RUNNER_SESSION_UUID` de la sesión, no su ID `session_...`. Las líneas `ok session=` y `nack session=` muestran el valor de `CLAUDE_RUNNER_SPAWN_REASON` después de `reason=`, o `reason=-` si no estaba establecido:

480 

481* **`[runner:orchestrator] ok session=`**: el hook salió con 0

482* **`[runner:orchestrator] nack session=`**: el orquestador está informando a Anthropic de una solicitud de generación fallida

483 

484Cada valor indica solo la última causa que Anthropic registró para la sesión, no su historial:

485 

486| Valor | Qué ocurrió | Qué revisar |

487| :- | :- | :- |

488| `session_created` | Esta es la primera solicitud de generación para una sesión nueva | Nada. No dependas de él para detectar la primera solicitud de una sesión, porque la primera solicitud que ve tu hook puede llevar `runner_lost` después de que un ejecutor de flota fija o en espera haya tenido la sesión. |

489| `no_runner_registered` | Ningún ejecutor se registró para la solicitud anterior dentro de `--expected-spawn-seconds`, y Anthropic no registró ningún informe de fallo para ella | `stop: no nack for session=` o `nack failed session=` entre las líneas anteriores de la sesión significa que no se registró ningún informe de fallo. Lee cualquier error del hook que aparezca antes y, si el orquestador se estaba deteniendo, consulta [Detén o reinicia el orquestador](#stop-or-restart-the-orchestrator). Después de una línea `ok session=`, comprueba que su ejecutor se inició y se registró dentro de `--expected-spawn-seconds`. Si ninguna réplica registró la solicitud, revisa tus orquestadores en busca de reinicios y líneas `poll failed`. |

490| `hook_failed` | Tu orquestador informó que la solicitud anterior falló y se puede reintentar, por ejemplo porque tu hook salió con 1 o seguía en ejecución cuando terminó `--hook-timeout`. El valor es el mismo cuando tu orquestador devuelve una solicitud a Anthropic sin ejecutar el hook, por ejemplo mientras el orquestador se está deteniendo. | Busca la última línea `[runner:orchestrator] nack session=` o `stop: handing back session=` de la sesión antes de esta solicitud. El error de generación que envió el orquestador sigue al valor `reason=` y puede continuar en las líneas siguientes. Una línea `handing back session=` significa que el orquestador se estaba deteniendo y no ejecutó el hook, así que no hay nada que corregir en el hook. |

491| `runner_lost` | El ejecutor que tenía la sesión dejó de informar a Anthropic, se dio de baja o se eliminó | Averigua qué detuvo el ejecutor o lo desconectó de Anthropic, como un desalojo de nodo, una terminación por falta de memoria, una recuperación de instancia spot, o tu propio despliegue o reducción de escala |

492| `runner_reported_failure` | El ejecutor anterior informó que la sesión falló en él, por ejemplo durante el checkout | Lee el registro del ejecutor anterior. Si muchas sesiones reciben este valor, revisa la imagen y la configuración del repositorio. |

493| `resumed` | La sesión estaba en pausa y ahora necesita de nuevo un ejecutor. Por ejemplo, su ejecutor la liberó según [`--release-idle-session-min`](#make-on-demand-runners-exit-when-idle), y más tarde recibió un mensaje nuevo. | Nada |

494| `requeued` | La sesión se volvió a poner en la cola, por ejemplo cuando un Propietario seleccionó **Retry** o una sesión bloqueada recibió un mensaje nuevo | Si la misma sesión sigue recibiendo este valor, lee el error en sus líneas `nack session=`. Si su hook salió con 0, lee el registro del ejecutor. |

495| `server_retry` | Anthropic desistió de la solicitud anterior o de iniciar la sesión en su ejecutor, y está reintentando. Tu hook no falló. | Nada para una sola solicitud. Si el valor sigue apareciendo, en una sesión o en muchas, infórmalo a [tu equipo de cuenta de Anthropic](https://code.claude.com/docs/es/self-hosted-environments-deploy.md#report-an-issue). |

496| `prewarm` | Esta es una solicitud de precalentamiento, todavía sin sesión | Nada |

497 

475### Detén o reinicia el orquestador498### Detén o reinicia el orquestador

476 499 

477Para detener o reiniciar el orquestador sin interrumpir los hooks `spawn-runner` en ejecución, inícialo con [`--shutdown-drain-sec`](https://code.claude.com/docs/es/self-hosted-environments-reference#orchestrator-cli-flags). Así, ante `SIGTERM`, da a los hooks en ejecución hasta la cantidad de segundos que establezcas para terminar. Para elegir el valor y configurar tu supervisor de procesos en consecuencia, consulta [Dimensiona `--shutdown-drain-sec` y el tiempo de espera de detención del orquestador](#size-shutdown-drain-sec-and-the-supervisors-stop-timeout-for-the-orchestrator).500Para detener o reiniciar el orquestador sin interrumpir los hooks `spawn-runner` en ejecución, inícialo con [`--shutdown-drain-sec`](https://code.claude.com/docs/es/self-hosted-environments-reference#orchestrator-cli-flags). Así, ante `SIGTERM`, da a los hooks en ejecución hasta la cantidad de segundos que establezcas para terminar. Para elegir el valor y configurar tu supervisor de procesos en consecuencia, consulta [Dimensiona `--shutdown-drain-sec` y el tiempo de espera de detención del orquestador](#size-shutdown-drain-sec-and-the-supervisors-stop-timeout-for-the-orchestrator).

Details

172 172 

173Un cliente que inicia sesión a través de una [puerta de enlace de aplicaciones Claude](#platform-availability) obtiene su configuración de la puerta de enlace y espera esa búsqueda antes de que comience la sesión, por lo que la búsqueda en las listas a continuación no se aplica a ella. [Aplicar inicio cerrado por error](#enforce-fail-closed-startup) cubre lo que sucede cuando esa búsqueda falla.173Un cliente que inicia sesión a través de una [puerta de enlace de aplicaciones Claude](#platform-availability) obtiene su configuración de la puerta de enlace y espera esa búsqueda antes de que comience la sesión, por lo que la búsqueda en las listas a continuación no se aplica a ella. [Aplicar inicio cerrado por error](#enforce-fail-closed-startup) cubre lo que sucede cuando esa búsqueda falla.

174 174 

175> [!NOTE]

176>

177> Con un inicio de sesión de claude.ai de Team o Enterprise almacenado en la máquina, Anthropic puede exigir la configuración de tu organización antes de que comience una sesión. Cuando lo hace, independientemente de lo que digan las listas a continuación, un desarrollador [no puede iniciar una sesión](https://code.claude.com/docs/es/errors.md#couldnt-load-your-organizations-settings) en casos como estos:

178>

179> * Su inicio de sesión ha caducado, hasta que ejecute `claude auth login`

180> * Claude Code no tiene ni la configuración ni una copia reciente en caché. Comprueba que la máquina pueda llegar a `api.anthropic.com`

181>

182> Un mensaje de inicio con `before a session can start` o `Your Claude session has expired` significa que el requisito se aplica.

183 

175**Primer lanzamiento sin configuración en caché:**184**Primer lanzamiento sin configuración en caché:**

176 185 

177* Cuando un desarrollador inicia sesión al inicio, como en una primera ejecución o después de `/logout`, Claude Code espera hasta cinco segundos para la búsqueda antes de abrir la sesión. Cuando la política llega a tiempo, Claude Code la aplica desde la primera pantalla y muestra su [`companyAnnouncements`](https://code.claude.com/docs/es/settings-reference#companyannouncements) en ella. Cuando la carga útil necesita [aprobación de seguridad](#security-approval-dialogs), Claude Code termina la espera y aplica la carga útil una vez que el desarrollador la aprueba186* Cuando un desarrollador inicia sesión al inicio, como en una primera ejecución o después de `/logout`, Claude Code espera hasta cinco segundos para la búsqueda antes de abrir la sesión. Cuando la política llega a tiempo, Claude Code la aplica desde la primera pantalla y muestra su [`companyAnnouncements`](https://code.claude.com/docs/es/settings-reference#companyannouncements) en ella. Cuando la carga útil necesita [aprobación de seguridad](#security-approval-dialogs), Claude Code termina la espera y aplica la carga útil una vez que el desarrollador la aprueba

178* En cualquier otro inicio, y cuando se agota esa espera de cinco segundos, Claude Code abre la sesión mientras la búsqueda continúa, por lo que pasa una breve ventana antes de que se cargue la configuración y entren en vigor las restricciones187* En cualquier otro inicio, y cuando se agota esa espera de cinco segundos, Claude Code abre la sesión mientras la búsqueda continúa, por lo que pasa una breve ventana antes de que se cargue la configuración y entren en vigor las restricciones

179* Si la búsqueda falla, Claude Code continúa sin configuración administrada por servidor y advierte en sesiones interactivas que no se aplica ninguna política remota; la configuración administrada por endpoint aún se aplica. Si una fuente administrada establece [`forceRemoteSettingsRefresh`](#enforce-fail-closed-startup), Claude Code sale en su lugar188* Si la búsqueda falla, Claude Code continúa sin configuración administrada por servidor y advierte en las sesiones interactivas y en la [pestaña Code de Claude Desktop](https://code.claude.com/docs/es/desktop.md) que no se aplica ninguna política remota; la configuración administrada por endpoint aún se aplica. Si una fuente administrada establece [`forceRemoteSettingsRefresh`](#enforce-fail-closed-startup), Claude Code sale en su lugar

180 189 

181**Lanzamientos posteriores con configuración en caché:**190**Lanzamientos posteriores con configuración en caché:**

182 191 


186* Un valor en caché de [`prependPlugins`](https://code.claude.com/docs/es/settings-reference#prependplugins), [`appendPlugins`](https://code.claude.com/docs/es/settings-reference#appendplugins) o [`enabledPlugins`](https://code.claude.com/docs/es/settings-reference#enabledplugins) no puede eliminar la protección integrada, cambiar su posición ni desactivarla hasta que la búsqueda de la sesión confirme la carga útil195* Un valor en caché de [`prependPlugins`](https://code.claude.com/docs/es/settings-reference#prependplugins), [`appendPlugins`](https://code.claude.com/docs/es/settings-reference#appendplugins) o [`enabledPlugins`](https://code.claude.com/docs/es/settings-reference#enabledplugins) no puede eliminar la protección integrada, cambiar su posición ni desactivarla hasta que la búsqueda de la sesión confirme la carga útil

187* En una máquina donde una [fuente administrada por endpoint](https://code.claude.com/docs/es/managed-settings.md#choose-a-delivery-mechanism) enumera o habilita plugins propios, un plugin que solo habilita una lista en caché cuenta como [del usuario](https://code.claude.com/docs/es/plugins/mods/admin.md#install-your-organizations-mods), no de tu organización, hasta que la búsqueda confirme la carga útil196* En una máquina donde una [fuente administrada por endpoint](https://code.claude.com/docs/es/managed-settings.md#choose-a-delivery-mechanism) enumera o habilita plugins propios, un plugin que solo habilita una lista en caché cuenta como [del usuario](https://code.claude.com/docs/es/plugins/mods/admin.md#install-your-organizations-mods), no de tu organización, hasta que la búsqueda confirme la carga útil

188* Claude Code obtiene configuración fresca en segundo plano197* Claude Code obtiene configuración fresca en segundo plano

189* La configuración en caché persiste a través de fallos de red. Si la búsqueda de inicio falla, Claude Code advierte en sesiones interactivas que la política en caché está en vigor198* La configuración en caché persiste ante fallos de red. Si la búsqueda de inicio falla, Claude Code advierte en las sesiones interactivas y en la pestaña Code que la política en caché está en vigor

190* Hasta que una búsqueda tenga éxito, los valores retenidos al inicio permanecen retenidos199* Hasta que una búsqueda tenga éxito, los valores retenidos al inicio permanecen retenidos

191 200 

192Claude Code retiene varias categorías de variables en el bloque `env` en caché hasta que el servidor confirma el payload para la sesión. Esto evita que un valor de proxy, autoridad de certificación, endpoint o credencial en caché redirija, intercepte o reautentique la búsqueda de configuración que confirma el payload. El endurecimiento se aplica solo a la caché de configuración obtenida del servidor: la [configuración administrada por endpoint](https://code.claude.com/docs/es/managed-settings.md#delivery-mechanisms) desplegada a través de MDM o `managed-settings.json` no se ve afectada. Las categorías retenidas incluyen:201Claude Code retiene varias categorías de variables en el bloque `env` en caché hasta que el servidor confirma el payload para la sesión. Esto evita que un valor de proxy, autoridad de certificación, endpoint o credencial en caché redirija, intercepte o reautentique la búsqueda de configuración que confirma el payload. El endurecimiento se aplica solo a la caché de configuración obtenida del servidor: la [configuración administrada por endpoint](https://code.claude.com/docs/es/managed-settings.md#delivery-mechanisms) desplegada a través de MDM o `managed-settings.json` no se ve afectada. Las categorías retenidas incluyen:


221 * Ninguna de ellas se replantea a un valor más estricto.230 * Ninguna de ellas se replantea a un valor más estricto.

222 * La carga útil contiene una clave que no sea esas dos claves de retención.231 * La carga útil contiene una clave que no sea esas dos claves de retención.

223 232 

224 El aviso de inicio, `/status` y `claude doctor` entonces reportan la [carga fallida](https://code.claude.com/docs/es/errors.md#remote-managed-settings-failed-to-load) con la causa `no setting in the server response could be applied as written`, y esa entrada dice qué política ejecuta la sesión. Los clientes que [aplican inicio cerrado por error](#enforce-fail-closed-startup) salen al inicio en su lugar.233 El aviso de inicio, `/status` y `claude doctor` entonces reportan la [carga fallida](https://code.claude.com/docs/es/errors.md#remote-managed-settings-failed-to-load) con la causa `no setting in the server response could be applied as written`, y esa entrada dice con qué política se ejecuta la sesión. Los clientes que [aplican inicio cerrado por error](#enforce-fail-closed-startup) salen al inicio en su lugar. Si el inicio se detiene con un mensaje de que tu organización requiere su configuración `before a session can start`, consulta [Claude Code no pudo cargar la configuración de tu organización](https://code.claude.com/docs/es/errors.md#couldnt-load-your-organizations-settings).

225* El [diálogo de aprobación de seguridad](#security-approval-dialogs) evalúa la carga útil salvada, por lo que una entrada inválida eliminada nunca se presenta para aprobación y nunca se ejecuta.234* El [diálogo de aprobación de seguridad](#security-approval-dialogs) evalúa la carga útil salvada, por lo que una entrada inválida eliminada nunca se presenta para aprobación y nunca se ejecuta.

226 235 

227Para depurar problemas de entrega, ejecute `claude --debug-file <path>` y busque `Remote settings` en el registro. Valide un cambio de carga útil con `claude doctor` en una máquina de prueba antes de implementarlo en la organización.236Para depurar problemas de entrega, ejecute `claude --debug-file <path>` y busque `Remote settings` en el registro. Valide un cambio de carga útil con `claude doctor` en una máquina de prueba antes de implementarlo en la organización.

228 237 

229### Aplicar inicio cerrado por error238### Aplicar inicio cerrado por error

230 239 

231De forma predeterminada, si la búsqueda de configuración remota falla al inicio, la CLI continúa con la configuración en caché de la última búsqueda exitosa, excepto por los [valores que Claude Code retiene](#fetch-and-caching-behavior) hasta que una búsqueda tenga éxito. En una máquina que nunca los ha obtenido, la CLI continúa sin configuración administrada por servidor y aún aplica cualquier [configuración administrada por endpoint](https://code.claude.com/docs/es/managed-settings.md#delivery-mechanisms) en el dispositivo.240De forma predeterminada, si la búsqueda de configuración remota falla al inicio, la CLI continúa con la configuración en caché de la última búsqueda exitosa. Los [valores que Claude Code retiene](#fetch-and-caching-behavior) permanecen retenidos hasta que una búsqueda tenga éxito. En una máquina que nunca los ha obtenido, la CLI continúa sin configuración administrada por servidor y aún aplica cualquier [configuración administrada por endpoint](https://code.claude.com/docs/es/managed-settings.md#delivery-mechanisms) en el dispositivo. En su lugar, [Anthropic puede exigir la configuración](#fetch-and-caching-behavior).

232 241 

233Para evitar que los clientes comiencen con configuración administrada por servidor en caché o ausente, establezca `forceRemoteSettingsRefresh: true` en su configuración administrada.242Para evitar que los clientes comiencen con configuración administrada por servidor en caché o ausente, establezca `forceRemoteSettingsRefresh: true` en su configuración administrada.

234 243 


370| El usuario elimina el archivo de configuración en caché | Ocurre el [comportamiento del primer lanzamiento](#fetch-and-caching-behavior) |379| El usuario elimina el archivo de configuración en caché | Ocurre el [comportamiento del primer lanzamiento](#fetch-and-caching-behavior) |

371| El usuario ejecuta un binario de Claude Code modificado | Un usuario que puede ejecutar un cliente modificado puede omitir cualquier control del lado del cliente |380| El usuario ejecuta un binario de Claude Code modificado | Un usuario que puede ejecutar un cliente modificado puede omitir cualquier control del lado del cliente |

372| El usuario ejecuta una versión anterior de Claude Code | Las versiones anteriores a la configuración administrada por servidor no obtienen ni aplican la configuración |381| El usuario ejecuta una versión anterior de Claude Code | Las versiones anteriores a la configuración administrada por servidor no obtienen ni aplican la configuración |

373| La API no está disponible | La configuración en caché se aplica si está disponible, excepto para los [valores que Claude Code retiene](#fetch-and-caching-behavior) hasta que una obtención tenga éxito. Sin una caché, Claude Code no aplica ninguna configuración administrada por servidor hasta la siguiente obtención exitosa y aún aplica cualquier [configuración administrada por endpoint](https://code.claude.com/docs/es/managed-settings.md#delivery-mechanisms) en el dispositivo. Con `forceRemoteSettingsRefresh: true`, la CLI se cierra en lugar de continuar, excepto para [subcomandos `claude auth`](#enforce-fail-closed-startup). Los clientes que iniciaron sesión a través de una [puerta de enlace de aplicaciones Claude](#platform-availability) se cierran al inicio sin esa configuración, con la misma excepción de `claude auth` |382| La API no está disponible | La configuración en caché se aplica si está disponible. Sin una caché, Claude Code no aplica ninguna configuración administrada por servidor hasta la siguiente obtención exitosa. [Comportamiento de obtención y almacenamiento en caché](#fetch-and-caching-behavior) enumera las excepciones, incluido cuándo Anthropic requiere la configuración. Con `forceRemoteSettingsRefresh: true`, la CLI se cierra en lugar de continuar, excepto para [subcomandos `claude auth`](#enforce-fail-closed-startup). Los clientes que iniciaron sesión a través de un [gateway de aplicaciones de Claude](#platform-availability) se cierran al inicio sin ese ajuste, con la misma excepción de `claude auth` |

374| El usuario se autentica con una organización diferente | La configuración no se entrega para cuentas fuera de la organización administrada, incluida una sesión que se autentica con una [clave de API de Console](#platform-availability) |383| El usuario se autentica con una organización diferente | La configuración no se entrega para cuentas fuera de la organización administrada, incluida una sesión que se autentica con una [clave de API de Console](#platform-availability) |

375| El usuario configura un [proveedor de modelo de terceros](#platform-availability) | La configuración administrada por servidor se omite. Esto incluye establecer `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_MANTLE`, `CLAUDE_CODE_USE_VERTEX`, `CLAUDE_CODE_USE_FOUNDRY`, `CLAUDE_CODE_USE_ANTHROPIC_AWS`, o un `ANTHROPIC_BASE_URL` no predeterminado |384| El usuario configura un [proveedor de modelo de terceros](#platform-availability) | La configuración administrada por servidor se omite. Esto incluye establecer `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_MANTLE`, `CLAUDE_CODE_USE_VERTEX`, `CLAUDE_CODE_USE_FOUNDRY`, `CLAUDE_CODE_USE_ANTHROPIC_AWS`, o un `ANTHROPIC_BASE_URL` no predeterminado |

376| El tráfico de red se intercepta o se redirige | La validación de TLS deshabilitada o el tráfico interceptado pueden alterar la configuración que recibe el cliente |385| El tráfico de red se intercepta o se redirige | La validación de TLS deshabilitada o el tráfico interceptado pueden alterar la configuración que recibe el cliente |

settings.md +2 −2

Details

199* **Error de configuración**: un archivo de usuario, proyecto o local tiene JSON inválido o un valor que el esquema rechaza. Al inicio de una sesión interactiva Claude Code muestra un diálogo que le permite corregir el archivo con la ayuda de Claude, salir o continuar sin las configuraciones rotas.199* **Error de configuración**: un archivo de usuario, proyecto o local tiene JSON inválido o un valor que el esquema rechaza. Al inicio de una sesión interactiva Claude Code muestra un diálogo que le permite corregir el archivo con la ayuda de Claude, salir o continuar sin las configuraciones rotas.

200* **Advertencia de configuración**: solo entradas individuales fallan, como una regla de permiso malformada o un nombre de evento de hook desconocido. Claude Code omite esos valores y mantiene el resto del archivo en vigor.200* **Advertencia de configuración**: solo entradas individuales fallan, como una regla de permiso malformada o un nombre de evento de hook desconocido. Claude Code omite esos valores y mantiene el resto del archivo en vigor.

201* **Configuraciones administradas**: Claude Code continúa aplicando el resto del archivo. [Entradas inválidas en configuraciones administradas](https://code.claude.com/docs/es/managed-settings.md#invalid-entries-in-managed-settings) dice qué descarta y qué claves recurren a un valor más estricto hasta que las corrija. Para un documento de configuraciones administradas que no es JSON válido, vea [No se pudo analizar el documento de configuraciones administradas](https://code.claude.com/docs/es/errors.md#managed-settings-document-could-not-be-parsed).201* **Configuraciones administradas**: Claude Code continúa aplicando el resto del archivo. [Entradas inválidas en configuraciones administradas](https://code.claude.com/docs/es/managed-settings.md#invalid-entries-in-managed-settings) dice qué descarta y qué claves recurren a un valor más estricto hasta que las corrija. Para un documento de configuraciones administradas que no es JSON válido, vea [No se pudo analizar el documento de configuraciones administradas](https://code.claude.com/docs/es/errors.md#managed-settings-document-could-not-be-parsed).

202* **Error de configuración**: `~/.claude.json` no se puede analizar. Claude Code copia el archivo roto a `~/.claude/backups/.claude.json.corrupted.<timestamp>` y pregunta si salir y corregirlo a mano o restablecer a la configuración predeterminada; una ejecución `-p` imprime el error y sale. Para recuperar su estado anterior, copie uno de los cinco archivos `.claude.json.backup.<timestamp>` más recientes en `~/.claude/backups/`, que Claude Code guarda antes de escribir el archivo.202* **Configuration error**: [`~/.claude.json`](https://code.claude.com/docs/es/claude-directory#ce-claude-json) no se puede analizar. Una ejecución de `claude -p` termina y tu archivo no se modifica. Consulta [Configuration error in \~/.claude.json](https://code.claude.com/docs/es/errors.md#configuration-error-in-claude-json) para restaurar una copia anterior. Claude Code copia el archivo roto a `~/.claude/backups/.claude.json.corrupted.<timestamp>` y, en una sesión interactiva, pregunta si quieres salir y corregirlo o restablecer la configuración predeterminada. Cuando el archivo está en blanco y no hay ninguna copia de seguridad que restaurar, Claude Code se inicia con la configuración predeterminada.

203 203 

204Después de continuar, ejecute `/status` para ver los archivos afectados y `claude doctor` para los detalles de cada error.204Después de continuar, ejecute `/status` para ver los archivos afectados y `claude doctor` para los detalles de cada error.

205 205 

206Una ejecución `-p` no muestra diálogo. A menos que [un documento de configuraciones administradas no se pueda analizar](https://code.claude.com/docs/es/errors.md#managed-settings-document-could-not-be-parsed), Claude Code omite el archivo o valores rotos y continúa con el resto, por lo que después de una ejecución `-p` que ignora una configuración, ejecute `claude doctor` para ver qué descartó.206Una ejecución con `-p` no muestra ningún diálogo. A menos que [un documento de configuración administrada no se pueda analizar](https://code.claude.com/docs/es/errors.md#managed-settings-document-could-not-be-parsed), Claude Code omite un archivo de usuario, proyecto o local roto, o sus valores rotos, y continúa con el resto. Después de una ejecución con `-p` que ignore un ajuste, ejecuta `claude doctor` desde tu terminal para ver qué descartó.

207 207 

208## Precedencia de la configuración208## Precedencia de la configuración

209 209 

Details

40| [`autoCompactWindow`](#autocompactwindow) | Establece qué tan lleno puede estar el contexto antes de que Claude Code lo [compacte](https://code.claude.com/docs/es/context-window.md) | Memoria y contexto | Any file |40| [`autoCompactWindow`](#autocompactwindow) | Establece qué tan lleno puede estar el contexto antes de que Claude Code lo [compacte](https://code.claude.com/docs/es/context-window.md) | Memoria y contexto | Any file |

41| [`autoConnectIde`](#autoconnectide) | Conéctate automáticamente a un IDE de [VS Code](https://code.claude.com/docs/es/vs-code.md) o [JetBrains](https://code.claude.com/docs/es/jetbrains.md#from-external-terminals) en ejecución desde una terminal externa | Configuración de configuración global | Global config |41| [`autoConnectIde`](#autoconnectide) | Conéctate automáticamente a un IDE de [VS Code](https://code.claude.com/docs/es/vs-code.md) o [JetBrains](https://code.claude.com/docs/es/jetbrains.md#from-external-terminals) en ejecución desde una terminal externa | Configuración de configuración global | Global config |

42| [`autoContinueAtUsageLimit`](#autocontinueatusagelimit) | Espera en la sesión abierta y [continúa la tarea automáticamente](https://code.claude.com/docs/es/interactive-mode.md#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 |42| [`autoContinueAtUsageLimit`](#autocontinueatusagelimit) | Espera en la sesión abierta y [continúa la tarea automáticamente](https://code.claude.com/docs/es/interactive-mode.md#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 |

43| [`autoInstallIdeExtension`](#autoinstallideextension) | Desactiva la instalación automática de la [extensión del IDE](https://code.claude.com/docs/es/vs-code.md#install-the-extension) desde una terminal de VS Code | Configuración de configuración global | Global config |43| [`autoInstallIdeExtension`](#autoinstallideextension) | Permite que `/ide` instale la [extensión del IDE](https://code.claude.com/docs/es/vs-code.md#install-the-extension) desde una terminal externa | Configuración de configuración global | Global config |

44| [`autoMemoryDirectory`](#automemorydirectory) | Almacena la [memoria automática](https://code.claude.com/docs/es/memory.md#auto-memory) en un directorio que elijas | Memoria y contexto | Any file |44| [`autoMemoryDirectory`](#automemorydirectory) | Almacena la [memoria automática](https://code.claude.com/docs/es/memory.md#auto-memory) en un directorio que elijas | Memoria y contexto | Any file |

45| [`autoMemoryEnabled`](#automemoryenabled) | Desactiva o activa la [memoria automática](https://code.claude.com/docs/es/memory.md#auto-memory) | Memoria y contexto | Any file |45| [`autoMemoryEnabled`](#automemoryenabled) | Desactiva o activa la [memoria automática](https://code.claude.com/docs/es/memory.md#auto-memory) | Memoria y contexto | Any file |

46| [`autoMode`](#automode) | Agrega tus propias reglas de permitir y denegar al clasificador del [modo automático](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) | Configuración de permisos | User or managed |46| [`autoMode`](#automode) | Agrega tus propias reglas de permitir y denegar al clasificador del [modo automático](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode) | Configuración de permisos | User or managed |


139| [`outputStyle`](#outputstyle) | Cambia el rol, el tono y el formato de salida de Claude con un [estilo de salida](https://code.claude.com/docs/es/output-styles.md) | Modelo y respuestas | Any file |139| [`outputStyle`](#outputstyle) | Cambia el rol, el tono y el formato de salida de Claude con un [estilo de salida](https://code.claude.com/docs/es/output-styles.md) | Modelo y respuestas | Any file |

140| [`parentSettingsBehavior`](#parentsettingsbehavior) | Aplica o descarta las restricciones que pasa un [host de SDK o IDE](https://code.claude.com/docs/es/managed-settings.md#let-an-embedding-host-add-policy) cuando implementas la [configuración administrada](https://code.claude.com/docs/es/managed-settings.md) | Configuración empresarial y administrada | Managed |140| [`parentSettingsBehavior`](#parentsettingsbehavior) | Aplica o descarta las restricciones que pasa un [host de SDK o IDE](https://code.claude.com/docs/es/managed-settings.md#let-an-embedding-host-add-policy) cuando implementas la [configuración administrada](https://code.claude.com/docs/es/managed-settings.md) | Configuración empresarial y administrada | Managed |

141| [`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 |141| [`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 |

142| [`permissions`](#permissions) | Establece las reglas de permitir, preguntar y denegar, y el [modo de permisos](https://code.claude.com/docs/es/permission-modes.md) inicial | Configuración de permisos | Any file |142| [`permissions`](#permissions) | Establece reglas de permitir, preguntar y denegar, y el [modo de permisos](https://code.claude.com/docs/es/permission-modes.md) predeterminado | Configuración de permisos | Cualquier archivo |

143| [`permissions.additionalDirectories`](#permissions-additionaldirectories) | Da a Claude acceso a archivos en [directorios fuera del actual](https://code.claude.com/docs/es/permissions.md#working-directories) | Configuración de permisos | Any file |143| [`permissions.additionalDirectories`](#permissions-additionaldirectories) | Da a Claude acceso a archivos en [directorios fuera del actual](https://code.claude.com/docs/es/permissions.md#working-directories) | Configuración de permisos | Any file |

144| [`permissions.allow`](#permissions-allow) | Aprueba los [usos de herramientas](https://code.claude.com/docs/es/permissions.md#permission-rule-syntax) enumerados sin pedir confirmación | Configuración de permisos | Any file |144| [`permissions.allow`](#permissions-allow) | Aprueba los [usos de herramientas](https://code.claude.com/docs/es/permissions.md#permission-rule-syntax) enumerados sin pedir confirmación | Configuración de permisos | Any file |

145| [`permissions.ask`](#permissions-ask) | Pide confirmación siempre antes de los [usos de herramientas](https://code.claude.com/docs/es/permissions.md#permission-rule-syntax) enumerados | Configuración de permisos | Any file |145| [`permissions.ask`](#permissions-ask) | Pide confirmación siempre antes de los [usos de herramientas](https://code.claude.com/docs/es/permissions.md#permission-rule-syntax) enumerados | Configuración de permisos | Any file |

146| [`permissions.blockReadsOutsideWorkingDirectories`](#permissions-blockreadsoutsideworkingdirectories) | Haz que las herramientas de archivos rechacen las lecturas fuera de los [directorios de trabajo](https://code.claude.com/docs/es/permissions.md#working-directories) en todos los modos de permisos | Configuración de permisos | Any file |146| [`permissions.blockReadsOutsideWorkingDirectories`](#permissions-blockreadsoutsideworkingdirectories) | Haz que las herramientas de archivos rechacen las lecturas fuera de los [directorios de trabajo](https://code.claude.com/docs/es/permissions.md#working-directories) en todos los modos de permisos | Configuración de permisos | Any file |

147| [`permissions.blockWritesOutsideWorkingDirectories`](#permissions-blockwritesoutsideworkingdirectories) | Haz que las herramientas `Write`, `Edit` y `NotebookEdit` rechacen las rutas fuera de los [directorios de trabajo](https://code.claude.com/docs/es/permissions.md#working-directories) en todos los modos de permisos, salvo [algunos archivos propios de Claude Code](#what-the-write-block-refuses-and-what-stays-writable) | Configuración de permisos | Any file |147| [`permissions.blockWritesOutsideWorkingDirectories`](#permissions-blockwritesoutsideworkingdirectories) | Haz que las herramientas `Write`, `Edit` y `NotebookEdit` rechacen las rutas fuera de los [directorios de trabajo](https://code.claude.com/docs/es/permissions.md#working-directories) en todos los modos de permisos, salvo [algunos archivos propios de Claude Code](#what-the-write-block-refuses-and-what-stays-writable) | Configuración de permisos | Any file |

148| [`permissions.defaultMode`](#permissions-defaultmode) | Establece el [modo de permisos](https://code.claude.com/docs/es/permission-modes.md#which-mode-a-session-starts-in) en el que inician las nuevas sesiones | Configuración de permisos | Any file |148| [`permissions.defaultMode`](#permissions-defaultmode) | Establece el [modo de permisos](https://code.claude.com/docs/es/permission-modes.md#which-mode-a-session-starts-in) predeterminado para las nuevas sesiones | Configuración de permisos | Cualquier archivo |

149| [`permissions.deny`](#permissions-deny) | Bloquea los [usos de herramientas](https://code.claude.com/docs/es/permissions.md#permission-rule-syntax) enumerados, incluidas las lecturas de archivos que contienen secretos | Configuración de permisos | Any file |149| [`permissions.deny`](#permissions-deny) | Bloquea los [usos de herramientas](https://code.claude.com/docs/es/permissions.md#permission-rule-syntax) enumerados, incluidas las lecturas de archivos que contienen secretos | Configuración de permisos | Any file |

150| [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) | Impide que cualquiera entre en el [modo bypassPermissions](https://code.claude.com/docs/es/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) | Configuración de permisos | Any file |150| [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) | Impide que cualquiera entre en el [modo bypassPermissions](https://code.claude.com/docs/es/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) | Configuración de permisos | Any file |

151| [`plansDirectory`](#plansdirectory) | Elige dónde escribe el [modo plan](https://code.claude.com/docs/es/permission-modes.md#analyze-before-you-edit-with-plan-mode) los archivos de plan | Memoria y contexto | Any file |151| [`plansDirectory`](#plansdirectory) | Elige dónde escribe el [modo plan](https://code.claude.com/docs/es/permission-modes.md#analyze-before-you-edit-with-plan-mode) los archivos de plan | Memoria y contexto | Any file |


804 804 

805## Configuración de permisos805## Configuración de permisos

806 806 

807Decide 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](https://code.claude.com/docs/es/permissions.md).807Decide qué puede hacer Claude sin preguntar, el modo de permisos predeterminado para las nuevas sesiones y qué permite el clasificador del modo automático. Para la sintaxis de reglas y el modelo de permisos, consulta [Configurar permisos](https://code.claude.com/docs/es/permissions.md).

808 808 

809### `allowManagedPermissionRulesOnly`809### `allowManagedPermissionRulesOnly`

810 810 


899 899 

900### `permissions`900### `permissions`

901 901 

902Controla 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](https://code.claude.com/docs/es/permission-modes.md) en el que comienza una sesión. Cada clave `permissions.*` a continuación se anida bajo este objeto.902Controla qué herramientas puede usar Claude sin preguntar, cuáles piden confirmación y cuáles están bloqueadas. También establece el [modo de permisos](https://code.claude.com/docs/es/permission-modes.md) predeterminado para las nuevas sesiones. Cada clave `permissions.*` a continuación se anida bajo este objeto.

903 903 

904* **Scope**: [`Any file`](#scopes)904* **Scope**: [`Any file`](#scopes)

905* **Type**: objeto con `allow`, `ask`, `deny`, `additionalDirectories`, `blockReadsOutsideWorkingDirectories`, `blockWritesOutsideWorkingDirectories`, `defaultMode`, `disableBypassPermissionsMode` y `disableAutoMode`905* **Type**: objeto con `allow`, `ask`, `deny`, `additionalDirectories`, `blockReadsOutsideWorkingDirectories`, `blockWritesOutsideWorkingDirectories`, `defaultMode`, `disableBypassPermissionsMode` y `disableAutoMode`


1137 1137 

1138### `permissions.defaultMode`1138### `permissions.defaultMode`

1139 1139 

1140Establece el [modo de permisos](https://code.claude.com/docs/es/permission-modes.md) en el que comienzan las nuevas sesiones. Cuando lo dejas sin establecer, las sesiones comienzan en el [valor predeterminado integrado](https://code.claude.com/docs/es/permission-modes.md#which-mode-a-session-starts-in) para tu superficie.1140Establece el [modo de permisos](https://code.claude.com/docs/es/permission-modes.md) predeterminado para las nuevas sesiones. Cuando lo dejas sin establecer, se aplica el [valor predeterminado integrado](https://code.claude.com/docs/es/permission-modes.md#which-mode-a-session-starts-in) para tu superficie.

1141 1141 

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

1143* **Type**: cadena, una de:1143* **Type**: cadena, una de:


1267 1267 

1268### `sandbox.failIfUnavailable`1268### `sandbox.failIfUnavailable`

1269 1269 

1270Haz 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.1270Hace que Claude Code salga con un error al iniciar cuando `sandbox.enabled` es `true` pero el sandbox no puede iniciarse porque la plataforma no lo admite o falla la comprobación de dependencias. Sin esta clave, Claude Code ejecuta los comandos fuera del sandbox. Los despliegues administrados que exigen el sandboxing como barrera de seguridad pueden usar este ajuste.

1271 1271 

1272En una plataforma que el sandbox no admite, Claude Code no se inicia con esta clave activada. Consulta [Aplicar el sandboxing con configuración administrada](https://code.claude.com/docs/es/sandboxing.md#enforce-sandboxing-with-managed-settings).1272En una plataforma que el sandbox no admite, Claude Code no se inicia con esta clave activada. Consulta [Aplicar el sandboxing con configuración administrada](https://code.claude.com/docs/es/sandboxing.md#enforce-sandboxing-with-managed-settings).

1273 1273 


5087 5087 

5088### `sshHostCommands`5088### `sshHostCommands`

5089 5089 

5090Agrega al selector de entornos de [Desktop](https://code.claude.com/docs/es/desktop.md#create-an-ssh-connection-from-a-command) conexiones SSH cuyo host proviene de un comando. Cuando creas una conexión o reemplazas su host, Desktop ejecuta el comando de la entrada en tu computadora y se conecta al host que imprime el comando. Requiere Claude Desktop v3.6556.0 o posterior en macOS o Linux, con la sesión iniciada con una cuenta de Claude.5090Agrega al selector de entornos de [Desktop](https://code.claude.com/docs/es/desktop.md#create-an-ssh-connection-from-a-command) conexiones SSH cuyo host proviene de un comando. Cuando creas una conexión o creas otra máquina para ella, Desktop ejecuta el comando de la entrada en tu computadora y se conecta al host que imprime el comando.

5091 

5092Requiere Claude Desktop v3.6556.0 o posterior en macOS o Linux, o v4.16336.0 o posterior en Windows, con la sesión iniciada con una cuenta de Claude. En Windows, Desktop también tiene que [conectarse a través del cliente OpenSSH](https://code.claude.com/docs/es/desktop.md#use-your-ssh-configuration).

5091 5093 

5092* **Scope**: [`User or managed`](#scopes). Solo la aplicación de escritorio lee esta clave. Lee las entradas administradas desde [un único archivo de configuración administrada o política de MDM](https://code.claude.com/docs/es/desktop.md#distribute-commands-to-your-team) en la computadora, e ignora la clave en la [configuración administrada por servidor](https://code.claude.com/docs/es/server-managed-settings.md).5094* **Scope**: [`User or managed`](#scopes). Solo la aplicación de escritorio lee esta clave. Lee las entradas administradas desde [un único archivo de configuración administrada o política de MDM](https://code.claude.com/docs/es/desktop.md#distribute-commands-to-your-team) en la computadora, e ignora la clave en la [configuración administrada por servidor](https://code.claude.com/docs/es/server-managed-settings.md).

5093* **Type**: matriz de objetos, cada uno con `id`, `name` y `command` requeridos y `sshIdentityFile` y `startDirectory` opcionales. Desktop inicia `command` sin un shell, así que [escríbelo como un programa y argumentos simples](https://code.claude.com/docs/es/desktop.md#write-the-command).5095* **Type**: matriz de objetos, cada uno con `id`, `name` y `command` requeridos y `sshIdentityFile` y `startDirectory` opcionales. Desktop no interpreta `command` como sintaxis de shell, así que las tuberías y las variables no funcionan: [escríbelo como un programa y sus argumentos](https://code.claude.com/docs/es/desktop.md#write-the-command).

5094* **Default**: unset5096* **Default**: unset

5095 5097 

5096Este ejemplo agrega una conexión llamada `Dev box`, donde `acme-dev create` representa tu propia herramienta:5098Este ejemplo agrega una conexión llamada `Dev box`, donde `acme-dev create` representa tu propia herramienta:


5107}5109}

5108```5110```

5109 5111 

5112En Windows, un nombre simple como `acme-dev` no funciona, así que [comienza el comando con la ruta completa del programa](https://code.claude.com/docs/es/desktop.md#write-the-command-on-windows).

5113 

5110Antes de Claude Code v2.1.307, la herramienta Edit rechazaba un cambio que agregaba esta clave a un archivo de configuración válido, con el error `Unrecognized field: sshHostCommands`. En esas versiones, agrega la clave en un editor de texto; Claude Code carga un archivo que contiene la clave. En Desktop, la versión que cuenta es la [versión de Claude Code de la pestaña Code](https://code.claude.com/docs/es/desktop.md#claude-code-version-in-the-code-tab), no la de tu terminal.5114Antes de Claude Code v2.1.307, la herramienta Edit rechazaba un cambio que agregaba esta clave a un archivo de configuración válido, con el error `Unrecognized field: sshHostCommands`. En esas versiones, agrega la clave en un editor de texto; Claude Code carga un archivo que contiene la clave. En Desktop, la versión que cuenta es la [versión de Claude Code de la pestaña Code](https://code.claude.com/docs/es/desktop.md#claude-code-version-in-the-code-tab), no la de tu terminal.

5111 5115 

5112## Autenticación y proveedores5116## Autenticación y proveedores


5583 5587 

5584Bloquea el inicio de la CLI hasta que Claude Code haya obtenido recientemente [configuraciones administradas por el servidor](https://code.claude.com/docs/es/server-managed-settings.md). Si la obtención falla, Claude Code sale en lugar de continuar con configuraciones en caché o sin configuraciones. Establézcalo cuando su entorno no pueda aceptar ni siquiera una breve ventana en la que una sesión se ejecute sin su política administrada.5588Bloquea el inicio de la CLI hasta que Claude Code haya obtenido recientemente [configuraciones administradas por el servidor](https://code.claude.com/docs/es/server-managed-settings.md). Si la obtención falla, Claude Code sale en lugar de continuar con configuraciones en caché o sin configuraciones. Establézcalo cuando su entorno no pueda aceptar ni siquiera una breve ventana en la que una sesión se ejecute sin su política administrada.

5585 5589 

5586Cuando la clave no está establecida, Claude Code no bloquea el inicio en la obtención, aunque cuando el desarrollador inicia sesión al iniciar espera hasta cinco segundos para la obtención. Una sesión de puerta de enlace en la nube siempre espera y sale si no se puede alcanzar la puerta de enlace.5590Cuando la clave no está establecida, Claude Code no bloquea el inicio por la obtención, aunque cuando el desarrollador inicia sesión al arrancar, espera hasta cinco segundos la obtención. [Anthropic puede exigir la configuración](https://code.claude.com/docs/es/server-managed-settings.md#fetch-and-caching-behavior), lo que sí bloquea un inicio que no la tenga. Una sesión de Cloud gateway espera y sale si no se puede alcanzar el gateway.

5587 5591 

5588* **Alcance**: [`Managed`](#scopes). Claude Code honra un `true` de cualquier fuente administrada controlada por administrador, incluso una que no sea la fuente de mayor prioridad.5592* **Alcance**: [`Managed`](#scopes). Claude Code honra un `true` de cualquier fuente administrada controlada por administrador, incluso una que no sea la fuente de mayor prioridad.

5589* **Tipo**: Booleano5593* **Tipo**: Booleano

5590 * `true`: Claude Code bloquea el inicio hasta que haya obtenido recientemente configuraciones administradas por el servidor y sale si la obtención falla5594 * `true`: Claude Code bloquea el inicio hasta que haya obtenido recientemente la configuración administrada por el servidor y sale si la obtención falla

5591 * `false`: Claude Code no bloquea el inicio en la obtención, aunque en un inicio de inicio de sesión espera hasta cinco segundos para la obtención5595 * `false`: a menos que Anthropic exija la configuración, Claude Code no bloquea el inicio por la obtención, aunque en un inicio con inicio de sesión espera hasta cinco segundos la obtención

5592* **Predeterminado**: `false`5596* **Predeterminado**: `false`

5593 5597 

5594```json managed-settings.json theme={null}5598```json managed-settings.json theme={null}


5823 5827 

5824### `autoInstallIdeExtension`5828### `autoInstallIdeExtension`

5825 5829 

5826Instale la extensión de IDE de Claude Code automáticamente cuando ejecute Claude Code desde una terminal de VS Code. Aparece en `/config` como **Auto-instalar extensión de IDE** cuando ejecuta Claude Code dentro de una terminal de VS Code o JetBrains.5830Permite que [`/ide`](https://code.claude.com/docs/es/commands) instale la extensión de IDE de Claude Code en un VS Code, Cursor o Devin Desktop en ejecución cuando ejecutas el comando desde una terminal externa. Claude Code no instala la extensión al iniciarse. Aparece en `/config` como **Auto-install IDE extension** cuando ejecutas Claude Code dentro de una terminal de VS Code o JetBrains.

5827 5831 

5828* **Alcance**: [`Configuración global`](#scopes)5832* **Alcance**: [`Configuración global`](#scopes)

5829* **Tipo**: Booleano5833* **Tipo**: Booleano

5830 * `true`: Claude Code instala la extensión de IDE automáticamente cuando lo ejecuta desde una terminal de VS Code5834 * `true`: `/ide` instala la extensión

5831 * `false`: Claude Code no instala la extensión automáticamente5835 * `false`: `/ide` no instala la extensión

5832* **Predeterminado**: `true`5836* **Predeterminado**: `true`

5833* **Anulaciones por sesión**: [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](https://code.claude.com/docs/es/env-vars) establecido en `1` omite la instalación para una sesión incluso cuando esta clave es `true`5837* **Anulaciones por sesión**: [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](https://code.claude.com/docs/es/env-vars) establecido en `1` omite la instalación para una sesión incluso cuando esta clave es `true`

5834 5838 

skills.md +1 −1

Details

404| `allowed-tools` | No | Herramientas que Claude puede usar sin pedir permiso durante el turno que invoca este skill. La concesión se borra cuando envías tu siguiente mensaje. Acepta una cadena separada por espacios o comas, o una lista YAML. Consulta [Pre-aprobar herramientas para un skill](#pre-approve-tools-for-a-skill). |404| `allowed-tools` | No | Herramientas que Claude puede usar sin pedir permiso durante el turno que invoca este skill. La concesión se borra cuando envías tu siguiente mensaje. Acepta una cadena separada por espacios o comas, o una lista YAML. Consulta [Pre-aprobar herramientas para un skill](#pre-approve-tools-for-a-skill). |

405| `disallowed-tools` | No | Herramientas eliminadas del grupo disponible de Claude mientras este skill está activo. Úsalo para skills autónomos que nunca deben llamar a ciertas herramientas, como `AskUserQuestion` para un bucle de fondo. Acepta una cadena separada por espacios o comas, o una lista YAML. La restricción se borra cuando envías tu siguiente mensaje. Como las reglas de denegación, el campo no puede eliminar [`EndConversation`](https://code.claude.com/docs/es/tools-reference#endconversation-tool-behavior) mientras cualquier otra herramienta permanezca. |405| `disallowed-tools` | No | Herramientas eliminadas del grupo disponible de Claude mientras este skill está activo. Úsalo para skills autónomos que nunca deben llamar a ciertas herramientas, como `AskUserQuestion` para un bucle de fondo. Acepta una cadena separada por espacios o comas, o una lista YAML. La restricción se borra cuando envías tu siguiente mensaje. Como las reglas de denegación, el campo no puede eliminar [`EndConversation`](https://code.claude.com/docs/es/tools-reference#endconversation-tool-behavior) mientras cualquier otra herramienta permanezca. |

406| `model` | No | Modelo a usar cuando este skill está activo. La anulación se aplica por el resto del turno actual y no se guarda en la configuración; el modelo de sesión se reanuda en tu siguiente prompt. Acepta los mismos valores que [`/model`](https://code.claude.com/docs/es/model-config), o `inherit` para mantener el modelo activo. Un valor excluido por la lista de permitidos [`availableModels`](https://code.claude.com/docs/es/model-config#restrict-model-selection) de tu organización no se usa y la sesión mantiene su modelo actual. En [modo automático](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode), y en [modo plan mientras el clasificador revisa comandos](https://code.claude.com/docs/es/permission-modes.md#analyze-before-you-edit-with-plan-mode), un modelo que el modo automático no admite tampoco se usa y la sesión mantiene su modelo actual. Con `context: fork`, el valor establece el [modelo del subagente bifurcado](#run-skills-in-a-subagent) en su lugar, y un valor excluido sigue las [mismas reglas que una anulación de modelo de subagente](https://code.claude.com/docs/es/model-config.md#restrict-model-selection). |406| `model` | No | Modelo a usar cuando este skill está activo. La anulación se aplica por el resto del turno actual y no se guarda en la configuración; el modelo de sesión se reanuda en tu siguiente prompt. Acepta los mismos valores que [`/model`](https://code.claude.com/docs/es/model-config), o `inherit` para mantener el modelo activo. Un valor excluido por la lista de permitidos [`availableModels`](https://code.claude.com/docs/es/model-config#restrict-model-selection) de tu organización no se usa y la sesión mantiene su modelo actual. En [modo automático](https://code.claude.com/docs/es/permission-modes.md#eliminate-prompts-with-auto-mode), y en [modo plan mientras el clasificador revisa comandos](https://code.claude.com/docs/es/permission-modes.md#analyze-before-you-edit-with-plan-mode), un modelo que el modo automático no admite tampoco se usa y la sesión mantiene su modelo actual. Con `context: fork`, el valor establece el [modelo del subagente bifurcado](#run-skills-in-a-subagent) en su lugar, y un valor excluido sigue las [mismas reglas que una anulación de modelo de subagente](https://code.claude.com/docs/es/model-config.md#restrict-model-selection). |

407| `effort` | No | [Nivel de esfuerzo](https://code.claude.com/docs/es/model-config.md#adjust-effort-level) para el resto del turno actual. Sobrescribe el nivel de esfuerzo de la sesión, pero no la variable de entorno [`CLAUDE_CODE_EFFORT_LEVEL`](https://code.claude.com/docs/es/env-vars#variables). Con `context: fork`, el valor establece en su lugar el nivel de esfuerzo del subagente bifurcado. Cuando lo omites, el nivel proviene del [orden de resolución del esfuerzo](https://code.claude.com/docs/es/model-config.md#adjust-effort-level). Opciones: `low`, `medium`, `high`, `xhigh`, `max`; los niveles disponibles dependen del modelo. |407| `effort` | No | [Nivel de esfuerzo](https://code.claude.com/docs/es/model-config.md#adjust-effort-level) para el resto del turno actual. Sobrescribe el nivel de esfuerzo de la sesión, pero no la variable de entorno [`CLAUDE_CODE_EFFORT_LEVEL`](https://code.claude.com/docs/es/env-vars#variables). Con `context: fork`, el valor establece en su lugar el nivel de esfuerzo del subagente bifurcado. Cuando lo omites, el nivel proviene del [orden de resolución del esfuerzo](https://code.claude.com/docs/es/model-config.md#adjust-effort-level). Para una bifurcación en otro modelo, consulta [Nivel de esfuerzo de subagentes y compañeros de equipo](https://code.claude.com/docs/es/model-config.md#effort-level-of-subagents-and-teammates). Opciones: `low`, `medium`, `high`, `xhigh`, `max`; los niveles disponibles dependen del modelo. |

408| `context` | No | Establece en `fork` para ejecutar en un contexto de subagente bifurcado. Consulta [Ejecutar skills en un subagente](#run-skills-in-a-subagent). |408| `context` | No | Establece en `fork` para ejecutar en un contexto de subagente bifurcado. Consulta [Ejecutar skills en un subagente](#run-skills-in-a-subagent). |

409| `agent` | No | Qué tipo de subagente usar cuando `context: fork` está establecido. |409| `agent` | No | Qué tipo de subagente usar cuando `context: fork` está establecido. |

410| `background` | No | Solo se aplica con `context: fork`. Establece en `false` para esperar el resultado del subagente bifurcado en el turno que invocó el skill, en lugar de [ejecutarlo en segundo plano](#run-skills-in-a-subagent). Por defecto: `true`. |410| `background` | No | Solo se aplica con `context: fork`. Establece en `false` para esperar el resultado del subagente bifurcado en el turno que invocó el skill, en lugar de [ejecutarlo en segundo plano](#run-skills-in-a-subagent). Por defecto: `true`. |

Details

1264 1264 

1265Una vez que el Keychain vuelva a admitir escritura, Claude Code traslada 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 prepárate para volver a autorizar los servidores MCP y volver a ingresar los secretos de los plugins después. Al iniciar sesión de nuevo, tu inicio de sesión se almacena en el Keychain.1265Una vez que el Keychain vuelva a admitir escritura, Claude Code traslada 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 prepárate para volver a autorizar los servidores MCP y volver a ingresar los secretos de los plugins después. Al iniciar sesión de nuevo, tu inicio de sesión se almacena en el Keychain.

1266 1266 

1267#### El inicio de sesión falla en un directorio home de red

1268 

1269Cuando una solicitud falla con `API Error: 401` y tu [directorio de configuración](https://code.claude.com/docs/es/claude-directory.md) está en un sistema de archivos de red, verifica si ese sistema de archivos o tu cuota en él está lleno. Sin espacio disponible, Claude Code no puede guardar un inicio de sesión nuevo o renovado en el [archivo `.credentials.json`](https://code.claude.com/docs/es/authentication#credential-management) de texto plano, y `claude auth login` aún puede imprimir `Login successful.`

1270 

1271**1. Libera espacio en el sistema de archivos**

1272 

1273Elimina los archivos que ya no necesites en el sistema de archivos que contiene `~/.claude`, o el directorio que configuraste en [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/es/env-vars).

1274 

1275**2. Inicia sesión de nuevo**

1276 

1277Ejecuta `/login` en el prompt de Claude Code o `claude auth login` en tu shell.

1278 

1279Antes de la v2.1.318, cuando Claude Code guardaba el archivo de inicio de sesión en un sistema de archivos de red lleno, podía reemplazar un inicio de sesión almacenado aún válido por un archivo vacío. Los comandos posteriores informaban entonces `Not logged in`.

1280 

1267### Las credenciales de Bedrock, Agent Platform o Foundry no se cargan1281### Las credenciales de Bedrock, Agent Platform o Foundry no se cargan

1268 1282 

1269Si configuraste Claude Code para usar un proveedor de nube y ves `Could not load credentials from any providers` en Amazon Bedrock, `Could not load the default credentials` en Agent Platform de Google Cloud, o `ChainedTokenCredential authentication failed` en Microsoft Foundry, probablemente la CLI de tu proveedor de nube no esté autenticada en el shell actual.1283Si configuraste Claude Code para usar un proveedor de nube y ves `Could not load credentials from any providers` en Amazon Bedrock, `Could not load the default credentials` en Agent Platform de Google Cloud, o `ChainedTokenCredential authentication failed` en Microsoft Foundry, probablemente la CLI de tu proveedor de nube no esté autenticada en el shell actual.

vs-code.md +7 −2

Details

818 818 

819### Ejecutar la CLI en VS Code819### Ejecutar la CLI en VS Code

820 820 

821Para usar la CLI sin salir de VS Code, presiona `` Ctrl+` `` en Windows/Linux o `` Cmd+` `` en Mac para abrir la terminal integrada y luego ejecuta `claude`. La CLI se integra automáticamente con tu IDE para funciones como la visualización de diffs y el uso compartido de diagnósticos. Si usas una terminal externa, ejecuta `/ide` dentro de Claude Code para conectarla a VS Code.821Para usar la CLI sin salir de VS Code, presiona `` Ctrl+` `` en Windows/Linux o `` Cmd+` `` en Mac para abrir la terminal integrada y luego ejecuta `claude`. Iniciar `claude` no instala la extensión. Sin ella, `/ide` en la terminal integrada informa "No available IDEs detected" y `/status` muestra el IDE como "Not connected".

822 

823Para obtener funciones como la visualización de diffs y el uso compartido de diagnósticos, conecta la CLI a la extensión desde la terminal integrada o desde una terminal externa:

824 

825* **Terminal integrada**: [instala la extensión](#install-the-extension) y luego inicia `claude`. La CLI se conecta automáticamente.

826* **Terminal externa**: ejecuta `/ide` dentro de Claude Code para conectarte a VS Code. Si VS Code se está ejecutando sin la extensión, `/ide` la instala, a menos que hayas desactivado [`autoInstallIdeExtension`](https://code.claude.com/docs/es/settings-reference#autoinstallideextension).

822 827 

823Instalar la extensión no agrega `claude` al PATH de tu shell. La extensión incluye una copia privada de la CLI para su panel de chat, pero escribir `claude` en una terminal requiere la [instalación independiente de la CLI](https://code.claude.com/docs/es/setup.md). Ejecuta la instalación una vez y los comandos de esta página, incluidos `claude mcp add` y `claude --resume`, funcionarán en cualquier terminal. Si `claude` sigue sin encontrarse después de la instalación, [verifica tu PATH](https://code.claude.com/docs/es/troubleshoot-install.md#verify-your-path).828Instalar la extensión no agrega `claude` al PATH de tu shell. La extensión incluye una copia privada de la CLI para su panel de chat, pero escribir `claude` en una terminal requiere la [instalación independiente de la CLI](https://code.claude.com/docs/es/setup.md). Ejecuta la instalación una vez y los comandos de esta página, incluidos `claude mcp add` y `claude --resume`, funcionarán en cualquier terminal. Si `claude` sigue sin encontrarse después de la instalación, [verifica tu PATH](https://code.claude.com/docs/es/troubleshoot-install.md#verify-your-path).

824 829 


10862. Busca "Claude Code"10912. Busca "Claude Code"

10873. Haz clic en **Uninstall**10923. Haz clic en **Uninstall**

1088 1093 

1089Si ejecutas `claude` en una terminal integrada de VS Code, Claude Code reinstala la extensión automáticamente. Para mantenerla desinstalada, desactiva **Auto-install IDE extension** en `/config`, o establece [`autoInstallIdeExtension`](https://code.claude.com/docs/es/settings-reference#autoinstallideextension) en `false`. También puedes establecer la variable de entorno [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](https://code.claude.com/docs/es/env-vars) en `1`.1094La extensión permanece desinstalada cuando inicias `claude`. Si ejecutas `/ide` desde una terminal externa mientras VS Code está en ejecución, Claude Code la reinstala. Para evitarlo, establece [`autoInstallIdeExtension`](https://code.claude.com/docs/es/settings-reference#autoinstallideextension) en `false` en `~/.claude.json`, o desactiva **Auto-install IDE extension** en `/config` desde la terminal integrada. También puedes establecer la variable de entorno [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](https://code.claude.com/docs/es/env-vars) en `1`.

1090 1095 

1091Para eliminar también los datos de la extensión y restablecer toda la configuración, elimina el directorio de almacenamiento de la extensión correspondiente a tu plataforma.1096Para eliminar también los datos de la extensión y restablecer toda la configuración, elimina el directorio de almacenamiento de la extensión correspondiente a tu plataforma.

1092 1097